@dxos/plugin-mermaid 0.8.4-main.2e9d522 → 0.8.4-main.548089c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,55 +2,126 @@
2
2
  import { contributes, defineModule, definePlugin } from "@dxos/app-framework";
3
3
  import { MarkdownCapabilities, MarkdownEvents } from "@dxos/plugin-markdown";
4
4
 
5
- // src/extensions/mermaid.ts
5
+ // src/extensions/mermaid-extension.ts
6
6
  import { syntaxTree } from "@codemirror/language";
7
- import { RangeSetBuilder, StateField } from "@codemirror/state";
8
- import { Decoration, EditorView, WidgetType } from "@codemirror/view";
7
+ import { Decoration, EditorView, ViewPlugin, WidgetType } from "@codemirror/view";
9
8
  import _mermaid from "mermaid";
10
- var mermaid = (options = {}) => {
9
+ var mermaid = (_options = {}) => {
11
10
  return [
12
- StateField.define({
13
- create: (state) => update(state, options),
14
- update: (_, tr) => update(tr.state, options),
15
- provide: (field) => EditorView.decorations.from(field)
16
- }),
17
- styles
18
- ];
19
- };
20
- var update = (state, options) => {
21
- const builder = new RangeSetBuilder();
22
- syntaxTree(state).iterate({
23
- enter: (node) => {
24
- if (node.name === "FencedCode") {
25
- const cursor = state.selection.main.head;
26
- if (state.readOnly || cursor < node.from || cursor > node.to) {
27
- const info = node.node.getChild("CodeInfo");
28
- if (info) {
29
- const type = state.sliceDoc(info.from, info.to);
30
- const text = node.node.getChild("CodeText");
31
- if (type === "mermaid" && text) {
32
- const content = state.sliceDoc(text.from, text.to);
33
- builder.add(node.from, node.to, Decoration.replace({
34
- widget: new MermaidWidget(`mermaid-${node.from}`, content)
35
- }));
11
+ ViewPlugin.fromClass(class {
12
+ decorations;
13
+ constructor(view) {
14
+ this.decorations = this.buildDecorations(view);
15
+ }
16
+ update(update) {
17
+ if (update.docChanged || update.viewportChanged || update.selectionSet || update.focusChanged) {
18
+ this.decorations = this.buildDecorations(update.view);
19
+ }
20
+ }
21
+ buildDecorations(view) {
22
+ const decorations = [];
23
+ syntaxTree(view.state).iterate({
24
+ enter: (node) => {
25
+ if (node.name === "FencedCode") {
26
+ const cursor = view.state.selection.main.head;
27
+ const showWidget = view.state.readOnly || cursor < node.from - 1 || cursor > node.to + 1;
28
+ if (showWidget) {
29
+ const info = node.node.getChild("CodeInfo");
30
+ if (info) {
31
+ const type = view.state.sliceDoc(info.from, info.to);
32
+ const text = node.node.getChild("CodeText");
33
+ if (type === "mermaid" && text) {
34
+ const content = view.state.sliceDoc(text.from, text.to).trim();
35
+ const label = content.split(" ")[0];
36
+ const widget = new MermaidWidget(`mermaid-${node.from}`, content, label);
37
+ const endLine = view.state.doc.lineAt(node.to);
38
+ const nextLinePos = endLine.to + 1;
39
+ if (nextLinePos <= view.state.doc.length) {
40
+ decorations.push({
41
+ from: nextLinePos,
42
+ to: nextLinePos,
43
+ decoration: Decoration.widget({
44
+ widget
45
+ })
46
+ });
47
+ } else {
48
+ decorations.push({
49
+ from: endLine.to,
50
+ to: endLine.to,
51
+ decoration: Decoration.widget({
52
+ widget,
53
+ side: 1
54
+ })
55
+ });
56
+ }
57
+ const startLine = view.state.doc.lineAt(node.from);
58
+ for (let lineNum = startLine.number; lineNum <= endLine.number; lineNum++) {
59
+ const line = view.state.doc.line(lineNum);
60
+ decorations.push({
61
+ from: line.from,
62
+ to: line.from,
63
+ decoration: Decoration.line({
64
+ class: "cm-mermaid-hidden"
65
+ })
66
+ });
67
+ }
68
+ }
69
+ }
70
+ }
36
71
  }
37
72
  }
38
- }
73
+ });
74
+ return Decoration.set(decorations.sort((a, b) => a.from - b.from || a.to - b.to).map((d) => d.decoration.range(d.from, d.to)));
39
75
  }
40
- }
41
- });
42
- return builder.finish();
76
+ }, {
77
+ decorations: (v) => v.decorations
78
+ }),
79
+ EditorView.theme({
80
+ "& .cm-mermaid": {
81
+ position: "relative",
82
+ display: "inline-flex",
83
+ width: "100%",
84
+ maring: "4px 0",
85
+ padding: "16px",
86
+ justifyContent: "center",
87
+ backgroundColor: "var(--dx-groupSurface)",
88
+ borderRadius: "8px"
89
+ },
90
+ "& .cm-mermaid-label": {
91
+ position: "absolute",
92
+ right: "16px",
93
+ fontFamily: "unset",
94
+ color: "var(--dx-subdued)"
95
+ },
96
+ "& .cm-mermaid-error": {
97
+ display: "inline-block",
98
+ color: "var(--dx-errorText)"
99
+ },
100
+ "& .cm-mermaid-hidden": {
101
+ display: "none !important"
102
+ }
103
+ })
104
+ ];
43
105
  };
44
106
  var MermaidWidget = class extends WidgetType {
107
+ _id;
108
+ _source;
109
+ _label;
110
+ _svg;
111
+ _error;
45
112
  // TODO(burdon): Mermaid API requires unique id.
46
- constructor(_id, _source) {
47
- super(), this._id = _id, this._source = _source;
113
+ constructor(_id, _source, _label) {
114
+ super(), this._id = _id, this._source = _source, this._label = _label;
48
115
  }
49
116
  eq(other) {
50
117
  return this._source === other._source;
51
118
  }
119
+ ignoreEvent(ev) {
120
+ return !/^mouse/.test(ev.type);
121
+ }
52
122
  toDOM(view) {
53
123
  const div = document.createElement("div");
124
+ div.className = "cm-mermaid";
54
125
  setTimeout(async () => {
55
126
  _mermaid.initialize({
56
127
  darkMode: view.state.facet(EditorView.darkTheme),
@@ -63,12 +134,18 @@ var MermaidWidget = class extends WidgetType {
63
134
  } else {
64
135
  div.className = "cm-mermaid";
65
136
  div.innerHTML = svg;
66
- view.requestMeasure();
137
+ if (this._label) {
138
+ const label = document.createElement("span");
139
+ label.innerText = this._label;
140
+ label.className = "cm-mermaid-label";
141
+ div.appendChild(label);
142
+ view.requestMeasure();
143
+ }
67
144
  }
68
145
  });
69
146
  return div;
70
147
  }
71
- async render(container) {
148
+ async render(_container) {
72
149
  try {
73
150
  const valid = await _mermaid.parse(this._source);
74
151
  if (valid) {
@@ -82,40 +159,23 @@ var MermaidWidget = class extends WidgetType {
82
159
  this._svg = void 0;
83
160
  }
84
161
  }
85
- ignoreEvent(e) {
86
- return !/^mouse/.test(e.type);
87
- }
88
162
  };
89
- var styles = EditorView.theme({
90
- "& .cm-mermaid": {
91
- position: "relative",
92
- display: "inline-flex",
93
- width: "100%",
94
- justifyContent: "center"
95
- },
96
- // '& .cm-mermaid-label': {
97
- // position: 'absolute',
98
- // right: 0,
99
- // textSize: 10,
100
- // },
101
- "& .cm-mermaid-error": {
102
- display: "inline-block",
103
- color: "var(--dx-errorText)"
104
- }
105
- });
106
163
 
107
164
  // src/meta.ts
108
- var MERMAID_PLUGIN = "dxos.org/plugin/mermaid";
165
+ import { trim } from "@dxos/util";
109
166
  var meta = {
110
- id: MERMAID_PLUGIN,
167
+ id: "dxos.org/plugin/mermaid",
111
168
  name: "Mermaid",
112
- description: "Tool that renders text definitions to create diagrams.",
169
+ description: trim`
170
+ Generate diagrams from simple text-based definitions using Mermaid syntax.
171
+ Create flowcharts, sequence diagrams, and other visualizations that stay in sync with your documentation.
172
+ `,
113
173
  icon: "ph--anchor-simple--regular",
114
174
  source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-mermaid"
115
175
  };
116
176
 
117
177
  // src/MermaidPlugin.tsx
118
- var MermaidPlugin = () => definePlugin(meta, [
178
+ var MermaidPlugin = definePlugin(meta, () => [
119
179
  defineModule({
120
180
  id: `${meta.id}/module/markdown`,
121
181
  activatesOn: MarkdownEvents.SetupExtensions,
@@ -125,7 +185,6 @@ var MermaidPlugin = () => definePlugin(meta, [
125
185
  })
126
186
  ]);
127
187
  export {
128
- MERMAID_PLUGIN,
129
188
  MermaidPlugin,
130
189
  meta
131
190
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/MermaidPlugin.tsx", "../../../src/extensions/mermaid.ts", "../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { MarkdownCapabilities, MarkdownEvents } from '@dxos/plugin-markdown';\n\nimport { mermaid } from './extensions';\nimport { meta } from './meta';\n\nexport const MermaidPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: () => contributes(MarkdownCapabilities.Extensions, [mermaid]),\n }),\n ]);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type EditorState,\n type Extension,\n type RangeSet,\n RangeSetBuilder,\n StateField,\n type Transaction,\n} from '@codemirror/state';\nimport { Decoration, EditorView, WidgetType } from '@codemirror/view';\nimport _mermaid from 'mermaid';\n\nexport type MermaidOptions = {};\n\nexport const mermaid = (options: MermaidOptions = {}): Extension => {\n return [\n StateField.define<RangeSet<Decoration>>({\n create: (state) => update(state, options),\n update: (_: RangeSet<Decoration>, tr: Transaction) => update(tr.state, options),\n provide: (field) => EditorView.decorations.from(field),\n }),\n styles,\n ];\n};\n\nconst update = (state: EditorState, options: MermaidOptions) => {\n const builder = new RangeSetBuilder<Decoration>();\n syntaxTree(state).iterate({\n enter: (node) => {\n if (node.name === 'FencedCode') {\n const cursor = state.selection.main.head;\n if (state.readOnly || cursor < node.from || cursor > node.to) {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === 'mermaid' && text) {\n const content = state.sliceDoc(text.from, text.to);\n // TODO(burdon): Error if extension defined AFTER decorateMarkdown.\n // Decorations that replace line breaks may not be specified via plugins\n builder.add(\n node.from,\n node.to,\n Decoration.replace({\n widget: new MermaidWidget(`mermaid-${node.from}`, content),\n }),\n );\n }\n }\n }\n }\n },\n });\n\n return builder.finish();\n};\n\nclass MermaidWidget extends WidgetType {\n _svg: string | undefined;\n _error: string | undefined;\n\n // TODO(burdon): Mermaid API requires unique id.\n constructor(\n private readonly _id: string,\n private readonly _source: string,\n ) {\n super();\n }\n\n override eq(other: this): boolean {\n return this._source === other._source;\n }\n\n override toDOM(view: EditorView): HTMLDivElement {\n const div = document.createElement('div');\n setTimeout(async () => {\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts\n _mermaid.initialize({\n darkMode: view.state.facet(EditorView.darkTheme),\n theme: 'neutral',\n // TODO(burdon): Styles.\n // NOTE: Must specify 'base' in order to override.\n // theme: 'base',\n // themeVariables: {\n // primaryColor: getToken('extend.colors.red.100'),\n // primaryBorderColor: getToken('extend.colors.neutral.200'),\n // },\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagrams/flowchart/styles.ts\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagrams/sequence/styles.js\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagrams/state/styles.js\n // themeCSS: '.node rect { fill: red; }',\n });\n\n // TODO(burdon): Cache?\n const svg = await this.render(div);\n if (this._error) {\n div.className = 'cm-mermaid-error';\n div.innerText = this._error;\n } else {\n div.className = 'cm-mermaid';\n div.innerHTML = svg!;\n\n // const label = document.createElement('span');\n // label.innerText = 'Mermaid';\n // label.className = 'cm-mermaid-label';\n // wrapper.appendChild(label);\n view.requestMeasure();\n }\n });\n\n return div;\n }\n\n async render(container: Element): Promise<string | undefined> {\n try {\n // https://github.com/mermaid-js/mermaid\n const valid = await _mermaid.parse(this._source);\n if (valid) {\n const result = await _mermaid.render(this._id, this._source);\n this._error = undefined;\n this._svg = result.svg;\n return result.svg;\n }\n } catch (err: any) {\n this._error = String(err);\n this._svg = undefined;\n }\n }\n\n override ignoreEvent(e: Event): boolean {\n return !/^mouse/.test(e.type);\n }\n}\n\nconst styles = EditorView.theme({\n '& .cm-mermaid': {\n position: 'relative',\n display: 'inline-flex',\n width: '100%',\n justifyContent: 'center',\n },\n // '& .cm-mermaid-label': {\n // position: 'absolute',\n // right: 0,\n // textSize: 10,\n // },\n '& .cm-mermaid-error': {\n display: 'inline-block',\n color: 'var(--dx-errorText)',\n },\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const MERMAID_PLUGIN = 'dxos.org/plugin/mermaid';\n\nexport const meta: PluginMeta = {\n id: MERMAID_PLUGIN,\n name: 'Mermaid',\n description: 'Tool that renders text definitions to create diagrams.',\n icon: 'ph--anchor-simple--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-mermaid',\n};\n"],
5
- "mappings": "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",
6
- "names": ["contributes", "defineModule", "definePlugin", "MarkdownCapabilities", "MarkdownEvents", "syntaxTree", "RangeSetBuilder", "StateField", "Decoration", "EditorView", "WidgetType", "_mermaid", "mermaid", "options", "StateField", "define", "create", "state", "update", "_", "tr", "provide", "field", "EditorView", "decorations", "from", "styles", "builder", "RangeSetBuilder", "syntaxTree", "iterate", "enter", "node", "name", "cursor", "selection", "main", "head", "readOnly", "to", "info", "getChild", "type", "sliceDoc", "text", "content", "add", "Decoration", "replace", "widget", "MermaidWidget", "finish", "WidgetType", "_id", "_source", "eq", "other", "toDOM", "view", "div", "document", "createElement", "setTimeout", "_mermaid", "initialize", "darkMode", "facet", "darkTheme", "theme", "svg", "render", "_error", "className", "innerText", "innerHTML", "requestMeasure", "container", "valid", "parse", "result", "undefined", "_svg", "err", "String", "ignoreEvent", "e", "test", "position", "display", "width", "justifyContent", "color", "MERMAID_PLUGIN", "meta", "id", "name", "description", "icon", "source", "MermaidPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "MarkdownEvents", "SetupExtensions", "activate", "contributes", "MarkdownCapabilities", "Extensions", "mermaid"]
3
+ "sources": ["../../../src/MermaidPlugin.tsx", "../../../src/extensions/mermaid-extension.ts", "../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { contributes, defineModule, definePlugin } from '@dxos/app-framework';\nimport { MarkdownCapabilities, MarkdownEvents } from '@dxos/plugin-markdown';\n\nimport { mermaid } from './extensions';\nimport { meta } from './meta';\n\nexport const MermaidPlugin = definePlugin(meta, () => [\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: () => contributes(MarkdownCapabilities.Extensions, [mermaid]),\n }),\n]);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\nimport _mermaid from 'mermaid';\n\nexport type MermaidOptions = {};\n\n/**\n * Extension to create mermaid diagrams.\n */\nexport const mermaid = (_options: MermaidOptions = {}): Extension => {\n return [\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n // Always rebuild decorations when selection changes to handle arrow key navigation.\n if (update.docChanged || update.viewportChanged || update.selectionSet || update.focusChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const decorations: Array<{ from: number; to: number; decoration: Decoration }> = [];\n\n syntaxTree(view.state).iterate({\n enter: (node) => {\n if (node.name === 'FencedCode') {\n const cursor = view.state.selection.main.head;\n // Show widget when cursor is outside the code block.\n // Add a buffer of 1 position before and after to handle edge cases.\n const showWidget = view.state.readOnly || cursor < node.from - 1 || cursor > node.to + 1;\n if (showWidget) {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = view.state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === 'mermaid' && text) {\n const content = view.state.sliceDoc(text.from, text.to).trim();\n const label = content.split(' ')[0];\n\n // Create widget.\n const widget = new MermaidWidget(`mermaid-${node.from}`, content, label);\n\n // Find the line after the code block to place the widget.\n const endLine = view.state.doc.lineAt(node.to);\n const nextLinePos = endLine.to + 1;\n\n // Add widget after the code block.\n if (nextLinePos <= view.state.doc.length) {\n decorations.push({\n from: nextLinePos,\n to: nextLinePos,\n decoration: Decoration.widget({\n widget,\n }),\n });\n } else {\n // Check if at the end of the document.\n decorations.push({\n from: endLine.to,\n to: endLine.to,\n decoration: Decoration.widget({\n widget,\n side: 1,\n }),\n });\n }\n\n // Hide each line of the code block.\n const startLine = view.state.doc.lineAt(node.from);\n for (let lineNum = startLine.number; lineNum <= endLine.number; lineNum++) {\n const line = view.state.doc.line(lineNum);\n decorations.push({\n from: line.from,\n to: line.from,\n decoration: Decoration.line({\n class: 'cm-mermaid-hidden',\n }),\n });\n }\n }\n }\n }\n }\n },\n });\n\n return Decoration.set(\n decorations.sort((a, b) => a.from - b.from || a.to - b.to).map((d) => d.decoration.range(d.from, d.to)),\n );\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n ),\n EditorView.theme({\n '& .cm-mermaid': {\n position: 'relative',\n display: 'inline-flex',\n width: '100%',\n maring: '4px 0',\n padding: '16px',\n justifyContent: 'center',\n backgroundColor: 'var(--dx-groupSurface)',\n borderRadius: '8px',\n },\n '& .cm-mermaid-label': {\n position: 'absolute',\n right: '16px',\n fontFamily: 'unset',\n color: 'var(--dx-subdued)',\n },\n '& .cm-mermaid-error': {\n display: 'inline-block',\n color: 'var(--dx-errorText)',\n },\n '& .cm-mermaid-hidden': {\n display: 'none !important',\n },\n }),\n ];\n};\n\nclass MermaidWidget extends WidgetType {\n _svg: string | undefined;\n _error: string | undefined;\n\n // TODO(burdon): Mermaid API requires unique id.\n constructor(\n private readonly _id: string,\n private readonly _source: string,\n private readonly _label?: string,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this._source === other._source;\n }\n\n override ignoreEvent(ev: Event) {\n return !/^mouse/.test(ev.type);\n }\n\n override toDOM(view: EditorView) {\n const div = document.createElement('div');\n div.className = 'cm-mermaid';\n\n setTimeout(async () => {\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts\n _mermaid.initialize({\n darkMode: view.state.facet(EditorView.darkTheme),\n theme: 'neutral',\n // TODO(burdon): Styles.\n // NOTE: Must specify 'base' in order to override.\n // theme: 'base',\n // themeVariables: {\n // primaryColor: getToken('extend.colors.red.100'),\n // primaryBorderColor: getToken('extend.colors.neutral.200'),\n // },\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagrams/flowchart/styles.ts\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagrams/sequence/styles.js\n // https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/diagrams/state/styles.js\n // themeCSS: '.node rect { fill: red; }',\n });\n\n // TODO(burdon): Cache?\n const svg = await this.render(div);\n if (this._error) {\n div.className = 'cm-mermaid-error';\n div.innerText = this._error;\n } else {\n div.className = 'cm-mermaid';\n div.innerHTML = svg!;\n\n if (this._label) {\n const label = document.createElement('span');\n label.innerText = this._label;\n label.className = 'cm-mermaid-label';\n div.appendChild(label);\n view.requestMeasure();\n }\n }\n });\n\n return div;\n }\n\n async render(_container: Element): Promise<string | undefined> {\n try {\n // https://github.com/mermaid-js/mermaid\n const valid = await _mermaid.parse(this._source);\n if (valid) {\n const result = await _mermaid.render(this._id, this._source);\n this._error = undefined;\n this._svg = result.svg;\n return result.svg;\n }\n } catch (err: any) {\n this._error = String(err);\n this._svg = undefined;\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/mermaid',\n name: 'Mermaid',\n description: trim`\n Generate diagrams from simple text-based definitions using Mermaid syntax.\n Create flowcharts, sequence diagrams, and other visualizations that stay in sync with your documentation.\n `,\n icon: 'ph--anchor-simple--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-mermaid',\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["contributes", "defineModule", "definePlugin", "MarkdownCapabilities", "MarkdownEvents", "syntaxTree", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "_mermaid", "mermaid", "_options", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "focusChanged", "syntaxTree", "state", "iterate", "enter", "node", "name", "cursor", "selection", "main", "head", "showWidget", "readOnly", "from", "to", "info", "getChild", "type", "sliceDoc", "text", "content", "trim", "label", "split", "widget", "MermaidWidget", "endLine", "doc", "lineAt", "nextLinePos", "length", "push", "decoration", "Decoration", "side", "startLine", "lineNum", "number", "line", "class", "set", "sort", "a", "b", "map", "d", "range", "v", "EditorView", "theme", "position", "display", "width", "maring", "padding", "justifyContent", "backgroundColor", "borderRadius", "right", "fontFamily", "color", "WidgetType", "_svg", "_error", "_id", "_source", "_label", "eq", "other", "ignoreEvent", "ev", "test", "toDOM", "div", "document", "createElement", "className", "setTimeout", "_mermaid", "initialize", "darkMode", "facet", "darkTheme", "svg", "render", "innerText", "innerHTML", "appendChild", "requestMeasure", "_container", "valid", "parse", "result", "undefined", "err", "String", "trim", "meta", "id", "name", "description", "trim", "icon", "source", "MermaidPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "MarkdownEvents", "SetupExtensions", "activate", "contributes", "MarkdownCapabilities", "Extensions", "mermaid"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/extensions/mermaid.ts":{"bytes":15195,"imports":[{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"mermaid","kind":"import-statement","external":true}],"format":"esm"},"src/extensions/index.ts":{"bytes":468,"imports":[{"path":"src/extensions/mermaid.ts","kind":"import-statement","original":"./mermaid"}],"format":"esm"},"src/meta.ts":{"bytes":1476,"imports":[],"format":"esm"},"src/MermaidPlugin.tsx":{"bytes":2302,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"src/extensions/index.ts","kind":"import-statement","original":"./extensions"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/index.ts":{"bytes":551,"imports":[{"path":"src/MermaidPlugin.tsx","kind":"import-statement","original":"./MermaidPlugin"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9645},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"mermaid","kind":"import-statement","external":true}],"exports":["MERMAID_PLUGIN","MermaidPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/MermaidPlugin.tsx":{"bytesInOutput":405},"src/extensions/mermaid.ts":{"bytesInOutput":2870},"src/extensions/index.ts":{"bytesInOutput":0},"src/meta.ts":{"bytesInOutput":299},"src/index.ts":{"bytesInOutput":0}},"bytes":3760}}}
1
+ {"inputs":{"src/extensions/mermaid-extension.ts":{"bytes":25117,"imports":[{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"mermaid","kind":"import-statement","external":true}],"format":"esm"},"src/extensions/index.ts":{"bytes":494,"imports":[{"path":"src/extensions/mermaid-extension.ts","kind":"import-statement","original":"./mermaid-extension"}],"format":"esm"},"src/meta.ts":{"bytes":1795,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/MermaidPlugin.tsx":{"bytes":2282,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"src/extensions/index.ts","kind":"import-statement","original":"./extensions"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/index.ts":{"bytes":551,"imports":[{"path":"src/MermaidPlugin.tsx","kind":"import-statement","original":"./MermaidPlugin"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14117},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"mermaid","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["MermaidPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/MermaidPlugin.tsx":{"bytesInOutput":405},"src/extensions/mermaid-extension.ts":{"bytesInOutput":5267},"src/extensions/index.ts":{"bytesInOutput":0},"src/meta.ts":{"bytesInOutput":439},"src/index.ts":{"bytesInOutput":0}},"bytes":6289}}}
@@ -1,2 +1,2 @@
1
- export declare const MermaidPlugin: () => import("@dxos/app-framework").Plugin;
1
+ export declare const MermaidPlugin: import("@dxos/app-framework").PluginFactory<void>;
2
2
  //# sourceMappingURL=MermaidPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MermaidPlugin.d.ts","sourceRoot":"","sources":["../../../src/MermaidPlugin.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,aAAa,4CAOtB,CAAC"}
1
+ {"version":3,"file":"MermaidPlugin.d.ts","sourceRoot":"","sources":["../../../src/MermaidPlugin.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,aAAa,mDAMxB,CAAC"}
@@ -1,2 +1,2 @@
1
- export * from './mermaid';
1
+ export * from './mermaid-extension';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/index.ts"],"names":[],"mappings":"AAIA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type Extension } from '@codemirror/state';
2
+ export type MermaidOptions = {};
3
+ /**
4
+ * Extension to create mermaid diagrams.
5
+ */
6
+ export declare const mermaid: (_options?: MermaidOptions) => Extension;
7
+ //# sourceMappingURL=mermaid-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-extension.d.ts","sourceRoot":"","sources":["../../../../src/extensions/mermaid-extension.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,WAAU,cAAmB,KAAG,SAsHvD,CAAC"}
@@ -1,15 +1,15 @@
1
- import '@dxos-theme';
2
- import { type Meta } from '@storybook/react-vite';
3
- export declare const Default: {
4
- args: {
5
- text: string;
6
- };
1
+ import { type StoryObj } from '@storybook/react-vite';
2
+ import React from 'react';
3
+ type StoryProps = {
4
+ text?: string;
7
5
  };
8
- export declare const Error: {
9
- args: {
10
- text: string;
11
- };
6
+ declare const meta: {
7
+ title: string;
8
+ render: ({ text }: StoryProps) => React.JSX.Element;
9
+ decorators: import("@storybook/react").Decorator[];
12
10
  };
13
- declare const meta: Meta;
14
11
  export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+ export declare const Default: Story;
14
+ export declare const Error: Story;
15
15
  //# sourceMappingURL=mermaid.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mermaid.stories.d.ts","sourceRoot":"","sources":["../../../../src/extensions/mermaid.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAyClD,eAAO,MAAM,OAAO;;;;CAqBnB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;CAgBjB,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,IAIX,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"mermaid.stories.d.ts","sourceRoot":"","sources":["../../../../src/extensions/mermaid.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAqBF,QAAA,MAAM,IAAI;;uBAnBsB,UAAU;;CAuBL,CAAC;AAEtC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAqBrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAgBnB,CAAC"}
@@ -1,4 +1,3 @@
1
1
  import { type PluginMeta } from '@dxos/app-framework';
2
- export declare const MERMAID_PLUGIN = "dxos.org/plugin/mermaid";
3
2
  export declare const meta: PluginMeta;
4
3
  //# sourceMappingURL=meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAExD,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,eAAO,MAAM,IAAI,EAAE,UASlB,CAAC"}