Skip to content

Latest commit

 

History

History
100 lines (94 loc) · 2.73 KB

outline.md

File metadata and controls

100 lines (94 loc) · 2.73 KB

:::mermaid flowchart LR

subgraph webview
	direction LR
	subgraph outline-HTML
		direction LR
		icon{{icon}}
		color{{color}}
		label{{name}}
		children-visibility{{children-visibility}}
		self-visibility{{self-visibility}}
		scrollbarRange{{scrollbarRange}}
		editingPosition{{editingPosition}}
		diagnostics-h{{diagnostics: hint, info, warning, error}}
	end
	subgraph outline-tree
		direction LR
		type{{type}} o--o icon & color
		name{{name}} o--o label
		open{{open}} o--o children-visibility
		display{{display}} o--o self-visibility
		highlight{{highlight}} o--o scrollbarRange
		focus{{focus}} o--o editingPosition
		diagnostics{{diagnostics}} o--o diagnostics-h
		children{{children}}
		parent{{parent}}
	end
	subgraph symbolIndexes
		index ==> symbol
	end
	children & parent --> outline-HTML
	build-tree -.-> outline-tree
	build-tree -.-> symbolIndexes
	scroll-tree --> symbolIndexes
	update-tree --> outline-tree & symbolIndexes
	show-diagnostics
	symbol ---- outline-tree
end
subgraph vscode
	document[window.activeTextEditor?.document]
end
message-port((message-port)) --type:rebuild,outline-tree--o build-tree
message-port --type:scroll,range--o scroll-tree
message-port --type:update,changes--o update-tree
message-port --type:diagnostics,diagnostics--o show-diagnostics
subgraph extension
	old_outlineTreeRoot
	diff
	subgraph OutlineProvider
		rebuild ==> OutlineTree
		scroll
		update-diagnostics
		document --> edit

	end
	rebuild --> init
	subgraph OutlineTree
		outlineTreeRoot
		buildOutline
		init -.OutlineTreeRoot.-> rebuild & outlineTreeRoot
	end

	SymbolNode>SymbolNode]
end
edit ==> OutlineTree -.-> old_outlineTreeRoot
init -.OutlineTreeRoot.-> edit
OutlineTree & old_outlineTreeRoot --> diff
edit --o diff
update-diagnostics <--> languages.getDiagnostics
update-diagnostics --diagnostics--o message-port
diff --changes--o message-port
rebuild --OutlineTreeRoot--o message-port
scroll --range--o message-port
subgraph vscode
	direction TB
	document[window.activeTextEditor?.document]
	languages.getDiagnostics
	subgraph vscode-event[event]
		direction LR
		event-switch-tab([window.onDidChangeActiveTextEditor]) --event.document --o rebuild
		event-scroll([window.onDidChangeTextEditorVisibleRanges]) --event.visibleRanges--o scroll
		event-edit([workspace.onDidChangeTextDocument]) --o edit
		event-diagnostics([languages.onDidChangeDiagnostics]) --uri--o update-diagnostics
	end
	subgraph command
		get-symbol[[vscode.executeDocumentSymbolProvider]]
		goto[[editor.action.goToLocations]]
	end
end

subgraph extension
	subgraph OutlineProvider
		#init-event --o vscode-event
	end
end
init --Document.uri--symbol--o get-symbol --> buildOutline --x SymbolNode --> init

:::