@omegagrid/markdown 0.9.50 → 0.9.52

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.
@@ -13,7 +13,9 @@ export declare enum EditorFeature {
13
13
  Toolbar = "toolbar",
14
14
  Placeholder = "placeholder",
15
15
  Table = "table",
16
- Html = "html"
16
+ Html = "html",
17
+ Emoji = "emoji",
18
+ Toc = "toc"
17
19
  }
18
20
  export type FeatureDefinition = {
19
21
  default: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAOzD,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,MAAM,MAAM,aAAa,CAAC,OAAO,GAAG,OAAO,IAAI,CAC9C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAC5B,MAAM,CAAC,EAAE,OAAO,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,OAAO,QAAQ,IACvE,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,UAG7B;AAKD,oBAAY,aAAa;IACxB,SAAS,eAAe;IACxB,MAAM,WAAW;IACjB,UAAU,gBAAgB;IAE1B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;CAChB,CAAC;AAUF,wBAAgB,WAAW,CAC1B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAC5B,EAAE,EAAE,OAAO,QAAQ,EACnB,OAAO,EAAE;IACR,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAC,MAAM,CAAC;CAC1D,yCA4ID"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAQzD,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,MAAM,MAAM,aAAa,CAAC,OAAO,GAAG,OAAO,IAAI,CAC9C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAC5B,MAAM,CAAC,EAAE,OAAO,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,OAAO,QAAQ,IACvE,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,UAG7B;AAKD,oBAAY,aAAa;IACxB,SAAS,eAAe;IACxB,MAAM,WAAW;IACjB,UAAU,gBAAgB;IAE1B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,GAAG,QAAQ;CACX;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;CAChB,CAAC;AAUF,wBAAgB,WAAW,CAC1B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAC5B,EAAE,EAAE,OAAO,QAAQ,EACnB,OAAO,EAAE;IACR,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAC,MAAM,CAAC;CAC1D,yCAyJD"}
