@dxos/plugin-mermaid 0.8.4-main.e098934 → 0.8.4-main.ead640a

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.
@@ -170,9 +170,8 @@ var MermaidWidget = class extends WidgetType {
170
170
  };
171
171
 
172
172
  // src/meta.ts
173
- var MERMAID_PLUGIN = "dxos.org/plugin/mermaid";
174
173
  var meta = {
175
- id: MERMAID_PLUGIN,
174
+ id: "dxos.org/plugin/mermaid",
176
175
  name: "Mermaid",
177
176
  description: "Tool that renders text definitions to create diagrams.",
178
177
  icon: "ph--anchor-simple--regular",
@@ -180,7 +179,7 @@ var meta = {
180
179
  };
181
180
 
182
181
  // src/MermaidPlugin.tsx
183
- var MermaidPlugin = () => definePlugin(meta, [
182
+ var MermaidPlugin = definePlugin(meta, () => [
184
183
  defineModule({
185
184
  id: `${meta.id}/module/markdown`,
186
185
  activatesOn: MarkdownEvents.SetupExtensions,
@@ -190,7 +189,6 @@ var MermaidPlugin = () => definePlugin(meta, [
190
189
  })
191
190
  ]);
192
191
  export {
193
- MERMAID_PLUGIN,
194
192
  MermaidPlugin,
195
193
  meta
196
194
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
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 = () =>\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 { 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): boolean {\n return this._source === other._source;\n }\n\n override toDOM(view: EditorView): HTMLDivElement {\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 override ignoreEvent(e: Event): boolean {\n return !/^mouse/.test(e.type);\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", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "_mermaid", "mermaid", "_options", "ViewPlugin", "fromClass", "update", "docChanged", "viewportChanged", "selectionSet", "focusChanged", "decorations", "buildDecorations", "view", "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", "eq", "other", "_source", "toDOM", "div", "document", "createElement", "className", "setTimeout", "_mermaid", "initialize", "darkMode", "facet", "darkTheme", "svg", "render", "_error", "innerText", "innerHTML", "_label", "appendChild", "requestMeasure", "_container", "valid", "parse", "result", "_id", "undefined", "_svg", "err", "String", "ignoreEvent", "e", "test", "MERMAID_PLUGIN", "meta", "id", "name", "description", "icon", "source", "MermaidPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "MarkdownEvents", "SetupExtensions", "activate", "contributes", "MarkdownCapabilities", "Extensions", "mermaid"]
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): boolean {\n return this._source === other._source;\n }\n\n override toDOM(view: EditorView): HTMLDivElement {\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 override ignoreEvent(e: Event): boolean {\n return !/^mouse/.test(e.type);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/mermaid',\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", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "_mermaid", "mermaid", "_options", "ViewPlugin", "fromClass", "update", "docChanged", "viewportChanged", "selectionSet", "focusChanged", "decorations", "buildDecorations", "view", "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", "eq", "other", "_source", "toDOM", "div", "document", "createElement", "className", "setTimeout", "_mermaid", "initialize", "darkMode", "facet", "darkTheme", "svg", "render", "_error", "innerText", "innerHTML", "_label", "appendChild", "requestMeasure", "_container", "valid", "parse", "result", "_id", "undefined", "_svg", "err", "String", "ignoreEvent", "e", "test", "meta", "id", "name", "description", "icon", "source", "MermaidPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "MarkdownEvents", "SetupExtensions", "activate", "contributes", "MarkdownCapabilities", "Extensions", "mermaid"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/extensions/mermaid-extension.ts":{"bytes":25706,"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":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":14200},"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}],"exports":["MERMAID_PLUGIN","MermaidPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/MermaidPlugin.tsx":{"bytesInOutput":405},"src/extensions/mermaid-extension.ts":{"bytesInOutput":5709},"src/extensions/index.ts":{"bytesInOutput":0},"src/meta.ts":{"bytesInOutput":299},"src/index.ts":{"bytesInOutput":0}},"bytes":6609}}}
1
+ {"inputs":{"src/extensions/mermaid-extension.ts":{"bytes":25706,"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":1298,"imports":[],"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":14097},"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}],"exports":["MermaidPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/MermaidPlugin.tsx":{"bytesInOutput":405},"src/extensions/mermaid-extension.ts":{"bytesInOutput":5709},"src/extensions/index.ts":{"bytesInOutput":0},"src/meta.ts":{"bytesInOutput":262},"src/index.ts":{"bytesInOutput":0}},"bytes":6554}}}
@@ -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,4 +1,3 @@
1
- import '@dxos-theme';
2
1
  import { type StoryObj } from '@storybook/react-vite';
3
2
  import React from 'react';
4
3
  type StoryProps = {
@@ -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,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;;CA6BL,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
+ {"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;AAEtD,eAAO,MAAM,IAAI,EAAE,UAMlB,CAAC"}