@omegagrid/markdown 0.10.34 → 0.10.35

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,4 +1,5 @@
1
1
  import { LitElement } from "lit";
2
+ import { TabItem } from "@omegagrid/tabs";
2
3
  import { MenuItem } from "@omegagrid/core";
3
4
  import type * as milkdown from '@omegagrid/milkdown-kit';
4
5
  type BlockMenuItem = MenuItem & {
@@ -10,6 +11,7 @@ export declare class BlockEditMenu extends LitElement {
10
11
  ctx: milkdown.ctx.Ctx;
11
12
  md: typeof milkdown;
12
13
  get menuItems(): BlockMenuItem[];
14
+ get items(): TabItem[];
13
15
  render: () => import("lit").TemplateResult<1>;
14
16
  }
15
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"blockEditMenu.d.ts","sourceRoot":"","sources":["../../../src/components/features/blockEditMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C,OAAO,EAAkD,QAAQ,EAAO,MAAM,iBAAiB,CAAC;AAChG,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAWzD,KAAK,aAAa,GAAG,QAAQ,GAAG;IAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAA;CAAC,CAAC;AA8I1E,qBACa,aAAc,SAAQ,UAAU;;IAE5C,MAAM,CAAC,MAAM,0BAkBX;IAKF,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IAGtB,EAAE,EAAE,OAAO,QAAQ,CAAC;IAGpB,IAAI,SAAS,oBAA6E;IAmC1F,MAAM,wCAMJ;CACF"}
1
+ {"version":3,"file":"blockEditMenu.d.ts","sourceRoot":"","sources":["../../../src/components/features/blockEditMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAY,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAkD,QAAQ,EAAO,MAAM,iBAAiB,CAAC;AAChG,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAWzD,KAAK,aAAa,GAAG,QAAQ,GAAG;IAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAA;CAAC,CAAC;AAoK1E,qBACa,aAAc,SAAQ,UAAU;;IAE5C,MAAM,CAAC,MAAM,0BAkBX;IAKF,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IAGtB,EAAE,EAAE,OAAO,QAAQ,CAAC;IAGpB,IAAI,SAAS,oBAA6E;IAG1F,IAAI,KAAK,cAA0D;IAmCnE,MAAM,wCAMJ;CACF"}
@@ -1,10 +1,10 @@
1
- var _BlockEditMenu_menu,_BlockEditMenu_menuItems,_BlockEditMenu_createComponent,_BlockEditMenu_onTabSelect,__decorate=this&&this.__decorate||function(e,t,o,n){var i,s=arguments.length,c=s<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--)(i=e[a])&&(c=(s<3?i(c):s>3?i(t,o,c):i(t,o))||c);return s>3&&c&&Object.defineProperty(t,o,c),c},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,o,n){if("a"===o&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===o?n:"a"===o?n.call(e):n?n.value:t.get(e)},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,o,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,o):i?i.value=o:t.set(e,o),o};import{LitElement,css,html}from"lit";import{customElement,property}from"lit/decorators.js";import{msg}from"@omegagrid/localize";import{dom}from"@omegagrid/core";import{addBlockType,clearContentAndAddBlockType,clearContentAndSetBlockType,clearContentAndWrapInBlockType,clearRange}from"./utils";const items=[{id:"sectionText",title:msg("Text")},{id:"sectionList",title:msg("List")},{id:"sectionAdvanced",title:msg("Advanced")}],createMenuItems=e=>[{key:"sectionText",value:msg("Text"),divider:!0,type:"label"},{key:"text",value:msg("Text"),icon:"text",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndSetBlockType(e.presets.commonmark.paragraphSchema.type(t))(i,n)}},...new Array(6).fill(0).map(((t,o)=>({key:`square${o+1}`,value:msg("Heading")+(o+1),icon:`square-${o+1}`,onRun:t=>{const n=t.get(e.core.editorViewCtx),{dispatch:i,state:s}=n;clearContentAndSetBlockType(e.presets.commonmark.headingSchema.type(t),{level:o+1})(s,i)}}))),{key:"quote",value:msg("Quote"),icon:"quote-right",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndWrapInBlockType(e.presets.commonmark.blockquoteSchema.type(t))(i,n)}},{key:"divider",value:msg("Divider"),icon:"horizontal-rule",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndAddBlockType(e.presets.commonmark.hrSchema.type(t))(i,n)}},{key:"sectionList",value:msg("List"),divider:!0,type:"label"},{key:"bulletList",value:msg("Bullet List"),icon:"list",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndWrapInBlockType(e.presets.commonmark.bulletListSchema.type(t))(i,n)}},{key:"orderedList",value:msg("Ordered List"),icon:"list-ol",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndWrapInBlockType(e.presets.commonmark.orderedListSchema.type(t))(i,n)}},{key:"todoList",value:msg("Todo List"),icon:"list-check",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndWrapInBlockType(e.presets.commonmark.listItemSchema.type(t),{checked:!1})(i,n)}},{key:"sectionAdvanced",value:msg("Advanced"),divider:!0,type:"label"},{key:"image",value:msg("Image"),icon:"image",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndAddBlockType(e.components.imageBlock.imageBlockSchema.type(t))(i,n)}},{key:"html",value:msg("Raw HTML"),icon:"code",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o,s=addBlockType(clearRange(i.tr),e.presets.commonmark.htmlSchema.type(t),null);n(s.scrollIntoView()),requestAnimationFrame((()=>{const e=o.domAtPos(s.selection.$anchor.pos)?.node;if(e){const t=e.querySelector("og-markdown-html-block");t?.startEdit()}}))}},{key:"code",value:msg("Code"),icon:"code",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o;clearContentAndAddBlockType(e.presets.commonmark.codeBlockSchema.type(t))(i,n)}},{key:"table",value:msg("Table"),icon:"table",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:n,state:i}=o,s=clearRange(i.tr),c=e.presets.gfm.createTable(t,3,3);s.replaceSelectionWith(c);const{from:a}=s.selection,r=a-c.nodeSize+2;n(s),requestAnimationFrame((()=>{const t=e.prose.state.NodeSelection.create(o.state.tr.doc,r);n(o.state.tr.setSelection(t).scrollIntoView())}))}}];let BlockEditMenu=class extends LitElement{constructor(){super(...arguments),_BlockEditMenu_menu.set(this,void 0),_BlockEditMenu_menuItems.set(this,void 0),_BlockEditMenu_createComponent.set(this,(e=>{if(!__classPrivateFieldGet(this,_BlockEditMenu_menu,"f")){const e=this.menuItems;__classPrivateFieldSet(this,_BlockEditMenu_menu,dom.createElement("og-menu"),"f"),__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").dynamicWidth=!1,__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").disabledFocus=!0,__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").style.width="100%",__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").style.height="100%",__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").style.border="none",__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").items=e,__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").addEventListener("menu.select",(t=>{const o=e.find((e=>e.key===t.item.key));o?.onRun&&(o.onRun(this.ctx),this.dispatchEvent(new Event("run")))})),__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").addEventListener("mousedown",(e=>{e.stopPropagation(),e.preventDefault()}))}return __classPrivateFieldGet(this,_BlockEditMenu_menu,"f")})),_BlockEditMenu_onTabSelect.set(this,(e=>{if(__classPrivateFieldGet(this,_BlockEditMenu_menu,"f")?.list){const t=this.menuItems.findIndex((t=>t.key===e.tab.id));t>-1&&__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").list.scrollToIndex(t)}})),this.render=()=>html`
1
+ var _BlockEditMenu_menu,_BlockEditMenu_menuItems,_BlockEditMenu_items,_BlockEditMenu_createComponent,_BlockEditMenu_onTabSelect,__decorate=this&&this.__decorate||function(e,t,o,i){var n,s=arguments.length,c=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(c=(s<3?n(c):s>3?n(t,o,c):n(t,o))||c);return s>3&&c&&Object.defineProperty(t,o,c),c},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,o,i){if("a"===o&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===o?i:"a"===o?i.call(e):i?i.value:t.get(e)},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,o,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,o):n?n.value=o:t.set(e,o),o};import{LitElement,css,html}from"lit";import{customElement,property}from"lit/decorators.js";import{msg}from"@omegagrid/localize";import{dom}from"@omegagrid/core";import{addBlockType,clearContentAndAddBlockType,clearContentAndSetBlockType,clearContentAndWrapInBlockType,clearRange}from"./utils";const createItems=()=>[{id:"sectionText",title:msg("Text")},{id:"sectionList",title:msg("List")},{id:"sectionAdvanced",title:msg("Advanced")}],createMenuItems=e=>[{key:"sectionText",value:msg("Text"),divider:!0,type:"label"},{key:"text",value:msg("Text"),icon:"text",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndSetBlockType(e.presets.commonmark.paragraphSchema.type(t))(n,i)}},...new Array(6).fill(0).map(((t,o)=>({key:`square${o+1}`,value:msg("Heading")+(o+1),icon:`square-${o+1}`,onRun:t=>{const i=t.get(e.core.editorViewCtx),{dispatch:n,state:s}=i;clearContentAndSetBlockType(e.presets.commonmark.headingSchema.type(t),{level:o+1})(s,n)}}))),{key:"quote",value:msg("Quote"),icon:"quote-right",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndWrapInBlockType(e.presets.commonmark.blockquoteSchema.type(t))(n,i)}},{key:"divider",value:msg("Divider"),icon:"horizontal-rule",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndAddBlockType(e.presets.commonmark.hrSchema.type(t))(n,i)}},{key:"sectionList",value:msg("List"),divider:!0,type:"label"},{key:"bulletList",value:msg("Bullet List"),icon:"list",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndWrapInBlockType(e.presets.commonmark.bulletListSchema.type(t))(n,i)}},{key:"orderedList",value:msg("Ordered List"),icon:"list-ol",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndWrapInBlockType(e.presets.commonmark.orderedListSchema.type(t))(n,i)}},{key:"todoList",value:msg("Todo List"),icon:"list-check",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndWrapInBlockType(e.presets.commonmark.listItemSchema.type(t),{checked:!1})(n,i)}},{key:"sectionAdvanced",value:msg("Advanced"),divider:!0,type:"label"},{key:"blockImage",value:msg("Block Image"),icon:"image",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndAddBlockType(e.components.imageBlock.imageBlockSchema.type(t))(n,i)}},{key:"inlineImage",value:msg("Inline Image"),icon:"image",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndAddBlockType(e.presets.commonmark.imageSchema.type(t))(n,i)}},{key:"html",value:msg("Raw HTML"),icon:"code",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o,s=addBlockType(clearRange(n.tr),e.presets.commonmark.htmlSchema.type(t),null);i(s.scrollIntoView()),requestAnimationFrame((()=>{const e=o.domAtPos(s.selection.$anchor.pos)?.node;if(e){const t=e.querySelector("og-markdown-html-block");t?.startEdit()}}))}},{key:"code",value:msg("Code"),icon:"code",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o;clearContentAndAddBlockType(e.presets.commonmark.codeBlockSchema.type(t))(n,i)}},{key:"table",value:msg("Table"),icon:"table",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o,s=clearRange(n.tr),c=e.presets.gfm.createTable(t,3,3);s.replaceSelectionWith(c);const{from:a}=s.selection,r=a-c.nodeSize+2;i(s),requestAnimationFrame((()=>{const t=e.prose.state.NodeSelection.create(o.state.tr.doc,r);i(o.state.tr.setSelection(t).scrollIntoView())}))}},{key:"toc",value:msg("Table of Contents"),icon:"list-tree",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o,s=n.schema.nodes.toc;s&&clearContentAndAddBlockType(s)(n,i)}}];let BlockEditMenu=class extends LitElement{constructor(){super(...arguments),_BlockEditMenu_menu.set(this,void 0),_BlockEditMenu_menuItems.set(this,void 0),_BlockEditMenu_items.set(this,void 0),_BlockEditMenu_createComponent.set(this,(e=>{if(!__classPrivateFieldGet(this,_BlockEditMenu_menu,"f")){const e=this.menuItems;__classPrivateFieldSet(this,_BlockEditMenu_menu,dom.createElement("og-menu"),"f"),__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").dynamicWidth=!1,__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").disabledFocus=!0,__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").style.width="100%",__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").style.height="100%",__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").style.border="none",__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").items=e,__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").addEventListener("menu.select",(t=>{const o=e.find((e=>e.key===t.item.key));o?.onRun&&(o.onRun(this.ctx),this.dispatchEvent(new Event("run")))})),__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").addEventListener("mousedown",(e=>{e.stopPropagation(),e.preventDefault()}))}return __classPrivateFieldGet(this,_BlockEditMenu_menu,"f")})),_BlockEditMenu_onTabSelect.set(this,(e=>{if(__classPrivateFieldGet(this,_BlockEditMenu_menu,"f")?.list){const t=this.menuItems.findIndex((t=>t.key===e.tab.id));t>-1&&__classPrivateFieldGet(this,_BlockEditMenu_menu,"f").list.scrollToIndex(t)}})),this.render=()=>html`
2
2
  <og-tabcontainer
3
3
  .createComponent="${__classPrivateFieldGet(this,_BlockEditMenu_createComponent,"f")}"
4
- .items="${items}"
4
+ .items="${this.items}"
5
5
  @tab.select="${__classPrivateFieldGet(this,_BlockEditMenu_onTabSelect,"f")}">
6
6
  </og-tabcontainer>
7
- `}get menuItems(){return __classPrivateFieldGet(this,_BlockEditMenu_menuItems,"f")??__classPrivateFieldSet(this,_BlockEditMenu_menuItems,createMenuItems(this.md),"f")}};_BlockEditMenu_menu=new WeakMap,_BlockEditMenu_menuItems=new WeakMap,_BlockEditMenu_createComponent=new WeakMap,_BlockEditMenu_onTabSelect=new WeakMap,BlockEditMenu.styles=css`
7
+ `}get menuItems(){return __classPrivateFieldGet(this,_BlockEditMenu_menuItems,"f")??__classPrivateFieldSet(this,_BlockEditMenu_menuItems,createMenuItems(this.md),"f")}get items(){return __classPrivateFieldGet(this,_BlockEditMenu_items,"f")??__classPrivateFieldSet(this,_BlockEditMenu_items,createItems(),"f")}};_BlockEditMenu_menu=new WeakMap,_BlockEditMenu_menuItems=new WeakMap,_BlockEditMenu_items=new WeakMap,_BlockEditMenu_createComponent=new WeakMap,_BlockEditMenu_onTabSelect=new WeakMap,BlockEditMenu.styles=css`
8
8
  * {
9
9
  box-sizing: border-box;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"blockEditMenu.js","sourceRoot":"","sources":["../../../src/components/features/blockEditMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { TabItem, TabEvent } from \"@omegagrid/tabs\";\nimport { msg } from \"@omegagrid/localize\";\nimport { ComponentFactory, ComponentId, Menu, MenuEvent, MenuItem, dom } from \"@omegagrid/core\";\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { addBlockType, clearContentAndAddBlockType, clearContentAndSetBlockType, clearContentAndWrapInBlockType, clearRange } from \"./utils\";\nimport { HtmlBlockComponent } from \"./htmlBlock\";\n\n\nconst items: TabItem[] = [\n\t{id: 'sectionText', title: msg('Text')},\n\t{id: 'sectionList', title: msg('List')},\n\t{id: 'sectionAdvanced', title: msg('Advanced')},\n];\n\ntype BlockMenuItem = MenuItem & {onRun?: (ctx: milkdown.ctx.Ctx) => void};\n\nconst createMenuItems = (md: typeof milkdown): BlockMenuItem[] => [\n\t{key: 'sectionText', value: msg('Text'), divider: true, type: 'label'},\n\t{\n\t\tkey: 'text', \n\t\tvalue: msg('Text'), \n\t\ticon: 'text', onRun: \n\t\tctx => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndSetBlockType(md.presets.commonmark.paragraphSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, ...(new Array(6).fill(0).map((_, i) => ({\n\t\tkey: `square${i + 1}`,\n\t\tvalue: msg('Heading') + (i + 1),\n\t\ticon: `square-${i + 1}`,\n\t\tonRun: (ctx: milkdown.ctx.Ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndSetBlockType(md.presets.commonmark.headingSchema.type(ctx), {level: i + 1});\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}))), {\n\t\tkey: 'quote', \n\t\tvalue: msg('Quote'), \n\t\ticon: 'quote-right', \n\t\tonRun: ctx => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.blockquoteSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'divider', \n\t\tvalue: msg('Divider'), \n\t\ticon: 'horizontal-rule',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.hrSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'sectionList', \n\t\tvalue: msg('List'), \n\t\tdivider: true, \n\t\ttype: 'label'\n\t}, {\n\t\tkey: 'bulletList', \n\t\tvalue: msg('Bullet List'), \n\t\ticon: 'list',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.bulletListSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'orderedList', \n\t\tvalue: msg('Ordered List'), \n\t\ticon: 'list-ol',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.orderedListSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'todoList', \n\t\tvalue: msg('Todo List'), \n\t\ticon: 'list-check',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.listItemSchema.type(ctx), {checked: false});\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'sectionAdvanced', \n\t\tvalue: msg('Advanced'), \n\t\tdivider: true, \n\t\ttype: 'label'\n\t}, {\n\t\tkey: 'image', \n\t\tvalue: msg('Image'), \n\t\ticon: 'image',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.components.imageBlock.imageBlockSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'html', \n\t\tvalue: msg('Raw HTML'), \n\t\ticon: 'code',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tr = addBlockType(clearRange(state.tr), md.presets.commonmark.htmlSchema.type(ctx), null);\n\t\t\tdispatch(tr.scrollIntoView());\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst node = view.domAtPos(tr.selection.$anchor.pos)?.node as HTMLElement;\n\t\t\t\tif (node) {\n\t\t\t\t\tconst block = node.querySelector('og-markdown-html-block') as HtmlBlockComponent;\n\t\t\t\t\tblock?.startEdit();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'code', \n\t\tvalue: msg('Code'), \n\t\ticon: 'code',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.codeBlockSchema.type(ctx))\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'table',\n\t\tvalue: msg('Table'),\n\t\ticon: 'table',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tr = clearRange(state.tr);\n\t\t\tconst table = md.presets.gfm.createTable(ctx, 3, 3);\n\t\t\ttr.replaceSelectionWith(table);\n\t\t\tconst { from } = tr.selection;\n\t\t\tconst pos = from - table.nodeSize + 2;\n\t\t\tdispatch(tr);\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst selection = md.prose.state.NodeSelection.create(view.state.tr.doc, pos);\n\t\t\t\tdispatch(view.state.tr.setSelection(selection).scrollIntoView());\n\t\t\t})\n\t\t}\n\t}\n];\n\n@customElement('og-markdown-block-edit-menu')\nexport class BlockEditMenu 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: block;\n\t\t\twidth: 170px;\n\t\t\theight: 230px;\n\t\t\tuser-select: none;\n\t\t\tborder: 1px solid var(--og-accent-color);\n\t\t\tposition: absolute;\n\t\t}\n\n\t\tog-tabcontainer {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t#menu: Menu;\n\n\t@property({type: Object})\n\tctx: milkdown.ctx.Ctx;\n\n\t@property({type: Object})\n\tmd: typeof milkdown;\n\n\t#menuItems: BlockMenuItem[];\n\tget menuItems() { return this.#menuItems ?? (this.#menuItems = createMenuItems(this.md)) }\n\n\t#createComponent: ComponentFactory = (_id: ComponentId) => {\n\t\tif (!this.#menu) {\n\t\t\tconst menuItems = this.menuItems;\n\t\t\tthis.#menu = dom.createElement<Menu>('og-menu');\n\t\t\tthis.#menu.dynamicWidth = false;\n\t\t\tthis.#menu.disabledFocus = true;\n\t\t\tthis.#menu.style.width = '100%';\n\t\t\tthis.#menu.style.height = '100%';\n\t\t\tthis.#menu.style.border = 'none';\n\t\t\tthis.#menu.items = menuItems;\n\t\t\tthis.#menu.addEventListener('menu.select', (e: MenuEvent) => {\n\t\t\t\tconst item = menuItems.find(item => item.key === e.item.key);\n\t\t\t\tif (item?.onRun) {\n\t\t\t\t\titem.onRun(this.ctx);\n\t\t\t\t\tthis.dispatchEvent(new Event('run'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.#menu.addEventListener('mousedown', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t});\n\t\t}\n\t\treturn this.#menu;\n\t}\n\n\t#onTabSelect = (e: TabEvent) => {\n\t\tif (this.#menu?.list) {\n\t\t\tconst index = this.menuItems.findIndex(item => item.key === e.tab.id);\n\t\t\tif (index > -1) this.#menu.list.scrollToIndex(index);\t\n\t\t}\n\t}\n\n\trender = () => html`\n\t\t<og-tabcontainer\n\t\t\t.createComponent=\"${this.#createComponent}\"\n\t\t\t.items=\"${items}\"\n\t\t\t@tab.select=\"${this.#onTabSelect}\">\n\t\t</og-tabcontainer>\n\t`;\n}\n"]}