@@ -1 +1 @@
1
- import{BlockHandleView}from"./blockEdit";import{ToolbarView}from"./toolbar";import{createPlaceHolder}from"./placeholder";import{createCodeBlockConfig,createCodeBlockView}from"./codeBlock";import{createHtmlBlockConfig,createHtmlBlockView}from"./htmlBlock";import linkEdit from"./linkEdit";export*from"./blockEditMenu";export*from"./htmlBlock";export*from"./linkEdit";export function configureFeatures(e,o){return t=>{t.inject(o.ctx.createSlice([],"FeaturesCtx"),e)}}const createIcon=(e,o)=>e.atomico.html`<og-icon icon=${o}></og-icon>`;export var EditorFeature;!function(e){e.BlockEdit="block-edit",e.Cursor="cursor",e.CodeEditor="code-editor",e.LinkTooltip="link-tooltip",e.ImageBlock="image-block",e.Toolbar="toolbar",e.Placeholder="placeholder",e.Table="table",e.Html="html"}(EditorFeature||(EditorFeature={}));const createModifyImageUrl=e=>async o=>{if(!o)return null;const t=e(o);return"string"==typeof o?t:await t};export function getFeatures(e,o,t){const r=t.modifyImageUrl?createModifyImageUrl(t.modifyImageUrl):null;return new Map([[EditorFeature.BlockEdit,{default:!0,init:()=>{e.config((e=>{e.set(o.plugins.block.blockConfig.key,{filterNodes:e=>!o.prose.findParent((e=>["table","blockquote"].includes(e.type.name)))(e)}),e.set(o.plugins.block.block.key,{view:()=>new BlockHandleView(e,o)})})).use(o.plugins.block.block)}}],[EditorFeature.Cursor,{default:!0,init:()=>{e.config((e=>{e.update(o.plugins.cursor.dropCursorConfig.key,(()=>({class:"md-editor-drop-cursor",width:4})))})).use(o.plugins.cursor.cursor)}}],[EditorFeature.ImageBlock,{default:!0,init:()=>{e.config((e=>{e.update(o.components.imageInline.inlineImageConfig.key,(e=>({uploadButton:()=>createIcon(o,"upload"),imageIcon:()=>createIcon(o,"image"),confirmButton:()=>createIcon(o,"check"),uploadPlaceholderText:"or paste link",onUpload:t.onUpload,proxyDomURL:r}))),e.update(o.components.imageBlock.imageBlockConfig.key,(e=>({uploadButton:()=>"Upload file",imageIcon:()=>createIcon(o,"image"),captionIcon:()=>createIcon(o,"comment"),confirmButton:()=>"Confirm",captionPlaceholderText:"Write Image Caption",uploadPlaceholderText:"or paste link",onUpload:t.onUpload,proxyDomURL:r})))})).use(o.components.imageBlock.imageBlockComponent).use(o.components.imageInline.imageInlineComponent)}}],[EditorFeature.LinkTooltip,{default:!0,init:()=>{const o=linkEdit.getPlugin();e.config(linkEdit.configure).use(o)}}],[EditorFeature.Toolbar,{default:!0,init:()=>{const t=o.plugins.tooltip.tooltipFactory("MARKDOWN_TOOLBAR");e.config((e=>{e.set(t.key,{view:t=>new ToolbarView(e,t,o)})})).use(t)}}],[EditorFeature.Placeholder,{default:!0,init:()=>{const{config:t,plugin:r}=createPlaceHolder(o);e.config((e=>{e.update(t.key,(e=>({...e})))})).use(r).use(t)}}],[EditorFeature.Table,{default:!0,init:()=>{e.config((e=>{e.update(o.components.tableBlock.tableBlockConfig.key,(e=>({renderButton:e=>{switch(e){case"add_row":case"add_col":return createIcon(o,"plus");case"delete_row":case"delete_col":return createIcon(o,"trash");case"align_col_left":return createIcon(o,"align-left");case"align_col_center":return createIcon(o,"align-center");case"align_col_right":return createIcon(o,"align-right");case"col_drag_handle":return createIcon(o,"grip-lines-vertical");case"row_drag_handle":return createIcon(o,"grip-lines")}}})))})).use(o.components.tableBlock.tableBlock)}}],[EditorFeature.CodeEditor,{default:!0,init:()=>{const t=createCodeBlockConfig(o),r=createCodeBlockView(o);e.config((e=>{e.update(t.key,(e=>({})))})).use([r,t])}}],[EditorFeature.Html,{default:!0,init:()=>{const t=createHtmlBlockConfig(o),r=createHtmlBlockView(o);e.config((e=>{e.update(t.key,(e=>({})))})).use([r,t])}}]])}
1
+ import{BlockHandleView}from"./blockEdit";import{ToolbarView}from"./toolbar";import{createPlaceHolder}from"./placeholder";import{createCodeBlockConfig,createCodeBlockView}from"./codeBlock";import{createHtmlBlockConfig,createHtmlBlockView}from"./htmlBlock";import{createTocBlock}from"./tocBlock";import linkEdit from"./linkEdit";export*from"./blockEditMenu";export*from"./htmlBlock";export*from"./linkEdit";export function configureFeatures(e,o){return t=>{t.inject(o.ctx.createSlice([],"FeaturesCtx"),e)}}const createIcon=(e,o)=>e.atomico.html`<og-icon icon=${o}></og-icon>`;export var EditorFeature;!function(e){e.BlockEdit="block-edit",e.Cursor="cursor",e.CodeEditor="code-editor",e.LinkTooltip="link-tooltip",e.ImageBlock="image-block",e.Toolbar="toolbar",e.Placeholder="placeholder",e.Table="table",e.Html="html",e.Emoji="emoji",e.Toc="toc"}(EditorFeature||(EditorFeature={}));const createModifyImageUrl=e=>async o=>{if(!o)return null;const t=e(o);return"string"==typeof o?t:await t};export function getFeatures(e,o,t){const i=t.modifyImageUrl?createModifyImageUrl(t.modifyImageUrl):null;return new Map([[EditorFeature.BlockEdit,{default:!0,init:()=>{e.config((e=>{e.set(o.plugins.block.blockConfig.key,{filterNodes:e=>!o.prose.findParent((e=>["table","blockquote"].includes(e.type.name)))(e)}),e.set(o.plugins.block.block.key,{view:()=>new BlockHandleView(e,o)})})).use(o.plugins.block.block)}}],[EditorFeature.Cursor,{default:!0,init:()=>{e.config((e=>{e.update(o.plugins.cursor.dropCursorConfig.key,(()=>({class:"md-editor-drop-cursor",width:4})))})).use(o.plugins.cursor.cursor)}}],[EditorFeature.ImageBlock,{default:!0,init:()=>{e.config((e=>{e.update(o.components.imageInline.inlineImageConfig.key,(e=>({uploadButton:()=>createIcon(o,"upload"),imageIcon:()=>createIcon(o,"image"),confirmButton:()=>createIcon(o,"check"),uploadPlaceholderText:"or paste link",onUpload:t.onUpload,proxyDomURL:i}))),e.update(o.components.imageBlock.imageBlockConfig.key,(e=>({uploadButton:()=>"Upload file",imageIcon:()=>createIcon(o,"image"),captionIcon:()=>createIcon(o,"comment"),confirmButton:()=>"Confirm",captionPlaceholderText:"Write Image Caption",uploadPlaceholderText:"or paste link",onUpload:t.onUpload,proxyDomURL:i})))})).use(o.components.imageBlock.imageBlockComponent).use(o.components.imageInline.imageInlineComponent)}}],[EditorFeature.LinkTooltip,{default:!0,init:()=>{const o=linkEdit.getPlugin();e.config(linkEdit.configure).use(o)}}],[EditorFeature.Toolbar,{default:!0,init:()=>{const t=o.plugins.tooltip.tooltipFactory("MARKDOWN_TOOLBAR");e.config((e=>{e.set(t.key,{view:t=>new ToolbarView(e,t,o)})})).use(t)}}],[EditorFeature.Placeholder,{default:!0,init:()=>{const{config:t,plugin:i}=createPlaceHolder(o);e.config((e=>{e.update(t.key,(e=>({...e})))})).use(i).use(t)}}],[EditorFeature.Table,{default:!0,init:()=>{e.config((e=>{e.update(o.components.tableBlock.tableBlockConfig.key,(e=>({renderButton:e=>{switch(e){case"add_row":case"add_col":return createIcon(o,"plus");case"delete_row":case"delete_col":return createIcon(o,"trash");case"align_col_left":return createIcon(o,"align-left");case"align_col_center":return createIcon(o,"align-center");case"align_col_right":return createIcon(o,"align-right");case"col_drag_handle":return createIcon(o,"grip-lines-vertical");case"row_drag_handle":return createIcon(o,"grip-lines")}}})))})).use(o.components.tableBlock.tableBlock)}}],[EditorFeature.CodeEditor,{default:!0,init:()=>{const t=createCodeBlockConfig(o),i=createCodeBlockView(o);e.config((e=>{e.update(t.key,(e=>({})))})).use([i,t])}}],[EditorFeature.Html,{default:!0,init:()=>{const t=createHtmlBlockConfig(o),i=createHtmlBlockView(o);e.config((e=>{e.update(t.key,(e=>({})))})).use([i,t])}}],[EditorFeature.Emoji,{default:!0,init:()=>{o.plugins.emoji&&e.use(o.plugins.emoji.emoji)}}],[EditorFeature.Toc,{default:!0,init:()=>{const t=createTocBlock(o);e.config((e=>{e.update(t.tocConfig.key,(e=>({})))})).use(t.plugins)}}]])}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"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","sourcesContent":["// import { Editor } from '@milkdown/kit/core';\n// import { createSlice } from '@milkdown/kit/ctx';\n// import { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block'\nimport { BlockHandleView } from './blockEdit';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { ToolbarView } from './toolbar';\nimport { createPlaceHolder } from './placeholder';\nimport { createCodeBlockConfig, createCodeBlockView } from './codeBlock';\nimport { createHtmlBlockConfig, createHtmlBlockView } from './htmlBlock';\nimport linkEdit from './linkEdit';\n\nexport * from './blockEditMenu';\nexport * from './htmlBlock';\nexport * from './linkEdit';\n\nexport type DefineFeature<TConfig = unknown> = (\n\teditor: milkdown.core.Editor,\n\tconfig?: TConfig\n) => void | Promise<void>\n\nexport function configureFeatures(features: EditorFeature[], md: typeof milkdown) {\n\treturn (ctx: milkdown.ctx.Ctx) => {\n\t\tctx.inject(md.ctx.createSlice([] as EditorFeature[], 'FeaturesCtx'), features)\n\t}\n}\n\nconst createIcon = (md: typeof milkdown, icon: string) => \n\tmd.atomico.html`<og-icon icon=${icon}></og-icon>`;\n\nexport enum EditorFeature {\n\tBlockEdit = 'block-edit',\n\tCursor = 'cursor',\n\tCodeEditor = 'code-editor',\n\t// ListItem = 'list-item',\n\tLinkTooltip = 'link-tooltip',\n\tImageBlock = 'image-block',\n\tToolbar = 'toolbar',\n\tPlaceholder = 'placeholder',\n\tTable = 'table',\n\tHtml = 'html',\n}\n\nexport type FeatureDefinition = {\n\tdefault: boolean,\n\tinit: () => void\n};\n\nconst createModifyImageUrl = (fn: (url: string) => Promise<string>|string) => {\n\treturn async (url: string) => {\n\t\tif (!url) return null;\n\t\tconst modUrl = fn(url);\n\t\treturn typeof url === 'string' ? modUrl : await modUrl;\n\t}\n};\n\nexport function getFeatures(\n\teditor: milkdown.core.Editor,\n\tmd: typeof milkdown,\n\toptions: {\n\t\tonUpload?: (file: File) => Promise<string>,\n\t\tmodifyImageUrl?: (file: string) => Promise<string>|string,\n\t}\n) {\n\tconst modifyImageUrl = options.modifyImageUrl ? createModifyImageUrl(options.modifyImageUrl) : null;\n\treturn new Map<EditorFeature, FeatureDefinition>([\n\t\t[EditorFeature.BlockEdit, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(md.plugins.block.blockConfig.key, {\n\t\t\t\t\t\tfilterNodes: (pos) => {\n\t\t\t\t\t\tconst filter = md.prose.findParent((node) =>\n\t\t\t\t\t\t\t['table', 'blockquote'].includes(node.type.name)\n\t\t\t\t\t\t)(pos)\n\t\t\t\t\t\tif (filter) return false\n\t\t\t\t\t\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tctx.set(md.plugins.block.block.key, {\n\t\t\t\t\t\tview: () => new BlockHandleView(ctx, md),\n\t\t\t\t\t})\n\t\t\t\t}).use(md.plugins.block.block);\n\t\t\t\t// .config((ctx) => configureMenu(ctx, config))\n\t\t\t\t// .use(menuAPI)\n\t\t\t\t// .use(menu)\n\t\t\t}\n\t\t}], [EditorFeature.Cursor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.plugins.cursor.dropCursorConfig.key, () => ({\n\t\t\t\t\t\tclass: 'md-editor-drop-cursor',\n\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t// color: '#ff0000',\n\t\t\t\t\t}))\n\t\t\t\t}).use(md.plugins.cursor.cursor)\n\t\t\t}\n\t\t}], [EditorFeature.ImageBlock, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.imageInline.inlineImageConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: () => createIcon(md, 'upload'),\n\t\t\t\t\t\timageIcon: () => createIcon(md, 'image'),\n\t\t\t\t\t\tconfirmButton: () => createIcon(md, 'check'),\n\t\t\t\t\t\tuploadPlaceholderText: 'or paste link',\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t}))\n\t\t\t\t\tctx.update(md.components.imageBlock.imageBlockConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: () => 'Upload file',\n\t\t\t\t\t\timageIcon: () => createIcon(md, 'image'),\n\t\t\t\t\t\tcaptionIcon: () => createIcon(md, 'comment'),\n\t\t\t\t\t\tconfirmButton: () => 'Confirm',\n\t\t\t\t\t\tcaptionPlaceholderText: 'Write Image Caption',\n\t\t\t\t\t\tuploadPlaceholderText: 'or paste link',\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t}))\n\t\t\t\t})\n\t\t\t\t.use(md.components.imageBlock.imageBlockComponent)\n\t\t\t\t.use(md.components.imageInline.imageInlineComponent)\n\t\t\t}\n\t\t}], [EditorFeature.LinkTooltip, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\t// const toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_LINK_EDIT_TOOLBAR');\n\t\t\t\tconst plugin = linkEdit.getPlugin();\n\t\t\t\teditor.config(linkEdit.configure)\n\t\t\t\t/*.config((ctx) => {\n\t\t\t\t\tctx.update(linkEdit.getState().key, (prev) => ({...prev}));\n\t\t\t\t})*/\n\t\t\t\t.use(plugin);\n\t\t\t}\n\t\t}], [EditorFeature.Toolbar, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_TOOLBAR');\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(toolbar.key, {\n\t\t\t\t\t\tview: (view) => new ToolbarView(ctx, view, md),\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.use(toolbar)\n\t\t\t}\n\t\t}], [EditorFeature.Placeholder, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst { config, plugin } = createPlaceHolder(md);\n\t\t\t\t\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(config.key, (prev) => {\n\t\t\t\t\t\treturn {...prev};\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.use(plugin)\n\t\t\t\t.use(config)\n\t\t\t}\n\t\t}], [EditorFeature.Table, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.tableBlock.tableBlockConfig.key, (_prev) => ({\n\t\t\t\t\t\trenderButton: (renderType) => {\n\t\t\t\t\t\t\tswitch (renderType) {\n\t\t\t\t\t\t\t\tcase 'add_row': return createIcon(md, 'plus');\n\t\t\t\t\t\t\t\tcase 'add_col': return createIcon(md, 'plus');\n\t\t\t\t\t\t\t\tcase 'delete_row': return createIcon(md, 'trash');\n\t\t\t\t\t\t\t\tcase 'delete_col': return createIcon(md, 'trash');\n\t\t\t\t\t\t\t\tcase 'align_col_left': return createIcon(md, 'align-left');\n\t\t\t\t\t\t\t\tcase 'align_col_center': return createIcon(md, 'align-center');\n\t\t\t\t\t\t\t\tcase 'align_col_right': return createIcon(md, 'align-right');\n\t\t\t\t\t\t\t\tcase 'col_drag_handle': return createIcon(md, 'grip-lines-vertical');\n\t\t\t\t\t\t\t\tcase 'row_drag_handle': return createIcon(md, 'grip-lines');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t})\n\t\t\t\t.use(md.components.tableBlock.tableBlock)\n\t\t\t}\n\t\t}], [EditorFeature.CodeEditor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst codeBlockConfig = createCodeBlockConfig(md);\n\t\t\t\tconst codeBlockView = createCodeBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(codeBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([codeBlockView, codeBlockConfig]);\n\t\t\t}\n\t\t}], [EditorFeature.Html, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst htmlBlockConfig = createHtmlBlockConfig(md);\n\t\t\t\tconst htmlBlockView = createHtmlBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(htmlBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([htmlBlockView, htmlBlockConfig]);\n\t\t\t}\n\t\t}]\n\t]);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// import { Editor } from '@milkdown/kit/core';\n// import { createSlice } from '@milkdown/kit/ctx';\n// import { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block'\nimport { BlockHandleView } from './blockEdit';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { ToolbarView } from './toolbar';\nimport { createPlaceHolder } from './placeholder';\nimport { createCodeBlockConfig, createCodeBlockView } from './codeBlock';\nimport { createHtmlBlockConfig, createHtmlBlockView } from './htmlBlock';\nimport { createTocBlock } from './tocBlock';\nimport linkEdit from './linkEdit';\n\nexport * from './blockEditMenu';\nexport * from './htmlBlock';\nexport * from './linkEdit';\n\nexport type DefineFeature<TConfig = unknown> = (\n\teditor: milkdown.core.Editor,\n\tconfig?: TConfig\n) => void | Promise<void>\n\nexport function configureFeatures(features: EditorFeature[], md: typeof milkdown) {\n\treturn (ctx: milkdown.ctx.Ctx) => {\n\t\tctx.inject(md.ctx.createSlice([] as EditorFeature[], 'FeaturesCtx'), features)\n\t}\n}\n\nconst createIcon = (md: typeof milkdown, icon: string) => \n\tmd.atomico.html`<og-icon icon=${icon}></og-icon>`;\n\nexport enum EditorFeature {\n\tBlockEdit = 'block-edit',\n\tCursor = 'cursor',\n\tCodeEditor = 'code-editor',\n\t// ListItem = 'list-item',\n\tLinkTooltip = 'link-tooltip',\n\tImageBlock = 'image-block',\n\tToolbar = 'toolbar',\n\tPlaceholder = 'placeholder',\n\tTable = 'table',\n\tHtml = 'html',\n\tEmoji = 'emoji',\n\tToc = 'toc'\n}\n\nexport type FeatureDefinition = {\n\tdefault: boolean,\n\tinit: () => void\n};\n\nconst createModifyImageUrl = (fn: (url: string) => Promise<string>|string) => {\n\treturn async (url: string) => {\n\t\tif (!url) return null;\n\t\tconst modUrl = fn(url);\n\t\treturn typeof url === 'string' ? modUrl : await modUrl;\n\t}\n};\n\nexport function getFeatures(\n\teditor: milkdown.core.Editor,\n\tmd: typeof milkdown,\n\toptions: {\n\t\tonUpload?: (file: File) => Promise<string>,\n\t\tmodifyImageUrl?: (file: string) => Promise<string>|string,\n\t}\n) {\n\tconst modifyImageUrl = options.modifyImageUrl ? createModifyImageUrl(options.modifyImageUrl) : null;\n\treturn new Map<EditorFeature, FeatureDefinition>([\n\t\t[EditorFeature.BlockEdit, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(md.plugins.block.blockConfig.key, {\n\t\t\t\t\t\tfilterNodes: (pos) => {\n\t\t\t\t\t\tconst filter = md.prose.findParent((node) =>\n\t\t\t\t\t\t\t['table', 'blockquote'].includes(node.type.name)\n\t\t\t\t\t\t)(pos)\n\t\t\t\t\t\tif (filter) return false\n\t\t\t\t\t\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tctx.set(md.plugins.block.block.key, {\n\t\t\t\t\t\tview: () => new BlockHandleView(ctx, md),\n\t\t\t\t\t})\n\t\t\t\t}).use(md.plugins.block.block);\n\t\t\t\t// .config((ctx) => configureMenu(ctx, config))\n\t\t\t\t// .use(menuAPI)\n\t\t\t\t// .use(menu)\n\t\t\t}\n\t\t}], [EditorFeature.Cursor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.plugins.cursor.dropCursorConfig.key, () => ({\n\t\t\t\t\t\tclass: 'md-editor-drop-cursor',\n\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t// color: '#ff0000',\n\t\t\t\t\t}))\n\t\t\t\t}).use(md.plugins.cursor.cursor)\n\t\t\t}\n\t\t}], [EditorFeature.ImageBlock, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.imageInline.inlineImageConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: () => createIcon(md, 'upload'),\n\t\t\t\t\t\timageIcon: () => createIcon(md, 'image'),\n\t\t\t\t\t\tconfirmButton: () => createIcon(md, 'check'),\n\t\t\t\t\t\tuploadPlaceholderText: 'or paste link',\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t} as any))\n\t\t\t\t\tctx.update(md.components.imageBlock.imageBlockConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: () => 'Upload file',\n\t\t\t\t\t\timageIcon: () => createIcon(md, 'image'),\n\t\t\t\t\t\tcaptionIcon: () => createIcon(md, 'comment'),\n\t\t\t\t\t\tconfirmButton: () => 'Confirm',\n\t\t\t\t\t\tcaptionPlaceholderText: 'Write Image Caption',\n\t\t\t\t\t\tuploadPlaceholderText: 'or paste link',\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t} as any))\n\t\t\t\t})\n\t\t\t\t.use(md.components.imageBlock.imageBlockComponent)\n\t\t\t\t.use(md.components.imageInline.imageInlineComponent)\n\t\t\t}\n\t\t}], [EditorFeature.LinkTooltip, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\t// const toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_LINK_EDIT_TOOLBAR');\n\t\t\t\tconst plugin = linkEdit.getPlugin();\n\t\t\t\teditor.config(linkEdit.configure)\n\t\t\t\t/*.config((ctx) => {\n\t\t\t\t\tctx.update(linkEdit.getState().key, (prev) => ({...prev}));\n\t\t\t\t})*/\n\t\t\t\t.use(plugin);\n\t\t\t}\n\t\t}], [EditorFeature.Toolbar, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_TOOLBAR');\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(toolbar.key, {\n\t\t\t\t\t\tview: (view) => new ToolbarView(ctx, view, md),\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.use(toolbar)\n\t\t\t}\n\t\t}], [EditorFeature.Placeholder, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst { config, plugin } = createPlaceHolder(md);\n\t\t\t\t\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(config.key, (prev) => {\n\t\t\t\t\t\treturn {...prev};\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.use(plugin)\n\t\t\t\t.use(config)\n\t\t\t}\n\t\t}], [EditorFeature.Table, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.tableBlock.tableBlockConfig.key, (_prev) => ({\n\t\t\t\t\t\trenderButton: (renderType) => {\n\t\t\t\t\t\t\tswitch (renderType) {\n\t\t\t\t\t\t\t\tcase 'add_row': return createIcon(md, 'plus');\n\t\t\t\t\t\t\t\tcase 'add_col': return createIcon(md, 'plus');\n\t\t\t\t\t\t\t\tcase 'delete_row': return createIcon(md, 'trash');\n\t\t\t\t\t\t\t\tcase 'delete_col': return createIcon(md, 'trash');\n\t\t\t\t\t\t\t\tcase 'align_col_left': return createIcon(md, 'align-left');\n\t\t\t\t\t\t\t\tcase 'align_col_center': return createIcon(md, 'align-center');\n\t\t\t\t\t\t\t\tcase 'align_col_right': return createIcon(md, 'align-right');\n\t\t\t\t\t\t\t\tcase 'col_drag_handle': return createIcon(md, 'grip-lines-vertical');\n\t\t\t\t\t\t\t\tcase 'row_drag_handle': return createIcon(md, 'grip-lines');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t})\n\t\t\t\t.use(md.components.tableBlock.tableBlock)\n\t\t\t}\n\t\t}], [EditorFeature.CodeEditor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst codeBlockConfig = createCodeBlockConfig(md);\n\t\t\t\tconst codeBlockView = createCodeBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(codeBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([codeBlockView, codeBlockConfig]);\n\t\t\t}\n\t\t}], [EditorFeature.Html, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst htmlBlockConfig = createHtmlBlockConfig(md);\n\t\t\t\tconst htmlBlockView = createHtmlBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(htmlBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([htmlBlockView, htmlBlockConfig]);\n\t\t\t}\n\t\t}], [EditorFeature.Emoji, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tif (md.plugins.emoji) editor.use(md.plugins.emoji.emoji);\n\t\t\t}\n\t\t}], [EditorFeature.Toc, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst toc = createTocBlock(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(toc.tocConfig.key, (_d) => ({}));\n\t\t\t\t}).use(toc.plugins);\n\t\t\t}\n\t\t}]\n\t]);\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import type * as milkdown from '@omegagrid/milkdown-kit';
2
+ import { LitElement } from 'lit';
3
+ interface TocHeading {
4
+ level: number;
5
+ text: string;
6
+ pos: number;
7
+ number: string;
8
+ }
9
+ export declare class TocBlockComponent extends LitElement {
10
+ static styles: import("lit").CSSResult;
11
+ headings: TocHeading[];
12
+ onHeadingClick?: (pos: number) => void;
13
+ render(): import("lit").TemplateResult<1>;
14
+ }
15
+ export type TocConfig = Record<string, never>;
16
+ export declare function createTocBlock(md: typeof milkdown): {
17
+ tocConfig: milkdown.utils.$Ctx<TocConfig, "tocBlockConfigCtx">;
18
+ plugins: milkdown.ctx.MilkdownPlugin[];
19
+ };
20
+ export {};
21
+ //# sourceMappingURL=tocBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tocBlock.d.ts","sourceRoot":"","sources":["../../../src/components/features/tocBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAIzD,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,UAAU,UAAU;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CACf;AAgBD,qBACa,iBAAkB,SAAQ,UAAU;IAEhD,MAAM,CAAC,MAAM,0BA6CX;IAGF,QAAQ,EAAE,UAAU,EAAE,CAAM;IAG5B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,MAAM;CAON;AA2DD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAY9C,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,QAAQ;;;EAuFjD"}
@@ -0,0 +1,46 @@
1
+ var __decorate=this&&this.__decorate||function(e,t,o,n){var r,i=arguments.length,c=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,o,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(c=(i<3?r(c):i>3?r(t,o,c):r(t,o))||c);return i>3&&c&&Object.defineProperty(t,o,c),c};import{dom}from"@omegagrid/core";import{LitElement,css,html}from"lit";import{customElement,property}from"lit/decorators.js";function generateHeadingNumbers(e){const t=[];return e.map((e=>{const o=e.level-1;for(;t.length<=o;)t.push(0);return t[o]++,t.length=o+1,t.join(".")}))}let TocBlockComponent=class extends LitElement{constructor(){super(...arguments),this.headings=[]}render(){return this.headings.length?html`<ul>${this.headings.map((e=>html`<li style="padding-left: ${16*(e.level-1)}px"><a @click=${()=>this.onHeadingClick?.(e.pos)}><span class="num">${e.number}</span>${e.text}</a></li>`))}</ul>`:html`<div class="empty">No headings found</div>`}};TocBlockComponent.styles=css`
2
+ :host {
3
+ display: block;
4
+ border-left: 3px solid var(--og-accent-color, #4a9eff);
5
+ padding: 4px 12px;
6
+ margin: 8px 0;
7
+ border-radius: 0 4px 4px 0;
8
+ font-size: 0.85em;
9
+ line-height: 1.4;
10
+ }
11
+ .toc-title {
12
+ font-weight: 600;
13
+ margin-bottom: 2px;
14
+ color: var(--og-accent-color, #4a9eff);
15
+ }
16
+ ul {
17
+ list-style: none;
18
+ padding: 0;
19
+ margin: 0;
20
+ line-height: 1.4;
21
+ }
22
+ li {
23
+ display: block;
24
+ padding: 0;
25
+ margin: 0;
26
+ line-height: 1.4;
27
+ color: var(--og-text-color, inherit);
28
+ }
29
+ a {
30
+ color: inherit;
31
+ text-decoration: none;
32
+ cursor: pointer;
33
+ }
34
+ a:hover {
35
+ text-decoration: underline;
36
+ color: var(--og-accent-color, #4a9eff);
37
+ }
38
+ .num {
39
+ color: var(--og-text-secondary-color, #999);
40
+ margin-right: 6px;
41
+ }
42
+ .empty {
43
+ color: var(--og-text-secondary-color, #999);
44
+ font-style: italic;
45
+ }
46
+ `,__decorate([property({attribute:!1})],TocBlockComponent.prototype,"headings",void 0),__decorate([property({attribute:!1})],TocBlockComponent.prototype,"onHeadingClick",void 0),TocBlockComponent=__decorate([customElement("og-markdown-toc")],TocBlockComponent);export{TocBlockComponent};class TocBlock{constructor(e,t,o,n,r){this.md=e,this.node=t,this.view=o,this.getPos=n,this.tocViews=r,this.dom=dom.createElement("og-markdown-toc"),this.updateHeadings(),this.tocViews.add(this)}updateHeadings(){const e=[];this.view.state.doc.descendants(((t,o)=>{"heading"===t.type.name&&t.textContent.trim().length>0&&e.push({level:t.attrs.level,text:t.textContent,pos:o,number:""})}));const t=generateHeadingNumbers(e);return e.forEach(((e,o)=>e.number=t[o])),this.dom.headings=e,this.dom.onHeadingClick=e=>{const t=this.view.nodeDOM(e);if(!t)return;const o=this.view.dom.parentElement;o&&(o.scrollTop=t.offsetTop)},e}update(e){return e.type===this.node.type&&(this.node=e,!0)}selectNode(){}deselectNode(){}stopEvent(){return!0}ignoreMutation(){return!0}destroy(){this.tocViews.delete(this)}}function walkTree(e,t){if(e.children)for(let o=e.children.length-1;o>=0;o--)t(e.children[o],o,e),walkTree(e.children[o],t)}export function createTocBlock(e){const t=new Set,o=e.utils.$ctx({},"tocBlockConfigCtx"),n=e.utils.$remark("remarkTocPlugin",(()=>()=>e=>{walkTree(e,((e,t,o)=>{"paragraph"===e.type&&1===e.children?.length&&"text"===e.children[0].type&&"[toc]"===e.children[0].value?.trim().toLowerCase()&&(o.children[t]={type:"toc"})}))})),r=e.utils.$nodeSchema("toc",(()=>({atom:!0,group:"block",selectable:!0,draggable:!1,isolating:!0,attrs:{},toDOM:()=>["div",{"data-type":"toc"}],parseDOM:[{tag:'div[data-type="toc"]'}],parseMarkdown:{match:e=>"toc"===e.type,runner:(e,t,o)=>{e.addNode(o)}},toMarkdown:{match:e=>"toc"===e.type.name,runner:e=>{e.openNode("paragraph"),e.addNode("text",void 0,"[toc]"),e.closeNode()}}}))),i=e.utils.$view(r.node,(()=>(o,n,r)=>new TocBlock(e,o,n,r,t))),c=e.utils.$prose((()=>new e.prose.state.Plugin({key:new e.prose.state.PluginKey("MARKDOWN_TOC_SYNC"),props:{decorations:t=>{const o=[];if(t.doc.descendants(((e,t)=>{"heading"===e.type.name&&e.textContent.trim().length>0&&o.push({pos:t,level:e.attrs.level,size:e.nodeSize})})),!o.length)return e.prose.view.DecorationSet.empty;const n=generateHeadingNumbers(o),r=o.map(((t,o)=>e.prose.view.Decoration.widget(t.pos+1,(()=>{const e=document.createElement("span");return e.className="toc-heading-number",e.textContent=n[o]+" ",e.style.cssText="color: var(--og-text-secondary-color, #999); margin-right: 4px;",e}),{side:-1})));return e.prose.view.DecorationSet.create(t.doc,r)}},view:()=>({update:(e,o)=>{if(!e.state.doc.eq(o.doc))for(const e of t)e.updateHeadings()}})}))),a=[...n,...r,i,c,o].flat();return{tocConfig:o,plugins:a}}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tocBlock.js","sourceRoot":"","sources":["../../../src/components/features/tocBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as milkdown from '@omegagrid/milkdown-kit';\nimport type { NodeView, EditorView } from '@omegagrid/milkdown-kit/dist/prose/view';\nimport type { Node } from '@omegagrid/milkdown-kit/dist/prose/model';\nimport { dom } from '@omegagrid/core';\nimport { LitElement, css, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\ninterface TocHeading {\n\tlevel: number;\n\ttext: string;\n\tpos: number;\n\tnumber: string;\n}\n\nfunction generateHeadingNumbers(headings: { level: number }[]): string[] {\n\tconst counters: number[] = [];\n\treturn headings.map(h => {\n\t\tconst depth = h.level - 1;\n\t\t// Extend counters if needed\n\t\twhile (counters.length <= depth) counters.push(0);\n\t\t// Increment current level\n\t\tcounters[depth]++;\n\t\t// Reset deeper levels\n\t\tcounters.length = depth + 1;\n\t\treturn counters.join('.');\n\t});\n}\n\n@customElement('og-markdown-toc')\nexport class TocBlockComponent extends LitElement {\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tborder-left: 3px solid var(--og-accent-color, #4a9eff);\n\t\t\tpadding: 4px 12px;\n\t\t\tmargin: 8px 0;\n\t\t\tborder-radius: 0 4px 4px 0;\n\t\t\tfont-size: 0.85em;\n\t\t\tline-height: 1.4;\n\t\t}\n\t\t.toc-title {\n\t\t\tfont-weight: 600;\n\t\t\tmargin-bottom: 2px;\n\t\t\tcolor: var(--og-accent-color, #4a9eff);\n\t\t}\n\t\tul {\n\t\t\tlist-style: none;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\tline-height: 1.4;\n\t\t}\n\t\tli {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\tline-height: 1.4;\n\t\t\tcolor: var(--og-text-color, inherit);\n\t\t}\n\t\ta {\n\t\t\tcolor: inherit;\n\t\t\ttext-decoration: none;\n\t\t\tcursor: pointer;\n\t\t}\n\t\ta:hover {\n\t\t\ttext-decoration: underline;\n\t\t\tcolor: var(--og-accent-color, #4a9eff);\n\t\t}\n\t\t.num {\n\t\t\tcolor: var(--og-text-secondary-color, #999);\n\t\t\tmargin-right: 6px;\n\t\t}\n\t\t.empty {\n\t\t\tcolor: var(--og-text-secondary-color, #999);\n\t\t\tfont-style: italic;\n\t\t}\n\t`;\n\n\t@property({ attribute: false })\n\theadings: TocHeading[] = [];\n\n\t@property({ attribute: false })\n\tonHeadingClick?: (pos: number) => void;\n\n\trender() {\n\t\tif (!this.headings.length) {\n\t\t\treturn html`<div class=\"empty\">No headings found</div>`;\n\t\t}\n\n\t\treturn html`<ul>${this.headings.map(h => html`<li style=\"padding-left: ${(h.level - 1) * 16}px\"><a @click=${() => this.onHeadingClick?.(h.pos)}><span class=\"num\">${h.number}</span>${h.text}</a></li>`)}</ul>`;\n\t}\n}\n\nclass TocBlock implements NodeView {\n\tdom: TocBlockComponent;\n\n\tconstructor(\n\t\tpublic md: typeof milkdown,\n\t\tpublic node: Node,\n\t\tpublic view: EditorView,\n\t\tpublic getPos: () => number | undefined,\n\t\tprivate tocViews: Set<TocBlock>\n\t) {\n\t\tthis.dom = dom.createElement<TocBlockComponent>('og-markdown-toc');\n\t\tthis.updateHeadings();\n\t\tthis.tocViews.add(this);\n\t}\n\n\tupdateHeadings(): TocHeading[] {\n\t\tconst headings: TocHeading[] = [];\n\t\tthis.view.state.doc.descendants((node, pos) => {\n\t\t\tif (node.type.name === 'heading' && node.textContent.trim().length > 0) {\n\t\t\t\theadings.push({\n\t\t\t\t\tlevel: node.attrs.level,\n\t\t\t\t\ttext: node.textContent,\n\t\t\t\t\tpos,\n\t\t\t\t\tnumber: '',\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tconst numbers = generateHeadingNumbers(headings);\n\t\theadings.forEach((h, i) => h.number = numbers[i]);\n\t\tthis.dom.headings = headings;\n\t\tthis.dom.onHeadingClick = (pos: number) => {\n\t\t\tconst heading = this.view.nodeDOM(pos) as HTMLElement;\n\t\t\tif (!heading) return;\n\t\t\tconst milkdownElm = this.view.dom.parentElement;\n\t\t\tif (milkdownElm) {\n\t\t\t\tmilkdownElm.scrollTop = heading.offsetTop;\n\t\t\t}\n\t\t};\n\t\treturn headings;\n\t}\n\n\tupdate(node: Node) {\n\t\tif (node.type !== this.node.type) return false;\n\t\tthis.node = node;\n\t\treturn true;\n\t}\n\n\tselectNode() {}\n\tdeselectNode() {}\n\tstopEvent() { return true; }\n\tignoreMutation() { return true; }\n\n\tdestroy() {\n\t\tthis.tocViews.delete(this);\n\t}\n}\n\nexport type TocConfig = Record<string, never>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction walkTree(tree: any, callback: (node: any, index: number, parent: any) => void) {\n\tif (tree.children) {\n\t\tfor (let i = tree.children.length - 1; i >= 0; i--) {\n\t\t\tcallback(tree.children[i], i, tree);\n\t\t\twalkTree(tree.children[i], callback);\n\t\t}\n\t}\n}\n\nexport function createTocBlock(md: typeof milkdown) {\n\tconst tocViews = new Set<TocBlock>();\n\n\tconst tocConfig = md.utils.$ctx({} as TocConfig, 'tocBlockConfigCtx');\n\n\tconst remarkPlugin = md.utils.$remark('remarkTocPlugin', () => () => (tree: unknown) => {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\twalkTree(tree, (node: any, index: number, parent: any) => {\n\t\t\tif (node.type === 'paragraph'\n\t\t\t\t&& node.children?.length === 1\n\t\t\t\t&& node.children[0].type === 'text'\n\t\t\t\t&& node.children[0].value?.trim().toLowerCase() === '[toc]') {\n\t\t\t\tparent.children[index] = { type: 'toc' };\n\t\t\t}\n\t\t});\n\t});\n\n\tconst nodeSchema = md.utils.$nodeSchema('toc', () => ({\n\t\tatom: true,\n\t\tgroup: 'block',\n\t\tselectable: true,\n\t\tdraggable: false,\n\t\tisolating: true,\n\t\tattrs: {},\n\t\ttoDOM: () => ['div', { 'data-type': 'toc' }] as const,\n\t\tparseDOM: [{ tag: 'div[data-type=\"toc\"]' }],\n\t\tparseMarkdown: {\n\t\t\tmatch: (mdNode: { type: string }) => mdNode.type === 'toc',\n\t\t\trunner: (state: any, _node: unknown, type: any) => { // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\t\tstate.addNode(type);\n\t\t\t},\n\t\t},\n\t\ttoMarkdown: {\n\t\t\tmatch: (node: Node) => node.type.name === 'toc',\n\t\t\trunner: (state: any) => { // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\t\tstate.openNode('paragraph');\n\t\t\t\tstate.addNode('text', undefined, '[toc]');\n\t\t\t\tstate.closeNode();\n\t\t\t},\n\t\t},\n\t}));\n\n\tconst nodeView = md.utils.$view(nodeSchema.node, () => {\n\t\treturn (node: Node, view: EditorView, getPos: () => number | undefined) => {\n\t\t\treturn new TocBlock(md, node, view, getPos, tocViews);\n\t\t};\n\t});\n\n\tconst syncPlugin = md.utils.$prose(() => new md.prose.state.Plugin({\n\t\tkey: new md.prose.state.PluginKey('MARKDOWN_TOC_SYNC'),\n\t\tprops: {\n\t\t\tdecorations: (state) => {\n\t\t\t\t// Collect headings and their numbers\n\t\t\t\tconst headings: { pos: number; level: number; size: number }[] = [];\n\t\t\t\tstate.doc.descendants((node, pos) => {\n\t\t\t\t\tif (node.type.name === 'heading' && node.textContent.trim().length > 0) {\n\t\t\t\t\t\theadings.push({ pos, level: node.attrs.level, size: node.nodeSize });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!headings.length) return md.prose.view.DecorationSet.empty;\n\n\t\t\t\tconst numbers = generateHeadingNumbers(headings);\n\t\t\t\tconst decos = headings.map((h, i) =>\n\t\t\t\t\tmd.prose.view.Decoration.widget(h.pos + 1, () => {\n\t\t\t\t\t\tconst span = document.createElement('span');\n\t\t\t\t\t\tspan.className = 'toc-heading-number';\n\t\t\t\t\t\tspan.textContent = numbers[i] + ' ';\n\t\t\t\t\t\tspan.style.cssText = 'color: var(--og-text-secondary-color, #999); margin-right: 4px;';\n\t\t\t\t\t\treturn span;\n\t\t\t\t\t}, { side: -1 })\n\t\t\t\t);\n\t\t\t\treturn md.prose.view.DecorationSet.create(state.doc, decos);\n\t\t\t},\n\t\t},\n\t\tview: () => ({\n\t\t\tupdate: (view: EditorView, prevState: any) => { // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\t\tif (view.state.doc.eq(prevState.doc)) return;\n\t\t\t\tfor (const tv of tocViews) {\n\t\t\t\t\ttv.updateHeadings();\n\t\t\t\t}\n\t\t\t},\n\t\t}),\n\t}));\n\n\tconst plugins = [...remarkPlugin, ...nodeSchema, nodeView, syncPlugin, tocConfig].flat();\n\n\treturn { tocConfig, plugins };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const style: import("lit").CSSResult;
2
+ //# sourceMappingURL=emoji.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emoji.d.ts","sourceRoot":"","sources":["../../../src/components/styles/emoji.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,yBASjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import{css}from"lit";export const style=css`
2
+ span[data-type='emoji'] {
3
+ display: inline-block;
4
+ }
5
+
6
+ span[data-type='emoji'] .emoji {
7
+ width: 1rem;
8
+ height: 1rem;
9
+ }
10
+ `;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emoji.js","sourceRoot":"","sources":["../../../src/components/styles/emoji.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;CASvB,CAAC","sourcesContent":["import { css } from \"lit\";\n\nexport const style = css`\n\tspan[data-type='emoji'] {\n\t\tdisplay: inline-block;\n\t}\n\n\tspan[data-type='emoji'] .emoji {\n\t\twidth: 1rem;\n\t\theight: 1rem;\n\t}\n`;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":";AASA,wBASE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":";AAUA,wBAUE"}
@@ -1 +1 @@
1
- import{style as blockEditStyle}from"./block-edit";import{style as cursorStyle}from"./cursor";import{style as imageStyle}from"./image-block";import{style as linkTooltipStyle}from"./link-tooltip";import{style as listItemStyle}from"./list-item";import{style as placeholderStyle}from"./placeholder";import{style as prosemirrorStyle}from"./prosemirror";import{style as tableStyle}from"./table";export default[blockEditStyle,cursorStyle,imageStyle,linkTooltipStyle,listItemStyle,placeholderStyle,prosemirrorStyle,tableStyle];
1
+ import{style as blockEditStyle}from"./block-edit";import{style as cursorStyle}from"./cursor";import{style as imageStyle}from"./image-block";import{style as linkTooltipStyle}from"./link-tooltip";import{style as listItemStyle}from"./list-item";import{style as placeholderStyle}from"./placeholder";import{style as prosemirrorStyle}from"./prosemirror";import{style as tableStyle}from"./table";import{style as emojiStyle}from"./emoji";export default[blockEditStyle,cursorStyle,imageStyle,linkTooltipStyle,listItemStyle,placeholderStyle,prosemirrorStyle,tableStyle,emojiStyle];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAe;IACd,cAAc;IACd,WAAW;IACX,UAAU;IACV,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,UAAU;CACV,CAAC","sourcesContent":["import { style as blockEditStyle } from './block-edit';\nimport { style as cursorStyle } from './cursor';\nimport { style as imageStyle } from './image-block';\nimport { style as linkTooltipStyle } from './link-tooltip';\nimport { style as listItemStyle } from './list-item';\nimport { style as placeholderStyle } from './placeholder';\nimport { style as prosemirrorStyle } from './prosemirror';\nimport { style as tableStyle } from './table';\n\nexport default [\n\tblockEditStyle,\n\tcursorStyle,\n\timageStyle,\n\tlinkTooltipStyle,\n\tlistItemStyle,\n\tplaceholderStyle,\n\tprosemirrorStyle,\n\ttableStyle,\n];\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAe;IACd,cAAc;IACd,WAAW;IACX,UAAU;IACV,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,UAAU;IACV,UAAU;CACV,CAAC","sourcesContent":["import { style as blockEditStyle } from './block-edit';\nimport { style as cursorStyle } from './cursor';\nimport { style as imageStyle } from './image-block';\nimport { style as linkTooltipStyle } from './link-tooltip';\nimport { style as listItemStyle } from './list-item';\nimport { style as placeholderStyle } from './placeholder';\nimport { style as prosemirrorStyle } from './prosemirror';\nimport { style as tableStyle } from './table';\nimport { style as emojiStyle } from './emoji';\n\nexport default [\n\tblockEditStyle,\n\tcursorStyle,\n\timageStyle,\n\tlinkTooltipStyle,\n\tlistItemStyle,\n\tplaceholderStyle,\n\tprosemirrorStyle,\n\ttableStyle,\n\temojiStyle\n];\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/markdown",
3
- "version": "0.9.50",
3
+ "version": "0.9.52",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Markdown view webcomponent",
6
6
  "main": "./dist/index.js",
@@ -28,11 +28,11 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@fortawesome/fontawesome-svg-core": "^7.0.1",
31
- "@omegagrid/code": "^0.9.50",
32
- "@omegagrid/core": "^0.9.50",
33
- "@omegagrid/localize": "^0.9.50",
34
- "@omegagrid/milkdown-kit": "^0.9.50",
35
- "@omegagrid/tabs": "^0.9.50",
31
+ "@omegagrid/code": "^0.9.52",
32
+ "@omegagrid/core": "^0.9.52",
33
+ "@omegagrid/localize": "^0.9.52",
34
+ "@omegagrid/milkdown-kit": "^0.9.52",
35
+ "@omegagrid/tabs": "^0.9.52",
36
36
  "lit": "^3.1.1",
37
37
  "markdown-it": "^14.1.0",
38
38
  "ts-debounce": "^4.0.0"