@omegagrid/markdown 0.10.61 → 0.10.63

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":"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;AAYzD,KAAK,aAAa,GAAG,QAAQ,GAAG;IAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAC,CAAC;AAwLhG,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;IA2DnE,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;AAYzD,KAAK,aAAa,GAAG,QAAQ,GAAG;IAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAC,CAAC;AAwLhG,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;IAsEnE,MAAM,wCAMJ;CACF"}
@@ -1,10 +1,10 @@
1
- var _BlockEditMenu_menu,_BlockEditMenu_menuItems,_BlockEditMenu_items,_BlockEditMenu_createComponent,_BlockEditMenu_onTabSelect,_BlockEditMenu_emojiPicker,_BlockEditMenu_showEmojiPicker,__decorate=this&&this.__decorate||function(e,t,o,i){var n,c=arguments.length,s=c<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(c<3?n(s):c>3?n(t,o,s):n(t,o))||s);return c>3&&s&&Object.defineProperty(t,o,s),s},__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")}],wrapInSchemaNode=(e,t,o)=>i=>{const n=i.get(e.core.editorViewCtx),{dispatch:c,state:s}=n,a=s.schema.nodes[t];a&&clearContentAndWrapInBlockType(a,o)(s,c)},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:c}=i;clearContentAndSetBlockType(e.presets.commonmark.headingSchema.type(t),{level:o+1})(c,n)}}))),{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:"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:"calloutNote",value:msg("Callout"),icon:"circle-info",onRun:wrapInSchemaNode(e,"callout",{kind:"note"})},{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:"emoji",value:msg("Emoji"),icon:"face-smile",openPicker:!0},{key:"html",value:msg("Raw HTML"),icon:"code",onRun:t=>{const o=t.get(e.core.editorViewCtx),{dispatch:i,state:n}=o,c=addBlockType(clearRange(n.tr),e.presets.commonmark.htmlSchema.type(t),null);i(c.scrollIntoView()),requestAnimationFrame((()=>{const e=o.domAtPos(c.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,c=clearRange(n.tr),s=e.presets.gfm.createTable(t,3,3);c.replaceSelectionWith(s);const{from:a}=c.selection,l=a-s.nodeSize+2;i(c),requestAnimationFrame((()=>{const t=e.prose.state.NodeSelection.create(o.state.tr.doc,l);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,c=n.schema.nodes.toc;c&&clearContentAndAddBlockType(c)(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?.openPicker?__classPrivateFieldGet(this,_BlockEditMenu_showEmojiPicker,"f").call(this):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)}})),_BlockEditMenu_emojiPicker.set(this,void 0),_BlockEditMenu_showEmojiPicker.set(this,(()=>{const e=this.offsetTop,t=this.offsetLeft;this.dispatchEvent(new Event("run")),__classPrivateFieldGet(this,_BlockEditMenu_emojiPicker,"f")||(__classPrivateFieldSet(this,_BlockEditMenu_emojiPicker,dom.createElement("og-markdown-emoji-picker"),"f"),document.body.appendChild(__classPrivateFieldGet(this,_BlockEditMenu_emojiPicker,"f")));const o=__classPrivateFieldGet(this,_BlockEditMenu_emojiPicker,"f");o.ctx=this.ctx,o.md=this.md,dom.showElement(o),dom.setPosition(o,{t:e,l:t}),document.addEventListener("mousedown",(()=>dom.hideElement(o)),{once:!0})})),this.render=()=>html`
1
+ var _BlockEditMenu_menu,_BlockEditMenu_menuItems,_BlockEditMenu_items,_BlockEditMenu_createComponent,_BlockEditMenu_onTabSelect,_BlockEditMenu_emojiPicker,_BlockEditMenu_emojiPickerClose,_BlockEditMenu_showEmojiPicker,__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")}],wrapInSchemaNode=(e,t,o)=>i=>{const n=i.get(e.core.editorViewCtx),{dispatch:s,state:c}=n,a=c.schema.nodes[t];a&&clearContentAndWrapInBlockType(a,o)(c,s)},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:"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:"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:"calloutNote",value:msg("Callout"),icon:"circle-info",onRun:wrapInSchemaNode(e,"callout",{kind:"note"})},{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:"emoji",value:msg("Emoji"),icon:"face-smile",openPicker:!0},{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,l=a-c.nodeSize+2;i(s),requestAnimationFrame((()=>{const t=e.prose.state.NodeSelection.create(o.state.tr.doc,l);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?.openPicker?__classPrivateFieldGet(this,_BlockEditMenu_showEmojiPicker,"f").call(this):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)}})),_BlockEditMenu_emojiPicker.set(this,void 0),_BlockEditMenu_emojiPickerClose.set(this,void 0),_BlockEditMenu_showEmojiPicker.set(this,(()=>{const e=this.offsetTop,t=this.offsetLeft;this.dispatchEvent(new Event("run")),__classPrivateFieldGet(this,_BlockEditMenu_emojiPicker,"f")||(__classPrivateFieldSet(this,_BlockEditMenu_emojiPicker,dom.createElement("og-markdown-emoji-picker"),"f"),document.body.appendChild(__classPrivateFieldGet(this,_BlockEditMenu_emojiPicker,"f")),__classPrivateFieldGet(this,_BlockEditMenu_emojiPicker,"f").addEventListener("close",(()=>__classPrivateFieldGet(this,_BlockEditMenu_emojiPickerClose,"f")?.call(this))));const o=__classPrivateFieldGet(this,_BlockEditMenu_emojiPicker,"f");o.ctx=this.ctx,o.md=this.md,dom.showElement(o,"flex"),dom.setPosition(o,{t:e,l:t});const i=e=>{e.composedPath().includes(o)||__classPrivateFieldGet(this,_BlockEditMenu_emojiPickerClose,"f")?.call(this)};__classPrivateFieldSet(this,_BlockEditMenu_emojiPickerClose,(()=>{dom.hideElement(o),document.removeEventListener("mousedown",i,!0),__classPrivateFieldSet(this,_BlockEditMenu_emojiPickerClose,void 0,"f")}),"f"),document.addEventListener("mousedown",i,!0)})),this.render=()=>html`
2
2
  <og-tabcontainer
3
3
  .createComponent="${__classPrivateFieldGet(this,_BlockEditMenu_createComponent,"f")}"
4
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")}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_emojiPicker=new WeakMap,_BlockEditMenu_showEmojiPicker=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_emojiPicker=new WeakMap,_BlockEditMenu_emojiPickerClose=new WeakMap,_BlockEditMenu_showEmojiPicker=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\";\nimport { EmojiPicker } from \"./emojiPicker\";\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, openPicker?: boolean};\n\nconst wrapInSchemaNode = (md: typeof milkdown, name: string, attrs: Record<string, unknown>) =>\n\t(ctx: milkdown.ctx.Ctx) => {\n\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\tconst { dispatch, state } = view;\n\t\tconst type = state.schema.nodes[name];\n\t\tif (!type) return;\n\t\tconst command = clearContentAndWrapInBlockType(type, attrs);\n\t\tcommand(state, dispatch);\n\t};\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: '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: '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: 'calloutNote',\n\t\tvalue: msg('Callout'),\n\t\ticon: 'circle-info',\n\t\tonRun: wrapInSchemaNode(md, 'callout', {kind: 'note'})\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: 'emoji',\n\t\tvalue: msg('Emoji'),\n\t\ticon: 'face-smile',\n\t\topenPicker: true\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?.openPicker) {\n\t\t\t\t\tthis.#showEmojiPicker();\n\t\t\t\t\treturn;\n\t\t\t\t}\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);\n\t\t}\n\t}\n\n\t#emojiPicker: EmojiPicker;\n\n\t#showEmojiPicker = () => {\n\t\t// Capture the menu position before dispatching 'run' hides it (a hidden\n\t\t// element reports offsetTop/offsetLeft of 0).\n\t\tconst top = this.offsetTop;\n\t\tconst left = this.offsetLeft;\n\t\tthis.dispatchEvent(new Event('run'));\n\t\tif (!this.#emojiPicker) {\n\t\t\tthis.#emojiPicker = dom.createElement<EmojiPicker>('og-markdown-emoji-picker');\n\t\t\tdocument.body.appendChild(this.#emojiPicker);\n\t\t}\n\t\tconst picker = this.#emojiPicker;\n\t\tpicker.ctx = this.ctx;\n\t\tpicker.md = this.md;\n\t\tdom.showElement(picker);\n\t\tdom.setPosition(picker, {t: top, l: left});\n\t\tdocument.addEventListener('mousedown', () => dom.hideElement(picker), {once: true});\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
+ {"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;AAK7I,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,gBAAgB,GAAG,CAAC,EAAmB,EAAE,IAAY,EAAE,KAA8B,EAAE,EAAE,CAC9F,CAAC,GAAqB,EAAE,EAAE;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,OAAO,GAAG,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEH,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,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,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,aAAa;QAClB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC;QACrB,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;KACtD,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,OAAO;QACZ,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,IAAI;KAChB,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,UAAU,EAAE,CAAC;wBACtB,uBAAA,IAAI,sCAAiB,MAArB,IAAI,CAAmB,CAAC;wBACxB,OAAO;oBACR,CAAC;oBACD,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,6CAA0B;QAC1B,kDAA+B;QAE/B,yCAAmB,GAAG,EAAE;YACvB,wEAAwE;YACxE,8CAA8C;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,uBAAA,IAAI,kCAAa,EAAE,CAAC;gBACxB,uBAAA,IAAI,8BAAgB,GAAG,CAAC,aAAa,CAAc,0BAA0B,CAAC,MAAA,CAAC;gBAC/E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAA,IAAI,kCAAa,CAAC,CAAC;gBAC7C,uBAAA,IAAI,kCAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,uBAAA,IAAI,uCAAkB,EAAE,KAAxB,IAAI,CAAsB,CAAC,CAAC;YAC/E,CAAC;YACD,MAAM,MAAM,GAAG,uBAAA,IAAI,kCAAa,CAAC;YACjC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,EAAE;gBAChC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,uBAAA,IAAI,uCAAkB,EAAE,KAAxB,IAAI,CAAsB,CAAC;YACpE,CAAC,CAAC;YACF,uBAAA,IAAI,mCAAqB,GAAG,EAAE;gBAC7B,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACxB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACxD,uBAAA,IAAI,mCAAqB,SAAS,MAAA,CAAC;YACpC,CAAC,MAAA,CAAC;YACF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtD,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;IAhFA,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,CA+GzB","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\";\nimport { EmojiPicker } from \"./emojiPicker\";\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, openPicker?: boolean};\n\nconst wrapInSchemaNode = (md: typeof milkdown, name: string, attrs: Record<string, unknown>) =>\n\t(ctx: milkdown.ctx.Ctx) => {\n\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\tconst { dispatch, state } = view;\n\t\tconst type = state.schema.nodes[name];\n\t\tif (!type) return;\n\t\tconst command = clearContentAndWrapInBlockType(type, attrs);\n\t\tcommand(state, dispatch);\n\t};\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: '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: '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: 'calloutNote',\n\t\tvalue: msg('Callout'),\n\t\ticon: 'circle-info',\n\t\tonRun: wrapInSchemaNode(md, 'callout', {kind: 'note'})\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: 'emoji',\n\t\tvalue: msg('Emoji'),\n\t\ticon: 'face-smile',\n\t\topenPicker: true\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?.openPicker) {\n\t\t\t\t\tthis.#showEmojiPicker();\n\t\t\t\t\treturn;\n\t\t\t\t}\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);\n\t\t}\n\t}\n\n\t#emojiPicker: EmojiPicker;\n\t#emojiPickerClose?: () => void;\n\n\t#showEmojiPicker = () => {\n\t\t// Capture the menu position before dispatching 'run' hides it (a hidden\n\t\t// element reports offsetTop/offsetLeft of 0).\n\t\tconst top = this.offsetTop;\n\t\tconst left = this.offsetLeft;\n\t\tthis.dispatchEvent(new Event('run'));\n\t\tif (!this.#emojiPicker) {\n\t\t\tthis.#emojiPicker = dom.createElement<EmojiPicker>('og-markdown-emoji-picker');\n\t\t\tdocument.body.appendChild(this.#emojiPicker);\n\t\t\tthis.#emojiPicker.addEventListener('close', () => this.#emojiPickerClose?.());\n\t\t}\n\t\tconst picker = this.#emojiPicker;\n\t\tpicker.ctx = this.ctx;\n\t\tpicker.md = this.md;\n\t\tdom.showElement(picker, 'flex');\n\t\tdom.setPosition(picker, {t: top, l: left});\n\n\t\tconst onDown = (e: MouseEvent) => {\n\t\t\tif (!e.composedPath().includes(picker)) this.#emojiPickerClose?.();\n\t\t};\n\t\tthis.#emojiPickerClose = () => {\n\t\t\tdom.hideElement(picker);\n\t\t\tdocument.removeEventListener('mousedown', onDown, true);\n\t\t\tthis.#emojiPickerClose = undefined;\n\t\t};\n\t\tdocument.addEventListener('mousedown', onDown, true);\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":"calloutBlock.d.ts","sourceRoot":"","sources":["../../../src/components/features/calloutBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAMzD,eAAO,MAAM,aAAa,6DAA8D,CAAC;AACzF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,MAAM,CAAA;CAAE,CAMnF,CAAC;AA4FF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,QAAQ;;EAiFrD"}
1
+ {"version":3,"file":"calloutBlock.d.ts","sourceRoot":"","sources":["../../../src/components/features/calloutBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAMzD,eAAO,MAAM,aAAa,6DAA8D,CAAC;AACzF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,MAAM,CAAA;CAAE,CAMnF,CAAC;AA4FF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,QAAQ;;EAwFrD"}
@@ -1 +1 @@
1
- var _CalloutBlockView_icon,_CalloutBlockView_select,_CalloutBlockView_label,__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,l,i,o){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?o.call(e,l):o?o.value=l:t.set(e,l),l},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,l,i){if("a"===l&&!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"===l?i:"a"===l?i.call(e):i?i.value:t.get(e)};import{msg}from"@omegagrid/localize";import{iconSvg}from"./utils";export const CALLOUT_KINDS=["note","tip","important","warning","caution"];export const CALLOUT_META={note:{icon:"circle-info",label:()=>msg("Note")},tip:{icon:"circle-check",label:()=>msg("Tip")},important:{icon:"comment",label:()=>msg("Important")},warning:{icon:"circle-exclamation",label:()=>msg("Warning")},caution:{icon:"circle-xmark",label:()=>msg("Caution")}};const KIND_SET=new Set(CALLOUT_KINDS),normalizeKind=e=>"string"==typeof e&&KIND_SET.has(e.toLowerCase())?e.toLowerCase():"note";function walkTree(e,t){if(e.children)for(let l=e.children.length-1;l>=0;l--)t(e.children[l],l,e),walkTree(e.children[l],t)}class CalloutBlockView{constructor(e,t,l,i){this.md=e,this.node=t,this.view=l,this.getPos=i,_CalloutBlockView_icon.set(this,void 0),_CalloutBlockView_select.set(this,void 0),_CalloutBlockView_label.set(this,void 0);const o=normalizeKind(t.attrs.kind);this.dom=document.createElement("div"),this.dom.className="og-callout",this.dom.setAttribute("data-kind",o);const a=document.createElement("div");if(a.className="og-callout-header",a.contentEditable="false",__classPrivateFieldSet(this,_CalloutBlockView_icon,document.createElement("span"),"f"),__classPrivateFieldGet(this,_CalloutBlockView_icon,"f").className="og-callout-icon",__classPrivateFieldGet(this,_CalloutBlockView_icon,"f").innerHTML=iconSvg(CALLOUT_META[o].icon),l.editable){const e=document.createElement("select");e.className="og-callout-select";for(const t of CALLOUT_KINDS){const l=document.createElement("option");l.value=t,l.textContent=CALLOUT_META[t].label(),t===o&&(l.selected=!0),e.appendChild(l)}e.addEventListener("change",(()=>{this.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos()??0,"kind",e.value))})),__classPrivateFieldSet(this,_CalloutBlockView_select,e,"f"),a.append(__classPrivateFieldGet(this,_CalloutBlockView_icon,"f"),e)}else __classPrivateFieldSet(this,_CalloutBlockView_label,document.createElement("span"),"f"),__classPrivateFieldGet(this,_CalloutBlockView_label,"f").className="og-callout-label",__classPrivateFieldGet(this,_CalloutBlockView_label,"f").textContent=CALLOUT_META[o].label(),a.append(__classPrivateFieldGet(this,_CalloutBlockView_icon,"f"),__classPrivateFieldGet(this,_CalloutBlockView_label,"f"));this.contentDOM=document.createElement("div"),this.contentDOM.className="og-callout-body",this.dom.append(a,this.contentDOM)}update(e){if(e.type!==this.node.type)return!1;this.node=e;const t=normalizeKind(e.attrs.kind);return this.dom.setAttribute("data-kind",t),__classPrivateFieldGet(this,_CalloutBlockView_icon,"f").innerHTML=iconSvg(CALLOUT_META[t].icon),__classPrivateFieldGet(this,_CalloutBlockView_select,"f")&&__classPrivateFieldGet(this,_CalloutBlockView_select,"f").value!==t&&(__classPrivateFieldGet(this,_CalloutBlockView_select,"f").value=t),__classPrivateFieldGet(this,_CalloutBlockView_label,"f")&&(__classPrivateFieldGet(this,_CalloutBlockView_label,"f").textContent=CALLOUT_META[t].label()),!0}stopEvent(e){return!this.contentDOM.contains(e.target)}ignoreMutation(e){return"selection"!==e.type&&!this.contentDOM.contains(e.target)}}_CalloutBlockView_icon=new WeakMap,_CalloutBlockView_select=new WeakMap,_CalloutBlockView_label=new WeakMap;export function createCalloutBlock(e){const t=e.utils.$remark("remarkCalloutPlugin",(()=>()=>e=>{walkTree(e,((e,t,l)=>{if("blockquote"!==e.type||!e.children?.length)return;const i=e.children[0];if("paragraph"!==i.type||!i.children?.length)return;const o=i.children[0];if("text"!==o.type||"string"!=typeof o.value)return;const a=o.value.match(/^\[!(note|tip|important|warning|caution)\][^\S\n]*/i);if(!a)return;const n=a[1].toLowerCase(),c=i.children.slice(),s=o.value.slice(a[0].length).replace(/^\n/,"");s.length?c[0]={...o,value:s}:(c.shift(),"break"===c[0]?.type&&c.shift());const r=[];c.length&&r.push({...i,children:c}),r.push(...e.children.slice(1)),r.length||r.push({type:"paragraph",children:[]}),l.children[t]={type:"callout",kind:n,children:r}}))})),l=e.utils.$nodeSchema("callout",(()=>({content:"block+",group:"block",defining:!0,attrs:{kind:{default:"note"}},parseDOM:[{tag:"div[data-callout]",contentElement:".og-callout-body",getAttrs:e=>({kind:normalizeKind(e.getAttribute("data-callout"))})}],toDOM:e=>{const t=normalizeKind(e.attrs.kind);return["div",{"data-callout":t,class:`og-callout og-callout-${t}`},["div",{class:"og-callout-header",contenteditable:"false"},CALLOUT_META[t].label()],["div",{class:"og-callout-body"},0]]},parseMarkdown:{match:e=>"callout"===e.type,runner:(e,t,l)=>{e.openNode(l,{kind:normalizeKind(t.kind)}).next(t.children).closeNode()}},toMarkdown:{match:e=>"callout"===e.type.name,runner:(e,t)=>{const l=normalizeKind(t.attrs.kind).toUpperCase();e.openNode("blockquote"),e.openNode("paragraph"),e.addNode("text",void 0,`[!${l}]`),e.closeNode(),e.next(t.content),e.closeNode()}}}))),i=e.utils.$view(l.node,(()=>(t,l,i)=>new CalloutBlockView(e,t,l,i)));return{plugins:[...t,...l,i].flat()}}
1
+ var _CalloutBlockView_icon,_CalloutBlockView_select,_CalloutBlockView_label,__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,l,o,i){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!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"===o?i.call(e,l):i?i.value=l:t.set(e,l),l},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,l,o){if("a"===l&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===l?o:"a"===l?o.call(e):o?o.value:t.get(e)};import{msg}from"@omegagrid/localize";import{iconSvg}from"./utils";export const CALLOUT_KINDS=["note","tip","important","warning","caution"];export const CALLOUT_META={note:{icon:"circle-info",label:()=>msg("Note")},tip:{icon:"circle-check",label:()=>msg("Tip")},important:{icon:"comment",label:()=>msg("Important")},warning:{icon:"circle-exclamation",label:()=>msg("Warning")},caution:{icon:"circle-xmark",label:()=>msg("Caution")}};const KIND_SET=new Set(CALLOUT_KINDS),normalizeKind=e=>"string"==typeof e&&KIND_SET.has(e.toLowerCase())?e.toLowerCase():"note";function walkTree(e,t){if(e.children)for(let l=e.children.length-1;l>=0;l--)t(e.children[l],l,e),walkTree(e.children[l],t)}class CalloutBlockView{constructor(e,t,l,o){this.md=e,this.node=t,this.view=l,this.getPos=o,_CalloutBlockView_icon.set(this,void 0),_CalloutBlockView_select.set(this,void 0),_CalloutBlockView_label.set(this,void 0);const i=normalizeKind(t.attrs.kind);this.dom=document.createElement("div"),this.dom.className="og-callout",this.dom.setAttribute("data-kind",i);const a=document.createElement("div");if(a.className="og-callout-header",a.contentEditable="false",__classPrivateFieldSet(this,_CalloutBlockView_icon,document.createElement("span"),"f"),__classPrivateFieldGet(this,_CalloutBlockView_icon,"f").className="og-callout-icon",__classPrivateFieldGet(this,_CalloutBlockView_icon,"f").innerHTML=iconSvg(CALLOUT_META[i].icon),l.editable){const e=document.createElement("select");e.className="og-callout-select";for(const t of CALLOUT_KINDS){const l=document.createElement("option");l.value=t,l.textContent=CALLOUT_META[t].label(),t===i&&(l.selected=!0),e.appendChild(l)}e.addEventListener("change",(()=>{this.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos()??0,"kind",e.value))})),__classPrivateFieldSet(this,_CalloutBlockView_select,e,"f"),a.append(__classPrivateFieldGet(this,_CalloutBlockView_icon,"f"),e)}else __classPrivateFieldSet(this,_CalloutBlockView_label,document.createElement("span"),"f"),__classPrivateFieldGet(this,_CalloutBlockView_label,"f").className="og-callout-label",__classPrivateFieldGet(this,_CalloutBlockView_label,"f").textContent=CALLOUT_META[i].label(),a.append(__classPrivateFieldGet(this,_CalloutBlockView_icon,"f"),__classPrivateFieldGet(this,_CalloutBlockView_label,"f"));this.contentDOM=document.createElement("div"),this.contentDOM.className="og-callout-body",this.dom.append(a,this.contentDOM)}update(e){if(e.type!==this.node.type)return!1;this.node=e;const t=normalizeKind(e.attrs.kind);return this.dom.setAttribute("data-kind",t),__classPrivateFieldGet(this,_CalloutBlockView_icon,"f").innerHTML=iconSvg(CALLOUT_META[t].icon),__classPrivateFieldGet(this,_CalloutBlockView_select,"f")&&__classPrivateFieldGet(this,_CalloutBlockView_select,"f").value!==t&&(__classPrivateFieldGet(this,_CalloutBlockView_select,"f").value=t),__classPrivateFieldGet(this,_CalloutBlockView_label,"f")&&(__classPrivateFieldGet(this,_CalloutBlockView_label,"f").textContent=CALLOUT_META[t].label()),!0}stopEvent(e){return!this.contentDOM.contains(e.target)}ignoreMutation(e){return"selection"!==e.type&&!this.contentDOM.contains(e.target)}}_CalloutBlockView_icon=new WeakMap,_CalloutBlockView_select=new WeakMap,_CalloutBlockView_label=new WeakMap;export function createCalloutBlock(e){const t=e.utils.$remark("remarkCalloutPlugin",(()=>()=>e=>{walkTree(e,((e,t,l)=>{if("blockquote"!==e.type||!e.children?.length)return;const o=e.children[0];if("paragraph"!==o.type||!o.children?.length)return;const i=o.children[0];if("text"!==i.type||"string"!=typeof i.value)return;const a=i.value.match(/^\[!(note|tip|important|warning|caution)\][^\S\n]*/i);if(!a)return;const n=a[1].toLowerCase(),c=o.children.slice(),s=i.value.slice(a[0].length).replace(/^\n/,"");s.length?c[0]={...i,value:s}:(c.shift(),"break"===c[0]?.type&&c.shift());const r=[];c.length&&r.push({...o,children:c}),r.push(...e.children.slice(1)),r.length||r.push({type:"paragraph",children:[]}),l.children[t]={type:"callout",kind:n,children:r}}))})),l=e.utils.$nodeSchema("callout",(()=>({content:"block+",group:"block",defining:!0,attrs:{kind:{default:"note"}},parseDOM:[{tag:"blockquote[data-callout]",priority:70,contentElement:".og-callout-body",getAttrs:e=>({kind:normalizeKind(e.getAttribute("data-callout"))})},{tag:"div[data-callout]",contentElement:".og-callout-body",getAttrs:e=>({kind:normalizeKind(e.getAttribute("data-callout"))})}],toDOM:e=>{const t=normalizeKind(e.attrs.kind);return["blockquote",{"data-callout":t,class:`og-callout og-callout-${t}`},["p",{class:"og-callout-title"},CALLOUT_META[t].label()],["div",{class:"og-callout-body"},0]]},parseMarkdown:{match:e=>"callout"===e.type,runner:(e,t,l)=>{e.openNode(l,{kind:normalizeKind(t.kind)}).next(t.children).closeNode()}},toMarkdown:{match:e=>"callout"===e.type.name,runner:(e,t)=>{const l=normalizeKind(t.attrs.kind).toUpperCase();e.openNode("blockquote"),e.openNode("paragraph"),e.addNode("text",void 0,`[!${l}]`),e.closeNode(),e.next(t.content),e.closeNode()}}}))),o=e.utils.$view(l.node,(()=>(t,l,o)=>new CalloutBlockView(e,t,l,o)));return{plugins:[...t,...l,o].flat()}}
@@ -1 +1 @@
1
- {"version":3,"file":"calloutBlock.js","sourceRoot":"","sources":["../../../src/components/features/calloutBlock.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAGzF,MAAM,CAAC,MAAM,YAAY,GAA+D;IACvF,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACvD,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IACtD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;IAC7D,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IACpE,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;CAC9D,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC,CAAC;AAChD,MAAM,aAAa,GAAG,CAAC,KAAc,EAAe,EAAE,CACrD,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,WAAW,EAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;AAEhH,8DAA8D;AAC9D,SAAS,QAAQ,CAAC,IAAS,EAAE,QAAyD;IACrF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,gBAAgB;IAOrB,YACQ,EAAmB,EACnB,IAAU,EACV,IAAgB,EAChB,MAAgC;QAHhC,OAAE,GAAF,EAAE,CAAiB;QACnB,SAAI,GAAJ,IAAI,CAAM;QACV,SAAI,GAAJ,IAAI,CAAY;QAChB,WAAM,GAAN,MAAM,CAA0B;QARxC,yCAAmB;QACnB,2CAA4B;QAC5B,0CAAqB;QAQpB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACvC,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC;QAEjC,uBAAA,IAAI,0BAAS,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,MAAA,CAAC;QAC5C,uBAAA,IAAI,8BAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;QACzC,uBAAA,IAAI,8BAAM,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;YACvC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC7C,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;gBACd,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,IAAI;oBAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACpC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACnG,CAAC,CAAC,CAAC;YACH,uBAAA,IAAI,4BAAW,MAAM,MAAA,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,8BAAM,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACP,uBAAA,IAAI,2BAAU,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,MAAA,CAAC;YAC7C,uBAAA,IAAI,+BAAO,CAAC,SAAS,GAAG,kBAAkB,CAAC;YAC3C,uBAAA,IAAI,+BAAO,CAAC,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,8BAAM,EAAE,uBAAA,IAAI,+BAAO,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,iBAAiB,CAAC;QAE9C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,IAAU;QAChB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACzC,uBAAA,IAAI,8BAAM,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,uBAAA,IAAI,gCAAQ,IAAI,uBAAA,IAAI,gCAAQ,CAAC,KAAK,KAAK,IAAI;YAAE,uBAAA,IAAI,gCAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC3E,IAAI,uBAAA,IAAI,+BAAO;YAAE,uBAAA,IAAI,+BAAO,CAAC,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS,CAAC,CAAQ;QACjB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc,CAAC,CAAyD;QACvE,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;CACD;;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAmB;IACrD,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAa,EAAE,EAAE;QAC1F,8DAA8D;QAC9D,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAS,EAAE,KAAa,EAAE,MAAW,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM;gBAAE,OAAO;YACjE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM;gBAAE,OAAO;YAClE,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;gBAAE,OAAO;YAE7E,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAC3F,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAEpC,uDAAuD;YACvD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACP,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO;oBAAE,YAAY,CAAC,KAAK,EAAE,CAAC;YAC7D,CAAC;YAED,8DAA8D;YAC9D,MAAM,eAAe,GAAU,EAAE,CAAC;YAClC,IAAI,YAAY,CAAC,MAAM;gBAAE,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;YACpF,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,eAAe,CAAC,MAAM;gBAAE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,QAAQ,EAAE,CAAC;gBACV,GAAG,EAAE,mBAAmB;gBACxB,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;aAC3F,CAAC;QACF,KAAK,EAAE,CAAC,IAAU,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,IAAI,EAAE,EAAE;gBAC9E,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC7F,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;aAC/B,CAAC;QACZ,CAAC;QACD,aAAa,EAAE;YACd,KAAK,EAAE,CAAC,MAAwB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;YAC9D,8DAA8D;YAC9D,MAAM,EAAE,CAAC,KAAU,EAAE,IAAS,EAAE,IAAS,EAAE,EAAE;gBAC5C,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;YAC1F,CAAC;SACD;QACD,UAAU,EAAE;YACX,KAAK,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;YACnD,8DAA8D;YAC9D,MAAM,EAAE,CAAC,KAAU,EAAE,IAAU,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC1D,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC7B,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC5B,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;gBAC/C,KAAK,CAAC,SAAS,EAAE,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,KAAK,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;SACD;KACD,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;QACrD,OAAO,CAAC,IAAU,EAAE,IAAgB,EAAE,MAAgC,EAAE,EAAE,CACzE,IAAI,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAElE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpB,CAAC","sourcesContent":["import type * as milkdown from '@omegagrid/milkdown-kit';\nimport type { NodeView, EditorView } from '@omegagrid/milkdown-kit/dist/prose/view';\nimport type { Node } from '@omegagrid/milkdown-kit/dist/prose/model';\nimport { msg } from '@omegagrid/localize';\nimport { iconSvg } from './utils';\n\nexport const CALLOUT_KINDS = ['note', 'tip', 'important', 'warning', 'caution'] as const;\nexport type CalloutKind = (typeof CALLOUT_KINDS)[number];\n\nexport const CALLOUT_META: Record<CalloutKind, { icon: string; label: () => string }> = {\n\tnote: { icon: 'circle-info', label: () => msg('Note') },\n\ttip: { icon: 'circle-check', label: () => msg('Tip') },\n\timportant: { icon: 'comment', label: () => msg('Important') },\n\twarning: { icon: 'circle-exclamation', label: () => msg('Warning') },\n\tcaution: { icon: 'circle-xmark', label: () => msg('Caution') },\n};\n\nconst KIND_SET = new Set<string>(CALLOUT_KINDS);\nconst normalizeKind = (value: unknown): CalloutKind =>\n\ttypeof value === 'string' && KIND_SET.has(value.toLowerCase()) ? (value.toLowerCase() as CalloutKind) : 'note';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction walkTree(tree: any, callback: (node: any, index: number, parent: any) => void) {\n\tif (tree.children) {\n\t\tfor (let i = tree.children.length - 1; i >= 0; i--) {\n\t\t\tcallback(tree.children[i], i, tree);\n\t\t\twalkTree(tree.children[i], callback);\n\t\t}\n\t}\n}\n\nclass CalloutBlockView implements NodeView {\n\tdom: HTMLElement;\n\tcontentDOM: HTMLElement;\n\t#icon: HTMLElement;\n\t#select?: HTMLSelectElement;\n\t#label?: HTMLElement;\n\n\tconstructor(\n\t\tpublic md: typeof milkdown,\n\t\tpublic node: Node,\n\t\tpublic view: EditorView,\n\t\tpublic getPos: () => number | undefined\n\t) {\n\t\tconst kind = normalizeKind(node.attrs.kind);\n\n\t\tthis.dom = document.createElement('div');\n\t\tthis.dom.className = 'og-callout';\n\t\tthis.dom.setAttribute('data-kind', kind);\n\n\t\tconst header = document.createElement('div');\n\t\theader.className = 'og-callout-header';\n\t\theader.contentEditable = 'false';\n\n\t\tthis.#icon = document.createElement('span');\n\t\tthis.#icon.className = 'og-callout-icon';\n\t\tthis.#icon.innerHTML = iconSvg(CALLOUT_META[kind].icon);\n\n\t\tif (view.editable) {\n\t\t\tconst select = document.createElement('select');\n\t\t\tselect.className = 'og-callout-select';\n\t\t\tfor (const k of CALLOUT_KINDS) {\n\t\t\t\tconst opt = document.createElement('option');\n\t\t\t\topt.value = k;\n\t\t\t\topt.textContent = CALLOUT_META[k].label();\n\t\t\t\tif (k === kind) opt.selected = true;\n\t\t\t\tselect.appendChild(opt);\n\t\t\t}\n\t\t\tselect.addEventListener('change', () => {\n\t\t\t\tthis.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos() ?? 0, 'kind', select.value));\n\t\t\t});\n\t\t\tthis.#select = select;\n\t\t\theader.append(this.#icon, select);\n\t\t} else {\n\t\t\tthis.#label = document.createElement('span');\n\t\t\tthis.#label.className = 'og-callout-label';\n\t\t\tthis.#label.textContent = CALLOUT_META[kind].label();\n\t\t\theader.append(this.#icon, this.#label);\n\t\t}\n\n\t\tthis.contentDOM = document.createElement('div');\n\t\tthis.contentDOM.className = 'og-callout-body';\n\n\t\tthis.dom.append(header, this.contentDOM);\n\t}\n\n\tupdate(node: Node) {\n\t\tif (node.type !== this.node.type) return false;\n\t\tthis.node = node;\n\t\tconst kind = normalizeKind(node.attrs.kind);\n\t\tthis.dom.setAttribute('data-kind', kind);\n\t\tthis.#icon.innerHTML = iconSvg(CALLOUT_META[kind].icon);\n\t\tif (this.#select && this.#select.value !== kind) this.#select.value = kind;\n\t\tif (this.#label) this.#label.textContent = CALLOUT_META[kind].label();\n\t\treturn true;\n\t}\n\n\tstopEvent(e: Event) {\n\t\treturn !this.contentDOM.contains(e.target as HTMLElement);\n\t}\n\n\tignoreMutation(m: Parameters<NonNullable<NodeView['ignoreMutation']>>[0]) {\n\t\tif (m.type === 'selection') return false;\n\t\treturn !this.contentDOM.contains(m.target);\n\t}\n}\n\nexport function createCalloutBlock(md: typeof milkdown) {\n\tconst remarkPlugin = md.utils.$remark('remarkCalloutPlugin', () => () => (tree: unknown) => {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\twalkTree(tree, (node: any, index: number, parent: any) => {\n\t\t\tif (node.type !== 'blockquote' || !node.children?.length) return;\n\t\t\tconst first = node.children[0];\n\t\t\tif (first.type !== 'paragraph' || !first.children?.length) return;\n\t\t\tconst firstText = first.children[0];\n\t\t\tif (firstText.type !== 'text' || typeof firstText.value !== 'string') return;\n\n\t\t\tconst match = firstText.value.match(/^\\[!(note|tip|important|warning|caution)\\][^\\S\\n]*/i);\n\t\t\tif (!match) return;\n\t\t\tconst kind = match[1].toLowerCase();\n\n\t\t\t// Strip the \"[!KIND]\" marker from the first paragraph.\n\t\t\tconst paraChildren = first.children.slice();\n\t\t\tconst rest = firstText.value.slice(match[0].length).replace(/^\\n/, '');\n\t\t\tif (rest.length) {\n\t\t\t\tparaChildren[0] = { ...firstText, value: rest };\n\t\t\t} else {\n\t\t\t\tparaChildren.shift();\n\t\t\t\tif (paraChildren[0]?.type === 'break') paraChildren.shift();\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst calloutChildren: any[] = [];\n\t\t\tif (paraChildren.length) calloutChildren.push({ ...first, children: paraChildren });\n\t\t\tcalloutChildren.push(...node.children.slice(1));\n\t\t\tif (!calloutChildren.length) calloutChildren.push({ type: 'paragraph', children: [] });\n\n\t\t\tparent.children[index] = { type: 'callout', kind, children: calloutChildren };\n\t\t});\n\t});\n\n\tconst nodeSchema = md.utils.$nodeSchema('callout', () => ({\n\t\tcontent: 'block+',\n\t\tgroup: 'block',\n\t\tdefining: true,\n\t\tattrs: { kind: { default: 'note' } },\n\t\tparseDOM: [{\n\t\t\ttag: 'div[data-callout]',\n\t\t\tcontentElement: '.og-callout-body',\n\t\t\tgetAttrs: (dom: HTMLElement) => ({ kind: normalizeKind(dom.getAttribute('data-callout')) }),\n\t\t}],\n\t\ttoDOM: (node: Node) => {\n\t\t\tconst kind = normalizeKind(node.attrs.kind);\n\t\t\treturn ['div', { 'data-callout': kind, class: `og-callout og-callout-${kind}` },\n\t\t\t\t['div', { class: 'og-callout-header', contenteditable: 'false' }, CALLOUT_META[kind].label()],\n\t\t\t\t['div', { class: 'og-callout-body' }, 0],\n\t\t\t] as const;\n\t\t},\n\t\tparseMarkdown: {\n\t\t\tmatch: (mdNode: { type: string }) => mdNode.type === 'callout',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\trunner: (state: any, node: any, type: any) => {\n\t\t\t\tstate.openNode(type, { kind: normalizeKind(node.kind) }).next(node.children).closeNode();\n\t\t\t},\n\t\t},\n\t\ttoMarkdown: {\n\t\t\tmatch: (node: Node) => node.type.name === 'callout',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\trunner: (state: any, node: Node) => {\n\t\t\t\tconst kind = normalizeKind(node.attrs.kind).toUpperCase();\n\t\t\t\tstate.openNode('blockquote');\n\t\t\t\tstate.openNode('paragraph');\n\t\t\t\tstate.addNode('text', undefined, `[!${kind}]`);\n\t\t\t\tstate.closeNode();\n\t\t\t\tstate.next(node.content);\n\t\t\t\tstate.closeNode();\n\t\t\t},\n\t\t},\n\t}));\n\n\tconst nodeView = md.utils.$view(nodeSchema.node, () => {\n\t\treturn (node: Node, view: EditorView, getPos: () => number | undefined) =>\n\t\t\tnew CalloutBlockView(md, node, view, getPos);\n\t});\n\n\tconst plugins = [...remarkPlugin, ...nodeSchema, nodeView].flat();\n\n\treturn { plugins };\n}\n"]}
1
+ {"version":3,"file":"calloutBlock.js","sourceRoot":"","sources":["../../../src/components/features/calloutBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as milkdown from '@omegagrid/milkdown-kit';\nimport type { NodeView, EditorView } from '@omegagrid/milkdown-kit/dist/prose/view';\nimport type { Node } from '@omegagrid/milkdown-kit/dist/prose/model';\nimport { msg } from '@omegagrid/localize';\nimport { iconSvg } from './utils';\n\nexport const CALLOUT_KINDS = ['note', 'tip', 'important', 'warning', 'caution'] as const;\nexport type CalloutKind = (typeof CALLOUT_KINDS)[number];\n\nexport const CALLOUT_META: Record<CalloutKind, { icon: string; label: () => string }> = {\n\tnote: { icon: 'circle-info', label: () => msg('Note') },\n\ttip: { icon: 'circle-check', label: () => msg('Tip') },\n\timportant: { icon: 'comment', label: () => msg('Important') },\n\twarning: { icon: 'circle-exclamation', label: () => msg('Warning') },\n\tcaution: { icon: 'circle-xmark', label: () => msg('Caution') },\n};\n\nconst KIND_SET = new Set<string>(CALLOUT_KINDS);\nconst normalizeKind = (value: unknown): CalloutKind =>\n\ttypeof value === 'string' && KIND_SET.has(value.toLowerCase()) ? (value.toLowerCase() as CalloutKind) : 'note';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction walkTree(tree: any, callback: (node: any, index: number, parent: any) => void) {\n\tif (tree.children) {\n\t\tfor (let i = tree.children.length - 1; i >= 0; i--) {\n\t\t\tcallback(tree.children[i], i, tree);\n\t\t\twalkTree(tree.children[i], callback);\n\t\t}\n\t}\n}\n\nclass CalloutBlockView implements NodeView {\n\tdom: HTMLElement;\n\tcontentDOM: HTMLElement;\n\t#icon: HTMLElement;\n\t#select?: HTMLSelectElement;\n\t#label?: HTMLElement;\n\n\tconstructor(\n\t\tpublic md: typeof milkdown,\n\t\tpublic node: Node,\n\t\tpublic view: EditorView,\n\t\tpublic getPos: () => number | undefined\n\t) {\n\t\tconst kind = normalizeKind(node.attrs.kind);\n\n\t\tthis.dom = document.createElement('div');\n\t\tthis.dom.className = 'og-callout';\n\t\tthis.dom.setAttribute('data-kind', kind);\n\n\t\tconst header = document.createElement('div');\n\t\theader.className = 'og-callout-header';\n\t\theader.contentEditable = 'false';\n\n\t\tthis.#icon = document.createElement('span');\n\t\tthis.#icon.className = 'og-callout-icon';\n\t\tthis.#icon.innerHTML = iconSvg(CALLOUT_META[kind].icon);\n\n\t\tif (view.editable) {\n\t\t\tconst select = document.createElement('select');\n\t\t\tselect.className = 'og-callout-select';\n\t\t\tfor (const k of CALLOUT_KINDS) {\n\t\t\t\tconst opt = document.createElement('option');\n\t\t\t\topt.value = k;\n\t\t\t\topt.textContent = CALLOUT_META[k].label();\n\t\t\t\tif (k === kind) opt.selected = true;\n\t\t\t\tselect.appendChild(opt);\n\t\t\t}\n\t\t\tselect.addEventListener('change', () => {\n\t\t\t\tthis.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos() ?? 0, 'kind', select.value));\n\t\t\t});\n\t\t\tthis.#select = select;\n\t\t\theader.append(this.#icon, select);\n\t\t} else {\n\t\t\tthis.#label = document.createElement('span');\n\t\t\tthis.#label.className = 'og-callout-label';\n\t\t\tthis.#label.textContent = CALLOUT_META[kind].label();\n\t\t\theader.append(this.#icon, this.#label);\n\t\t}\n\n\t\tthis.contentDOM = document.createElement('div');\n\t\tthis.contentDOM.className = 'og-callout-body';\n\n\t\tthis.dom.append(header, this.contentDOM);\n\t}\n\n\tupdate(node: Node) {\n\t\tif (node.type !== this.node.type) return false;\n\t\tthis.node = node;\n\t\tconst kind = normalizeKind(node.attrs.kind);\n\t\tthis.dom.setAttribute('data-kind', kind);\n\t\tthis.#icon.innerHTML = iconSvg(CALLOUT_META[kind].icon);\n\t\tif (this.#select && this.#select.value !== kind) this.#select.value = kind;\n\t\tif (this.#label) this.#label.textContent = CALLOUT_META[kind].label();\n\t\treturn true;\n\t}\n\n\tstopEvent(e: Event) {\n\t\treturn !this.contentDOM.contains(e.target as HTMLElement);\n\t}\n\n\tignoreMutation(m: Parameters<NonNullable<NodeView['ignoreMutation']>>[0]) {\n\t\tif (m.type === 'selection') return false;\n\t\treturn !this.contentDOM.contains(m.target);\n\t}\n}\n\nexport function createCalloutBlock(md: typeof milkdown) {\n\tconst remarkPlugin = md.utils.$remark('remarkCalloutPlugin', () => () => (tree: unknown) => {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\twalkTree(tree, (node: any, index: number, parent: any) => {\n\t\t\tif (node.type !== 'blockquote' || !node.children?.length) return;\n\t\t\tconst first = node.children[0];\n\t\t\tif (first.type !== 'paragraph' || !first.children?.length) return;\n\t\t\tconst firstText = first.children[0];\n\t\t\tif (firstText.type !== 'text' || typeof firstText.value !== 'string') return;\n\n\t\t\tconst match = firstText.value.match(/^\\[!(note|tip|important|warning|caution)\\][^\\S\\n]*/i);\n\t\t\tif (!match) return;\n\t\t\tconst kind = match[1].toLowerCase();\n\n\t\t\t// Strip the \"[!KIND]\" marker from the first paragraph.\n\t\t\tconst paraChildren = first.children.slice();\n\t\t\tconst rest = firstText.value.slice(match[0].length).replace(/^\\n/, '');\n\t\t\tif (rest.length) {\n\t\t\t\tparaChildren[0] = { ...firstText, value: rest };\n\t\t\t} else {\n\t\t\t\tparaChildren.shift();\n\t\t\t\tif (paraChildren[0]?.type === 'break') paraChildren.shift();\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst calloutChildren: any[] = [];\n\t\t\tif (paraChildren.length) calloutChildren.push({ ...first, children: paraChildren });\n\t\t\tcalloutChildren.push(...node.children.slice(1));\n\t\t\tif (!calloutChildren.length) calloutChildren.push({ type: 'paragraph', children: [] });\n\n\t\t\tparent.children[index] = { type: 'callout', kind, children: calloutChildren };\n\t\t});\n\t});\n\n\tconst nodeSchema = md.utils.$nodeSchema('callout', () => ({\n\t\tcontent: 'block+',\n\t\tgroup: 'block',\n\t\tdefining: true,\n\t\tattrs: { kind: { default: 'note' } },\n\t\tparseDOM: [{\n\t\t\ttag: 'blockquote[data-callout]',\n\t\t\tpriority: 70,\n\t\t\tcontentElement: '.og-callout-body',\n\t\t\tgetAttrs: (dom: HTMLElement) => ({ kind: normalizeKind(dom.getAttribute('data-callout')) }),\n\t\t}, {\n\t\t\ttag: 'div[data-callout]',\n\t\t\tcontentElement: '.og-callout-body',\n\t\t\tgetAttrs: (dom: HTMLElement) => ({ kind: normalizeKind(dom.getAttribute('data-callout')) }),\n\t\t}],\n\t\ttoDOM: (node: Node) => {\n\t\t\tconst kind = normalizeKind(node.attrs.kind);\n\t\t\t// ProseMirror requires the content hole (0) to be the only child of its\n\t\t\t// parent, so the body must be wrapped rather than placed on the blockquote.\n\t\t\treturn ['blockquote', { 'data-callout': kind, class: `og-callout og-callout-${kind}` },\n\t\t\t\t['p', { class: 'og-callout-title' }, CALLOUT_META[kind].label()],\n\t\t\t\t['div', { class: 'og-callout-body' }, 0],\n\t\t\t] as const;\n\t\t},\n\t\tparseMarkdown: {\n\t\t\tmatch: (mdNode: { type: string }) => mdNode.type === 'callout',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\trunner: (state: any, node: any, type: any) => {\n\t\t\t\tstate.openNode(type, { kind: normalizeKind(node.kind) }).next(node.children).closeNode();\n\t\t\t},\n\t\t},\n\t\ttoMarkdown: {\n\t\t\tmatch: (node: Node) => node.type.name === 'callout',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\trunner: (state: any, node: Node) => {\n\t\t\t\tconst kind = normalizeKind(node.attrs.kind).toUpperCase();\n\t\t\t\tstate.openNode('blockquote');\n\t\t\t\tstate.openNode('paragraph');\n\t\t\t\tstate.addNode('text', undefined, `[!${kind}]`);\n\t\t\t\tstate.closeNode();\n\t\t\t\tstate.next(node.content);\n\t\t\t\tstate.closeNode();\n\t\t\t},\n\t\t},\n\t}));\n\n\tconst nodeView = md.utils.$view(nodeSchema.node, () => {\n\t\treturn (node: Node, view: EditorView, getPos: () => number | undefined) =>\n\t\t\tnew CalloutBlockView(md, node, view, getPos);\n\t});\n\n\tconst plugins = [...remarkPlugin, ...nodeSchema, nodeView].flat();\n\n\treturn { plugins };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"codeBlock.d.ts","sourceRoot":"","sources":["../../../src/components/features/codeBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIjE,qBAAa,eAAgB,YAAW,QAAQ;IASvC,EAAE,EAAE,OAAO,QAAQ;IACnB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAXxC,GAAG,EAAE,SAAS,GAAC,QAAQ,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAuB;IAE3C,IAAI,MAAM,yDAAqD;IAC/D,IAAI,KAAK,8CAAqC;gBAGtC,EAAE,EAAE,OAAO,QAAQ,EACnB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAMxC,SAAS,GAAI,GAAG,SAAS,UA0BxB;IAED,OAAO,CAAC,eAAe;IAuBvB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAkBzC,MAAM,CAAC,IAAI,EAAE,IAAI;IASjB,UAAU;IAKV,YAAY;IAIZ,SAAS;IAIT,OAAO;IAIP,OAAO,CAAC,cAAc;IAKtB,WAAW,GAAI,UAAU,MAAM,UAE9B;CAuED;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,eAAO,MAAM,uBAAuB,EAAS,gBAAgB,CAAC;AAE9D,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,OAAO,QAAQ,gEAExD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,QAAQ,mIAStD"}
1
+ {"version":3,"file":"codeBlock.d.ts","sourceRoot":"","sources":["../../../src/components/features/codeBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIjE,qBAAa,eAAgB,YAAW,QAAQ;IASvC,EAAE,EAAE,OAAO,QAAQ;IACnB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAXxC,GAAG,EAAE,SAAS,GAAC,QAAQ,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAuB;IAE3C,IAAI,MAAM,yDAAqD;IAC/D,IAAI,KAAK,8CAAqC;gBAGtC,EAAE,EAAE,OAAO,QAAQ,EACnB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAMxC,SAAS,GAAI,GAAG,SAAS,UAoCxB;IAED,OAAO,CAAC,eAAe;IAuBvB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAkBzC,MAAM,CAAC,IAAI,EAAE,IAAI;IASjB,UAAU;IAKV,YAAY;IAIZ,SAAS;IAIT,OAAO;IAIP,OAAO,CAAC,cAAc;IAKtB,WAAW,GAAI,UAAU,MAAM,UAE9B;CAuED;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,eAAO,MAAM,uBAAuB,EAAS,gBAAgB,CAAC;AAE9D,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,OAAO,QAAQ,gEAExD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,QAAQ,mIAStD"}
@@ -1 +1 @@
1
- import{dom}from"@omegagrid/core";import{CodeBlock}from"@omegagrid/code";const DEFAULT_LANGUAGE="plaintext";export class CodeEditorBlock{get editor(){return this.dom?.editor?.editor}get model(){return this.editor?.getModel()}constructor(t,e,o,i){this.md=t,this.node=e,this.view=o,this.getPos=i,this.updating=!1,this.languageName="plaintext",this._onChange=t=>{if(this.updating)return;const e=t.editor.getModel(),o=this.view.state.tr;this.view.dispatch(o.setNodeAttribute(this.getPos()??0,"content",e.getValue()))},this.setLanguage=t=>{this.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos()??0,"language",t))},this.dom=this.createComponent(),this.updateLanguage()}createComponent(){const t=this.view.editable?dom.createElement("og-code-block"):dom.createElement("og-code-view");return t.content=this.node.textContent,t instanceof CodeBlock?(t.dynamicHeight=!0,t.editorOptions={minimap:{enabled:!1},stickyScroll:{enabled:!1}},t.addEventListener("code.change",this._onChange),t.addEventListener("changeLanguage",(t=>this.setLanguage(t.value)))):t.copy=!0,t}setSelection(t,e){if(!this.dom?.isConnected)return;this.dom.focus(),this.updating=!0;const o=this.model;if(o){const i=o.getPositionAt(t),n=o.getPositionAt(e);this.editor.setSelection({startLineNumber:i.lineNumber,startColumn:i.column,endLineNumber:n.lineNumber,endColumn:n.column})}this.updating=!1}update(t){return t.type===this.node.type&&(this.updating||(this.node=t,this.updateLanguage(),this.dom.content=t.textContent),!0)}selectNode(){this.dom.focus()}deselectNode(){}stopEvent(){return!0}destroy(){}updateLanguage(){this.languageName=this.node.attrs.language||"plaintext",this.dom.language=this.languageName}}export const defaultCodeEditorConfig={};export function createCodeBlockConfig(t){return t.utils.$ctx(defaultCodeEditorConfig,"codeEditorConfigCtx")}export function createCodeBlockView(t){return t.utils.$view(t.presets.commonmark.codeBlockSchema.node,(e=>(e,o,i)=>new CodeEditorBlock(t,e,o,i)))}
1
+ import{dom}from"@omegagrid/core";import{CodeBlock}from"@omegagrid/code";const DEFAULT_LANGUAGE="plaintext";export class CodeEditorBlock{get editor(){return this.dom?.editor?.editor}get model(){return this.editor?.getModel()}constructor(t,e,o,i){this.md=t,this.node=e,this.view=o,this.getPos=i,this.updating=!1,this.languageName="plaintext",this._onChange=t=>{if(this.updating)return;const e=t.editor.getModel().getValue(),o=this.getPos();if(null==o||e===this.node.textContent)return;this.updating=!0;const i=this.view.state.tr.replaceWith(o+1,o+this.node.nodeSize-1,e?this.view.state.schema.text(e):[]);this.view.dispatch(i),this.node=this.view.state.doc.nodeAt(o),this.updating=!1},this.setLanguage=t=>{this.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos()??0,"language",t))},this.dom=this.createComponent(),this.updateLanguage()}createComponent(){const t=this.view.editable?dom.createElement("og-code-block"):dom.createElement("og-code-view");return t.content=this.node.textContent,t instanceof CodeBlock?(t.dynamicHeight=!0,t.editorOptions={minimap:{enabled:!1},stickyScroll:{enabled:!1}},t.addEventListener("code.change",this._onChange),t.addEventListener("changeLanguage",(t=>this.setLanguage(t.value)))):t.copy=!0,t}setSelection(t,e){if(!this.dom?.isConnected)return;this.dom.focus(),this.updating=!0;const o=this.model;if(o){const i=o.getPositionAt(t),n=o.getPositionAt(e);this.editor.setSelection({startLineNumber:i.lineNumber,startColumn:i.column,endLineNumber:n.lineNumber,endColumn:n.column})}this.updating=!1}update(t){return t.type===this.node.type&&(this.updating||(this.node=t,this.updateLanguage(),this.dom.content=t.textContent),!0)}selectNode(){this.dom.focus()}deselectNode(){}stopEvent(){return!0}destroy(){}updateLanguage(){this.languageName=this.node.attrs.language||"plaintext",this.dom.language=this.languageName}}export const defaultCodeEditorConfig={};export function createCodeBlockConfig(t){return t.utils.$ctx(defaultCodeEditorConfig,"codeEditorConfigCtx")}export function createCodeBlockView(t){return t.utils.$view(t.presets.commonmark.codeBlockSchema.node,(e=>(e,o,i)=>new CodeEditorBlock(t,e,o,i)))}
@@ -1 +1 @@
1
- {"version":3,"file":"codeBlock.js","sourceRoot":"","sources":["../../../src/components/features/codeBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as milkdown from '@omegagrid/milkdown-kit';\nimport type { NodeView, EditorView } from '@omegagrid/milkdown-kit/dist/prose/view';\nimport type { Node } from '@omegagrid/milkdown-kit/dist/prose/model';\nimport { dom, events } from '@omegagrid/core';\nimport { CodeBlock, CodeEvent, CodeView } from '@omegagrid/code';\n\nconst DEFAULT_LANGUAGE = 'plaintext';\n\nexport class CodeEditorBlock implements NodeView {\n\tdom: CodeBlock|CodeView;\n\tprivate updating = false;\n\tprivate languageName: string = 'plaintext';\n\n\tget editor() { return (this.dom as CodeBlock)?.editor?.editor }\n\tget model() { return this.editor?.getModel() }\n\n\tconstructor(\n\t\tpublic md: typeof milkdown,\n\t\tpublic node: Node,\n\t\tpublic view: EditorView,\n\t\tpublic getPos: () => number | undefined\n\t) {\n\t\tthis.dom = this.createComponent();\n\t\tthis.updateLanguage();\n\t}\n\n\t_onChange = (e: CodeEvent) => {\n\t\tif (this.updating) return;\n\t\tconst model = e.editor.getModel();\n\t\tconst tr = this.view.state.tr;\n\t\tthis.view.dispatch(tr.setNodeAttribute(this.getPos() ?? 0, 'content', model.getValue()));\n\t\t\n\t\t// const selection = e.editor.getSelection();\n\t\t// const selFrom = offset + model.getOffsetAt(selection.getStartPosition());\n\t\t// const selTo = offset + model.getOffsetAt(selection.getEndPosition());\n\n\t\t// if (e.changes?.length) {\n\t\t// \tconst tr = this.view.state.tr;\t\n\t\t// \te.changes.forEach(change => {\n\t\t// \t\tconst { rangeOffset, rangeLength, text } = change;\n\t\t// \t\tconst from = offset + rangeOffset;\n\t\t// \t\tconst to = from + rangeLength;\n\t\t// \t\tif (text.length) {\n\t\t// \t\t\ttr.replaceWith(from, to, this.view.state.schema.text(text));\n\t\t// \t\t} else {\n\t\t// \t\t\ttr.delete(from, to);\n\t\t// \t\t}\n\t\t// \t\toffset += text.length - rangeLength;\n\t\t// \t});\n\t\t// \ttr.setSelection(this.md.prose.state.TextSelection.create(tr.doc, selFrom, selTo))\n\t\t// \tthis.view.dispatch(tr)\n\t\t// }\n\t}\n\n\tprivate createComponent() {\n\t\tconst component = this.view.editable\n\t\t\t? dom.createElement<CodeBlock>('og-code-block')\n\t\t\t: dom.createElement<CodeView>('og-code-view');\n\n\t\tcomponent.content = this.node.textContent;\n\n\t\tif (component instanceof CodeBlock) {\n\t\t\tcomponent.dynamicHeight = true;\n\t\t\tcomponent.editorOptions = {\n\t\t\t\tminimap: {enabled: false},\n\t\t\t\tstickyScroll: {enabled: false},\n\t\t\t};\n\t\t\t// dom.setSize(component, {h: 500});\n\t\t\tcomponent.addEventListener('code.change', this._onChange);\n\t\t\tcomponent.addEventListener('changeLanguage', (e: events.ChangeEvent) => this.setLanguage(e.value));\n\t\t} else {\n\t\t\tcomponent.copy = true;\n\t\t}\n\n\t\treturn component;\n\t}\n\n\tsetSelection(anchor: number, head: number) {\n\t\tif (!this.dom?.isConnected) return;\n\t\tthis.dom.focus();\n\t\tthis.updating = true;\n\t\tconst model = this.model;\n\t\tif (model) {\n\t\t\tconst start = model.getPositionAt(anchor);\n\t\t\tconst end = model.getPositionAt(head);\n\t\t\tthis.editor.setSelection({\n\t\t\t\tstartLineNumber: start.lineNumber,\n\t\t\t\tstartColumn: start.column,\n\t\t\t\tendLineNumber: end.lineNumber,\n\t\t\t\tendColumn: end.column\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tupdate(node: Node) {\n\t\tif (node.type !== this.node.type) return false;\n\t\tif (this.updating) return true;\n\t\tthis.node = node;\n\t\tthis.updateLanguage();\n\t\tthis.dom.content = node.textContent;\n\t\treturn true;\n\t}\n\n\tselectNode() {\n\t\t// this.component.selected = true\n\t\tthis.dom.focus()\n\t}\n\n\tdeselectNode() {\n\t\t// this.component.selected = false\n\t}\n\n\tstopEvent() {\n\t\treturn true\n\t}\n\n\tdestroy() {\n\t\t// this.component.destroy()\n\t}\n\n\tprivate updateLanguage() {\n\t\tthis.languageName = this.node.attrs.language || DEFAULT_LANGUAGE;\n\t\tthis.dom.language = this.languageName;\n\t}\n\n\tsetLanguage = (language: string) => {\n\t\tthis.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos() ?? 0, 'language', language));\n\t}\n\n\t// private codeMirrorKeymap = (): KeyBinding[] => {\n\t// \tconst view = this.view\n\t// \treturn [\n\t// \t\t{ key: 'ArrowUp', run: () => this.maybeEscape('line', -1) },\n\t// \t\t{ key: 'ArrowLeft', run: () => this.maybeEscape('char', -1) },\n\t// \t\t{ key: 'ArrowDown', run: () => this.maybeEscape('line', 1) },\n\t// \t\t{ key: 'ArrowRight', run: () => this.maybeEscape('char', 1) },\n\t// \t\t{\n\t// \t\t\tkey: 'Mod-Enter',\n\t// \t\t\trun: () => {\n\t// \t\t\t\tif (!exitCode(view.state, view.dispatch)) return false\n\n\t// \t\t\t\tview.focus()\n\t// \t\t\t\treturn true\n\t// \t\t\t},\n\t// \t\t},\n\t// \t\t{ key: 'Mod-z', run: () => undo(view.state, view.dispatch) },\n\t// \t\t{ key: 'Shift-Mod-z', run: () => redo(view.state, view.dispatch) },\n\t// \t\t{ key: 'Mod-y', run: () => redo(view.state, view.dispatch) },\n\t// \t\t{\n\t// \t\t\tkey: 'Backspace',\n\t// \t\t\trun: () => {\n\t// \t\t\t\tconst ranges = this.cm.state.selection.ranges\n\n\t// \t\t\t\tif (ranges.length > 1) return false\n\n\t// \t\t\t\tconst selection = ranges[0]\n\n\t// \t\t\t\tif (selection && (!selection.empty || selection.anchor > 0))\n\t// \t\t\t\t\treturn false\n\n\t// \t\t\t\tif (this.cm.state.doc.lines >= 2) return false\n\n\t// \t\t\t\tconst state = this.view.state\n\t// \t\t\t\tconst pos = this.getPos() ?? 0\n\t// \t\t\t\tconst tr = state.tr.replaceWith(\n\t// \t\t\t\t\tpos,\n\t// \t\t\t\t\tpos + this.node.nodeSize,\n\t// \t\t\t\t\tstate.schema.nodes.paragraph!.createChecked({}, this.node.content)\n\t// \t\t\t\t)\n\n\t// \t\t\t\ttr.setSelection(TextSelection.near(tr.doc.resolve(pos)))\n\n\t// \t\t\t\tthis.view.dispatch(tr)\n\t// \t\t\t\tthis.view.focus()\n\t// \t\t\t\treturn true\n\t// \t\t\t},\n\t// \t\t},\n\t// \t]\n\t// }\n\n\t// private maybeEscape = (unit: 'line' | 'char', dir: -1 | 1): boolean => {\n\t// \tconst editorSelection = this.editor.getSelection();\n\t// \tlet main: SelectionRange | Line = state.selection.main\n\t// \tif (!main.empty) return false\n\t// \tif (unit === 'line') main = state.doc.lineAt(main.head)\n\t// \tif (dir < 0 ? main.from > 0 : main.to < state.doc.length) return false\n\n\t// \tconst targetPos = (this.getPos() ?? 0) + (dir < 0 ? 0 : this.node.nodeSize)\n\t// \tconst selection = TextSelection.near(\n\t// \t\tthis.view.state.doc.resolve(targetPos),\n\t// \t\tdir\n\t// \t)\n\t// \tconst tr = this.view.state.tr.setSelection(selection).scrollIntoView();\n\t// \tthis.view.dispatch(tr);\n\t// \tthis.view.focus();\n\t// \treturn true;\n\t// }\n\n}\n\nexport type CodeEditorConfig = Record<string, never>;\nexport const defaultCodeEditorConfig = {} as CodeEditorConfig;\n\nexport function createCodeBlockConfig(md: typeof milkdown) {\n\treturn md.utils.$ctx(defaultCodeEditorConfig, 'codeEditorConfigCtx');\n}\n\nexport function createCodeBlockView(md: typeof milkdown) {\n\treturn md.utils.$view(\n\t\tmd.presets.commonmark.codeBlockSchema.node,\n\t\t_ctx => {\n\t\t\t// const config = ctx.get('codeBlockConfigCtx')\n\t\t\t// const languageLoader = new LanguageLoader(config.languages)\n\t\t\treturn (node, view, getPos) => new CodeEditorBlock(md, node, view, getPos);\n\t\t}\n\t);\n}\n\n// function computeChange(oldVal: string, newVal: string): { from: number; to: number; text: string } | null {\n// \tif (oldVal === newVal) return null;\n\n// \tlet start = 0;\n// \tlet oldEnd = oldVal.length;\n// \tlet newEnd = newVal.length;\n\n// \twhile (start < oldEnd && oldVal.charCodeAt(start) === newVal.charCodeAt(start)) ++start;\n// \twhile (oldEnd > start && newEnd > start && oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)) {\n// \t\toldEnd--;\n// \t\tnewEnd--;\n// \t}\n\n// \treturn {from: start, to: oldEnd, text: newVal.slice(start, newEnd)};\n// }\n"]}
1
+ {"version":3,"file":"codeBlock.js","sourceRoot":"","sources":["../../../src/components/features/codeBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as milkdown from '@omegagrid/milkdown-kit';\nimport type { NodeView, EditorView } from '@omegagrid/milkdown-kit/dist/prose/view';\nimport type { Node } from '@omegagrid/milkdown-kit/dist/prose/model';\nimport { dom, events } from '@omegagrid/core';\nimport { CodeBlock, CodeEvent, CodeView } from '@omegagrid/code';\n\nconst DEFAULT_LANGUAGE = 'plaintext';\n\nexport class CodeEditorBlock implements NodeView {\n\tdom: CodeBlock|CodeView;\n\tprivate updating = false;\n\tprivate languageName: string = 'plaintext';\n\n\tget editor() { return (this.dom as CodeBlock)?.editor?.editor }\n\tget model() { return this.editor?.getModel() }\n\n\tconstructor(\n\t\tpublic md: typeof milkdown,\n\t\tpublic node: Node,\n\t\tpublic view: EditorView,\n\t\tpublic getPos: () => number | undefined\n\t) {\n\t\tthis.dom = this.createComponent();\n\t\tthis.updateLanguage();\n\t}\n\n\t_onChange = (e: CodeEvent) => {\n\t\tif (this.updating) return;\n\t\tconst value = e.editor.getModel().getValue();\n\t\tconst pos = this.getPos();\n\t\tif (pos == null || value === this.node.textContent) return;\n\t\t\n\t\tthis.updating = true;\n\t\tconst tr = this.view.state.tr.replaceWith(\n\t\t\tpos + 1,\n\t\t\tpos + this.node.nodeSize - 1,\n\t\t\tvalue ? this.view.state.schema.text(value) : []\n\t\t);\n\t\tthis.view.dispatch(tr);\n\t\tthis.node = this.view.state.doc.nodeAt(pos);\n\t\tthis.updating = false;\n\n\t\t// const selection = e.editor.getSelection();\n\t\t// const selFrom = offset + model.getOffsetAt(selection.getStartPosition());\n\t\t// const selTo = offset + model.getOffsetAt(selection.getEndPosition());\n\n\t\t// if (e.changes?.length) {\n\t\t// \tconst tr = this.view.state.tr;\t\n\t\t// \te.changes.forEach(change => {\n\t\t// \t\tconst { rangeOffset, rangeLength, text } = change;\n\t\t// \t\tconst from = offset + rangeOffset;\n\t\t// \t\tconst to = from + rangeLength;\n\t\t// \t\tif (text.length) {\n\t\t// \t\t\ttr.replaceWith(from, to, this.view.state.schema.text(text));\n\t\t// \t\t} else {\n\t\t// \t\t\ttr.delete(from, to);\n\t\t// \t\t}\n\t\t// \t\toffset += text.length - rangeLength;\n\t\t// \t});\n\t\t// \ttr.setSelection(this.md.prose.state.TextSelection.create(tr.doc, selFrom, selTo))\n\t\t// \tthis.view.dispatch(tr)\n\t\t// }\n\t}\n\n\tprivate createComponent() {\n\t\tconst component = this.view.editable\n\t\t\t? dom.createElement<CodeBlock>('og-code-block')\n\t\t\t: dom.createElement<CodeView>('og-code-view');\n\n\t\tcomponent.content = this.node.textContent;\n\n\t\tif (component instanceof CodeBlock) {\n\t\t\tcomponent.dynamicHeight = true;\n\t\t\tcomponent.editorOptions = {\n\t\t\t\tminimap: {enabled: false},\n\t\t\t\tstickyScroll: {enabled: false},\n\t\t\t};\n\t\t\t// dom.setSize(component, {h: 500});\n\t\t\tcomponent.addEventListener('code.change', this._onChange);\n\t\t\tcomponent.addEventListener('changeLanguage', (e: events.ChangeEvent) => this.setLanguage(e.value));\n\t\t} else {\n\t\t\tcomponent.copy = true;\n\t\t}\n\n\t\treturn component;\n\t}\n\n\tsetSelection(anchor: number, head: number) {\n\t\tif (!this.dom?.isConnected) return;\n\t\tthis.dom.focus();\n\t\tthis.updating = true;\n\t\tconst model = this.model;\n\t\tif (model) {\n\t\t\tconst start = model.getPositionAt(anchor);\n\t\t\tconst end = model.getPositionAt(head);\n\t\t\tthis.editor.setSelection({\n\t\t\t\tstartLineNumber: start.lineNumber,\n\t\t\t\tstartColumn: start.column,\n\t\t\t\tendLineNumber: end.lineNumber,\n\t\t\t\tendColumn: end.column\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tupdate(node: Node) {\n\t\tif (node.type !== this.node.type) return false;\n\t\tif (this.updating) return true;\n\t\tthis.node = node;\n\t\tthis.updateLanguage();\n\t\tthis.dom.content = node.textContent;\n\t\treturn true;\n\t}\n\n\tselectNode() {\n\t\t// this.component.selected = true\n\t\tthis.dom.focus()\n\t}\n\n\tdeselectNode() {\n\t\t// this.component.selected = false\n\t}\n\n\tstopEvent() {\n\t\treturn true\n\t}\n\n\tdestroy() {\n\t\t// this.component.destroy()\n\t}\n\n\tprivate updateLanguage() {\n\t\tthis.languageName = this.node.attrs.language || DEFAULT_LANGUAGE;\n\t\tthis.dom.language = this.languageName;\n\t}\n\n\tsetLanguage = (language: string) => {\n\t\tthis.view.dispatch(this.view.state.tr.setNodeAttribute(this.getPos() ?? 0, 'language', language));\n\t}\n\n\t// private codeMirrorKeymap = (): KeyBinding[] => {\n\t// \tconst view = this.view\n\t// \treturn [\n\t// \t\t{ key: 'ArrowUp', run: () => this.maybeEscape('line', -1) },\n\t// \t\t{ key: 'ArrowLeft', run: () => this.maybeEscape('char', -1) },\n\t// \t\t{ key: 'ArrowDown', run: () => this.maybeEscape('line', 1) },\n\t// \t\t{ key: 'ArrowRight', run: () => this.maybeEscape('char', 1) },\n\t// \t\t{\n\t// \t\t\tkey: 'Mod-Enter',\n\t// \t\t\trun: () => {\n\t// \t\t\t\tif (!exitCode(view.state, view.dispatch)) return false\n\n\t// \t\t\t\tview.focus()\n\t// \t\t\t\treturn true\n\t// \t\t\t},\n\t// \t\t},\n\t// \t\t{ key: 'Mod-z', run: () => undo(view.state, view.dispatch) },\n\t// \t\t{ key: 'Shift-Mod-z', run: () => redo(view.state, view.dispatch) },\n\t// \t\t{ key: 'Mod-y', run: () => redo(view.state, view.dispatch) },\n\t// \t\t{\n\t// \t\t\tkey: 'Backspace',\n\t// \t\t\trun: () => {\n\t// \t\t\t\tconst ranges = this.cm.state.selection.ranges\n\n\t// \t\t\t\tif (ranges.length > 1) return false\n\n\t// \t\t\t\tconst selection = ranges[0]\n\n\t// \t\t\t\tif (selection && (!selection.empty || selection.anchor > 0))\n\t// \t\t\t\t\treturn false\n\n\t// \t\t\t\tif (this.cm.state.doc.lines >= 2) return false\n\n\t// \t\t\t\tconst state = this.view.state\n\t// \t\t\t\tconst pos = this.getPos() ?? 0\n\t// \t\t\t\tconst tr = state.tr.replaceWith(\n\t// \t\t\t\t\tpos,\n\t// \t\t\t\t\tpos + this.node.nodeSize,\n\t// \t\t\t\t\tstate.schema.nodes.paragraph!.createChecked({}, this.node.content)\n\t// \t\t\t\t)\n\n\t// \t\t\t\ttr.setSelection(TextSelection.near(tr.doc.resolve(pos)))\n\n\t// \t\t\t\tthis.view.dispatch(tr)\n\t// \t\t\t\tthis.view.focus()\n\t// \t\t\t\treturn true\n\t// \t\t\t},\n\t// \t\t},\n\t// \t]\n\t// }\n\n\t// private maybeEscape = (unit: 'line' | 'char', dir: -1 | 1): boolean => {\n\t// \tconst editorSelection = this.editor.getSelection();\n\t// \tlet main: SelectionRange | Line = state.selection.main\n\t// \tif (!main.empty) return false\n\t// \tif (unit === 'line') main = state.doc.lineAt(main.head)\n\t// \tif (dir < 0 ? main.from > 0 : main.to < state.doc.length) return false\n\n\t// \tconst targetPos = (this.getPos() ?? 0) + (dir < 0 ? 0 : this.node.nodeSize)\n\t// \tconst selection = TextSelection.near(\n\t// \t\tthis.view.state.doc.resolve(targetPos),\n\t// \t\tdir\n\t// \t)\n\t// \tconst tr = this.view.state.tr.setSelection(selection).scrollIntoView();\n\t// \tthis.view.dispatch(tr);\n\t// \tthis.view.focus();\n\t// \treturn true;\n\t// }\n\n}\n\nexport type CodeEditorConfig = Record<string, never>;\nexport const defaultCodeEditorConfig = {} as CodeEditorConfig;\n\nexport function createCodeBlockConfig(md: typeof milkdown) {\n\treturn md.utils.$ctx(defaultCodeEditorConfig, 'codeEditorConfigCtx');\n}\n\nexport function createCodeBlockView(md: typeof milkdown) {\n\treturn md.utils.$view(\n\t\tmd.presets.commonmark.codeBlockSchema.node,\n\t\t_ctx => {\n\t\t\t// const config = ctx.get('codeBlockConfigCtx')\n\t\t\t// const languageLoader = new LanguageLoader(config.languages)\n\t\t\treturn (node, view, getPos) => new CodeEditorBlock(md, node, view, getPos);\n\t\t}\n\t);\n}\n\n// function computeChange(oldVal: string, newVal: string): { from: number; to: number; text: string } | null {\n// \tif (oldVal === newVal) return null;\n\n// \tlet start = 0;\n// \tlet oldEnd = oldVal.length;\n// \tlet newEnd = newVal.length;\n\n// \twhile (start < oldEnd && oldVal.charCodeAt(start) === newVal.charCodeAt(start)) ++start;\n// \twhile (oldEnd > start && newEnd > start && oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)) {\n// \t\toldEnd--;\n// \t\tnewEnd--;\n// \t}\n\n// \treturn {from: start, to: oldEnd, text: newVal.slice(start, newEnd)};\n// }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"emojiPicker.d.ts","sourceRoot":"","sources":["../../../src/components/features/emojiPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AA8DzD,qBACa,WAAY,SAAQ,UAAU;;IAE1C,MAAM,CAAC,MAAM,0BAqEX;IAGF,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IAGtB,EAAE,EAAE,OAAO,QAAQ,CAAC;IAGpB,OAAO,CAAC,KAAK,CAAM;IAYnB,OAAO,CAAC,UAAU;IAWlB,MAAM;CAuBN"}
1
+ {"version":3,"file":"emojiPicker.d.ts","sourceRoot":"","sources":["../../../src/components/features/emojiPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AA8DzD,qBACa,WAAY,SAAQ,UAAU;;IAE1C,MAAM,CAAC,MAAM,0BAqEX;IAGF,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IAGtB,EAAE,EAAE,OAAO,QAAQ,CAAC;IAGpB,OAAO,CAAC,KAAK,CAAM;IAanB,OAAO,CAAC,UAAU;IAWlB,MAAM;CAuBN"}
@@ -20,7 +20,7 @@ var _EmojiPicker_instances,_EmojiPicker_insert,_EmojiPicker_onSearch,__decorate=
20
20
  ${this.renderGrid(e.items)}
21
21
  `)):html`<div class="empty">${msg("No emoji found")}</div>`}
22
22
  </div>
23
- `}};_EmojiPicker_onSearch=new WeakMap,_EmojiPicker_instances=new WeakSet,_EmojiPicker_insert=function(e){const t=this.ctx.get(this.md.core.editorViewCtx);t.focus(),t.dispatch(t.state.tr.insertText(e).scrollIntoView())},EmojiPicker.styles=css`
23
+ `}};_EmojiPicker_onSearch=new WeakMap,_EmojiPicker_instances=new WeakSet,_EmojiPicker_insert=function(e){const t=this.ctx.get(this.md.core.editorViewCtx);t.focus(),t.dispatch(t.state.tr.insertText(e).scrollIntoView()),this.dispatchEvent(new Event("close"))},EmojiPicker.styles=css`
24
24
  * { box-sizing: border-box; }
25
25
 
26
26
  :host {
@@ -1 +1 @@
1
- {"version":3,"file":"emojiPicker.js","sourceRoot":"","sources":["../../../src/components/features/emojiPicker.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { msg } from '@omegagrid/localize';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\n\ntype EmojiEntry = { e: string; k: string };\ntype EmojiCategory = { label: () => string; items: EmojiEntry[] };\n\nconst CATEGORIES: EmojiCategory[] = [\n\t{\n\t\tlabel: () => msg('Smileys'),\n\t\titems: [\n\t\t\t{ e: '😀', k: 'grin smile happy' }, { e: '😃', k: 'smile happy' }, { e: '😄', k: 'smile laugh happy' },\n\t\t\t{ e: '😁', k: 'grin' }, { e: '😆', k: 'laugh' }, { e: '😅', k: 'sweat laugh' }, { e: '🤣', k: 'rofl laugh' },\n\t\t\t{ e: '😂', k: 'joy tears laugh' }, { e: '🙂', k: 'slight smile' }, { e: '😉', k: 'wink' }, { e: '😊', k: 'blush happy' },\n\t\t\t{ e: '😍', k: 'love heart eyes' }, { e: '😘', k: 'kiss' }, { e: '😎', k: 'cool sunglasses' }, { e: '🤔', k: 'thinking' },\n\t\t\t{ e: '😐', k: 'neutral' }, { e: '😴', k: 'sleep' }, { e: '😢', k: 'cry sad' }, { e: '😭', k: 'sob cry' }, { e: '😅', k: 'nervous' },\n\t\t\t{ e: '😳', k: 'flushed shock' }, { e: '🥳', k: 'party celebrate' }, { e: '😇', k: 'angel' }, { e: '🤯', k: 'mind blown' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Gestures'),\n\t\titems: [\n\t\t\t{ e: '👍', k: 'thumbs up like ok' }, { e: '👎', k: 'thumbs down dislike' }, { e: '👌', k: 'ok' },\n\t\t\t{ e: '👏', k: 'clap applause' }, { e: '🙏', k: 'pray thanks please' }, { e: '🙌', k: 'raise hands' },\n\t\t\t{ e: '💪', k: 'muscle strong' }, { e: '✌️', k: 'peace victory' }, { e: '🤝', k: 'handshake deal' },\n\t\t\t{ e: '👋', k: 'wave hi hello bye' }, { e: '☝️', k: 'point up' }, { e: '👆', k: 'point up' }, { e: '👇', k: 'point down' },\n\t\t\t{ e: '👉', k: 'point right' }, { e: '👈', k: 'point left' }, { e: '🤞', k: 'fingers crossed luck' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Hearts & Symbols'),\n\t\titems: [\n\t\t\t{ e: '❤️', k: 'heart love red' }, { e: '🧡', k: 'heart orange' }, { e: '💛', k: 'heart yellow' },\n\t\t\t{ e: '💚', k: 'heart green' }, { e: '💙', k: 'heart blue' }, { e: '💜', k: 'heart purple' },\n\t\t\t{ e: '🖤', k: 'heart black' }, { e: '💔', k: 'broken heart' }, { e: '⭐', k: 'star' }, { e: '🌟', k: 'star glow' },\n\t\t\t{ e: '✨', k: 'sparkles' }, { e: '🔥', k: 'fire hot lit' }, { e: '💯', k: 'hundred perfect' },\n\t\t\t{ e: '✅', k: 'check done ok' }, { e: '❌', k: 'cross wrong no' }, { e: '⚠️', k: 'warning caution' },\n\t\t\t{ e: '❓', k: 'question' }, { e: '❗', k: 'exclamation important' }, { e: '💡', k: 'idea bulb tip' },\n\t\t\t{ e: '📌', k: 'pin' }, { e: '📎', k: 'clip attach' }, { e: '🔗', k: 'link' }, { e: '🎯', k: 'target goal' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Objects'),\n\t\titems: [\n\t\t\t{ e: '📝', k: 'note memo write' }, { e: '📄', k: 'document page' }, { e: '📚', k: 'books docs' },\n\t\t\t{ e: '📁', k: 'folder' }, { e: '📅', k: 'calendar date' }, { e: '⏰', k: 'alarm time clock' },\n\t\t\t{ e: '💻', k: 'laptop computer' }, { e: '🖥️', k: 'desktop pc' }, { e: '📱', k: 'phone mobile' },\n\t\t\t{ e: '⚙️', k: 'gear settings config' }, { e: '🔒', k: 'lock secure' }, { e: '🔑', k: 'key' },\n\t\t\t{ e: '🚀', k: 'rocket launch ship' }, { e: '🐛', k: 'bug' }, { e: '💰', k: 'money cash' }, { e: '📊', k: 'chart graph' },\n\t\t\t{ e: '📈', k: 'chart up growth' }, { e: '📉', k: 'chart down' }, { e: '🏆', k: 'trophy win' }, { e: '🎉', k: 'party tada celebrate' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Nature & Food'),\n\t\titems: [\n\t\t\t{ e: '🌍', k: 'earth world globe' }, { e: '☀️', k: 'sun sunny' }, { e: '🌙', k: 'moon night' },\n\t\t\t{ e: '☁️', k: 'cloud' }, { e: '⚡', k: 'lightning bolt' }, { e: '🌈', k: 'rainbow' },\n\t\t\t{ e: '🌸', k: 'blossom flower' }, { e: '🌿', k: 'leaf plant herb' }, { e: '🌳', k: 'tree' }, { e: '🍀', k: 'clover luck' },\n\t\t\t{ e: '☕', k: 'coffee tea' }, { e: '🍕', k: 'pizza food' }, { e: '🍎', k: 'apple fruit' }, { e: '🎂', k: 'cake birthday' },\n\t\t\t{ e: '🍺', k: 'beer drink' }, { e: '🐱', k: 'cat' }, { e: '🐶', k: 'dog' },\n\t\t],\n\t},\n];\n\n@customElement('og-markdown-emoji-picker')\nexport class EmojiPicker extends LitElement {\n\n\tstatic styles = css`\n\t\t* { box-sizing: border-box; }\n\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tposition: absolute;\n\t\t\twidth: 260px;\n\t\t\theight: 300px;\n\t\t\tbackground-color: var(--og-background-color);\n\t\t\tborder: 1px solid var(--og-accent-color);\n\t\t\tuser-select: none;\n\t\t\tz-index: 1000;\n\t\t\tfont-size: var(--og-font-size);\n\t\t}\n\n\t\t.search {\n\t\t\tpadding: 6px;\n\t\t\tborder-bottom: 1px solid var(--og-border-color);\n\t\t}\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tpadding: 4px 6px;\n\t\t\tborder: 1px solid var(--og-border-color);\n\t\t\tbackground-color: var(--og-background-color);\n\t\t\tcolor: var(--og-text-color, inherit);\n\t\t\toutline: none;\n\t\t}\n\n\t\tinput:focus { border-color: var(--og-accent-color); }\n\n\t\t.body {\n\t\t\tflex: 1;\n\t\t\toverflow-y: auto;\n\t\t\tpadding: 4px;\n\t\t}\n\n\t\t.category-title {\n\t\t\tfont-size: 0.75em;\n\t\t\tcolor: var(--og-text-secondary-color, #999);\n\t\t\tpadding: 4px 2px 2px;\n\t\t\ttext-transform: uppercase;\n\t\t}\n\n\t\t.grid {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(8, 1fr);\n\t\t\tgap: 1px;\n\t\t}\n\n\t\tbutton.emoji {\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tcursor: pointer;\n\t\t\tfont-size: 18px;\n\t\t\tline-height: 1;\n\t\t\tpadding: 3px 0;\n\t\t\tborder-radius: 3px;\n\t\t}\n\n\t\tbutton.emoji:hover { background-color: var(--og-hover-color, rgba(127,127,127,.2)); }\n\n\t\t.empty {\n\t\t\tcolor: var(--og-text-secondary-color, #999);\n\t\t\tfont-style: italic;\n\t\t\tpadding: 8px;\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@state()\n\tprivate query = '';\n\n\t#insert(emoji: string) {\n\t\tconst view = this.ctx.get(this.md.core.editorViewCtx);\n\t\tview.focus();\n\t\tview.dispatch(view.state.tr.insertText(emoji).scrollIntoView());\n\t}\n\n\t#onSearch = (e: Event) => {\n\t\tthis.query = (e.target as HTMLInputElement).value.trim().toLowerCase();\n\t};\n\n\tprivate renderGrid(items: EmojiEntry[]) {\n\t\treturn html`<div class=\"grid\">${items.map(item => html`\n\t\t\t<button\n\t\t\t\tclass=\"emoji\"\n\t\t\t\ttitle=\"${item.k.split(' ')[0]}\"\n\t\t\t\t@mousedown=\"${(e: MouseEvent) => { e.preventDefault(); e.stopPropagation(); this.#insert(item.e); }}\">\n\t\t\t\t${item.e}\n\t\t\t</button>\n\t\t`)}</div>`;\n\t}\n\n\trender() {\n\t\tconst q = this.query;\n\t\tconst filtered = q\n\t\t\t? CATEGORIES.map(c => ({ label: c.label, items: c.items.filter(i => i.k.includes(q)) })).filter(c => c.items.length)\n\t\t\t: CATEGORIES;\n\n\t\treturn html`\n\t\t\t<div class=\"search\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"${msg('Search emoji')}\"\n\t\t\t\t\t.value=\"${this.query}\"\n\t\t\t\t\t@input=\"${this.#onSearch}\"\n\t\t\t\t\t@mousedown=\"${(e: MouseEvent) => e.stopPropagation()}\">\n\t\t\t</div>\n\t\t\t<div class=\"body\">\n\t\t\t\t${filtered.length ? filtered.map(c => html`\n\t\t\t\t\t<div class=\"category-title\">${c.label()}</div>\n\t\t\t\t\t${this.renderGrid(c.items)}\n\t\t\t\t`) : html`<div class=\"empty\">${msg('No emoji found')}</div>`}\n\t\t\t</div>\n\t\t`;\n\t}\n}\n"]}
1
+ {"version":3,"file":"emojiPicker.js","sourceRoot":"","sources":["../../../src/components/features/emojiPicker.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { msg } from '@omegagrid/localize';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\n\ntype EmojiEntry = { e: string; k: string };\ntype EmojiCategory = { label: () => string; items: EmojiEntry[] };\n\nconst CATEGORIES: EmojiCategory[] = [\n\t{\n\t\tlabel: () => msg('Smileys'),\n\t\titems: [\n\t\t\t{ e: '😀', k: 'grin smile happy' }, { e: '😃', k: 'smile happy' }, { e: '😄', k: 'smile laugh happy' },\n\t\t\t{ e: '😁', k: 'grin' }, { e: '😆', k: 'laugh' }, { e: '😅', k: 'sweat laugh' }, { e: '🤣', k: 'rofl laugh' },\n\t\t\t{ e: '😂', k: 'joy tears laugh' }, { e: '🙂', k: 'slight smile' }, { e: '😉', k: 'wink' }, { e: '😊', k: 'blush happy' },\n\t\t\t{ e: '😍', k: 'love heart eyes' }, { e: '😘', k: 'kiss' }, { e: '😎', k: 'cool sunglasses' }, { e: '🤔', k: 'thinking' },\n\t\t\t{ e: '😐', k: 'neutral' }, { e: '😴', k: 'sleep' }, { e: '😢', k: 'cry sad' }, { e: '😭', k: 'sob cry' }, { e: '😅', k: 'nervous' },\n\t\t\t{ e: '😳', k: 'flushed shock' }, { e: '🥳', k: 'party celebrate' }, { e: '😇', k: 'angel' }, { e: '🤯', k: 'mind blown' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Gestures'),\n\t\titems: [\n\t\t\t{ e: '👍', k: 'thumbs up like ok' }, { e: '👎', k: 'thumbs down dislike' }, { e: '👌', k: 'ok' },\n\t\t\t{ e: '👏', k: 'clap applause' }, { e: '🙏', k: 'pray thanks please' }, { e: '🙌', k: 'raise hands' },\n\t\t\t{ e: '💪', k: 'muscle strong' }, { e: '✌️', k: 'peace victory' }, { e: '🤝', k: 'handshake deal' },\n\t\t\t{ e: '👋', k: 'wave hi hello bye' }, { e: '☝️', k: 'point up' }, { e: '👆', k: 'point up' }, { e: '👇', k: 'point down' },\n\t\t\t{ e: '👉', k: 'point right' }, { e: '👈', k: 'point left' }, { e: '🤞', k: 'fingers crossed luck' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Hearts & Symbols'),\n\t\titems: [\n\t\t\t{ e: '❤️', k: 'heart love red' }, { e: '🧡', k: 'heart orange' }, { e: '💛', k: 'heart yellow' },\n\t\t\t{ e: '💚', k: 'heart green' }, { e: '💙', k: 'heart blue' }, { e: '💜', k: 'heart purple' },\n\t\t\t{ e: '🖤', k: 'heart black' }, { e: '💔', k: 'broken heart' }, { e: '⭐', k: 'star' }, { e: '🌟', k: 'star glow' },\n\t\t\t{ e: '✨', k: 'sparkles' }, { e: '🔥', k: 'fire hot lit' }, { e: '💯', k: 'hundred perfect' },\n\t\t\t{ e: '✅', k: 'check done ok' }, { e: '❌', k: 'cross wrong no' }, { e: '⚠️', k: 'warning caution' },\n\t\t\t{ e: '❓', k: 'question' }, { e: '❗', k: 'exclamation important' }, { e: '💡', k: 'idea bulb tip' },\n\t\t\t{ e: '📌', k: 'pin' }, { e: '📎', k: 'clip attach' }, { e: '🔗', k: 'link' }, { e: '🎯', k: 'target goal' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Objects'),\n\t\titems: [\n\t\t\t{ e: '📝', k: 'note memo write' }, { e: '📄', k: 'document page' }, { e: '📚', k: 'books docs' },\n\t\t\t{ e: '📁', k: 'folder' }, { e: '📅', k: 'calendar date' }, { e: '⏰', k: 'alarm time clock' },\n\t\t\t{ e: '💻', k: 'laptop computer' }, { e: '🖥️', k: 'desktop pc' }, { e: '📱', k: 'phone mobile' },\n\t\t\t{ e: '⚙️', k: 'gear settings config' }, { e: '🔒', k: 'lock secure' }, { e: '🔑', k: 'key' },\n\t\t\t{ e: '🚀', k: 'rocket launch ship' }, { e: '🐛', k: 'bug' }, { e: '💰', k: 'money cash' }, { e: '📊', k: 'chart graph' },\n\t\t\t{ e: '📈', k: 'chart up growth' }, { e: '📉', k: 'chart down' }, { e: '🏆', k: 'trophy win' }, { e: '🎉', k: 'party tada celebrate' },\n\t\t],\n\t},\n\t{\n\t\tlabel: () => msg('Nature & Food'),\n\t\titems: [\n\t\t\t{ e: '🌍', k: 'earth world globe' }, { e: '☀️', k: 'sun sunny' }, { e: '🌙', k: 'moon night' },\n\t\t\t{ e: '☁️', k: 'cloud' }, { e: '⚡', k: 'lightning bolt' }, { e: '🌈', k: 'rainbow' },\n\t\t\t{ e: '🌸', k: 'blossom flower' }, { e: '🌿', k: 'leaf plant herb' }, { e: '🌳', k: 'tree' }, { e: '🍀', k: 'clover luck' },\n\t\t\t{ e: '☕', k: 'coffee tea' }, { e: '🍕', k: 'pizza food' }, { e: '🍎', k: 'apple fruit' }, { e: '🎂', k: 'cake birthday' },\n\t\t\t{ e: '🍺', k: 'beer drink' }, { e: '🐱', k: 'cat' }, { e: '🐶', k: 'dog' },\n\t\t],\n\t},\n];\n\n@customElement('og-markdown-emoji-picker')\nexport class EmojiPicker extends LitElement {\n\n\tstatic styles = css`\n\t\t* { box-sizing: border-box; }\n\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tposition: absolute;\n\t\t\twidth: 260px;\n\t\t\theight: 300px;\n\t\t\tbackground-color: var(--og-background-color);\n\t\t\tborder: 1px solid var(--og-accent-color);\n\t\t\tuser-select: none;\n\t\t\tz-index: 1000;\n\t\t\tfont-size: var(--og-font-size);\n\t\t}\n\n\t\t.search {\n\t\t\tpadding: 6px;\n\t\t\tborder-bottom: 1px solid var(--og-border-color);\n\t\t}\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tpadding: 4px 6px;\n\t\t\tborder: 1px solid var(--og-border-color);\n\t\t\tbackground-color: var(--og-background-color);\n\t\t\tcolor: var(--og-text-color, inherit);\n\t\t\toutline: none;\n\t\t}\n\n\t\tinput:focus { border-color: var(--og-accent-color); }\n\n\t\t.body {\n\t\t\tflex: 1;\n\t\t\toverflow-y: auto;\n\t\t\tpadding: 4px;\n\t\t}\n\n\t\t.category-title {\n\t\t\tfont-size: 0.75em;\n\t\t\tcolor: var(--og-text-secondary-color, #999);\n\t\t\tpadding: 4px 2px 2px;\n\t\t\ttext-transform: uppercase;\n\t\t}\n\n\t\t.grid {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(8, 1fr);\n\t\t\tgap: 1px;\n\t\t}\n\n\t\tbutton.emoji {\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tcursor: pointer;\n\t\t\tfont-size: 18px;\n\t\t\tline-height: 1;\n\t\t\tpadding: 3px 0;\n\t\t\tborder-radius: 3px;\n\t\t}\n\n\t\tbutton.emoji:hover { background-color: var(--og-hover-color, rgba(127,127,127,.2)); }\n\n\t\t.empty {\n\t\t\tcolor: var(--og-text-secondary-color, #999);\n\t\t\tfont-style: italic;\n\t\t\tpadding: 8px;\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@state()\n\tprivate query = '';\n\n\t#insert(emoji: string) {\n\t\tconst view = this.ctx.get(this.md.core.editorViewCtx);\n\t\tview.focus();\n\t\tview.dispatch(view.state.tr.insertText(emoji).scrollIntoView());\n\t\tthis.dispatchEvent(new Event('close'));\n\t}\n\n\t#onSearch = (e: Event) => {\n\t\tthis.query = (e.target as HTMLInputElement).value.trim().toLowerCase();\n\t};\n\n\tprivate renderGrid(items: EmojiEntry[]) {\n\t\treturn html`<div class=\"grid\">${items.map(item => html`\n\t\t\t<button\n\t\t\t\tclass=\"emoji\"\n\t\t\t\ttitle=\"${item.k.split(' ')[0]}\"\n\t\t\t\t@mousedown=\"${(e: MouseEvent) => { e.preventDefault(); e.stopPropagation(); this.#insert(item.e); }}\">\n\t\t\t\t${item.e}\n\t\t\t</button>\n\t\t`)}</div>`;\n\t}\n\n\trender() {\n\t\tconst q = this.query;\n\t\tconst filtered = q\n\t\t\t? CATEGORIES.map(c => ({ label: c.label, items: c.items.filter(i => i.k.includes(q)) })).filter(c => c.items.length)\n\t\t\t: CATEGORIES;\n\n\t\treturn html`\n\t\t\t<div class=\"search\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"${msg('Search emoji')}\"\n\t\t\t\t\t.value=\"${this.query}\"\n\t\t\t\t\t@input=\"${this.#onSearch}\"\n\t\t\t\t\t@mousedown=\"${(e: MouseEvent) => e.stopPropagation()}\">\n\t\t\t</div>\n\t\t\t<div class=\"body\">\n\t\t\t\t${filtered.length ? filtered.map(c => html`\n\t\t\t\t\t<div class=\"category-title\">${c.label()}</div>\n\t\t\t\t\t${this.renderGrid(c.items)}\n\t\t\t\t`) : html`<div class=\"empty\">${msg('No emoji found')}</div>`}\n\t\t\t</div>\n\t\t`;\n\t}\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  export * from './markdownView';
2
2
  export * from './markdownEditor';
3
3
  export * from './features';
4
+ export { markdownContentStyles } from './styles/content';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- export*from"./markdownView";export*from"./markdownEditor";export*from"./features";
1
+ export*from"./markdownView";export*from"./markdownEditor";export*from"./features";export{markdownContentStyles}from"./styles/content";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC","sourcesContent":["export * from './markdownView';\nexport * from './markdownEditor';\nexport * from './features';"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export * from './markdownView';\nexport * from './markdownEditor';\nexport * from './features';\nexport { markdownContentStyles } from './styles/content';"]}
@@ -1,7 +1,7 @@
1
1
  import{css}from"lit";export const style=css`
2
2
  .og-callout {
3
3
  border-left: 4px solid var(--og-callout-color, #4a9eff);
4
- background-color: var(--og-callout-bg, rgba(74, 158, 255, 0.08));
4
+ background-color: var(--og-background-color-3);
5
5
  padding: 8px 12px;
6
6
  margin: 8px 0;
7
7
  border-radius: 0 4px 4px 0;
@@ -48,9 +48,9 @@ import{css}from"lit";export const style=css`
48
48
  .og-callout-body > :first-child { margin-top: 0; }
49
49
  .og-callout-body > :last-child { margin-bottom: 0; }
50
50
 
51
- .og-callout[data-kind="note"] { --og-callout-color: #4a9eff; --og-callout-bg: rgba(74, 158, 255, 0.08); }
52
- .og-callout[data-kind="tip"] { --og-callout-color: #3fb950; --og-callout-bg: rgba(63, 185, 80, 0.08); }
53
- .og-callout[data-kind="important"] { --og-callout-color: #a371f7; --og-callout-bg: rgba(163, 113, 247, 0.08); }
54
- .og-callout[data-kind="warning"] { --og-callout-color: #d29922; --og-callout-bg: rgba(210, 153, 34, 0.10); }
55
- .og-callout[data-kind="caution"] { --og-callout-color: #f85149; --og-callout-bg: rgba(248, 81, 73, 0.08); }
51
+ .og-callout[data-kind="note"] { --og-callout-color: var(--og-colortype-accent-background-color); }
52
+ .og-callout[data-kind="tip"] { --og-callout-color: var(--og-colortype-green-background-color); }
53
+ .og-callout[data-kind="important"] { --og-callout-color: var(--og-colortype-blue-background-color); }
54
+ .og-callout[data-kind="warning"] { --og-callout-color: var(--og-colortype-yellow-background-color); }
55
+ .og-callout[data-kind="caution"] { --og-callout-color: var(--og-colortype-red-background-color); }
56
56
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"callout.js","sourceRoot":"","sources":["../../../src/components/styles/callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDvB,CAAC","sourcesContent":["import { css } from \"lit\";\n\nexport const style = css`\n\t.og-callout {\n\t\tborder-left: 4px solid var(--og-callout-color, #4a9eff);\n\t\tbackground-color: var(--og-callout-bg, rgba(74, 158, 255, 0.08));\n\t\tpadding: 8px 12px;\n\t\tmargin: 8px 0;\n\t\tborder-radius: 0 4px 4px 0;\n\t}\n\n\t.og-callout-header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 6px;\n\t\tfont-weight: 600;\n\t\tcolor: var(--og-callout-color, #4a9eff);\n\t\tmargin-bottom: 4px;\n\t\tuser-select: none;\n\t}\n\n\t.og-callout-icon {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.og-callout-icon svg {\n\t\twidth: 1em;\n\t\theight: 1em;\n\t\tfill: currentColor;\n\t}\n\n\t.og-callout-select {\n\t\tborder: none;\n\t\tbackground: transparent;\n\t\tcolor: inherit;\n\t\tfont-weight: 600;\n\t\tfont-size: 0.9em;\n\t\tcursor: pointer;\n\t\toutline: none;\n\t\tpadding: 0 2px;\n\t}\n\n\t.og-callout-select option {\n\t\tcolor: var(--og-text-color, inherit);\n\t\tbackground-color: var(--og-background-color);\n\t\tfont-weight: normal;\n\t}\n\n\t.og-callout-body > :first-child { margin-top: 0; }\n\t.og-callout-body > :last-child { margin-bottom: 0; }\n\n\t.og-callout[data-kind=\"note\"] { --og-callout-color: #4a9eff; --og-callout-bg: rgba(74, 158, 255, 0.08); }\n\t.og-callout[data-kind=\"tip\"] { --og-callout-color: #3fb950; --og-callout-bg: rgba(63, 185, 80, 0.08); }\n\t.og-callout[data-kind=\"important\"] { --og-callout-color: #a371f7; --og-callout-bg: rgba(163, 113, 247, 0.08); }\n\t.og-callout[data-kind=\"warning\"] { --og-callout-color: #d29922; --og-callout-bg: rgba(210, 153, 34, 0.10); }\n\t.og-callout[data-kind=\"caution\"] { --og-callout-color: #f85149; --og-callout-bg: rgba(248, 81, 73, 0.08); }\n`;\n"]}
1
+ {"version":3,"file":"callout.js","sourceRoot":"","sources":["../../../src/components/styles/callout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDvB,CAAC","sourcesContent":["import { css } from \"lit\";\n\nexport const style = css`\n\t.og-callout {\n\t\tborder-left: 4px solid var(--og-callout-color, #4a9eff);\n\t\tbackground-color: var(--og-background-color-3);\n\t\tpadding: 8px 12px;\n\t\tmargin: 8px 0;\n\t\tborder-radius: 0 4px 4px 0;\n\t}\n\n\t.og-callout-header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 6px;\n\t\tfont-weight: 600;\n\t\tcolor: var(--og-callout-color, #4a9eff);\n\t\tmargin-bottom: 4px;\n\t\tuser-select: none;\n\t}\n\n\t.og-callout-icon {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.og-callout-icon svg {\n\t\twidth: 1em;\n\t\theight: 1em;\n\t\tfill: currentColor;\n\t}\n\n\t.og-callout-select {\n\t\tborder: none;\n\t\tbackground: transparent;\n\t\tcolor: inherit;\n\t\tfont-weight: 600;\n\t\tfont-size: 0.9em;\n\t\tcursor: pointer;\n\t\toutline: none;\n\t\tpadding: 0 2px;\n\t}\n\n\t.og-callout-select option {\n\t\tcolor: var(--og-text-color, inherit);\n\t\tbackground-color: var(--og-background-color);\n\t\tfont-weight: normal;\n\t}\n\n\t.og-callout-body > :first-child { margin-top: 0; }\n\t.og-callout-body > :last-child { margin-bottom: 0; }\n\n\t.og-callout[data-kind=\"note\"] { --og-callout-color: var(--og-colortype-accent-background-color); }\n\t.og-callout[data-kind=\"tip\"] { --og-callout-color: var(--og-colortype-green-background-color); }\n\t.og-callout[data-kind=\"important\"] { --og-callout-color: var(--og-colortype-blue-background-color); }\n\t.og-callout[data-kind=\"warning\"] { --og-callout-color: var(--og-colortype-yellow-background-color); }\n\t.og-callout[data-kind=\"caution\"] { --og-callout-color: var(--og-colortype-red-background-color); }\n`;\n"]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Standalone stylesheet for the HTML produced by `markdownToHtml`.
3
+ *
4
+ * The editor/view styles live in the shadow DOM of `og-markdown-view` and target
5
+ * the ProseMirror/NodeView DOM (`.ProseMirror`, `.milkdown-table-block`,
6
+ * `.og-callout-header`, `[data-kind]`, …). None of that applies to the *serialized*
7
+ * output of `markdownToHtml`, which is plain semantic HTML (`<h1>`, `<pre>`,
8
+ * `<table>`, …) plus the callout blockquote form
9
+ * (`<blockquote class="og-callout og-callout-note" data-callout="note">`).
10
+ *
11
+ * These rules are scoped under `.og-markdown-content` so a consumer includes them
12
+ * once and wraps the rendered HTML in that class — no global leakage, one source of
13
+ * truth for helpdesk / AI-module message rendering:
14
+ *
15
+ * const el = document.createElement('div');
16
+ * el.className = 'og-markdown-content';
17
+ * el.innerHTML = await markdownToHtml(md);
18
+ *
19
+ * and once per app / component:
20
+ *
21
+ * <style>${markdownContentStyles}</style> // raw consumer
22
+ * static styles = [unsafeCSS(markdownContentStyles)]; // Lit consumer
23
+ *
24
+ * Colours use the same `--og-*` theme variables as the editor, so it follows the
25
+ * host theme (light/dark) automatically.
26
+ */
27
+ export declare const markdownContentStyles = "\n.og-markdown-content {\n\tcolor: var(--og-text-color);\n\tfont-size: var(--og-font-size);\n\tline-height: 1.5;\n\tword-wrap: break-word;\n}\n\n.og-markdown-content h1 { font-size: 2em; }\n.og-markdown-content h2 { font-size: 1.7em; }\n.og-markdown-content h3 { font-size: 1.4em; }\n.og-markdown-content h4 { font-size: 1.2em; }\n.og-markdown-content h5 { font-size: 1.1em; }\n.og-markdown-content h6 { font-size: 1em; }\n\n.og-markdown-content p {\n\tfont-size: var(--og-font-size);\n\tmargin-block-start: 0.2em;\n\tmargin-block-end: 0.2em;\n}\n\n.og-markdown-content a {\n\tcolor: #688DC8;\n\ttext-decoration: underline;\n}\n\n.og-markdown-content img {\n\tvertical-align: bottom;\n\tmax-width: 100%;\n}\n\n.og-markdown-content img.emoji {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n}\n\n.og-markdown-content code {\n\tpadding: 2px 4px;\n\tfont-size: 90%;\n\tcolor: #c7254e;\n\tbackground-color: var(--og-background-color-3);\n\tborder-radius: 0;\n}\n\n.og-markdown-content pre {\n\tbackground-color: var(--og-background-color-3);\n\tpadding: 10px;\n\tborder-radius: 4px;\n\twhite-space: pre-wrap;\n\toverflow-x: auto;\n}\n\n.og-markdown-content pre code {\n\tpadding: 0;\n\tbackground: transparent;\n\tcolor: inherit;\n\tfont-size: inherit;\n}\n\n.og-markdown-content blockquote {\n\tposition: relative;\n\tpadding-left: 40px;\n\tmargin: 4px 0;\n}\n\n.og-markdown-content blockquote::before {\n\tcontent: '';\n\tposition: absolute;\n\tleft: 0;\n\ttop: 4px;\n\tbottom: 4px;\n\twidth: 4px;\n\tbackground: var(--og-accent-color);\n\tborder-radius: 100px;\n}\n\n.og-markdown-content hr {\n\tborder: none;\n\theight: 1px;\n\tmargin: 12px 0;\n\tbackground-color: color-mix(in srgb, var(--og-border-color), transparent 40%);\n}\n\n/* tables (serialized <table>, not the editor's .milkdown-table-block) */\n.og-markdown-content table {\n\tborder-collapse: collapse;\n\twidth: 100%;\n}\n\n.og-markdown-content th,\n.og-markdown-content td {\n\tborder: 1px solid color-mix(in srgb, var(--og-border-color-3), transparent 80%);\n\tpadding: 2px 10px;\n\tvertical-align: top;\n\ttext-align: left;\n}\n\n/* callouts \u2014 serialized GitHub-alert form emitted by the callout toDOM */\n.og-markdown-content .og-callout {\n\tpadding: 8px 12px;\n\tmargin: 8px 0;\n\tborder-left: 4px solid var(--og-callout-color, var(--og-accent-color));\n\tbackground-color: var(--og-background-color-3);\n\tborder-radius: 0 4px 4px 0;\n}\n\n/* override the generic blockquote bar for callouts */\n.og-markdown-content .og-callout::before {\n\tdisplay: none;\n}\n\n.og-markdown-content .og-callout-title {\n\tmargin: 0 0 4px;\n\tfont-weight: 600;\n\tcolor: var(--og-callout-color, var(--og-accent-color));\n}\n\n.og-markdown-content .og-callout-body > :first-child { margin-top: 0; }\n.og-markdown-content .og-callout-body > :last-child { margin-bottom: 0; }\n\n.og-markdown-content .og-callout[data-callout=\"note\"] { --og-callout-color: var(--og-colortype-accent-background-color); }\n.og-markdown-content .og-callout[data-callout=\"tip\"] { --og-callout-color: var(--og-colortype-green-background-color); }\n.og-markdown-content .og-callout[data-callout=\"important\"] { --og-callout-color: var(--og-colortype-blue-background-color); }\n.og-markdown-content .og-callout[data-callout=\"warning\"] { --og-callout-color: var(--og-colortype-yellow-background-color); }\n.og-markdown-content .og-callout[data-callout=\"caution\"] { --og-callout-color: var(--og-colortype-red-background-color); }\n";
28
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/components/styles/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,qBAAqB,+5GA8HjC,CAAC"}
@@ -0,0 +1 @@
1
+ export const markdownContentStyles='\n.og-markdown-content {\n\tcolor: var(--og-text-color);\n\tfont-size: var(--og-font-size);\n\tline-height: 1.5;\n\tword-wrap: break-word;\n}\n\n.og-markdown-content h1 { font-size: 2em; }\n.og-markdown-content h2 { font-size: 1.7em; }\n.og-markdown-content h3 { font-size: 1.4em; }\n.og-markdown-content h4 { font-size: 1.2em; }\n.og-markdown-content h5 { font-size: 1.1em; }\n.og-markdown-content h6 { font-size: 1em; }\n\n.og-markdown-content p {\n\tfont-size: var(--og-font-size);\n\tmargin-block-start: 0.2em;\n\tmargin-block-end: 0.2em;\n}\n\n.og-markdown-content a {\n\tcolor: #688DC8;\n\ttext-decoration: underline;\n}\n\n.og-markdown-content img {\n\tvertical-align: bottom;\n\tmax-width: 100%;\n}\n\n.og-markdown-content img.emoji {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n}\n\n.og-markdown-content code {\n\tpadding: 2px 4px;\n\tfont-size: 90%;\n\tcolor: #c7254e;\n\tbackground-color: var(--og-background-color-3);\n\tborder-radius: 0;\n}\n\n.og-markdown-content pre {\n\tbackground-color: var(--og-background-color-3);\n\tpadding: 10px;\n\tborder-radius: 4px;\n\twhite-space: pre-wrap;\n\toverflow-x: auto;\n}\n\n.og-markdown-content pre code {\n\tpadding: 0;\n\tbackground: transparent;\n\tcolor: inherit;\n\tfont-size: inherit;\n}\n\n.og-markdown-content blockquote {\n\tposition: relative;\n\tpadding-left: 40px;\n\tmargin: 4px 0;\n}\n\n.og-markdown-content blockquote::before {\n\tcontent: \'\';\n\tposition: absolute;\n\tleft: 0;\n\ttop: 4px;\n\tbottom: 4px;\n\twidth: 4px;\n\tbackground: var(--og-accent-color);\n\tborder-radius: 100px;\n}\n\n.og-markdown-content hr {\n\tborder: none;\n\theight: 1px;\n\tmargin: 12px 0;\n\tbackground-color: color-mix(in srgb, var(--og-border-color), transparent 40%);\n}\n\n/* tables (serialized <table>, not the editor\'s .milkdown-table-block) */\n.og-markdown-content table {\n\tborder-collapse: collapse;\n\twidth: 100%;\n}\n\n.og-markdown-content th,\n.og-markdown-content td {\n\tborder: 1px solid color-mix(in srgb, var(--og-border-color-3), transparent 80%);\n\tpadding: 2px 10px;\n\tvertical-align: top;\n\ttext-align: left;\n}\n\n/* callouts — serialized GitHub-alert form emitted by the callout toDOM */\n.og-markdown-content .og-callout {\n\tpadding: 8px 12px;\n\tmargin: 8px 0;\n\tborder-left: 4px solid var(--og-callout-color, var(--og-accent-color));\n\tbackground-color: var(--og-background-color-3);\n\tborder-radius: 0 4px 4px 0;\n}\n\n/* override the generic blockquote bar for callouts */\n.og-markdown-content .og-callout::before {\n\tdisplay: none;\n}\n\n.og-markdown-content .og-callout-title {\n\tmargin: 0 0 4px;\n\tfont-weight: 600;\n\tcolor: var(--og-callout-color, var(--og-accent-color));\n}\n\n.og-markdown-content .og-callout-body > :first-child { margin-top: 0; }\n.og-markdown-content .og-callout-body > :last-child { margin-bottom: 0; }\n\n.og-markdown-content .og-callout[data-callout="note"] { --og-callout-color: var(--og-colortype-accent-background-color); }\n.og-markdown-content .og-callout[data-callout="tip"] { --og-callout-color: var(--og-colortype-green-background-color); }\n.og-markdown-content .og-callout[data-callout="important"] { --og-callout-color: var(--og-colortype-blue-background-color); }\n.og-markdown-content .og-callout[data-callout="warning"] { --og-callout-color: var(--og-colortype-yellow-background-color); }\n.og-markdown-content .og-callout[data-callout="caution"] { --og-callout-color: var(--og-colortype-red-background-color); }\n';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/components/styles/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8HpC,CAAC","sourcesContent":["/**\n * Standalone stylesheet for the HTML produced by `markdownToHtml`.\n *\n * The editor/view styles live in the shadow DOM of `og-markdown-view` and target\n * the ProseMirror/NodeView DOM (`.ProseMirror`, `.milkdown-table-block`,\n * `.og-callout-header`, `[data-kind]`, …). None of that applies to the *serialized*\n * output of `markdownToHtml`, which is plain semantic HTML (`<h1>`, `<pre>`,\n * `<table>`, …) plus the callout blockquote form\n * (`<blockquote class=\"og-callout og-callout-note\" data-callout=\"note\">`).\n *\n * These rules are scoped under `.og-markdown-content` so a consumer includes them\n * once and wraps the rendered HTML in that class — no global leakage, one source of\n * truth for helpdesk / AI-module message rendering:\n *\n * const el = document.createElement('div');\n * el.className = 'og-markdown-content';\n * el.innerHTML = await markdownToHtml(md);\n *\n * and once per app / component:\n *\n * <style>${markdownContentStyles}</style> // raw consumer\n * static styles = [unsafeCSS(markdownContentStyles)]; // Lit consumer\n *\n * Colours use the same `--og-*` theme variables as the editor, so it follows the\n * host theme (light/dark) automatically.\n */\nexport const markdownContentStyles = `\n.og-markdown-content {\n\tcolor: var(--og-text-color);\n\tfont-size: var(--og-font-size);\n\tline-height: 1.5;\n\tword-wrap: break-word;\n}\n\n.og-markdown-content h1 { font-size: 2em; }\n.og-markdown-content h2 { font-size: 1.7em; }\n.og-markdown-content h3 { font-size: 1.4em; }\n.og-markdown-content h4 { font-size: 1.2em; }\n.og-markdown-content h5 { font-size: 1.1em; }\n.og-markdown-content h6 { font-size: 1em; }\n\n.og-markdown-content p {\n\tfont-size: var(--og-font-size);\n\tmargin-block-start: 0.2em;\n\tmargin-block-end: 0.2em;\n}\n\n.og-markdown-content a {\n\tcolor: #688DC8;\n\ttext-decoration: underline;\n}\n\n.og-markdown-content img {\n\tvertical-align: bottom;\n\tmax-width: 100%;\n}\n\n.og-markdown-content img.emoji {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n}\n\n.og-markdown-content code {\n\tpadding: 2px 4px;\n\tfont-size: 90%;\n\tcolor: #c7254e;\n\tbackground-color: var(--og-background-color-3);\n\tborder-radius: 0;\n}\n\n.og-markdown-content pre {\n\tbackground-color: var(--og-background-color-3);\n\tpadding: 10px;\n\tborder-radius: 4px;\n\twhite-space: pre-wrap;\n\toverflow-x: auto;\n}\n\n.og-markdown-content pre code {\n\tpadding: 0;\n\tbackground: transparent;\n\tcolor: inherit;\n\tfont-size: inherit;\n}\n\n.og-markdown-content blockquote {\n\tposition: relative;\n\tpadding-left: 40px;\n\tmargin: 4px 0;\n}\n\n.og-markdown-content blockquote::before {\n\tcontent: '';\n\tposition: absolute;\n\tleft: 0;\n\ttop: 4px;\n\tbottom: 4px;\n\twidth: 4px;\n\tbackground: var(--og-accent-color);\n\tborder-radius: 100px;\n}\n\n.og-markdown-content hr {\n\tborder: none;\n\theight: 1px;\n\tmargin: 12px 0;\n\tbackground-color: color-mix(in srgb, var(--og-border-color), transparent 40%);\n}\n\n/* tables (serialized <table>, not the editor's .milkdown-table-block) */\n.og-markdown-content table {\n\tborder-collapse: collapse;\n\twidth: 100%;\n}\n\n.og-markdown-content th,\n.og-markdown-content td {\n\tborder: 1px solid color-mix(in srgb, var(--og-border-color-3), transparent 80%);\n\tpadding: 2px 10px;\n\tvertical-align: top;\n\ttext-align: left;\n}\n\n/* callouts — serialized GitHub-alert form emitted by the callout toDOM */\n.og-markdown-content .og-callout {\n\tpadding: 8px 12px;\n\tmargin: 8px 0;\n\tborder-left: 4px solid var(--og-callout-color, var(--og-accent-color));\n\tbackground-color: var(--og-background-color-3);\n\tborder-radius: 0 4px 4px 0;\n}\n\n/* override the generic blockquote bar for callouts */\n.og-markdown-content .og-callout::before {\n\tdisplay: none;\n}\n\n.og-markdown-content .og-callout-title {\n\tmargin: 0 0 4px;\n\tfont-weight: 600;\n\tcolor: var(--og-callout-color, var(--og-accent-color));\n}\n\n.og-markdown-content .og-callout-body > :first-child { margin-top: 0; }\n.og-markdown-content .og-callout-body > :last-child { margin-bottom: 0; }\n\n.og-markdown-content .og-callout[data-callout=\"note\"] { --og-callout-color: var(--og-colortype-accent-background-color); }\n.og-markdown-content .og-callout[data-callout=\"tip\"] { --og-callout-color: var(--og-colortype-green-background-color); }\n.og-markdown-content .og-callout[data-callout=\"important\"] { --og-callout-color: var(--og-colortype-blue-background-color); }\n.og-markdown-content .og-callout[data-callout=\"warning\"] { --og-callout-color: var(--og-colortype-yellow-background-color); }\n.og-markdown-content .og-callout[data-callout=\"caution\"] { --og-callout-color: var(--og-colortype-red-background-color); }\n`;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/markdown",
3
- "version": "0.10.61",
3
+ "version": "0.10.63",
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.61",
32
- "@omegagrid/core": "^0.10.61",
33
- "@omegagrid/localize": "^0.10.61",
34
- "@omegagrid/milkdown-kit": "^0.10.61",
35
- "@omegagrid/tabs": "^0.10.61",
31
+ "@omegagrid/code": "^0.10.63",
32
+ "@omegagrid/core": "^0.10.63",
33
+ "@omegagrid/localize": "^0.10.63",
34
+ "@omegagrid/milkdown-kit": "^0.10.63",
35
+ "@omegagrid/tabs": "^0.10.63",
36
36
  "lit": "^3.1.1",
37
37
  "markdown-it": "^14.1.0",
38
38
  "ts-debounce": "^4.0.0"