@omegagrid/markdown 0.10.60 → 0.10.61
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.
- package/dist/components/features/blockEditMenu.d.ts +1 -0
- package/dist/components/features/blockEditMenu.d.ts.map +1 -1
- package/dist/components/features/blockEditMenu.js +2 -2
- package/dist/components/features/blockEditMenu.js.map +1 -1
- package/dist/components/features/calloutBlock.d.ts +11 -0
- package/dist/components/features/calloutBlock.d.ts.map +1 -0
- package/dist/components/features/calloutBlock.js +1 -0
- package/dist/components/features/calloutBlock.js.map +1 -0
- package/dist/components/features/emojiPicker.d.ts +12 -0
- package/dist/components/features/emojiPicker.d.ts.map +1 -0
- package/dist/components/features/emojiPicker.js +92 -0
- package/dist/components/features/emojiPicker.js.map +1 -0
- package/dist/components/features/index.d.ts +4 -1
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +1 -1
- package/dist/components/features/index.js.map +1 -1
- package/dist/components/features/utils.d.ts +1 -0
- package/dist/components/features/utils.d.ts.map +1 -1
- package/dist/components/features/utils.js +1 -1
- package/dist/components/features/utils.js.map +1 -1
- package/dist/components/markdownEditor.style.d.ts.map +1 -1
- package/dist/components/markdownEditor.style.js +11 -3
- package/dist/components/markdownEditor.style.js.map +1 -1
- package/dist/components/markdownView.style.d.ts.map +1 -1
- package/dist/components/markdownView.style.js +11 -3
- package/dist/components/markdownView.style.js.map +1 -1
- package/dist/components/styles/callout.d.ts +2 -0
- package/dist/components/styles/callout.d.ts.map +1 -0
- package/dist/components/styles/callout.js +56 -0
- package/dist/components/styles/callout.js.map +1 -0
- package/dist/components/styles/index.d.ts.map +1 -1
- package/dist/components/styles/index.js +1 -1
- package/dist/components/styles/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -4,6 +4,7 @@ import { MenuItem } from "@omegagrid/core";
|
|
|
4
4
|
import type * as milkdown from '@omegagrid/milkdown-kit';
|
|
5
5
|
type BlockMenuItem = MenuItem & {
|
|
6
6
|
onRun?: (ctx: milkdown.ctx.Ctx) => void;
|
|
7
|
+
openPicker?: boolean;
|
|
7
8
|
};
|
|
8
9
|
export declare class BlockEditMenu extends LitElement {
|
|
9
10
|
#private;
|
|
@@ -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;
|
|
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,10 +1,10 @@
|
|
|
1
|
-
var _BlockEditMenu_menu,_BlockEditMenu_menuItems,_BlockEditMenu_items,_BlockEditMenu_createComponent,_BlockEditMenu_onTabSelect,__decorate=this&&this.__decorate||function(e,t,o,i){var n,
|
|
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`
|
|
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.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_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\";\n\n\nconst createItems = (): TabItem[] => [\n\t{id: 'sectionText', title: msg('Text')},\n\t{id: 'sectionList', title: msg('List')},\n\t{id: 'sectionAdvanced', title: msg('Advanced')},\n];\n\ntype BlockMenuItem = MenuItem & {onRun?: (ctx: milkdown.ctx.Ctx) => void};\n\nconst createMenuItems = (md: typeof milkdown): BlockMenuItem[] => [\n\t{key: 'sectionText', value: msg('Text'), divider: true, type: 'label'},\n\t{\n\t\tkey: 'text', \n\t\tvalue: msg('Text'), \n\t\ticon: 'text', onRun: \n\t\tctx => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndSetBlockType(md.presets.commonmark.paragraphSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, ...(new Array(6).fill(0).map((_, i) => ({\n\t\tkey: `square${i + 1}`,\n\t\tvalue: msg('Heading') + (i + 1),\n\t\ticon: `square-${i + 1}`,\n\t\tonRun: (ctx: milkdown.ctx.Ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndSetBlockType(md.presets.commonmark.headingSchema.type(ctx), {level: i + 1});\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}))), {\n\t\tkey: 'quote', \n\t\tvalue: msg('Quote'), \n\t\ticon: 'quote-right', \n\t\tonRun: ctx => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.blockquoteSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'divider', \n\t\tvalue: msg('Divider'), \n\t\ticon: 'horizontal-rule',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.hrSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'sectionList', \n\t\tvalue: msg('List'), \n\t\tdivider: true, \n\t\ttype: 'label'\n\t}, {\n\t\tkey: 'bulletList', \n\t\tvalue: msg('Bullet List'), \n\t\ticon: 'list',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.bulletListSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'orderedList', \n\t\tvalue: msg('Ordered List'), \n\t\ticon: 'list-ol',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.orderedListSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'todoList', \n\t\tvalue: msg('Todo List'), \n\t\ticon: 'list-check',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndWrapInBlockType(md.presets.commonmark.listItemSchema.type(ctx), {checked: false});\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'sectionAdvanced', \n\t\tvalue: msg('Advanced'), \n\t\tdivider: true, \n\t\ttype: 'label'\n\t}, {\n\t\tkey: 'blockImage',\n\t\tvalue: msg('Block Image'),\n\t\ticon: 'image',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.components.imageBlock.imageBlockSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'inlineImage',\n\t\tvalue: msg('Inline Image'),\n\t\ticon: 'image',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.imageSchema.type(ctx));\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'html',\n\t\tvalue: msg('Raw HTML'), \n\t\ticon: 'code',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tr = addBlockType(clearRange(state.tr), md.presets.commonmark.htmlSchema.type(ctx), null);\n\t\t\tdispatch(tr.scrollIntoView());\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst node = view.domAtPos(tr.selection.$anchor.pos)?.node as HTMLElement;\n\t\t\t\tif (node) {\n\t\t\t\t\tconst block = node.querySelector('og-markdown-html-block') as HtmlBlockComponent;\n\t\t\t\t\tblock?.startEdit();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'code', \n\t\tvalue: msg('Code'), \n\t\ticon: 'code',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst command = clearContentAndAddBlockType(md.presets.commonmark.codeBlockSchema.type(ctx))\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}, {\n\t\tkey: 'table',\n\t\tvalue: msg('Table'),\n\t\ticon: 'table',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tr = clearRange(state.tr);\n\t\t\tconst table = md.presets.gfm.createTable(ctx, 3, 3);\n\t\t\ttr.replaceSelectionWith(table);\n\t\t\tconst { from } = tr.selection;\n\t\t\tconst pos = from - table.nodeSize + 2;\n\t\t\tdispatch(tr);\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst selection = md.prose.state.NodeSelection.create(view.state.tr.doc, pos);\n\t\t\t\tdispatch(view.state.tr.setSelection(selection).scrollIntoView());\n\t\t\t})\n\t\t}\n\t}, {\n\t\tkey: 'toc',\n\t\tvalue: msg('Table of Contents'),\n\t\ticon: 'list-tree',\n\t\tonRun: (ctx) => {\n\t\t\tconst view = ctx.get(md.core.editorViewCtx);\n\t\t\tconst { dispatch, state } = view;\n\t\t\tconst tocType = state.schema.nodes.toc;\n\t\t\tif (!tocType) return;\n\t\t\tconst command = clearContentAndAddBlockType(tocType);\n\t\t\tcommand(state, dispatch);\n\t\t}\n\t}\n];\n\n@customElement('og-markdown-block-edit-menu')\nexport class BlockEditMenu extends LitElement {\n\n\tstatic styles = css`\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\twidth: 170px;\n\t\t\theight: 230px;\n\t\t\tuser-select: none;\n\t\t\tborder: 1px solid var(--og-accent-color);\n\t\t\tposition: absolute;\n\t\t}\n\n\t\tog-tabcontainer {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t#menu: Menu;\n\n\t@property({type: Object})\n\tctx: milkdown.ctx.Ctx;\n\n\t@property({type: Object})\n\tmd: typeof milkdown;\n\n\t#menuItems: BlockMenuItem[];\n\tget menuItems() { return this.#menuItems ?? (this.#menuItems = createMenuItems(this.md)) }\n\n\t#items: TabItem[];\n\tget items() { return this.#items ?? (this.#items = createItems()) }\n\n\t#createComponent: ComponentFactory = (_id: ComponentId) => {\n\t\tif (!this.#menu) {\n\t\t\tconst menuItems = this.menuItems;\n\t\t\tthis.#menu = dom.createElement<Menu>('og-menu');\n\t\t\tthis.#menu.dynamicWidth = false;\n\t\t\tthis.#menu.disabledFocus = true;\n\t\t\tthis.#menu.style.width = '100%';\n\t\t\tthis.#menu.style.height = '100%';\n\t\t\tthis.#menu.style.border = 'none';\n\t\t\tthis.#menu.items = menuItems;\n\t\t\tthis.#menu.addEventListener('menu.select', (e: MenuEvent) => {\n\t\t\t\tconst item = menuItems.find(item => item.key === e.item.key);\n\t\t\t\tif (item?.onRun) {\n\t\t\t\t\titem.onRun(this.ctx);\n\t\t\t\t\tthis.dispatchEvent(new Event('run'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.#menu.addEventListener('mousedown', (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t});\n\t\t}\n\t\treturn this.#menu;\n\t}\n\n\t#onTabSelect = (e: TabEvent) => {\n\t\tif (this.#menu?.list) {\n\t\t\tconst index = this.menuItems.findIndex(item => item.key === e.tab.id);\n\t\t\tif (index > -1) this.#menu.list.scrollToIndex(index);\t\n\t\t}\n\t}\n\n\trender = () => html`\n\t\t<og-tabcontainer\n\t\t\t.createComponent=\"${this.#createComponent}\"\n\t\t\t.items=\"${this.items}\"\n\t\t\t@tab.select=\"${this.#onTabSelect}\">\n\t\t</og-tabcontainer>\n\t`;\n}\n"]}
|
|
1
|
+
{"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;QAE1B,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;YAC9C,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,CAAC,CAAC;YACxB,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC,CAAC;YAC3C,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QACrF,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;IArEA,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,CAoGzB","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"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as milkdown from '@omegagrid/milkdown-kit';
|
|
2
|
+
export declare const CALLOUT_KINDS: readonly ["note", "tip", "important", "warning", "caution"];
|
|
3
|
+
export type CalloutKind = (typeof CALLOUT_KINDS)[number];
|
|
4
|
+
export declare const CALLOUT_META: Record<CalloutKind, {
|
|
5
|
+
icon: string;
|
|
6
|
+
label: () => string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function createCalloutBlock(md: typeof milkdown): {
|
|
9
|
+
plugins: milkdown.ctx.MilkdownPlugin[];
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=calloutBlock.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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()}}
|
|
@@ -0,0 +1 @@
|
|
|
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: '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"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
import type * as milkdown from '@omegagrid/milkdown-kit';
|
|
3
|
+
export declare class EmojiPicker extends LitElement {
|
|
4
|
+
#private;
|
|
5
|
+
static styles: import("lit").CSSResult;
|
|
6
|
+
ctx: milkdown.ctx.Ctx;
|
|
7
|
+
md: typeof milkdown;
|
|
8
|
+
private query;
|
|
9
|
+
private renderGrid;
|
|
10
|
+
render(): import("lit").TemplateResult<1>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=emojiPicker.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
var _EmojiPicker_instances,_EmojiPicker_insert,_EmojiPicker_onSearch,__decorate=this&&this.__decorate||function(e,t,o,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(s=(a<3?i(s):a>3?i(t,o,s):i(t,o))||s);return a>3&&s&&Object.defineProperty(t,o,s),s},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,o,r){if("a"===o&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===o?r:"a"===o?r.call(e):r?r.value:t.get(e)};import{LitElement,css,html}from"lit";import{customElement,property,state}from"lit/decorators.js";import{msg}from"@omegagrid/localize";const CATEGORIES=[{label:()=>msg("Smileys"),items:[{e:"😀",k:"grin smile happy"},{e:"😃",k:"smile happy"},{e:"😄",k:"smile laugh happy"},{e:"😁",k:"grin"},{e:"😆",k:"laugh"},{e:"😅",k:"sweat laugh"},{e:"🤣",k:"rofl laugh"},{e:"😂",k:"joy tears laugh"},{e:"🙂",k:"slight smile"},{e:"😉",k:"wink"},{e:"😊",k:"blush happy"},{e:"😍",k:"love heart eyes"},{e:"😘",k:"kiss"},{e:"😎",k:"cool sunglasses"},{e:"🤔",k:"thinking"},{e:"😐",k:"neutral"},{e:"😴",k:"sleep"},{e:"😢",k:"cry sad"},{e:"😭",k:"sob cry"},{e:"😅",k:"nervous"},{e:"😳",k:"flushed shock"},{e:"🥳",k:"party celebrate"},{e:"😇",k:"angel"},{e:"🤯",k:"mind blown"}]},{label:()=>msg("Gestures"),items:[{e:"👍",k:"thumbs up like ok"},{e:"👎",k:"thumbs down dislike"},{e:"👌",k:"ok"},{e:"👏",k:"clap applause"},{e:"🙏",k:"pray thanks please"},{e:"🙌",k:"raise hands"},{e:"💪",k:"muscle strong"},{e:"✌️",k:"peace victory"},{e:"🤝",k:"handshake deal"},{e:"👋",k:"wave hi hello bye"},{e:"☝️",k:"point up"},{e:"👆",k:"point up"},{e:"👇",k:"point down"},{e:"👉",k:"point right"},{e:"👈",k:"point left"},{e:"🤞",k:"fingers crossed luck"}]},{label:()=>msg("Hearts & Symbols"),items:[{e:"❤️",k:"heart love red"},{e:"🧡",k:"heart orange"},{e:"💛",k:"heart yellow"},{e:"💚",k:"heart green"},{e:"💙",k:"heart blue"},{e:"💜",k:"heart purple"},{e:"🖤",k:"heart black"},{e:"💔",k:"broken heart"},{e:"⭐",k:"star"},{e:"🌟",k:"star glow"},{e:"✨",k:"sparkles"},{e:"🔥",k:"fire hot lit"},{e:"💯",k:"hundred perfect"},{e:"✅",k:"check done ok"},{e:"❌",k:"cross wrong no"},{e:"⚠️",k:"warning caution"},{e:"❓",k:"question"},{e:"❗",k:"exclamation important"},{e:"💡",k:"idea bulb tip"},{e:"📌",k:"pin"},{e:"📎",k:"clip attach"},{e:"🔗",k:"link"},{e:"🎯",k:"target goal"}]},{label:()=>msg("Objects"),items:[{e:"📝",k:"note memo write"},{e:"📄",k:"document page"},{e:"📚",k:"books docs"},{e:"📁",k:"folder"},{e:"📅",k:"calendar date"},{e:"⏰",k:"alarm time clock"},{e:"💻",k:"laptop computer"},{e:"🖥️",k:"desktop pc"},{e:"📱",k:"phone mobile"},{e:"⚙️",k:"gear settings config"},{e:"🔒",k:"lock secure"},{e:"🔑",k:"key"},{e:"🚀",k:"rocket launch ship"},{e:"🐛",k:"bug"},{e:"💰",k:"money cash"},{e:"📊",k:"chart graph"},{e:"📈",k:"chart up growth"},{e:"📉",k:"chart down"},{e:"🏆",k:"trophy win"},{e:"🎉",k:"party tada celebrate"}]},{label:()=>msg("Nature & Food"),items:[{e:"🌍",k:"earth world globe"},{e:"☀️",k:"sun sunny"},{e:"🌙",k:"moon night"},{e:"☁️",k:"cloud"},{e:"⚡",k:"lightning bolt"},{e:"🌈",k:"rainbow"},{e:"🌸",k:"blossom flower"},{e:"🌿",k:"leaf plant herb"},{e:"🌳",k:"tree"},{e:"🍀",k:"clover luck"},{e:"☕",k:"coffee tea"},{e:"🍕",k:"pizza food"},{e:"🍎",k:"apple fruit"},{e:"🎂",k:"cake birthday"},{e:"🍺",k:"beer drink"},{e:"🐱",k:"cat"},{e:"🐶",k:"dog"}]}];let EmojiPicker=class extends LitElement{constructor(){super(...arguments),_EmojiPicker_instances.add(this),this.query="",_EmojiPicker_onSearch.set(this,(e=>{this.query=e.target.value.trim().toLowerCase()}))}renderGrid(e){return html`<div class="grid">${e.map((e=>html`
|
|
2
|
+
<button
|
|
3
|
+
class="emoji"
|
|
4
|
+
title="${e.k.split(" ")[0]}"
|
|
5
|
+
@mousedown="${t=>{t.preventDefault(),t.stopPropagation(),__classPrivateFieldGet(this,_EmojiPicker_instances,"m",_EmojiPicker_insert).call(this,e.e)}}">
|
|
6
|
+
${e.e}
|
|
7
|
+
</button>
|
|
8
|
+
`))}</div>`}render(){const e=this.query,t=e?CATEGORIES.map((t=>({label:t.label,items:t.items.filter((t=>t.k.includes(e)))}))).filter((e=>e.items.length)):CATEGORIES;return html`
|
|
9
|
+
<div class="search">
|
|
10
|
+
<input
|
|
11
|
+
type="text"
|
|
12
|
+
placeholder="${msg("Search emoji")}"
|
|
13
|
+
.value="${this.query}"
|
|
14
|
+
@input="${__classPrivateFieldGet(this,_EmojiPicker_onSearch,"f")}"
|
|
15
|
+
@mousedown="${e=>e.stopPropagation()}">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="body">
|
|
18
|
+
${t.length?t.map((e=>html`
|
|
19
|
+
<div class="category-title">${e.label()}</div>
|
|
20
|
+
${this.renderGrid(e.items)}
|
|
21
|
+
`)):html`<div class="empty">${msg("No emoji found")}</div>`}
|
|
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`
|
|
24
|
+
* { box-sizing: border-box; }
|
|
25
|
+
|
|
26
|
+
:host {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
position: absolute;
|
|
30
|
+
width: 260px;
|
|
31
|
+
height: 300px;
|
|
32
|
+
background-color: var(--og-background-color);
|
|
33
|
+
border: 1px solid var(--og-accent-color);
|
|
34
|
+
user-select: none;
|
|
35
|
+
z-index: 1000;
|
|
36
|
+
font-size: var(--og-font-size);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.search {
|
|
40
|
+
padding: 6px;
|
|
41
|
+
border-bottom: 1px solid var(--og-border-color);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
input {
|
|
45
|
+
width: 100%;
|
|
46
|
+
padding: 4px 6px;
|
|
47
|
+
border: 1px solid var(--og-border-color);
|
|
48
|
+
background-color: var(--og-background-color);
|
|
49
|
+
color: var(--og-text-color, inherit);
|
|
50
|
+
outline: none;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
input:focus { border-color: var(--og-accent-color); }
|
|
54
|
+
|
|
55
|
+
.body {
|
|
56
|
+
flex: 1;
|
|
57
|
+
overflow-y: auto;
|
|
58
|
+
padding: 4px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.category-title {
|
|
62
|
+
font-size: 0.75em;
|
|
63
|
+
color: var(--og-text-secondary-color, #999);
|
|
64
|
+
padding: 4px 2px 2px;
|
|
65
|
+
text-transform: uppercase;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.grid {
|
|
69
|
+
display: grid;
|
|
70
|
+
grid-template-columns: repeat(8, 1fr);
|
|
71
|
+
gap: 1px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
button.emoji {
|
|
75
|
+
border: none;
|
|
76
|
+
background: transparent;
|
|
77
|
+
cursor: pointer;
|
|
78
|
+
font-size: 18px;
|
|
79
|
+
line-height: 1;
|
|
80
|
+
padding: 3px 0;
|
|
81
|
+
border-radius: 3px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
button.emoji:hover { background-color: var(--og-hover-color, rgba(127,127,127,.2)); }
|
|
85
|
+
|
|
86
|
+
.empty {
|
|
87
|
+
color: var(--og-text-secondary-color, #999);
|
|
88
|
+
font-style: italic;
|
|
89
|
+
padding: 8px;
|
|
90
|
+
text-align: center;
|
|
91
|
+
}
|
|
92
|
+
`,__decorate([property({type:Object})],EmojiPicker.prototype,"ctx",void 0),__decorate([property({type:Object})],EmojiPicker.prototype,"md",void 0),__decorate([state()],EmojiPicker.prototype,"query",void 0),EmojiPicker=__decorate([customElement("og-markdown-emoji-picker")],EmojiPicker);export{EmojiPicker};
|
|
@@ -0,0 +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,6 +1,8 @@
|
|
|
1
1
|
import type * as milkdown from '@omegagrid/milkdown-kit';
|
|
2
2
|
export * from './blockEditMenu';
|
|
3
3
|
export * from './htmlBlock';
|
|
4
|
+
export * from './calloutBlock';
|
|
5
|
+
export * from './emojiPicker';
|
|
4
6
|
export * from './linkEdit';
|
|
5
7
|
export type DefineFeature<TConfig = unknown> = (editor: milkdown.core.Editor, config?: TConfig) => void | Promise<void>;
|
|
6
8
|
export declare function configureFeatures(features: EditorFeature[], md: typeof milkdown): (ctx: milkdown.ctx.Ctx) => void;
|
|
@@ -15,7 +17,8 @@ export declare enum EditorFeature {
|
|
|
15
17
|
Table = "table",
|
|
16
18
|
Html = "html",
|
|
17
19
|
Emoji = "emoji",
|
|
18
|
-
Toc = "toc"
|
|
20
|
+
Toc = "toc",
|
|
21
|
+
Callout = "callout"
|
|
19
22
|
}
|
|
20
23
|
export type FeatureDefinition = {
|
|
21
24
|
default: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAWzD,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAE3B,MAAM,MAAM,aAAa,CAAC,OAAO,GAAG,OAAO,IAAI,CAC9C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAC5B,MAAM,CAAC,EAAE,OAAO,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,OAAO,QAAQ,IACvE,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,UAG7B;AAGD,oBAAY,aAAa;IACxB,SAAS,eAAe;IACxB,MAAM,WAAW;IACjB,UAAU,gBAAgB;IAE1B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,OAAO,YAAY;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;CAChB,CAAC;AASF,wBAAgB,WAAW,CAC1B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAC5B,EAAE,EAAE,OAAO,QAAQ,EACnB,OAAO,EAAE;IACR,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAC,MAAM,CAAC;CAC1D,yCA8JD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{BlockHandleView}from"./blockEdit";import{msg}from"@omegagrid/localize";import{ToolbarView}from"./toolbar";import{createPlaceHolder}from"./placeholder";import{createCodeBlockConfig,createCodeBlockView}from"./codeBlock";import{createHtmlBlockConfig,createHtmlBlockView}from"./htmlBlock";import{createTocBlock}from"./tocBlock";import{createCalloutBlock}from"./calloutBlock";import{iconSvg}from"./utils";import linkEdit from"./linkEdit";export*from"./blockEditMenu";export*from"./htmlBlock";export*from"./calloutBlock";export*from"./emojiPicker";export*from"./linkEdit";export function configureFeatures(o,e){return t=>{t.inject(e.ctx.createSlice([],"FeaturesCtx"),o)}}export var EditorFeature;!function(o){o.BlockEdit="block-edit",o.Cursor="cursor",o.CodeEditor="code-editor",o.LinkTooltip="link-tooltip",o.ImageBlock="image-block",o.Toolbar="toolbar",o.Placeholder="placeholder",o.Table="table",o.Html="html",o.Emoji="emoji",o.Toc="toc",o.Callout="callout"}(EditorFeature||(EditorFeature={}));const createModifyImageUrl=o=>e=>e?o(e):e;export function getFeatures(o,e,t){const i=t.modifyImageUrl?createModifyImageUrl(t.modifyImageUrl):null;return new Map([[EditorFeature.BlockEdit,{default:!0,init:()=>{o.config((o=>{o.set(e.plugins.block.blockConfig.key,{filterNodes:o=>!e.prose.findParent((o=>["table","blockquote"].includes(o.type.name)))(o)}),o.set(e.plugins.block.block.key,{view:()=>new BlockHandleView(o,e)})})).use(e.plugins.block.block)}}],[EditorFeature.Cursor,{default:!0,init:()=>{o.config((o=>{o.update(e.plugins.cursor.dropCursorConfig.key,(()=>({class:"md-editor-drop-cursor",width:4})))})).use(e.plugins.cursor.cursor)}}],[EditorFeature.ImageBlock,{default:!0,init:()=>{o.config((o=>{o.update(e.components.imageInline.inlineImageConfig.key,(o=>({uploadButton:iconSvg("upload","1em"),uploadPlaceholderText:msg("or paste link"),imageIcon:iconSvg("image","20px"),confirmButton:msg("Confirm"),onUpload:t.onUpload,proxyDomURL:i}))),o.update(e.components.imageBlock.imageBlockConfig.key,(o=>({uploadButton:iconSvg("upload","1em"),uploadPlaceholderText:msg("or paste link"),imageIcon:iconSvg("image","20px"),confirmButton:msg("Confirm"),captionIcon:iconSvg("comment","24px"),captionPlaceholderText:msg("Write Image Caption"),onUpload:t.onUpload,proxyDomURL:i})))})).use(e.components.imageBlock.imageBlockComponent).use(e.components.imageInline.imageInlineComponent)}}],[EditorFeature.LinkTooltip,{default:!0,init:()=>{const e=linkEdit.getPlugin();o.config(linkEdit.configure).use(e)}}],[EditorFeature.Toolbar,{default:!0,init:()=>{const t=e.plugins.tooltip.tooltipFactory("MARKDOWN_TOOLBAR");o.config((o=>{o.set(t.key,{view:t=>new ToolbarView(o,t,e)})})).use(t)}}],[EditorFeature.Placeholder,{default:!0,init:()=>{const{config:t,plugin:i}=createPlaceHolder(e);o.config((o=>{o.update(t.key,(o=>({...o})))})).use(i).use(t)}}],[EditorFeature.Table,{default:!0,init:()=>{o.config((o=>{o.update(e.components.tableBlock.tableBlockConfig.key,(o=>({renderButton:o=>{switch(o){case"add_row":case"add_col":return iconSvg("plus","16px");case"delete_row":case"delete_col":return iconSvg("trash","16px");case"align_col_left":return iconSvg("align-left","16px");case"align_col_center":return iconSvg("align-center","16px");case"align_col_right":return iconSvg("align-right","16px");case"col_drag_handle":return iconSvg("grip-lines-vertical","16px");case"row_drag_handle":return iconSvg("grip-lines","16px")}}})))})).use(e.components.tableBlock.tableBlock)}}],[EditorFeature.CodeEditor,{default:!0,init:()=>{const t=createCodeBlockConfig(e),i=createCodeBlockView(e);o.config((o=>{o.update(t.key,(o=>({})))})).use([i,t])}}],[EditorFeature.Html,{default:!0,init:()=>{const t=createHtmlBlockConfig(e),i=createHtmlBlockView(e);o.config((o=>{o.update(t.key,(o=>({})))})).use([i,t])}}],[EditorFeature.Emoji,{default:!0,init:()=>{e.plugins.emoji&&o.use(e.plugins.emoji.emoji)}}],[EditorFeature.Toc,{default:!0,init:()=>{const t=createTocBlock(e);o.config((o=>{o.update(t.tocConfig.key,(o=>({})))})).use(t.plugins)}}],[EditorFeature.Callout,{default:!0,init:()=>{o.use(createCalloutBlock(e).plugins)}}]])}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// import { Editor } from '@milkdown/kit/core';\n// import { createSlice } from '@milkdown/kit/ctx';\n// import { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block'\nimport { config, icon, IconName, IconPrefix } from '@fortawesome/fontawesome-svg-core';\nimport { BlockHandleView } from './blockEdit';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { msg } from '@omegagrid/localize';\nimport { ToolbarView } from './toolbar';\nimport { createPlaceHolder } from './placeholder';\nimport { createCodeBlockConfig, createCodeBlockView } from './codeBlock';\nimport { createHtmlBlockConfig, createHtmlBlockView } from './htmlBlock';\nimport { createTocBlock } from './tocBlock';\nimport linkEdit from './linkEdit';\n\n// Milkdown's <Icon> component runs config-supplied icon HTML through DOMPurify,\n// which strips unknown custom elements like <og-icon>. Render the SVG directly instead.\nfunction iconSvg(name: string, size: string = '1em'): string {\n\tconst html = icon(\n\t\t{ prefix: config.styleDefault as IconPrefix, iconName: name as IconName },\n\t)?.html?.[0];\n\tif (!html) return '';\n\tconst style = `box-sizing:content-box;display:inline-block;overflow:visible;vertical-align:-0.125em;width:${size};height:${size}`;\n\treturn html.replace(/<svg\\b/, `<svg style=\"${style}\"`);\n}\n\nexport * from './blockEditMenu';\nexport * from './htmlBlock';\nexport * from './linkEdit';\n\nexport type DefineFeature<TConfig = unknown> = (\n\teditor: milkdown.core.Editor,\n\tconfig?: TConfig\n) => void | Promise<void>\n\nexport function configureFeatures(features: EditorFeature[], md: typeof milkdown) {\n\treturn (ctx: milkdown.ctx.Ctx) => {\n\t\tctx.inject(md.ctx.createSlice([] as EditorFeature[], 'FeaturesCtx'), features)\n\t}\n}\n\n\nexport enum EditorFeature {\n\tBlockEdit = 'block-edit',\n\tCursor = 'cursor',\n\tCodeEditor = 'code-editor',\n\t// ListItem = 'list-item',\n\tLinkTooltip = 'link-tooltip',\n\tImageBlock = 'image-block',\n\tToolbar = 'toolbar',\n\tPlaceholder = 'placeholder',\n\tTable = 'table',\n\tHtml = 'html',\n\tEmoji = 'emoji',\n\tToc = 'toc'\n}\n\nexport type FeatureDefinition = {\n\tdefault: boolean,\n\tinit: () => void\n};\n\nconst createModifyImageUrl = (fn: (url: string) => Promise<string>|string) => {\n\treturn (url: string): Promise<string> | string => {\n\t\tif (!url) return url;\n\t\treturn fn(url);\n\t};\n};\n\nexport function getFeatures(\n\teditor: milkdown.core.Editor,\n\tmd: typeof milkdown,\n\toptions: {\n\t\tonUpload?: (file: File) => Promise<string>,\n\t\tmodifyImageUrl?: (file: string) => Promise<string>|string,\n\t}\n) {\n\tconst modifyImageUrl = options.modifyImageUrl ? createModifyImageUrl(options.modifyImageUrl) : null;\n\treturn new Map<EditorFeature, FeatureDefinition>([\n\t\t[EditorFeature.BlockEdit, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(md.plugins.block.blockConfig.key, {\n\t\t\t\t\t\tfilterNodes: (pos) => {\n\t\t\t\t\t\tconst filter = md.prose.findParent((node) =>\n\t\t\t\t\t\t\t['table', 'blockquote'].includes(node.type.name)\n\t\t\t\t\t\t)(pos)\n\t\t\t\t\t\tif (filter) return false\n\t\t\t\t\t\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tctx.set(md.plugins.block.block.key, {\n\t\t\t\t\t\tview: () => new BlockHandleView(ctx, md),\n\t\t\t\t\t})\n\t\t\t\t}).use(md.plugins.block.block);\n\t\t\t\t// .config((ctx) => configureMenu(ctx, config))\n\t\t\t\t// .use(menuAPI)\n\t\t\t\t// .use(menu)\n\t\t\t}\n\t\t}], [EditorFeature.Cursor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.plugins.cursor.dropCursorConfig.key, () => ({\n\t\t\t\t\t\tclass: 'md-editor-drop-cursor',\n\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t// color: '#ff0000',\n\t\t\t\t\t}))\n\t\t\t\t}).use(md.plugins.cursor.cursor)\n\t\t\t}\n\t\t}], [EditorFeature.ImageBlock, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.imageInline.inlineImageConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: iconSvg('upload', '1em'),\n\t\t\t\t\t\tuploadPlaceholderText: msg('or paste link'),\n\t\t\t\t\t\timageIcon: iconSvg('image', '20px'),\n\t\t\t\t\t\tconfirmButton: msg('Confirm'),\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t} as any))\n\t\t\t\t\tctx.update(md.components.imageBlock.imageBlockConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: iconSvg('upload', '1em'),\n\t\t\t\t\t\tuploadPlaceholderText: msg('or paste link'),\n\t\t\t\t\t\timageIcon: iconSvg('image', '20px'),\n\t\t\t\t\t\tconfirmButton: msg('Confirm'),\n\t\t\t\t\t\tcaptionIcon: iconSvg('comment', '24px'),\n\t\t\t\t\t\tcaptionPlaceholderText: msg('Write Image Caption'),\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t} as any))\n\t\t\t\t})\n\t\t\t\t.use(md.components.imageBlock.imageBlockComponent)\n\t\t\t\t.use(md.components.imageInline.imageInlineComponent)\n\t\t\t}\n\t\t}], [EditorFeature.LinkTooltip, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\t// const toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_LINK_EDIT_TOOLBAR');\n\t\t\t\tconst plugin = linkEdit.getPlugin();\n\t\t\t\teditor.config(linkEdit.configure)\n\t\t\t\t/*.config((ctx) => {\n\t\t\t\t\tctx.update(linkEdit.getState().key, (prev) => ({...prev}));\n\t\t\t\t})*/\n\t\t\t\t.use(plugin);\n\t\t\t}\n\t\t}], [EditorFeature.Toolbar, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_TOOLBAR');\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(toolbar.key, {\n\t\t\t\t\t\tview: (view) => new ToolbarView(ctx, view, md),\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.use(toolbar)\n\t\t\t}\n\t\t}], [EditorFeature.Placeholder, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst { config, plugin } = createPlaceHolder(md);\n\t\t\t\t\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(config.key, (prev) => {\n\t\t\t\t\t\treturn {...prev};\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.use(plugin)\n\t\t\t\t.use(config)\n\t\t\t}\n\t\t}], [EditorFeature.Table, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.tableBlock.tableBlockConfig.key, (_prev) => ({\n\t\t\t\t\t\trenderButton: (renderType) => {\n\t\t\t\t\t\t\tswitch (renderType) {\n\t\t\t\t\t\t\t\tcase 'add_row': return iconSvg('plus', '16px');\n\t\t\t\t\t\t\t\tcase 'add_col': return iconSvg('plus', '16px');\n\t\t\t\t\t\t\t\tcase 'delete_row': return iconSvg('trash', '16px');\n\t\t\t\t\t\t\t\tcase 'delete_col': return iconSvg('trash', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_left': return iconSvg('align-left', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_center': return iconSvg('align-center', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_right': return iconSvg('align-right', '16px');\n\t\t\t\t\t\t\t\tcase 'col_drag_handle': return iconSvg('grip-lines-vertical', '16px');\n\t\t\t\t\t\t\t\tcase 'row_drag_handle': return iconSvg('grip-lines', '16px');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t})\n\t\t\t\t.use(md.components.tableBlock.tableBlock)\n\t\t\t}\n\t\t}], [EditorFeature.CodeEditor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst codeBlockConfig = createCodeBlockConfig(md);\n\t\t\t\tconst codeBlockView = createCodeBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(codeBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([codeBlockView, codeBlockConfig]);\n\t\t\t}\n\t\t}], [EditorFeature.Html, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst htmlBlockConfig = createHtmlBlockConfig(md);\n\t\t\t\tconst htmlBlockView = createHtmlBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(htmlBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([htmlBlockView, htmlBlockConfig]);\n\t\t\t}\n\t\t}], [EditorFeature.Emoji, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tif (md.plugins.emoji) editor.use(md.plugins.emoji.emoji);\n\t\t\t}\n\t\t}], [EditorFeature.Toc, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst toc = createTocBlock(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(toc.tocConfig.key, (_d) => ({}));\n\t\t\t\t}).use(toc.plugins);\n\t\t\t}\n\t\t}]\n\t]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/features/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// import { Editor } from '@milkdown/kit/core';\n// import { createSlice } from '@milkdown/kit/ctx';\n// import { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block'\nimport { BlockHandleView } from './blockEdit';\nimport type * as milkdown from '@omegagrid/milkdown-kit';\nimport { msg } from '@omegagrid/localize';\nimport { ToolbarView } from './toolbar';\nimport { createPlaceHolder } from './placeholder';\nimport { createCodeBlockConfig, createCodeBlockView } from './codeBlock';\nimport { createHtmlBlockConfig, createHtmlBlockView } from './htmlBlock';\nimport { createTocBlock } from './tocBlock';\nimport { createCalloutBlock } from './calloutBlock';\nimport { iconSvg } from './utils';\nimport linkEdit from './linkEdit';\n\nexport * from './blockEditMenu';\nexport * from './htmlBlock';\nexport * from './calloutBlock';\nexport * from './emojiPicker';\nexport * from './linkEdit';\n\nexport type DefineFeature<TConfig = unknown> = (\n\teditor: milkdown.core.Editor,\n\tconfig?: TConfig\n) => void | Promise<void>\n\nexport function configureFeatures(features: EditorFeature[], md: typeof milkdown) {\n\treturn (ctx: milkdown.ctx.Ctx) => {\n\t\tctx.inject(md.ctx.createSlice([] as EditorFeature[], 'FeaturesCtx'), features)\n\t}\n}\n\n\nexport enum EditorFeature {\n\tBlockEdit = 'block-edit',\n\tCursor = 'cursor',\n\tCodeEditor = 'code-editor',\n\t// ListItem = 'list-item',\n\tLinkTooltip = 'link-tooltip',\n\tImageBlock = 'image-block',\n\tToolbar = 'toolbar',\n\tPlaceholder = 'placeholder',\n\tTable = 'table',\n\tHtml = 'html',\n\tEmoji = 'emoji',\n\tToc = 'toc',\n\tCallout = 'callout'\n}\n\nexport type FeatureDefinition = {\n\tdefault: boolean,\n\tinit: () => void\n};\n\nconst createModifyImageUrl = (fn: (url: string) => Promise<string>|string) => {\n\treturn (url: string): Promise<string> | string => {\n\t\tif (!url) return url;\n\t\treturn fn(url);\n\t};\n};\n\nexport function getFeatures(\n\teditor: milkdown.core.Editor,\n\tmd: typeof milkdown,\n\toptions: {\n\t\tonUpload?: (file: File) => Promise<string>,\n\t\tmodifyImageUrl?: (file: string) => Promise<string>|string,\n\t}\n) {\n\tconst modifyImageUrl = options.modifyImageUrl ? createModifyImageUrl(options.modifyImageUrl) : null;\n\treturn new Map<EditorFeature, FeatureDefinition>([\n\t\t[EditorFeature.BlockEdit, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(md.plugins.block.blockConfig.key, {\n\t\t\t\t\t\tfilterNodes: (pos) => {\n\t\t\t\t\t\tconst filter = md.prose.findParent((node) =>\n\t\t\t\t\t\t\t['table', 'blockquote'].includes(node.type.name)\n\t\t\t\t\t\t)(pos)\n\t\t\t\t\t\tif (filter) return false\n\t\t\t\t\t\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tctx.set(md.plugins.block.block.key, {\n\t\t\t\t\t\tview: () => new BlockHandleView(ctx, md),\n\t\t\t\t\t})\n\t\t\t\t}).use(md.plugins.block.block);\n\t\t\t\t// .config((ctx) => configureMenu(ctx, config))\n\t\t\t\t// .use(menuAPI)\n\t\t\t\t// .use(menu)\n\t\t\t}\n\t\t}], [EditorFeature.Cursor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.plugins.cursor.dropCursorConfig.key, () => ({\n\t\t\t\t\t\tclass: 'md-editor-drop-cursor',\n\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t// color: '#ff0000',\n\t\t\t\t\t}))\n\t\t\t\t}).use(md.plugins.cursor.cursor)\n\t\t\t}\n\t\t}], [EditorFeature.ImageBlock, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.imageInline.inlineImageConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: iconSvg('upload', '1em'),\n\t\t\t\t\t\tuploadPlaceholderText: msg('or paste link'),\n\t\t\t\t\t\timageIcon: iconSvg('image', '20px'),\n\t\t\t\t\t\tconfirmButton: msg('Confirm'),\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t} as any))\n\t\t\t\t\tctx.update(md.components.imageBlock.imageBlockConfig.key, (_value) => ({\n\t\t\t\t\t\tuploadButton: iconSvg('upload', '1em'),\n\t\t\t\t\t\tuploadPlaceholderText: msg('or paste link'),\n\t\t\t\t\t\timageIcon: iconSvg('image', '20px'),\n\t\t\t\t\t\tconfirmButton: msg('Confirm'),\n\t\t\t\t\t\tcaptionIcon: iconSvg('comment', '24px'),\n\t\t\t\t\t\tcaptionPlaceholderText: msg('Write Image Caption'),\n\t\t\t\t\t\tonUpload: options.onUpload,\n\t\t\t\t\t\tproxyDomURL: modifyImageUrl,\n\t\t\t\t\t} as any))\n\t\t\t\t})\n\t\t\t\t.use(md.components.imageBlock.imageBlockComponent)\n\t\t\t\t.use(md.components.imageInline.imageInlineComponent)\n\t\t\t}\n\t\t}], [EditorFeature.LinkTooltip, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\t// const toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_LINK_EDIT_TOOLBAR');\n\t\t\t\tconst plugin = linkEdit.getPlugin();\n\t\t\t\teditor.config(linkEdit.configure)\n\t\t\t\t/*.config((ctx) => {\n\t\t\t\t\tctx.update(linkEdit.getState().key, (prev) => ({...prev}));\n\t\t\t\t})*/\n\t\t\t\t.use(plugin);\n\t\t\t}\n\t\t}], [EditorFeature.Toolbar, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst toolbar = md.plugins.tooltip.tooltipFactory('MARKDOWN_TOOLBAR');\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.set(toolbar.key, {\n\t\t\t\t\t\tview: (view) => new ToolbarView(ctx, view, md),\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.use(toolbar)\n\t\t\t}\n\t\t}], [EditorFeature.Placeholder, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst { config, plugin } = createPlaceHolder(md);\n\t\t\t\t\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(config.key, (prev) => {\n\t\t\t\t\t\treturn {...prev};\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.use(plugin)\n\t\t\t\t.use(config)\n\t\t\t}\n\t\t}], [EditorFeature.Table, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(md.components.tableBlock.tableBlockConfig.key, (_prev) => ({\n\t\t\t\t\t\trenderButton: (renderType) => {\n\t\t\t\t\t\t\tswitch (renderType) {\n\t\t\t\t\t\t\t\tcase 'add_row': return iconSvg('plus', '16px');\n\t\t\t\t\t\t\t\tcase 'add_col': return iconSvg('plus', '16px');\n\t\t\t\t\t\t\t\tcase 'delete_row': return iconSvg('trash', '16px');\n\t\t\t\t\t\t\t\tcase 'delete_col': return iconSvg('trash', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_left': return iconSvg('align-left', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_center': return iconSvg('align-center', '16px');\n\t\t\t\t\t\t\t\tcase 'align_col_right': return iconSvg('align-right', '16px');\n\t\t\t\t\t\t\t\tcase 'col_drag_handle': return iconSvg('grip-lines-vertical', '16px');\n\t\t\t\t\t\t\t\tcase 'row_drag_handle': return iconSvg('grip-lines', '16px');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t})\n\t\t\t\t.use(md.components.tableBlock.tableBlock)\n\t\t\t}\n\t\t}], [EditorFeature.CodeEditor, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst codeBlockConfig = createCodeBlockConfig(md);\n\t\t\t\tconst codeBlockView = createCodeBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(codeBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([codeBlockView, codeBlockConfig]);\n\t\t\t}\n\t\t}], [EditorFeature.Html, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst htmlBlockConfig = createHtmlBlockConfig(md);\n\t\t\t\tconst htmlBlockView = createHtmlBlockView(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(htmlBlockConfig.key, (_defaultConfig) => ({}));\n\t\t\t\t}).use([htmlBlockView, htmlBlockConfig]);\n\t\t\t}\n\t\t}], [EditorFeature.Emoji, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tif (md.plugins.emoji) editor.use(md.plugins.emoji.emoji);\n\t\t\t}\n\t\t}], [EditorFeature.Toc, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\tconst toc = createTocBlock(md);\n\t\t\t\teditor.config((ctx) => {\n\t\t\t\t\tctx.update(toc.tocConfig.key, (_d) => ({}));\n\t\t\t\t}).use(toc.plugins);\n\t\t\t}\n\t\t}], [EditorFeature.Callout, {\n\t\t\tdefault: true,\n\t\t\tinit: () => {\n\t\t\t\teditor.use(createCalloutBlock(md).plugins);\n\t\t\t}\n\t\t}]\n\t]);\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Attrs, NodeType } from '@omegagrid/milkdown-kit/dist/prose/model';
|
|
2
2
|
import type { Command, Transaction, Selection } from "@omegagrid/milkdown-kit/dist/prose/state";
|
|
3
|
+
export declare function iconSvg(name: string, size?: string): string;
|
|
3
4
|
export declare function clearRange(tr: Transaction): Transaction;
|
|
4
5
|
export declare function setBlockType(tr: Transaction, nodeType: NodeType, attrs?: Attrs | null): Transaction;
|
|
5
6
|
export declare function wrapInBlockType(tr: Transaction, nodeType: NodeType, attrs?: Attrs | null): Transaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/features/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAA;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/features/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAA;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAMhG,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAc,GAAG,MAAM,CAOlE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,WAAW,eAKzC;AAED,wBAAgB,YAAY,CAC3B,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,KAAK,GAAG,IAAW,eAI1B;AAED,wBAAgB,eAAe,CAC9B,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,KAAK,GAAG,IAAW,eAO1B;AAED,wBAAgB,YAAY,CAC3B,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,KAAK,GAAG,IAAW,eAK1B;AAED,wBAAgB,2BAA2B,CAC1C,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,KAAK,GAAG,IAAW,GACxB,OAAO,CAQT;AAED,wBAAgB,8BAA8B,CAC7C,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,KAAK,GAAG,IAAW,GACxB,OAAO,CAOT;AAGD,wBAAgB,2BAA2B,CAC1C,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,KAAK,GAAG,IAAW,GACxB,OAAO,CAOT;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,WAGjD;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,WAG5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MilkdownLoader}from"../../loader";export function clearRange(e){const{$from:n,$to:o}=e.selection,t=n.pos-n.node().content.size;return t>=0&&(e=e.deleteRange(t,o.pos)),e}export function setBlockType(e,n,o=null){const{from:t,to:r}=e.selection;return e.setBlockType(t,r,n,o)}export function wrapInBlockType(e,n,o=null){const{$from:t,$to:r}=e.selection,l=t.blockRange(r),c=l&&MilkdownLoader.getSync().prose.transform.findWrapping(l,n,o);return c?e.wrap(l,c):null}export function addBlockType(e,n,o=null){const t=n.createAndFill(o);return t?e.replaceSelectionWith(t):null}export function clearContentAndSetBlockType(e,n=null){return(o,t)=>(t&&t(setBlockType(clearRange(o.tr),e,n).scrollIntoView()),!0)}export function clearContentAndWrapInBlockType(e,n=null){return(o,t)=>{const r=wrapInBlockType(clearRange(o.tr),e,n);return!!r&&(t&&t(r.scrollIntoView()),!0)}}export function clearContentAndAddBlockType(e,n=null){return(o,t)=>{const r=addBlockType(clearRange(o.tr),e,n);return!!r&&(t&&t(r.scrollIntoView()),!0)}}export function isInCodeBlock(e){return"code_block"===e.$from.parent.type.name}export function isInList(e){const n=e.$from.node(e.$from.depth-1)?.type;return"list_item"===n?.name}
|
|
1
|
+
import{config,icon}from"@fortawesome/fontawesome-svg-core";import{MilkdownLoader}from"../../loader";export function iconSvg(e,n="1em"){const o=icon({prefix:config.styleDefault,iconName:e})?.html?.[0];if(!o)return"";const t=`box-sizing:content-box;display:inline-block;overflow:visible;vertical-align:-0.125em;width:${n};height:${n}`;return o.replace(/<svg\b/,`<svg style="${t}"`)}export function clearRange(e){const{$from:n,$to:o}=e.selection,t=n.pos-n.node().content.size;return t>=0&&(e=e.deleteRange(t,o.pos)),e}export function setBlockType(e,n,o=null){const{from:t,to:r}=e.selection;return e.setBlockType(t,r,n,o)}export function wrapInBlockType(e,n,o=null){const{$from:t,$to:r}=e.selection,l=t.blockRange(r),c=l&&MilkdownLoader.getSync().prose.transform.findWrapping(l,n,o);return c?e.wrap(l,c):null}export function addBlockType(e,n,o=null){const t=n.createAndFill(o);return t?e.replaceSelectionWith(t):null}export function clearContentAndSetBlockType(e,n=null){return(o,t)=>(t&&t(setBlockType(clearRange(o.tr),e,n).scrollIntoView()),!0)}export function clearContentAndWrapInBlockType(e,n=null){return(o,t)=>{const r=wrapInBlockType(clearRange(o.tr),e,n);return!!r&&(t&&t(r.scrollIntoView()),!0)}}export function clearContentAndAddBlockType(e,n=null){return(o,t)=>{const r=addBlockType(clearRange(o.tr),e,n);return!!r&&(t&&t(r.scrollIntoView()),!0)}}export function isInCodeBlock(e){return"code_block"===e.$from.parent.type.name}export function isInList(e){const n=e.$from.node(e.$from.depth-1)?.type;return"list_item"===n?.name}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/features/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Attrs, NodeType } from '@omegagrid/milkdown-kit/dist/prose/model'\nimport type { Command, Transaction, Selection } from \"@omegagrid/milkdown-kit/dist/prose/state\";\nimport { MilkdownLoader } from \"../../loader\";\n\nexport function clearRange(tr: Transaction) {\n\tconst { $from, $to } = tr.selection;\n\tconst from = $from.pos - $from.node().content.size;\n\tif (from >= 0) tr = tr.deleteRange(from, $to.pos);\n\treturn tr\n}\n\nexport function setBlockType(\n\ttr: Transaction,\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n) {\n\tconst { from, to } = tr.selection\n\treturn tr.setBlockType(from, to, nodeType, attrs)\n}\n\nexport function wrapInBlockType(\n\ttr: Transaction,\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n) {\n\tconst { $from, $to } = tr.selection;\n\tconst range = $from.blockRange($to)\n\tconst wrapping = range && (MilkdownLoader.getSync()).prose.transform.findWrapping(range, nodeType, attrs)\n\tif (!wrapping) return null\n\treturn tr.wrap(range, wrapping)\n}\n\nexport function addBlockType(\n\ttr: Transaction,\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n) {\n\tconst node = nodeType.createAndFill(attrs)\n\tif (!node) return null\n\treturn tr.replaceSelectionWith(node)\n}\n\nexport function clearContentAndSetBlockType(\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n): Command {\n\treturn (state, dispatch) => {\n\t\tif (dispatch) {\n\t\t\tconst tr = setBlockType(clearRange(state.tr), nodeType, attrs)\n\t\t\tdispatch(tr.scrollIntoView())\n\t\t}\n\t\treturn true\n\t}\n}\n\nexport function clearContentAndWrapInBlockType(\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n): Command {\n\treturn (state, dispatch) => {\n\t\tconst tr = wrapInBlockType(clearRange(state.tr), nodeType, attrs)\n\t\tif (!tr) return false\n\t\tif (dispatch) dispatch(tr.scrollIntoView())\n\t\treturn true\n\t}\n}\n\n\nexport function clearContentAndAddBlockType(\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n): Command {\n\treturn (state, dispatch) => {\n\t\tconst tr = addBlockType(clearRange(state.tr), nodeType, attrs)\n\t\tif (!tr) return false;\n\t\tif (dispatch) dispatch(tr.scrollIntoView())\n\t\treturn true\n\t}\n}\n\nexport function isInCodeBlock(selection: Selection) {\n\tconst type = selection.$from.parent.type;\n\treturn type.name === 'code_block';\n}\n\nexport function isInList(selection: Selection) {\n\tconst type = selection.$from.node(selection.$from.depth - 1)?.type;\n\treturn type?.name === 'list_item';\n}"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/features/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Attrs, NodeType } from '@omegagrid/milkdown-kit/dist/prose/model'\nimport type { Command, Transaction, Selection } from \"@omegagrid/milkdown-kit/dist/prose/state\";\nimport { config, icon, IconName, IconPrefix } from \"@fortawesome/fontawesome-svg-core\";\nimport { MilkdownLoader } from \"../../loader\";\n\n// Milkdown's <Icon> component runs config-supplied icon HTML through DOMPurify,\n// which strips unknown custom elements like <og-icon>. Render the SVG directly instead.\nexport function iconSvg(name: string, size: string = '1em'): string {\n\tconst html = icon(\n\t\t{ prefix: config.styleDefault as IconPrefix, iconName: name as IconName },\n\t)?.html?.[0];\n\tif (!html) return '';\n\tconst style = `box-sizing:content-box;display:inline-block;overflow:visible;vertical-align:-0.125em;width:${size};height:${size}`;\n\treturn html.replace(/<svg\\b/, `<svg style=\"${style}\"`);\n}\n\nexport function clearRange(tr: Transaction) {\n\tconst { $from, $to } = tr.selection;\n\tconst from = $from.pos - $from.node().content.size;\n\tif (from >= 0) tr = tr.deleteRange(from, $to.pos);\n\treturn tr\n}\n\nexport function setBlockType(\n\ttr: Transaction,\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n) {\n\tconst { from, to } = tr.selection\n\treturn tr.setBlockType(from, to, nodeType, attrs)\n}\n\nexport function wrapInBlockType(\n\ttr: Transaction,\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n) {\n\tconst { $from, $to } = tr.selection;\n\tconst range = $from.blockRange($to)\n\tconst wrapping = range && (MilkdownLoader.getSync()).prose.transform.findWrapping(range, nodeType, attrs)\n\tif (!wrapping) return null\n\treturn tr.wrap(range, wrapping)\n}\n\nexport function addBlockType(\n\ttr: Transaction,\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n) {\n\tconst node = nodeType.createAndFill(attrs)\n\tif (!node) return null\n\treturn tr.replaceSelectionWith(node)\n}\n\nexport function clearContentAndSetBlockType(\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n): Command {\n\treturn (state, dispatch) => {\n\t\tif (dispatch) {\n\t\t\tconst tr = setBlockType(clearRange(state.tr), nodeType, attrs)\n\t\t\tdispatch(tr.scrollIntoView())\n\t\t}\n\t\treturn true\n\t}\n}\n\nexport function clearContentAndWrapInBlockType(\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n): Command {\n\treturn (state, dispatch) => {\n\t\tconst tr = wrapInBlockType(clearRange(state.tr), nodeType, attrs)\n\t\tif (!tr) return false\n\t\tif (dispatch) dispatch(tr.scrollIntoView())\n\t\treturn true\n\t}\n}\n\n\nexport function clearContentAndAddBlockType(\n\tnodeType: NodeType,\n\tattrs: Attrs | null = null\n): Command {\n\treturn (state, dispatch) => {\n\t\tconst tr = addBlockType(clearRange(state.tr), nodeType, attrs)\n\t\tif (!tr) return false;\n\t\tif (dispatch) dispatch(tr.scrollIntoView())\n\t\treturn true\n\t}\n}\n\nexport function isInCodeBlock(selection: Selection) {\n\tconst type = selection.$from.parent.type;\n\treturn type.name === 'code_block';\n}\n\nexport function isInList(selection: Selection) {\n\tconst type = selection.$from.node(selection.$from.depth - 1)?.type;\n\treturn type?.name === 'list_item';\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownEditor.style.d.ts","sourceRoot":"","sources":["../../src/components/markdownEditor.style.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"markdownEditor.style.d.ts","sourceRoot":"","sources":["../../src/components/markdownEditor.style.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,KAAK,yBA6OjB,CAAC"}
|
|
@@ -136,18 +136,26 @@ import{css}from"lit";export const style=css`
|
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
h1 {
|
|
139
|
-
font-size:
|
|
139
|
+
font-size: 2em;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
h2 {
|
|
143
|
-
font-size: 1.
|
|
143
|
+
font-size: 1.7em;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
h3 {
|
|
147
|
-
font-size: 1.
|
|
147
|
+
font-size: 1.4em;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
h4 {
|
|
151
|
+
font-size: 1.2em;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
h5 {
|
|
155
|
+
font-size: 1.1em;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
h6 {
|
|
151
159
|
font-size: 1em;
|
|
152
160
|
}
|
|
153
161
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownEditor.style.js","sourceRoot":"","sources":["../../src/components/markdownEditor.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,0BAA0B;AAC1B,iCAAiC;AACjC,8BAA8B;AAC9B,4BAA4B;AAC5B,2BAA2B;AAC3B,wBAAwB;AACxB,+BAA+B;AAC/B,+BAA+B;AAC/B,uBAAuB;AACvB,yBAAyB;AACzB,sBAAsB;AACtB,8BAA8B;AAC9B,2BAA2B;AAC3B,2BAA2B;AAC3B,8BAA8B;AAC9B,2BAA2B;AAC3B,gCAAgC;AAChC,6BAA6B;AAG7B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"markdownEditor.style.js","sourceRoot":"","sources":["../../src/components/markdownEditor.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,0BAA0B;AAC1B,iCAAiC;AACjC,8BAA8B;AAC9B,4BAA4B;AAC5B,2BAA2B;AAC3B,wBAAwB;AACxB,+BAA+B;AAC/B,+BAA+B;AAC/B,uBAAuB;AACvB,yBAAyB;AACzB,sBAAsB;AACtB,8BAA8B;AAC9B,2BAA2B;AAC3B,2BAA2B;AAC3B,8BAA8B;AAC9B,2BAA2B;AAC3B,gCAAgC;AAChC,6BAA6B;AAG7B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6OvB,CAAC","sourcesContent":["import { css } from \"lit\";\n\n// --markdown-font-default\n// --markdown-color-on-background\n// --markdown-color-background\n// --markdown-color-selected\n// --markdown-color-primary\n// --markdown-font-title\n// --markdown-color-inline-code\n// --markdown-color-inline-area\n// --markdown-font-code\n// --markdown-color-hover\n// --markdown-shadow-1\n// --markdown-color-on-surface\n// --markdown-color-surface\n// --markdown-color-outline\n// --markdown-color-on-inverse\n// --markdown-color-inverse\n// --markdown-color-on-secondary\n// --markdown-color-secondary\n\n\nexport const style = css`\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\t\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tcolor: var(--og-text-color);\n\t\tfont-size: var(--og-font-size);\n\t\tuser-select: text;\n\t\tbackground-color: var(--og-background-color);\n\n\t\t--markdown-color-selected: var(--og-accent-color);\n\t\t--markdown-color-outline: var(--og-accent-color);\n\t\t--markdown-color-surface: var(--og-background-color);\n\t}\n\n\t:host([readonly]) og-markdown-block-edit, \n\t:host([readonly]) .operation-item \n\t:host([readonly]) .image-resize-handle {\n\t\tdisplay: none !important;\n\t}\n\n\tog-code-block, og-code-view {\n\t\tborder: 1px solid var(--og-accent-color);\n\t\twhite-space: normal;\n\t}\n\n\t.md-editor-drop-cursor {\n\t\tbackground-color: var(--og-accent-color) !important;\n\t}\n\n\t#container {\n\t\theight: 100%;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\n\t.milkdown {\n\t\theight: 100%;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tflex-direction: row;\n\t}\n\n\tog-markdown-html-block {\n\t\tborder-width: 0;\n\t}\n\n\tdiv[contenteditable=\"true\"] og-markdown-html-block {\n\t\tborder-width: 1px;\n\t}\n\n\t:host([contentAlignment='center']) .ProseMirror {\n\t\tmargin: 0 auto;\n\t}\n\n\t:host([contentAlignment='left']) .ProseMirror {\n\t\tmargin: 0 auto 0 0;\n\t}\n\n\t:host([contentAlignment='right']) .ProseMirror {\n\t\tmargin: 0 0 0 auto;\n\t}\n\n\tbutton, input {\n\t\tborder: none;\n\t\tbackground: none;\n\t\tbox-shadow: none;\n\t}\n\t\n\tbutton:focus, input:focus {\n\t\toutline: none;\n\t}\n\t\t\n\t:focus-visible {\n\t\toutline: none;\n\t}\n\t\t\t\n\t.ProseMirror-focused {\n\t\toutline: none;\n\t}\n\t\t\n\t.ProseMirror {\n\t\tpadding: 0px 60px 60px;\n\t}\n\t\t\n\t.ProseMirror *::selection {\n\t\tbackground: var(--markdown-color-selected);\n\t\tcolor: var(--og-text-color-2);\n\t}\n\t\t\n\tli.ProseMirror-selectednode {\n\t\tbackground: var(--markdown-color-selected);\n\t\toutline: none;\n\t}\n\t\n\tli.ProseMirror-selectednode::selection {\n\t\tbackground: transparent;\n\t}\n\t\n\tli.ProseMirror-selectednode:after {\n\t\tall: unset;\n\t}\n\t\t\n\t.ProseMirror-selectednode {\n\t\tbackground: var(--markdown-color-selected);\n\t\toutline: none;\n\t\tbackground: color-mix(in srgb, var(--markdown-color-selected), transparent 60%);\n\t}\n\t\n\t.ProseMirror-selectednode::selection {\n\t\tbackground: transparent;\n\t}\n\t\t\n\t.ProseMirror[data-dragging='true'] .ProseMirror-selectednode,\n\t.ProseMirror[data-dragging='true']::selection,\n\t.ProseMirror[data-dragging='true'] *::selection {\n\t\tbackground: transparent;\n\t}\n\t\t\n\t.ProseMirror[data-dragging='true'] input::selection {\n\t\tbackground: var(--markdown-color-selected);\n\t}\n\t\t\n\timg {\n\t\tvertical-align: bottom;\n\t\tmax-width: 100%;\n\t}\n\t\t\n\timg.ProseMirror-selectednode {\n\t\tbackground: none;\n\t\toutline: 2px solid var(--markdown-color-primary);\n\t}\n\t\t\n\th1 {\n\t\tfont-size: 2em;\n\t}\n\n\th2 {\n\t\tfont-size: 1.7em;\n\t}\n\n\th3 {\n\t\tfont-size: 1.4em;\n\t}\n\n\th4 {\n\t\tfont-size: 1.2em;\n\t}\n\n\th5 {\n\t\tfont-size: 1.1em;\n\t}\n\n\th6 {\n\t\tfont-size: 1em;\n\t}\n\n\ta {\n\t\tcolor: #688DC8;\n\t\ttext-decoration: underline;\n\t}\n\t\t\n\tp {\n\t\tfont-size: var(--og-font-size);\n\t\tmargin-block-start: 0.2em;\n\t\tmargin-block-end: 0.2em;\n\t\tpadding: 0px 0;\n\t}\n\n\tcode {\n\t\tpadding: 2px 4px;\n\t\tfont-size: 90%;\n\t\tcolor: #c7254e;\n\t\tbackground-color: var(--og-background-color-3);\n\t\tborder-radius: 0;\n\t}\n\t\t\n\tpre {\n\t\tbackground: color-mix(in srgb, var(--markdown-color-inline-area), transparent 40%);\n\t\tpadding: 10px;\n\t\tborder-radius: 4px;\n\t}\n\t\n\tpre code {\n\t\tpadding: 0;\n\t\tbackground: transparent;\n\t}\n\t\t\n\tblockquote {\n\t\tposition: relative;\n\t\tpadding-left: 40px;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t\tbox-sizing: content-box;\n\t\tmargin: 4px 0;\n\t}\n\t\n\tblockquote::before {\n\t\tcontent: '';\n\t\twidth: 4px;\n\t\tleft: 0;\n\t\ttop: 4px;\n\t\tbottom: 4px;\n\t\tposition: absolute;\n\t\tbackground: var(--markdown-color-selected);\n\t\tborder-radius: 100px;\n\t}\n\t\t\n\thr {\n\t\tborder: none;\n\t\tbackground-color: color-mix(in srgb, var(--markdown-color-outline), transparent 80%);\n\t\tbackground-clip: content-box;\n\t\tpadding: 6px 0;\n\t\theight: 13px;\n\t\tposition: relative;\n\t}\n\t\n\thr.ProseMirror-selectednode {\n\t\toutline: none;\n\t\tbackground-color: color-mix(in srgb, var(--markdown-color-outline), transparent 20%);\n\t\tbackground-clip: content-box;\n\t}\n\t\n\thr.ProseMirror-selectednode::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\tbackground-color: color-mix(in srgb, var(--markdown-color-outline), transparent 80%);\n\t\tpointer-events: none;\n\t}\n`;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownView.style.d.ts","sourceRoot":"","sources":["../../src/components/markdownView.style.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"markdownView.style.d.ts","sourceRoot":"","sources":["../../src/components/markdownView.style.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,yBAmDjB,CAAC"}
|
|
@@ -16,18 +16,26 @@ import{css}from"lit";export const style=css`
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
h1 {
|
|
19
|
-
font-size:
|
|
19
|
+
font-size: 2em;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
h2 {
|
|
23
|
-
font-size: 1.
|
|
23
|
+
font-size: 1.7em;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
h3 {
|
|
27
|
-
font-size: 1.
|
|
27
|
+
font-size: 1.4em;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
h4 {
|
|
31
|
+
font-size: 1.2em;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
h5 {
|
|
35
|
+
font-size: 1.1em;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
h6 {
|
|
31
39
|
font-size: 1em;
|
|
32
40
|
}
|
|
33
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownView.style.js","sourceRoot":"","sources":["../../src/components/markdownView.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"markdownView.style.js","sourceRoot":"","sources":["../../src/components/markdownView.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDvB,CAAC","sourcesContent":["import { css } from \"lit\";\n\nexport const style = css`\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\t\n\t:host {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\tuser-select: text;\n\t\tcolor: var(--og-text-color);\n\t\tfont-size: var(--og-font-size);\n\t}\n\n\tog-container {\n\t\theight: 100%;\n\t}\n\n\th1 {\n\t\tfont-size: 2em;\n\t}\n\n\th2 {\n\t\tfont-size: 1.7em;\n\t}\n\n\th3 {\n\t\tfont-size: 1.4em;\n\t}\n\n\th4 {\n\t\tfont-size: 1.2em;\n\t}\n\n\th5 {\n\t\tfont-size: 1.1em;\n\t}\n\n\th6 {\n\t\tfont-size: 1em;\n\t}\n\n\ta {\n\t\tcolor: #688DC8;\n\t}\n\n\tog-highlighter {\n\t\tborder: 1px solid var(--og-border-color);\n\t}\n\n\n\n`;"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../../src/components/styles/callout.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,yBAuDjB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import{css}from"lit";export const style=css`
|
|
2
|
+
.og-callout {
|
|
3
|
+
border-left: 4px solid var(--og-callout-color, #4a9eff);
|
|
4
|
+
background-color: var(--og-callout-bg, rgba(74, 158, 255, 0.08));
|
|
5
|
+
padding: 8px 12px;
|
|
6
|
+
margin: 8px 0;
|
|
7
|
+
border-radius: 0 4px 4px 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.og-callout-header {
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
gap: 6px;
|
|
14
|
+
font-weight: 600;
|
|
15
|
+
color: var(--og-callout-color, #4a9eff);
|
|
16
|
+
margin-bottom: 4px;
|
|
17
|
+
user-select: none;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.og-callout-icon {
|
|
21
|
+
display: inline-flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.og-callout-icon svg {
|
|
26
|
+
width: 1em;
|
|
27
|
+
height: 1em;
|
|
28
|
+
fill: currentColor;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.og-callout-select {
|
|
32
|
+
border: none;
|
|
33
|
+
background: transparent;
|
|
34
|
+
color: inherit;
|
|
35
|
+
font-weight: 600;
|
|
36
|
+
font-size: 0.9em;
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
outline: none;
|
|
39
|
+
padding: 0 2px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.og-callout-select option {
|
|
43
|
+
color: var(--og-text-color, inherit);
|
|
44
|
+
background-color: var(--og-background-color);
|
|
45
|
+
font-weight: normal;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.og-callout-body > :first-child { margin-top: 0; }
|
|
49
|
+
.og-callout-body > :last-child { margin-bottom: 0; }
|
|
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); }
|
|
56
|
+
`;
|
|
@@ -0,0 +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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":";AAWA,wBAWE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{style as blockEditStyle}from"./block-edit";import{style as cursorStyle}from"./cursor";import{style as imageStyle}from"./image-block";import{style as linkTooltipStyle}from"./link-tooltip";import{style as listItemStyle}from"./list-item";import{style as placeholderStyle}from"./placeholder";import{style as prosemirrorStyle}from"./prosemirror";import{style as tableStyle}from"./table";import{style as emojiStyle}from"./emoji";export default[blockEditStyle,cursorStyle,imageStyle,linkTooltipStyle,listItemStyle,placeholderStyle,prosemirrorStyle,tableStyle,emojiStyle];
|
|
1
|
+
import{style as blockEditStyle}from"./block-edit";import{style as cursorStyle}from"./cursor";import{style as imageStyle}from"./image-block";import{style as linkTooltipStyle}from"./link-tooltip";import{style as listItemStyle}from"./list-item";import{style as placeholderStyle}from"./placeholder";import{style as prosemirrorStyle}from"./prosemirror";import{style as tableStyle}from"./table";import{style as emojiStyle}from"./emoji";import{style as calloutStyle}from"./callout";export default[blockEditStyle,cursorStyle,imageStyle,linkTooltipStyle,listItemStyle,placeholderStyle,prosemirrorStyle,tableStyle,emojiStyle,calloutStyle];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/styles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAElD,eAAe;IACd,cAAc;IACd,WAAW;IACX,UAAU;IACV,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,YAAY;CACZ,CAAC","sourcesContent":["import { style as blockEditStyle } from './block-edit';\nimport { style as cursorStyle } from './cursor';\nimport { style as imageStyle } from './image-block';\nimport { style as linkTooltipStyle } from './link-tooltip';\nimport { style as listItemStyle } from './list-item';\nimport { style as placeholderStyle } from './placeholder';\nimport { style as prosemirrorStyle } from './prosemirror';\nimport { style as tableStyle } from './table';\nimport { style as emojiStyle } from './emoji';\nimport { style as calloutStyle } from './callout';\n\nexport default [\n\tblockEditStyle,\n\tcursorStyle,\n\timageStyle,\n\tlinkTooltipStyle,\n\tlistItemStyle,\n\tplaceholderStyle,\n\tprosemirrorStyle,\n\ttableStyle,\n\temojiStyle,\n\tcalloutStyle\n];\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/markdown",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.61",
|
|
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.
|
|
32
|
-
"@omegagrid/core": "^0.10.
|
|
33
|
-
"@omegagrid/localize": "^0.10.
|
|
34
|
-
"@omegagrid/milkdown-kit": "^0.10.
|
|
35
|
-
"@omegagrid/tabs": "^0.10.
|
|
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",
|
|
36
36
|
"lit": "^3.1.1",
|
|
37
37
|
"markdown-it": "^14.1.0",
|
|
38
38
|
"ts-debounce": "^4.0.0"
|