@omegagrid/markdown 0.10.36 → 0.10.37

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.
@@ -1 +1 @@
1
- {"version":3,"file":"blockEdit.d.ts","sourceRoot":"","sources":["../../../src/components/features/blockEdit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAGlC,qBACa,SAAU,SAAQ,UAAU;;IAExC,MAAM,CAAC,MAAM,0BAqBX;IAGF,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IAGtB,EAAE,EAAE,OAAO,QAAQ,CAAC;IAGpB,IAAI,IAAI,kBAA+B;IAEvC,OAAO;IAMP,oBAAoB;IAIpB,MAAM,wCAkBJ;IAEF,QAAQ,oBAAoC;IAE5C,QAAQ,GAAI,KAAK,WAAW,UAW3B;CACD;AAED,qBAAa,eAAe;;IAG3B,EAAE,EAAE,OAAO,QAAQ,CAAC;gBAGR,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,QAAQ;IAqBtD,MAAM,aAEL;IAED,OAAO,aAEN;CAyBD"}
1
+ {"version":3,"file":"blockEdit.d.ts","sourceRoot":"","sources":["../../../src/components/features/blockEdit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAGlC,qBACa,SAAU,SAAQ,UAAU;;IAExC,MAAM,CAAC,MAAM,0BA0BX;IAGF,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IAGtB,EAAE,EAAE,OAAO,QAAQ,CAAC;IAGpB,IAAI,IAAI,kBAA+B;IAEvC,OAAO;IAMP,oBAAoB;IAIpB,MAAM,wCAkBJ;IAEF,QAAQ,oBAAoC;IAE5C,QAAQ,GAAI,KAAK,WAAW,UAW3B;CACD;AAED,qBAAa,eAAe;;IAG3B,EAAE,EAAE,OAAO,QAAQ,CAAC;gBAGR,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,QAAQ;IAqBtD,MAAM,aAEL;IAED,OAAO,aAEN;CAyBD"}
@@ -29,6 +29,11 @@ var _BlockEdit_menu,_BlockHandleView_provider,_BlockHandleView_ctx,_BlockHandleV
29
29
  align-items: center;
30
30
  }
31
31
 
32
+ :host([data-show='false']) {
33
+ opacity: 0;
34
+ pointer-events: none;
35
+ }
36
+
32
37
  og-dropdown, og-button {
33
38
  min-width: 20px;
34
39
  height: 20px;
@@ -1 +1 @@
1
- {"version":3,"file":"blockEdit.js","sourceRoot":"","sources":["../../../src/components/features/blockEdit.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { dom } from \"@omegagrid/core\";\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { BlockEditMenu } from \".\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\n\n@customElement('og-markdown-block-edit')\nexport class BlockEdit extends LitElement {\n\n\tstatic styles = css`\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tposition: absolute;\n\t\t\ttransition: top .2s;\n\t\t\tgap: 2px;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t}\n\n\t\tog-dropdown, og-button {\n\t\t\tmin-width: 20px;\n\t\t\theight: 20px;\n\t\t\tflex: 0;\n\t\t\ttext-align: center;\n\t\t}\n\t`;\n\n\t@property({type: Object})\n\tctx: milkdown.ctx.Ctx;\n\n\t@property({type: Object})\n\tmd: typeof milkdown;\n\n\t#menu = createRef<BlockEditMenu>();\n\tget menu() { return this.#menu?.value }\n\n\tupdated() {\n\t\tif (this.menu.parentNode == this.shadowRoot) {\n\t\t\tdocument.body.appendChild(this.menu);\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tif (this.menu) this.shadowRoot.appendChild(this.menu);\n\t}\n\n\trender = () => html`\n\t\t<og-button\n\t\t\ticon=\"plus\"\n\t\t\tcolor=\"transparent\"\n\t\t\t@click=${() => {\n\t\t\t\tthis.dispatchEvent(new Event('add'));\n\t\t\t}}>\n\t\t</og-button>\n\n\t\t<og-button icon=\"grip-vertical\" color=\"transparent\"></og-button>\n\n\t\t<og-markdown-block-edit-menu ${ref(this.#menu)}\n\t\t\t@mousedown=${(e: MouseEvent) => e.stopPropagation()}\n\t\t\tstyle=\"display: none\"\n\t\t\t@run=${() => this.hideMenu()}\n\t\t\t.ctx=\"${this.ctx}\"\n\t\t\t.md=\"${this.md}\">\n\t\t</og-markdown-block-edit-menu>\n\t`;\n\n\thideMenu = () => dom.hideElement(this.menu);\n\n\tshowMenu = (elm: HTMLElement) => {\n\t\tif (!this.menu) return;\n\t\tconst container = this.menu.parentElement;\n\t\tconst offset = dom.getElementOffset(elm, container);\n\t\tdom.showElement(this.menu);\n\t\tlet top = offset.top + elm.offsetHeight + 4;\n\t\tif (top + this.menu.offsetHeight > container.clientHeight) {\n\t\t\ttop = offset.top - this.menu.offsetHeight - 4;\n\t\t}\n\t\tdom.setPosition(this.menu, {t: top, l: offset.left});\n\t\tdocument.addEventListener('mousedown', () => dom.hideElement(this.menu), {once: true});\n\t}\n}\n\nexport class BlockHandleView { // implements milkdown.prose.state.PluginView {\n\t#provider: InstanceType<typeof milkdown.plugins.block.BlockProvider>;\n\t#ctx: milkdown.ctx.Ctx;\n\tmd: typeof milkdown;\n\t#content: BlockEdit;\n\t\n\tconstructor(ctx: milkdown.ctx.Ctx, md: typeof milkdown) {\n\t\tthis.md = md;\n\t\tthis.#ctx = ctx;\n\t\tconst content = dom.createElement<BlockEdit>('og-markdown-block-edit');\n\t\tcontent.ctx = ctx;\n\t\tcontent.md = md;\n\t\tcontent.addEventListener('add', this.#onAdd);\n\t\tthis.#content = content;\n\t\tthis.#provider = new md.plugins.block.BlockProvider({\n\t\t\tctx,\n\t\t\tcontent,\n\t\t\tgetOffset: () => 10,\n\t\t\tgetPlacement: ({ active, blockDom }) => {\n\t\t\t\tdom.setPosition(blockDom, {l: 0});\n\t\t\t\tdom.setSize(blockDom, {h: active.el.offsetHeight, w: 40});\n\t\t\t\treturn 'left';\n\t\t\t}\n\t\t});\n\t\tthis.update()\n\t}\n\t\n\tupdate = () => {\n\t\tthis.#provider.update();\n\t}\n\t\n\tdestroy = () => {\n\t\tthis.#provider.destroy();\n\t}\n\t\n\t#onAdd = () => {\n\t\tconst ctx = this.#ctx;\n\t\tconst view = ctx.get(this.md.core.editorViewCtx);\n\t\tif (!view.hasFocus()) view.focus();\n\t\t\n\t\tconst { state, dispatch } = view;\n\t\tconst active = this.#provider.active;\n\t\tif (!active) return;\n\n\t\tconst $pos = active.$pos;\n\t\tconst pos = $pos.pos + active.node.nodeSize;\n\t\tlet tr = state.tr.insert(pos, this.md.presets.commonmark.paragraphSchema.type(ctx).create());\n\t\ttr = tr.setSelection(this.md.prose.state.TextSelection.near(tr.doc.resolve(pos)));\n\t\t\n\t\tdispatch(tr.scrollIntoView());\n\t\t\n\t\tthis.#provider.hide();\n\t\tif (this.#content.menu) {\n\t\t\tconst el = active.el.nextElementSibling as HTMLElement;\n\t\t\tif (el) this.#content.showMenu(el);\n\t\t}\n\t\t// ctx.get(menuAPI.key).show(tr.selection.from);\n\t}\n}\n"]}
1
+ {"version":3,"file":"blockEdit.js","sourceRoot":"","sources":["../../../src/components/features/blockEdit.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { dom } from \"@omegagrid/core\";\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { BlockEditMenu } from \".\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\n\n@customElement('og-markdown-block-edit')\nexport class BlockEdit extends LitElement {\n\n\tstatic styles = css`\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tposition: absolute;\n\t\t\ttransition: top .2s;\n\t\t\tgap: 2px;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t:host([data-show='false']) {\n\t\t\topacity: 0;\n\t\t\tpointer-events: none;\n\t\t}\n\n\t\tog-dropdown, og-button {\n\t\t\tmin-width: 20px;\n\t\t\theight: 20px;\n\t\t\tflex: 0;\n\t\t\ttext-align: center;\n\t\t}\n\t`;\n\n\t@property({type: Object})\n\tctx: milkdown.ctx.Ctx;\n\n\t@property({type: Object})\n\tmd: typeof milkdown;\n\n\t#menu = createRef<BlockEditMenu>();\n\tget menu() { return this.#menu?.value }\n\n\tupdated() {\n\t\tif (this.menu.parentNode == this.shadowRoot) {\n\t\t\tdocument.body.appendChild(this.menu);\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tif (this.menu) this.shadowRoot.appendChild(this.menu);\n\t}\n\n\trender = () => html`\n\t\t<og-button\n\t\t\ticon=\"plus\"\n\t\t\tcolor=\"transparent\"\n\t\t\t@click=${() => {\n\t\t\t\tthis.dispatchEvent(new Event('add'));\n\t\t\t}}>\n\t\t</og-button>\n\n\t\t<og-button icon=\"grip-vertical\" color=\"transparent\"></og-button>\n\n\t\t<og-markdown-block-edit-menu ${ref(this.#menu)}\n\t\t\t@mousedown=${(e: MouseEvent) => e.stopPropagation()}\n\t\t\tstyle=\"display: none\"\n\t\t\t@run=${() => this.hideMenu()}\n\t\t\t.ctx=\"${this.ctx}\"\n\t\t\t.md=\"${this.md}\">\n\t\t</og-markdown-block-edit-menu>\n\t`;\n\n\thideMenu = () => dom.hideElement(this.menu);\n\n\tshowMenu = (elm: HTMLElement) => {\n\t\tif (!this.menu) return;\n\t\tconst container = this.menu.parentElement;\n\t\tconst offset = dom.getElementOffset(elm, container);\n\t\tdom.showElement(this.menu);\n\t\tlet top = offset.top + elm.offsetHeight + 4;\n\t\tif (top + this.menu.offsetHeight > container.clientHeight) {\n\t\t\ttop = offset.top - this.menu.offsetHeight - 4;\n\t\t}\n\t\tdom.setPosition(this.menu, {t: top, l: offset.left});\n\t\tdocument.addEventListener('mousedown', () => dom.hideElement(this.menu), {once: true});\n\t}\n}\n\nexport class BlockHandleView { // implements milkdown.prose.state.PluginView {\n\t#provider: InstanceType<typeof milkdown.plugins.block.BlockProvider>;\n\t#ctx: milkdown.ctx.Ctx;\n\tmd: typeof milkdown;\n\t#content: BlockEdit;\n\t\n\tconstructor(ctx: milkdown.ctx.Ctx, md: typeof milkdown) {\n\t\tthis.md = md;\n\t\tthis.#ctx = ctx;\n\t\tconst content = dom.createElement<BlockEdit>('og-markdown-block-edit');\n\t\tcontent.ctx = ctx;\n\t\tcontent.md = md;\n\t\tcontent.addEventListener('add', this.#onAdd);\n\t\tthis.#content = content;\n\t\tthis.#provider = new md.plugins.block.BlockProvider({\n\t\t\tctx,\n\t\t\tcontent,\n\t\t\tgetOffset: () => 10,\n\t\t\tgetPlacement: ({ active, blockDom }) => {\n\t\t\t\tdom.setPosition(blockDom, {l: 0});\n\t\t\t\tdom.setSize(blockDom, {h: active.el.offsetHeight, w: 40});\n\t\t\t\treturn 'left';\n\t\t\t}\n\t\t});\n\t\tthis.update()\n\t}\n\t\n\tupdate = () => {\n\t\tthis.#provider.update();\n\t}\n\t\n\tdestroy = () => {\n\t\tthis.#provider.destroy();\n\t}\n\t\n\t#onAdd = () => {\n\t\tconst ctx = this.#ctx;\n\t\tconst view = ctx.get(this.md.core.editorViewCtx);\n\t\tif (!view.hasFocus()) view.focus();\n\t\t\n\t\tconst { state, dispatch } = view;\n\t\tconst active = this.#provider.active;\n\t\tif (!active) return;\n\n\t\tconst $pos = active.$pos;\n\t\tconst pos = $pos.pos + active.node.nodeSize;\n\t\tlet tr = state.tr.insert(pos, this.md.presets.commonmark.paragraphSchema.type(ctx).create());\n\t\ttr = tr.setSelection(this.md.prose.state.TextSelection.near(tr.doc.resolve(pos)));\n\t\t\n\t\tdispatch(tr.scrollIntoView());\n\t\t\n\t\tthis.#provider.hide();\n\t\tif (this.#content.menu) {\n\t\t\tconst el = active.el.nextElementSibling as HTMLElement;\n\t\t\tif (el) this.#content.showMenu(el);\n\t\t}\n\t\t// ctx.get(menuAPI.key).show(tr.selection.from);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../../src/components/features/placeholder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AA0BzD,UAAU,iBAAiB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,8BAA8B,QAAO,iBAGhD,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAAI,IAAI,OAAO,QAAQ;;;CAwBpD,CAAC"}
1
+ {"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../../src/components/features/placeholder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AA0BzD,UAAU,iBAAiB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,8BAA8B,QAAO,iBAGhD,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAAI,IAAI,OAAO,QAAQ;;;CA2BpD,CAAC"}
@@ -1 +1 @@
1
- import{isInCodeBlock,isInList}from"./utils";import{msg}from"@omegagrid/localize";function isDocEmpty(e){return e.childCount<=1&&!e.firstChild?.content.size}function createPlaceholderDecoration(e,t,o){const{selection:n}=t;if(!n.empty)return null;const r=n.$anchor,c=r.parent;if(c.content.size>0)return null;const i=e.prose.findParent((e=>"table"===e.type.name))(r);if(i)return null;const l=r.before();return e.prose.view.Decoration.node(l,l+c.nodeSize,{class:"crepe-placeholder","data-placeholder":o})}export const createDefaultPlaceholderConfig=()=>({text:msg("Start typing..."),mode:"block"});export const createPlaceHolder=e=>{const t=e.utils.$ctx(createDefaultPlaceholderConfig(),"placeholderConfigCtx");return{plugin:e.utils.$prose((o=>new e.prose.state.Plugin({key:new e.prose.state.PluginKey("MARKDOWN_PLACEHOLDER"),props:{decorations:n=>{const r=o.get(t.key);if("doc"===r.mode&&!isDocEmpty(n.doc))return null;if(isInCodeBlock(n.selection)||isInList(n.selection))return null;const c=r.text??msg("Start typing..."),i=createPlaceholderDecoration(e,n,c);return i?e.prose.view.DecorationSet.create(n.doc,[i]):null}}}))),config:t}};
1
+ import{isInCodeBlock,isInList}from"./utils";import{msg}from"@omegagrid/localize";function isDocEmpty(e){return e.childCount<=1&&!e.firstChild?.content.size}function createPlaceholderDecoration(e,t,o){const{selection:n}=t;if(!n.empty)return null;const r=n.$anchor,c=r.parent;if(c.content.size>0)return null;const i=e.prose.findParent((e=>"table"===e.type.name))(r);if(i)return null;const l=r.before();return e.prose.view.Decoration.node(l,l+c.nodeSize,{class:"crepe-placeholder","data-placeholder":o})}export const createDefaultPlaceholderConfig=()=>({text:msg("Start typing..."),mode:"block"});export const createPlaceHolder=e=>{const t=e.utils.$ctx(createDefaultPlaceholderConfig(),"placeholderConfigCtx");return{plugin:e.utils.$prose((o=>new e.prose.state.Plugin({key:new e.prose.state.PluginKey("MARKDOWN_PLACEHOLDER"),props:{decorations:n=>{const r=o.get(e.core.editorViewCtx);if(r&&!r.editable)return null;const c=o.get(t.key);if("doc"===c.mode&&!isDocEmpty(n.doc))return null;if(isInCodeBlock(n.selection)||isInList(n.selection))return null;const i=c.text??msg("Start typing..."),l=createPlaceholderDecoration(e,n,i);return l?e.prose.view.DecorationSet.create(n.doc,[l]):null}}}))),config:t}};
@@ -1 +1 @@
1
- {"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/components/features/placeholder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Node } from '@omegagrid/milkdown-kit/dist/prose/model';\nimport type { EditorState } from '@omegagrid/milkdown-kit/dist/prose/state';\nimport { isInCodeBlock, isInList } from './utils';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { msg } from '@omegagrid/localize';\n\nfunction isDocEmpty(doc: Node) {\n\treturn doc.childCount <= 1 && !doc.firstChild?.content.size;\n}\n\nfunction createPlaceholderDecoration(md: typeof milkdown, state: EditorState, placeholderText: string) {\n\tconst { selection } = state;\n\tif (!selection.empty) return null;\n\n\tconst $pos = selection.$anchor;\n\tconst node = $pos.parent;\n\tif (node.content.size > 0) return null;\n\n\tconst inTable = md.prose.findParent((node) => node.type.name === 'table')($pos);\n\tif (inTable) return null;\n\n\tconst before = $pos.before();\n\n\treturn md.prose.view.Decoration.node(before, before + node.nodeSize, {\n\t\tclass: 'crepe-placeholder',\n\t\t'data-placeholder': placeholderText,\n\t});\n}\n\ninterface PlaceholderConfig {\n\ttext: string;\n\tmode: 'doc' | 'block';\n}\n\nexport type PlaceHolderFeatureConfig = Partial<PlaceholderConfig>;\n\nexport const createDefaultPlaceholderConfig = (): PlaceholderConfig => ({\n\ttext: msg('Start typing...'),\n\tmode: 'block',\n});\n\nexport const createPlaceHolder = (md: typeof milkdown) => {\n\tconst placeholderConfig = md.utils.$ctx(createDefaultPlaceholderConfig(), 'placeholderConfigCtx');\n\tconst placeholderPlugin = md.utils.$prose(ctx => new md.prose.state.Plugin({\n\t\tkey: new md.prose.state.PluginKey('MARKDOWN_PLACEHOLDER'),\n\t\tprops: {\n\t\t\tdecorations: (state) => {\n\t\t\t\tconst config = ctx.get(placeholderConfig.key);\n\t\t\t\tif (config.mode === 'doc' && !isDocEmpty(state.doc)) return null;\n\t\t\n\t\t\t\tif (isInCodeBlock(state.selection) || isInList(state.selection)) return null;\n\t\t\n\t\t\t\tconst placeholderText = config.text ?? msg('Start typing...');\n\t\t\t\tconst deco = createPlaceholderDecoration(md, state, placeholderText);\n\t\t\t\tif (!deco) return null;\n\t\t\n\t\t\t\treturn md.prose.view.DecorationSet.create(state.doc, [deco]);\n\t\t\t},\n\t\t}\n\t}));\n\n\treturn {\n\t\tplugin: placeholderPlugin,\n\t\tconfig: placeholderConfig,\n\t}\n};\n"]}
1
+ {"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/components/features/placeholder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Node } from '@omegagrid/milkdown-kit/dist/prose/model';\nimport type { EditorState } from '@omegagrid/milkdown-kit/dist/prose/state';\nimport { isInCodeBlock, isInList } from './utils';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { msg } from '@omegagrid/localize';\n\nfunction isDocEmpty(doc: Node) {\n\treturn doc.childCount <= 1 && !doc.firstChild?.content.size;\n}\n\nfunction createPlaceholderDecoration(md: typeof milkdown, state: EditorState, placeholderText: string) {\n\tconst { selection } = state;\n\tif (!selection.empty) return null;\n\n\tconst $pos = selection.$anchor;\n\tconst node = $pos.parent;\n\tif (node.content.size > 0) return null;\n\n\tconst inTable = md.prose.findParent((node) => node.type.name === 'table')($pos);\n\tif (inTable) return null;\n\n\tconst before = $pos.before();\n\n\treturn md.prose.view.Decoration.node(before, before + node.nodeSize, {\n\t\tclass: 'crepe-placeholder',\n\t\t'data-placeholder': placeholderText,\n\t});\n}\n\ninterface PlaceholderConfig {\n\ttext: string;\n\tmode: 'doc' | 'block';\n}\n\nexport type PlaceHolderFeatureConfig = Partial<PlaceholderConfig>;\n\nexport const createDefaultPlaceholderConfig = (): PlaceholderConfig => ({\n\ttext: msg('Start typing...'),\n\tmode: 'block',\n});\n\nexport const createPlaceHolder = (md: typeof milkdown) => {\n\tconst placeholderConfig = md.utils.$ctx(createDefaultPlaceholderConfig(), 'placeholderConfigCtx');\n\tconst placeholderPlugin = md.utils.$prose(ctx => new md.prose.state.Plugin({\n\t\tkey: new md.prose.state.PluginKey('MARKDOWN_PLACEHOLDER'),\n\t\tprops: {\n\t\t\tdecorations: (state) => {\n\t\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\t\tif (view && !view.editable) return null;\n\n\t\t\t\tconst config = ctx.get(placeholderConfig.key);\n\t\t\t\tif (config.mode === 'doc' && !isDocEmpty(state.doc)) return null;\n\n\t\t\t\tif (isInCodeBlock(state.selection) || isInList(state.selection)) return null;\n\n\t\t\t\tconst placeholderText = config.text ?? msg('Start typing...');\n\t\t\t\tconst deco = createPlaceholderDecoration(md, state, placeholderText);\n\t\t\t\tif (!deco) return null;\n\n\t\t\t\treturn md.prose.view.DecorationSet.create(state.doc, [deco]);\n\t\t\t},\n\t\t}\n\t}));\n\n\treturn {\n\t\tplugin: placeholderPlugin,\n\t\tconfig: placeholderConfig,\n\t}\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/markdown",
3
- "version": "0.10.36",
3
+ "version": "0.10.37",
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.10.36",
32
- "@omegagrid/core": "^0.10.36",
33
- "@omegagrid/localize": "^0.10.36",
34
- "@omegagrid/milkdown-kit": "^0.10.36",
35
- "@omegagrid/tabs": "^0.10.36",
31
+ "@omegagrid/code": "^0.10.37",
32
+ "@omegagrid/core": "^0.10.37",
33
+ "@omegagrid/localize": "^0.10.37",
34
+ "@omegagrid/milkdown-kit": "^0.10.37",
35
+ "@omegagrid/tabs": "^0.10.37",
36
36
  "lit": "^3.1.1",
37
37
  "markdown-it": "^14.1.0",
38
38
  "ts-debounce": "^4.0.0"