1
+ {"version":3,"file":"blockEditMenu.js","sourceRoot":"","sources":["../../../src/components/features/blockEditMenu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAA4D,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEhG,OAAO,EAAE,YAAY,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI7I,MAAM,WAAW,GAAG,GAAc,EAAE,CAAC;IACpC,EAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAC;IACvC,EAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAC;IACvC,EAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,EAAC;CAC/C,CAAC;AAIF,MAAM,eAAe,GAAG,CAAC,EAAmB,EAAmB,EAAE,CAAC;IACjE,EAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC;IACtE;QACC,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,EAAE,KAAK,EACnB,GAAG,CAAC,EAAE;YACL,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,2BAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7F,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;QACrB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;QACvB,KAAK,EAAE,CAAC,GAAqB,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,2BAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;YAC3G,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,CAAC,CAAC,CAAC,EAAE;QACL,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,GAAG,CAAC,EAAE;YACZ,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,8BAA8B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACjG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC;QACrB,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,2BAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,OAAO;KACb,EAAE;QACF,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;QACzB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,8BAA8B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACjG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC;QAC1B,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,8BAA8B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAClG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;QACvB,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,8BAA8B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;YACjH,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC;QACtB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,OAAO;KACb,EAAE;QACF,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;QACzB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,2BAA2B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACjG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC;QAC1B,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,2BAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC;QACtB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAChG,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;YAC9B,qBAAqB,CAAC,GAAG,EAAE;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAmB,CAAC;gBAC1E,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAuB,CAAC;oBACjF,KAAK,EAAE,SAAS,EAAE,CAAC;gBACpB,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;KACD,EAAE;QACF,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,2BAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC5F,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD,EAAE;QACF,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YACtC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,qBAAqB,CAAC,GAAG,EAAE;gBAC1B,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC9E,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,CAAA;QACH,CAAC;KACD,EAAE;QACF,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,GAAG,CAAC,mBAAmB,CAAC;QAC/B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;KACD;CACD,CAAC;AAGK,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,UAAU;IAAtC;;QAsBN,sCAAY;QAQZ,2CAA4B;QAG5B,uCAAkB;QAGlB,yCAAqC,CAAC,GAAgB,EAAE,EAAE;YACzD,IAAI,CAAC,uBAAA,IAAI,2BAAM,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjC,uBAAA,IAAI,uBAAS,GAAG,CAAC,aAAa,CAAO,SAAS,CAAC,MAAA,CAAC;gBAChD,uBAAA,IAAI,2BAAM,CAAC,YAAY,GAAG,KAAK,CAAC;gBAChC,uBAAA,IAAI,2BAAM,CAAC,aAAa,GAAG,IAAI,CAAC;gBAChC,uBAAA,IAAI,2BAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;gBAChC,uBAAA,IAAI,2BAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACjC,uBAAA,IAAI,2BAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACjC,uBAAA,IAAI,2BAAM,CAAC,KAAK,GAAG,SAAS,CAAC;gBAC7B,uBAAA,IAAI,2BAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAY,EAAE,EAAE;oBAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7D,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;wBACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtC,CAAC;gBACF,CAAC,CAAC,CAAC;gBAEH,uBAAA,IAAI,2BAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;oBAC9C,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,OAAO,uBAAA,IAAI,2BAAM,CAAC;QACnB,CAAC,EAAA;QAED,qCAAe,CAAC,CAAW,EAAE,EAAE;YAC9B,IAAI,uBAAA,IAAI,2BAAM,EAAE,IAAI,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtE,IAAI,KAAK,GAAG,CAAC,CAAC;oBAAE,uBAAA,IAAI,2BAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACtD,CAAC;QACF,CAAC,EAAA;QAED,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;;uBAEG,uBAAA,IAAI,sCAAiB;aAC/B,IAAI,CAAC,KAAK;kBACL,uBAAA,IAAI,kCAAa;;EAEjC,CAAC;IACH,CAAC;IA7CA,IAAI,SAAS,KAAK,OAAO,uBAAA,IAAI,gCAAW,IAAI,CAAC,uBAAA,IAAI,4BAAc,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC,CAAA,CAAC,CAAC;IAG1F,IAAI,KAAK,KAAK,OAAO,uBAAA,IAAI,4BAAO,IAAI,CAAC,uBAAA,IAAI,wBAAU,WAAW,EAAE,MAAA,CAAC,CAAA,CAAC,CAAC;;;;;;;AAhC5D,oBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;EAkBlB,AAlBY,CAkBX;AAKF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;0CACH;AAGtB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yCACL;AA5BR,aAAa;IADzB,aAAa,CAAC,6BAA6B,CAAC;GAChC,aAAa,CA4EzB","sourcesContent":["import { LitElement, css, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { TabItem, TabEvent } from \"@omegagrid/tabs\";\nimport { msg } from \"@omegagrid/localize\";\nimport { ComponentFactory, ComponentId, Menu, MenuEvent, MenuItem, dom } from \"@omegagrid/core\";\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { addBlockType, clearContentAndAddBlockType, clearContentAndSetBlockType, clearContentAndWrapInBlockType, clearRange } from \"./utils\";\nimport { HtmlBlockComponent } from \"./htmlBlock\";\n\n\nconst createItems = (): TabItem[] => [\n\t{id: 'sectionText', title: msg('Text')},\n\t{id: 'sectionList', title: msg('List')},\n\t{id: 'sectionAdvanced', title: msg('Advanced')},\n];\n\ntype BlockMenuItem = MenuItem & {onRun?: (ctx: milkdown.ctx.Ctx) => void};\n\nconst createMenuItems = (md: typeof milkdown): BlockMenuItem[] => [\n\t{key: 'sectionText', value: msg('Text'), divider: true, type: 'label'},\n\t{\n\t\tkey: 'text', \n\t\tvalue: msg('Text'), \n\t\ticon: 'text', onRun: \n\t\tctx => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndSetBlockType(md.presets.commonmark.paragraphSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, ...(new Array(6).fill(0).map((_, i) => ({\n\t\tkey: `square${i + 1}`,\n\t\tvalue: msg('Heading') + (i + 1),\n\t\ticon: `square-${i + 1}`,\n\t\tonRun: (ctx: milkdown.ctx.Ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndSetBlockType(md.presets.commonmark.headingSchema.type(ctx), {level: i + 1});\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}))), {\n\t\tkey: 'quote', \n\t\tvalue: msg('Quote'), \n\t\ticon: 'quote-right', \n\t\tonRun: ctx => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.blockquoteSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'divider', \n\t\tvalue: msg('Divider'), \n\t\ticon: 'horizontal-rule',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.hrSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'sectionList', \n\t\tvalue: msg('List'), \n\t\tdivider: true, \n\t\ttype: 'label'\n\t}, {\n\t\tkey: 'bulletList', \n\t\tvalue: msg('Bullet List'), \n\t\ticon: 'list',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.bulletListSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'orderedList', \n\t\tvalue: msg('Ordered List'), \n\t\ticon: 'list-ol',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.orderedListSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'todoList', \n\t\tvalue: msg('Todo List'), \n\t\ticon: 'list-check',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.listItemSchema.type(ctx), {checked: false});\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'sectionAdvanced', \n\t\tvalue: msg('Advanced'), \n\t\tdivider: true, \n\t\ttype: 'label'\n\t}, {\n\t\tkey: 'blockImage',\n\t\tvalue: msg('Block Image'),\n\t\ticon: 'image',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.components.imageBlock.imageBlockSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'inlineImage',\n\t\tvalue: msg('Inline Image'),\n\t\ticon: 'image',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.imageSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'html',\n\t\tvalue: msg('Raw HTML'), \n\t\ticon: 'code',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tr = addBlockType(clearRange(state.tr), md.presets.commonmark.htmlSchema.type(ctx), null);\n\t\t\tdispatch(tr.scrollIntoView());\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst node = view.domAtPos(tr.selection.$anchor.pos)?.node as HTMLElement;\n\t\t\t\tif (node) {\n\t\t\t\t\tconst block = node.querySelector('og-markdown-html-block') as HtmlBlockComponent;\n\t\t\t\t\tblock?.startEdit();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'code', \n\t\tvalue: msg('Code'), \n\t\ticon: 'code',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.codeBlockSchema.type(ctx))\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'table',\n\t\tvalue: msg('Table'),\n\t\ticon: 'table',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tr = clearRange(state.tr);\n\t\t\tconst table = md.presets.gfm.createTable(ctx, 3, 3);\n\t\t\ttr.replaceSelectionWith(table);\n\t\t\tconst { from } = tr.selection;\n\t\t\tconst pos = from - table.nodeSize + 2;\n\t\t\tdispatch(tr);\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst selection = md.prose.state.NodeSelection.create(view.state.tr.doc, pos);\n\t\t\t\tdispatch(view.state.tr.setSelection(selection).scrollIntoView());\n\t\t\t})\n\t\t}\n\t}, {\n\t\tkey: 'toc',\n\t\tvalue: msg('Table of Contents'),\n\t\ticon: 'list-tree',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tocType = state.schema.nodes.toc;\n\t\t\tif (!tocType) return;\n\t\t\tconst command = clearContentAndAddBlockType(tocType);\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}\n];\n\n@customElement('og-markdown-block-edit-menu')\nexport class BlockEditMenu 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: block;\n\t\t\twidth: 170px;\n\t\t\theight: 230px;\n\t\t\tuser-select: none;\n\t\t\tborder: 1px solid var(--og-accent-color);\n\t\t\tposition: absolute;\n\t\t}\n\n\t\tog-tabcontainer {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t#menu: Menu;\n\n\t@property({type: Object})\n\tctx: milkdown.ctx.Ctx;\n\n\t@property({type: Object})\n\tmd: typeof milkdown;\n\n\t#menuItems: BlockMenuItem[];\n\tget menuItems() { return this.#menuItems ?? (this.#menuItems = createMenuItems(this.md)) }\n\n\t#items: TabItem[];\n\tget items() { return this.#items ?? (this.#items = createItems()) }\n\n\t#createComponent: ComponentFactory = (_id: ComponentId) => {\n\t\tif (!this.#menu) {\n\t\t\tconst menuItems = this.menuItems;\n\t\t\tthis.#menu = dom.createElement<Menu>('og-menu');\n\t\t\tthis.#menu.dynamicWidth = false;\n\t\t\tthis.#menu.disabledFocus = true;\n\t\t\tthis.#menu.style.width = '100%';\n\t\t\tthis.#menu.style.height = '100%';\n\t\t\tthis.#menu.style.border = 'none';\n\t\t\tthis.#menu.items = menuItems;\n\t\t\tthis.#menu.addEventListener('menu.select', (e: MenuEvent) => {\n\t\t\t\tconst item = menuItems.find(item => item.key === e.item.key);\n\t\t\t\tif (item?.onRun) {\n\t\t\t\t\titem.onRun(this.ctx);\n\t\t\t\t\tthis.dispatchEvent(new Event('run'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.#menu.addEventListener('mousedown', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t});\n\t\t}\n\t\treturn this.#menu;\n\t}\n\n\t#onTabSelect = (e: TabEvent) => {\n\t\tif (this.#menu?.list) {\n\t\t\tconst index = this.menuItems.findIndex(item => item.key === e.tab.id);\n\t\t\tif (index > -1) this.#menu.list.scrollToIndex(index);\t\n\t\t}\n\t}\n\n\trender = () => html`\n\t\t<og-tabcontainer\n\t\t\t.createComponent=\"${this.#createComponent}\"\n\t\t\t.items=\"${this.items}\"\n\t\t\t@tab.select=\"${this.#onTabSelect}\">\n\t\t</og-tabcontainer>\n\t`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AASzD,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;AAGD,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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAoBzD,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;AAGD,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;AASF,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{msg}from"@omegagrid/localize";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(o,e){return i=>{i.inject(e.ctx.createSlice([],"FeaturesCtx"),o)}}export var EditorFeature;!function(o){o.BlockEdit="block-edit",o.Cursor="cursor",o.CodeEditor="code-editor",o.LinkTooltip="link-tooltip",o.ImageBlock="image-block",o.Toolbar="toolbar",o.Placeholder="placeholder",o.Table="table",o.Html="html",o.Emoji="emoji",o.Toc="toc"}(EditorFeature||(EditorFeature={}));const createModifyImageUrl=o=>async e=>{if(!e)return null;const i=o(e);return"string"==typeof e?i:await i};export function getFeatures(o,e,i){const t=i.modifyImageUrl?createModifyImageUrl(i.modifyImageUrl):null;return new Map([[EditorFeature.BlockEdit,{default:!0,init:()=>{o.config((o=>{o.set(e.plugins.block.blockConfig.key,{filterNodes:o=>!e.prose.findParent((o=>["table","blockquote"].includes(o.type.name)))(o)}),o.set(e.plugins.block.block.key,{view:()=>new BlockHandleView(o,e)})})).use(e.plugins.block.block)}}],[EditorFeature.Cursor,{default:!0,init:()=>{o.config((o=>{o.update(e.plugins.cursor.dropCursorConfig.key,(()=>({class:"md-editor-drop-cursor",width:4})))})).use(e.plugins.cursor.cursor)}}],[EditorFeature.ImageBlock,{default:!0,init:()=>{o.config((o=>{o.update(e.components.imageInline.inlineImageConfig.key,(o=>({uploadButton:'<og-icon icon="upload"></og-icon>',imageIcon:'<og-icon icon="image"></og-icon>',confirmButton:'<og-icon icon="check"></og-icon>',uploadPlaceholderText:msg("or paste link"),onUpload:i.onUpload,proxyDomURL:t}))),o.update(e.components.imageBlock.imageBlockConfig.key,(o=>({uploadButton:msg("Select file"),imageIcon:'<og-icon icon="image"></og-icon>',captionIcon:'<og-icon icon="comment"></og-icon>',confirmButton:msg("Confirm"),captionPlaceholderText:msg("Write Image Caption"),uploadPlaceholderText:msg("or paste link"),onUpload:i.onUpload,proxyDomURL:t})))})).use(e.components.imageBlock.imageBlockComponent).use(e.components.imageInline.imageInlineComponent)}}],[EditorFeature.LinkTooltip,{default:!0,init:()=>{const e=linkEdit.getPlugin();o.config(linkEdit.configure).use(e)}}],[EditorFeature.Toolbar,{default:!0,init:()=>{const i=e.plugins.tooltip.tooltipFactory("MARKDOWN_TOOLBAR");o.config((o=>{o.set(i.key,{view:i=>new ToolbarView(o,i,e)})})).use(i)}}],[EditorFeature.Placeholder,{default:!0,init:()=>{const{config:i,plugin:t}=createPlaceHolder(e);o.config((o=>{o.update(i.key,(o=>({...o})))})).use(t).use(i)}}],[EditorFeature.Table,{default:!0,init:()=>{o.config((o=>{o.update(e.components.tableBlock.tableBlockConfig.key,(o=>({renderButton:o=>{switch(o){case"add_row":case"add_col":return'<og-icon icon="plus"></og-icon>';case"delete_row":case"delete_col":return'<og-icon icon="trash"></og-icon>';case"align_col_left":return'<og-icon icon="align-left"></og-icon>';case"align_col_center":return'<og-icon icon="align-center"></og-icon>';case"align_col_right":return'<og-icon icon="align-right"></og-icon>';case"col_drag_handle":return'<og-icon icon="grip-lines-vertical"></og-icon>';case"row_drag_handle":return'<og-icon icon="grip-lines"></og-icon>'}}})))})).use(e.components.tableBlock.tableBlock)}}],[EditorFeature.CodeEditor,{default:!0,init:()=>{const i=createCodeBlockConfig(e),t=createCodeBlockView(e);o.config((o=>{o.update(i.key,(o=>({})))})).use([t,i])}}],[EditorFeature.Html,{default:!0,init:()=>{const i=createHtmlBlockConfig(e),t=createHtmlBlockView(e);o.config((o=>{o.update(i.key,(o=>({})))})).use([t,i])}}],[EditorFeature.Emoji,{default:!0,init:()=>{e.plugins.emoji&&o.use(e.plugins.emoji.emoji)}}],[EditorFeature.Toc,{default:!0,init:()=>{const i=createTocBlock(e);o.config((o=>{o.update(i.tocConfig.key,(o=>({})))})).use(i.plugins)}}]])}
1
+ import{config,icon}from"@fortawesome/fontawesome-svg-core";import{BlockHandleView}from"./blockEdit";import{msg}from"@omegagrid/localize";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";function iconSvg(e,o="1em"){const t=icon({prefix:config.styleDefault,iconName:e})?.html?.[0];if(!t)return"";const i=`box-sizing:content-box;display:inline-block;overflow:visible;vertical-align:-0.125em;width:${o};height:${o}`;return t.replace(/<svg\b/,`<svg style="${i}"`)}export*from"./blockEditMenu";export*from"./htmlBlock";export*from"./linkEdit";export function configureFeatures(e,o){return t=>{t.inject(o.ctx.createSlice([],"FeaturesCtx"),e)}}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=>o=>o?e(o):o;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:iconSvg("upload","1em"),uploadPlaceholderText:msg("or paste link"),imageIcon:iconSvg("image","20px"),confirmButton:msg("Confirm"),onUpload:t.onUpload,proxyDomURL:i}))),e.update(o.components.imageBlock.imageBlockConfig.key,(e=>({uploadButton:iconSvg("upload","1em"),uploadPlaceholderText:msg("or paste link"),imageIcon:iconSvg("image","20px"),confirmButton:msg("Confirm"),captionIcon:iconSvg("comment","24px"),captionPlaceholderText:msg("Write Image Caption"),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 iconSvg("plus","16px");case"delete_row":case"delete_col":return iconSvg("trash","16px");case"align_col_left":return iconSvg("align-left","16px");case"align_col_center":return iconSvg("align-center","16px");case"align_col_right":return iconSvg("align-right","16px");case"col_drag_handle":return iconSvg("grip-lines-vertical","16px");case"row_drag_handle":return iconSvg("grip-lines","16px")}}})))})).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":["/* 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 { msg } from '@omegagrid/localize';\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\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: '<og-icon icon=\"upload\"></og-icon>',\n\t\t\t\t\t\timageIcon: '<og-icon icon=\"image\"></og-icon>',\n\t\t\t\t\t\tconfirmButton: '<og-icon icon=\"check\"></og-icon>',\n\t\t\t\t\t\tuploadPlaceholderText: msg('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: msg('Select file'),\n\t\t\t\t\t\timageIcon: '<og-icon icon=\"image\"></og-icon>',\n\t\t\t\t\t\tcaptionIcon: '<og-icon icon=\"comment\"></og-icon>',\n\t\t\t\t\t\tconfirmButton: msg('Confirm'),\n\t\t\t\t\t\tcaptionPlaceholderText: msg('Write Image Caption'),\n\t\t\t\t\t\tuploadPlaceholderText: msg('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 '<og-icon icon=\"plus\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'add_col': return '<og-icon icon=\"plus\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'delete_row': return '<og-icon icon=\"trash\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'delete_col': return '<og-icon icon=\"trash\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'align_col_left': return '<og-icon icon=\"align-left\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'align_col_center': return '<og-icon icon=\"align-center\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'align_col_right': return '<og-icon icon=\"align-right\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'col_drag_handle': return '<og-icon icon=\"grip-lines-vertical\"></og-icon>';\n\t\t\t\t\t\t\t\tcase 'row_drag_handle': return '<og-icon icon=\"grip-lines\"></og-icon>';\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"]}
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 { config, icon, IconName, IconPrefix } from '@fortawesome/fontawesome-svg-core';\nimport { BlockHandleView } from './blockEdit';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { msg } from '@omegagrid/localize';\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\n// Milkdown's <Icon> component runs config-supplied icon HTML through DOMPurify,\n// which strips unknown custom elements like <og-icon>. Render the SVG directly instead.\nfunction iconSvg(name: string, size: string = '1em'): string {\n\tconst html = icon(\n\t\t{ prefix: config.styleDefault as IconPrefix, iconName: name as IconName },\n\t)?.html?.[0];\n\tif (!html) return '';\n\tconst style = `box-sizing:content-box;display:inline-block;overflow:visible;vertical-align:-0.125em;width:${size};height:${size}`;\n\treturn html.replace(/<svg\\b/, `<svg style=\"${style}\"`);\n}\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\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 (url: string): Promise<string> | string => {\n\t\tif (!url) return url;\n\t\treturn fn(url);\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: iconSvg('upload', '1em'),\n\t\t\t\t\t\tuploadPlaceholderText: msg('or paste link'),\n\t\t\t\t\t\timageIcon: iconSvg('image', '20px'),\n\t\t\t\t\t\tconfirmButton: msg('Confirm'),\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: iconSvg('upload', '1em'),\n\t\t\t\t\t\tuploadPlaceholderText: msg('or paste link'),\n\t\t\t\t\t\timageIcon: iconSvg('image', '20px'),\n\t\t\t\t\t\tconfirmButton: msg('Confirm'),\n\t\t\t\t\t\tcaptionIcon: iconSvg('comment', '24px'),\n\t\t\t\t\t\tcaptionPlaceholderText: msg('Write Image Caption'),\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 iconSvg('plus', '16px');\n\t\t\t\t\t\t\t\tcase 'add_col': return iconSvg('plus', '16px');\n\t\t\t\t\t\t\t\tcase 'delete_row': return iconSvg('trash', '16px');\n\t\t\t\t\t\t\t\tcase 'delete_col': return iconSvg('trash', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_left': return iconSvg('align-left', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_center': return iconSvg('align-center', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_right': return iconSvg('align-right', '16px');\n\t\t\t\t\t\t\t\tcase 'col_drag_handle': return iconSvg('grip-lines-vertical', '16px');\n\t\t\t\t\t\t\t\tcase 'row_drag_handle': return iconSvg('grip-lines', '16px');\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"]}
@@ -4,7 +4,7 @@ interface PlaceholderConfig {
4
4
  mode: 'doc' | 'block';
5
5
  }
6
6
  export type PlaceHolderFeatureConfig = Partial<PlaceholderConfig>;
7
- export declare const defaultPlaceholderConfig: PlaceholderConfig;
7
+ export declare const createDefaultPlaceholderConfig: () => PlaceholderConfig;
8
8
  export declare const createPlaceHolder: (md: typeof milkdown) => {
9
9
  plugin: milkdown.utils.$Prose;
10
10
  config: milkdown.utils.$Ctx<PlaceholderConfig, "placeholderConfigCtx">;
@@ -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,wBAAwB,EAGhC,iBAAiB,CAAC;AAEvB,eAAO,MAAM,iBAAiB,GAAI,IAAI,OAAO,QAAQ;;;CAyBpD,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;;;CAwBpD,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,l=r.parent;if(l.content.size>0)return null;const i=e.prose.findParent((e=>"table"===e.type.name))(r);if(i)return null;const c=r.before();return e.prose.view.Decoration.node(c,c+l.nodeSize,{class:"crepe-placeholder","data-placeholder":o})}export const defaultPlaceholderConfig={text:msg("Please enter..."),mode:"block"};export const createPlaceHolder=e=>{const t=e.utils.$ctx(defaultPlaceholderConfig,"placeholderConfigCtx");return{plugin:e.utils.$prose((o=>new e.prose.state.Plugin({key:new e.prose.state.PluginKey("MARKDOWN_PLACEHOLDER"),props:{decorations:n=>{if(!1===o.get(e.core.editorViewCtx)?.editable)return null;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 l=r.text??msg("Please enter..."),i=createPlaceholderDecoration(e,n,l);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 l=e.prose.findParent((e=>"table"===e.type.name))(r);if(l)return null;const i=r.before();return e.prose.view.Decoration.node(i,i+c.nodeSize,{class:"crepe-placeholder","data-placeholder":o})}export const createDefaultPlaceholderConfig=()=>({text:msg("Please enter..."),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("Please enter..."),l=createPlaceholderDecoration(e,n,c);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 defaultPlaceholderConfig = {\n\ttext: msg('Please enter...'),\n\tmode: 'block',\n} as PlaceholderConfig;\n\nexport const createPlaceHolder = (md: typeof milkdown) => {\n\tconst placeholderConfig = md.utils.$ctx(defaultPlaceholderConfig, '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\tif (ctx.get(md.core.editorViewCtx)?.editable === false) return null;\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('Please enter...');\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":"AAEA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,SAAS,UAAU,CAAC,GAAS;IAC5B,OAAO,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,2BAA2B,CAAC,EAAmB,EAAE,KAAkB,EAAE,eAAuB;IACpG,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAE7B,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;QACpE,KAAK,EAAE,mBAAmB;QAC1B,kBAAkB,EAAE,eAAe;KACnC,CAAC,CAAC;AACJ,CAAC;AASD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAsB,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC5B,IAAI,EAAE,OAAO;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAmB,EAAE,EAAE;IACxD,MAAM,iBAAiB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAClG,MAAM,iBAAiB,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1E,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC;QACzD,KAAK,EAAE;YACN,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBACtB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAEjE,IAAI,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAE7E,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC9D,MAAM,IAAI,GAAG,2BAA2B,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;gBACrE,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAEvB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9D,CAAC;SACD;KACD,CAAC,CAAC,CAAC;IAEJ,OAAO;QACN,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,iBAAiB;KACzB,CAAA;AACF,CAAC,CAAC","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('Please enter...'),\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('Please enter...');\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/markdown",
3
- "version": "0.10.34",
3
+ "version": "0.10.35",
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.34",
32
- "@omegagrid/core": "^0.10.34",
33
- "@omegagrid/localize": "^0.10.34",
34
- "@omegagrid/milkdown-kit": "^0.10.34",
35
- "@omegagrid/tabs": "^0.10.34",
31
+ "@omegagrid/code": "^0.10.35",
32
+ "@omegagrid/core": "^0.10.35",
33
+ "@omegagrid/localize": "^0.10.35",
34
+ "@omegagrid/milkdown-kit": "^0.10.35",
35
+ "@omegagrid/tabs": "^0.10.35",
36
36
  "lit": "^3.1.1",
37
37
  "markdown-it": "^14.1.0",
38
38
  "ts-debounce": "^4.0.0"