@limetech/lime-elements 37.25.0 → 37.26.1
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/CHANGELOG.md +16 -0
- package/dist/cjs/{dom-ee8ee17d.js → debounce-2e5f4b7e.js} +1 -31
- package/dist/cjs/debounce-2e5f4b7e.js.map +1 -0
- package/dist/cjs/dom-81eaa633.js +34 -0
- package/dist/cjs/dom-81eaa633.js.map +1 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/{limel-action-bar-item_2.cjs.entry.js → limel-action-bar_3.cjs.entry.js} +106 -1
- package/dist/cjs/limel-action-bar_3.cjs.entry.js.map +1 -0
- package/dist/cjs/{limel-breadcrumbs_3.cjs.entry.js → limel-breadcrumbs_4.cjs.entry.js} +519 -20
- package/dist/cjs/limel-breadcrumbs_4.cjs.entry.js.map +1 -0
- package/dist/cjs/{limel-input-field_3.cjs.entry.js → limel-dynamic-label_4.cjs.entry.js} +75 -494
- package/dist/cjs/limel-dynamic-label_4.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-picker.cjs.entry.js +3 -2
- package/dist/cjs/limel-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +153 -116
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-text-editor.cjs.entry.js +4 -1
- package/dist/cjs/limel-text-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-commands.js +77 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-commands.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js +53 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +34 -9
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
- package/dist/collection/components/text-editor/text-editor.css +88 -0
- package/dist/collection/components/text-editor/text-editor.js +3 -0
- package/dist/collection/components/text-editor/text-editor.js.map +1 -1
- package/dist/esm/{dom-ae531ebc.js → debounce-9a05c91c.js} +2 -31
- package/dist/esm/debounce-9a05c91c.js.map +1 -0
- package/dist/esm/dom-0b0170a0.js +32 -0
- package/dist/esm/dom-0b0170a0.js.map +1 -0
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/{limel-action-bar-item_2.entry.js → limel-action-bar_3.entry.js} +107 -3
- package/dist/esm/limel-action-bar_3.entry.js.map +1 -0
- package/dist/esm/{limel-breadcrumbs_3.entry.js → limel-breadcrumbs_4.entry.js} +501 -3
- package/dist/esm/limel-breadcrumbs_4.entry.js.map +1 -0
- package/dist/esm/{limel-input-field_3.entry.js → limel-dynamic-label_4.entry.js} +70 -490
- package/dist/esm/limel-dynamic-label_4.entry.js.map +1 -0
- package/dist/esm/limel-picker.entry.js +2 -1
- package/dist/esm/limel-picker.entry.js.map +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +153 -116
- package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
- package/dist/esm/limel-text-editor.entry.js +4 -1
- package/dist/esm/limel-text-editor.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js.map +1 -1
- package/dist/lime-elements/p-18c97232.js +2 -0
- package/dist/lime-elements/p-18c97232.js.map +1 -0
- package/dist/lime-elements/p-2bff59a1.entry.js +2 -0
- package/dist/lime-elements/p-2bff59a1.entry.js.map +1 -0
- package/dist/lime-elements/p-3ab8d3e9.entry.js +68 -0
- package/dist/lime-elements/p-3ab8d3e9.entry.js.map +1 -0
- package/dist/lime-elements/p-5e7b7b03.js +2 -0
- package/dist/lime-elements/p-5e7b7b03.js.map +1 -0
- package/dist/lime-elements/p-5fcdb9d2.entry.js +2 -0
- package/dist/lime-elements/{p-3e90be0a.entry.js.map → p-5fcdb9d2.entry.js.map} +1 -1
- package/dist/lime-elements/p-6ebde4a2.entry.js +2 -0
- package/dist/lime-elements/p-6ebde4a2.entry.js.map +1 -0
- package/dist/lime-elements/{p-60317f5c.entry.js → p-db7ce0f8.entry.js} +2 -2
- package/dist/lime-elements/p-db7ce0f8.entry.js.map +1 -0
- package/dist/lime-elements/p-e4424368.entry.js +2 -0
- package/dist/lime-elements/p-e4424368.entry.js.map +1 -0
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-commands.d.ts +12 -0
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-items.d.ts +4 -0
- package/dist/types/components/text-editor/prosemirror-adapter/prosemirror-adapter.d.ts +4 -1
- package/package.json +2 -2
- package/dist/cjs/dom-ee8ee17d.js.map +0 -1
- package/dist/cjs/limel-action-bar-item_2.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-action-bar.cjs.entry.js +0 -113
- package/dist/cjs/limel-action-bar.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-breadcrumbs_3.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-dynamic-label_2.cjs.entry.js +0 -91
- package/dist/cjs/limel-dynamic-label_2.cjs.entry.js.map +0 -1
- package/dist/cjs/limel-input-field_3.cjs.entry.js.map +0 -1
- package/dist/esm/dom-ae531ebc.js.map +0 -1
- package/dist/esm/limel-action-bar-item_2.entry.js.map +0 -1
- package/dist/esm/limel-action-bar.entry.js +0 -109
- package/dist/esm/limel-action-bar.entry.js.map +0 -1
- package/dist/esm/limel-breadcrumbs_3.entry.js.map +0 -1
- package/dist/esm/limel-dynamic-label_2.entry.js +0 -86
- package/dist/esm/limel-dynamic-label_2.entry.js.map +0 -1
- package/dist/esm/limel-input-field_3.entry.js.map +0 -1
- package/dist/lime-elements/p-3e90be0a.entry.js +0 -2
- package/dist/lime-elements/p-497a0b69.entry.js +0 -68
- package/dist/lime-elements/p-497a0b69.entry.js.map +0 -1
- package/dist/lime-elements/p-60317f5c.entry.js.map +0 -1
- package/dist/lime-elements/p-6eeb61e4.entry.js +0 -2
- package/dist/lime-elements/p-6eeb61e4.entry.js.map +0 -1
- package/dist/lime-elements/p-714d6937.js +0 -2
- package/dist/lime-elements/p-714d6937.js.map +0 -1
- package/dist/lime-elements/p-a2d19673.entry.js +0 -2
- package/dist/lime-elements/p-a2d19673.entry.js.map +0 -1
- package/dist/lime-elements/p-af964180.entry.js +0 -2
- package/dist/lime-elements/p-af964180.entry.js.map +0 -1
- package/dist/lime-elements/p-da62cd3f.entry.js +0 -2
- package/dist/lime-elements/p-da62cd3f.entry.js.map +0 -1
- package/dist/lime-elements/p-f1e1f867.entry.js +0 -2
- package/dist/lime-elements/p-f1e1f867.entry.js.map +0 -1
|
@@ -15909,120 +15909,133 @@ function exampleSetup(options) {
|
|
|
15909
15909
|
}));
|
|
15910
15910
|
}
|
|
15911
15911
|
|
|
15912
|
-
|
|
15913
|
-
|
|
15914
|
-
|
|
15915
|
-
|
|
15916
|
-
|
|
15917
|
-
|
|
15918
|
-
|
|
15919
|
-
|
|
15920
|
-
|
|
15921
|
-
|
|
15922
|
-
|
|
15923
|
-
|
|
15924
|
-
|
|
15925
|
-
|
|
15926
|
-
|
|
15927
|
-
|
|
15928
|
-
|
|
15929
|
-
|
|
15930
|
-
|
|
15931
|
-
|
|
15932
|
-
|
|
15933
|
-
|
|
15934
|
-
|
|
15935
|
-
|
|
15936
|
-
|
|
15937
|
-
|
|
15938
|
-
|
|
15939
|
-
|
|
15940
|
-
|
|
15941
|
-
|
|
15942
|
-
|
|
15943
|
-
|
|
15944
|
-
|
|
15945
|
-
|
|
15946
|
-
|
|
15947
|
-
|
|
15948
|
-
|
|
15949
|
-
|
|
15950
|
-
|
|
15951
|
-
const allItems = {
|
|
15952
|
-
strong: 'Toggle strong style',
|
|
15953
|
-
emphasis: 'Toggle emphasis',
|
|
15954
|
-
code: 'Toggle code font',
|
|
15955
|
-
link: 'Add or remove link',
|
|
15956
|
-
'horizontal rule': 'hr',
|
|
15957
|
-
paragraph: 'Change to paragraph',
|
|
15958
|
-
'code block': 'Change to code block',
|
|
15959
|
-
'heading 1': 'Change to heading 1',
|
|
15960
|
-
'heading 2': 'Change to heading 2',
|
|
15961
|
-
'heading 3': 'Change to heading 3',
|
|
15962
|
-
'heading 4': 'Change to heading 4',
|
|
15963
|
-
'heading 5': 'Change to heading 5',
|
|
15964
|
-
'heading 6': 'Change to heading 6',
|
|
15965
|
-
undo: 'Undo last change',
|
|
15966
|
-
redo: 'Redo last undone change',
|
|
15967
|
-
'bullet list': 'Wrap in bullet list',
|
|
15968
|
-
'ordered list': 'Wrap in ordered list',
|
|
15969
|
-
'block quote': 'Wrap in block quote',
|
|
15970
|
-
'join above': 'Join with above block',
|
|
15971
|
-
'lift out': 'Lift out of enclosing block',
|
|
15972
|
-
};
|
|
15973
|
-
const defaultItems = [
|
|
15974
|
-
'strong',
|
|
15975
|
-
'emphasis',
|
|
15976
|
-
'link',
|
|
15977
|
-
'heading 1',
|
|
15978
|
-
'heading 2',
|
|
15979
|
-
'heading 3',
|
|
15980
|
-
'heading 4',
|
|
15981
|
-
'heading 5',
|
|
15982
|
-
'heading 6',
|
|
15983
|
-
'block quote',
|
|
15984
|
-
'bullet list',
|
|
15985
|
-
'ordered list',
|
|
15986
|
-
];
|
|
15987
|
-
/**
|
|
15988
|
-
* Filters the full menu recursively based on the items provided
|
|
15989
|
-
*
|
|
15990
|
-
* @param menu - The menu to filter
|
|
15991
|
-
* @param items - The menu items to display. If undefined, all items will be displayed
|
|
15992
|
-
* @returns The filtered menu
|
|
15993
|
-
*/
|
|
15994
|
-
const getFilteredMenu = (menu, items) => {
|
|
15995
|
-
let menuItems = defaultItems.map((item) => allItems[item]);
|
|
15996
|
-
if (items !== undefined) {
|
|
15997
|
-
menuItems = menuItems.concat(items.map((item) => allItems[item]));
|
|
15912
|
+
class MenuCommandFactory {
|
|
15913
|
+
constructor(schema) {
|
|
15914
|
+
this.markNames = {
|
|
15915
|
+
bold: 'strong',
|
|
15916
|
+
italic: 'em',
|
|
15917
|
+
underline: 'underline',
|
|
15918
|
+
blockquote: 'blockquote',
|
|
15919
|
+
headerlevel1: 'headerlevel1',
|
|
15920
|
+
headerlevel2: 'headerlevel2',
|
|
15921
|
+
headerlevel3: 'headerlevel3',
|
|
15922
|
+
addorremovelink: 'link',
|
|
15923
|
+
numberedlist: 'ordered_list',
|
|
15924
|
+
list: 'bullet_list',
|
|
15925
|
+
};
|
|
15926
|
+
this.schema = schema;
|
|
15927
|
+
}
|
|
15928
|
+
createCommand(mark) {
|
|
15929
|
+
if (this.markNames[mark]) {
|
|
15930
|
+
mark = this.markNames[mark];
|
|
15931
|
+
}
|
|
15932
|
+
switch (mark) {
|
|
15933
|
+
case 'strong':
|
|
15934
|
+
case 'em':
|
|
15935
|
+
case 'underline':
|
|
15936
|
+
return this.createToggleMarkCommand(mark);
|
|
15937
|
+
case 'paragraph':
|
|
15938
|
+
return this.createSetNodeTypeCommand(mark);
|
|
15939
|
+
case 'headerlevel1':
|
|
15940
|
+
case 'headerlevel2':
|
|
15941
|
+
case 'headerlevel3':
|
|
15942
|
+
return this.createSetNodeTypeCommand('heading', parseInt(mark[mark.length - 1], 10));
|
|
15943
|
+
case 'blockquote':
|
|
15944
|
+
return this.createWrapInCommand(mark);
|
|
15945
|
+
case 'ordered_list':
|
|
15946
|
+
case 'bullet_list':
|
|
15947
|
+
return this.createListCommand(mark);
|
|
15948
|
+
default:
|
|
15949
|
+
throw new Error(`The Mark "${mark}" is not supported`);
|
|
15950
|
+
}
|
|
15998
15951
|
}
|
|
15999
|
-
|
|
16000
|
-
|
|
16001
|
-
if (
|
|
16002
|
-
|
|
15952
|
+
createToggleMarkCommand(markName) {
|
|
15953
|
+
const markType = this.schema.marks[markName];
|
|
15954
|
+
if (!markType) {
|
|
15955
|
+
throw new Error(`Mark "${markName}" not found in schema`);
|
|
16003
15956
|
}
|
|
16004
|
-
|
|
16005
|
-
|
|
15957
|
+
return toggleMark(markType);
|
|
15958
|
+
}
|
|
15959
|
+
createSetNodeTypeCommand(nodeType, level) {
|
|
15960
|
+
const type = this.schema.nodes[nodeType];
|
|
15961
|
+
if (!type) {
|
|
15962
|
+
throw new Error(`Node type "${nodeType}" not found in schema`);
|
|
15963
|
+
}
|
|
15964
|
+
if (nodeType === 'heading' && level) {
|
|
15965
|
+
return setBlockType(type, { level: level });
|
|
15966
|
+
}
|
|
15967
|
+
else {
|
|
15968
|
+
return setBlockType(type);
|
|
16006
15969
|
}
|
|
16007
|
-
return false;
|
|
16008
|
-
})
|
|
16009
|
-
.filter(Boolean)
|
|
16010
|
-
.map(createFilteredDropdown(items));
|
|
16011
|
-
};
|
|
16012
|
-
const createFilteredDropdown = (items) => (item) => {
|
|
16013
|
-
if (isDropdown(item)) {
|
|
16014
|
-
return new Dropdown(getFilteredMenu(item.content, items), {
|
|
16015
|
-
label: item.label,
|
|
16016
|
-
});
|
|
16017
15970
|
}
|
|
16018
|
-
|
|
16019
|
-
|
|
16020
|
-
|
|
16021
|
-
|
|
16022
|
-
}
|
|
16023
|
-
|
|
16024
|
-
|
|
16025
|
-
|
|
15971
|
+
createWrapInCommand(nodeType) {
|
|
15972
|
+
const type = this.schema.nodes[nodeType];
|
|
15973
|
+
if (!type) {
|
|
15974
|
+
throw new Error(`Node type "${nodeType}" not found in schema`);
|
|
15975
|
+
}
|
|
15976
|
+
return wrapIn(type);
|
|
15977
|
+
}
|
|
15978
|
+
createListCommand(listType) {
|
|
15979
|
+
const type = this.schema.nodes[listType];
|
|
15980
|
+
if (!type) {
|
|
15981
|
+
throw new Error(`List type "${listType}" not found in schema`);
|
|
15982
|
+
}
|
|
15983
|
+
return wrapInList(type);
|
|
15984
|
+
}
|
|
15985
|
+
}
|
|
15986
|
+
|
|
15987
|
+
const textEditorMenuItems = [
|
|
15988
|
+
{
|
|
15989
|
+
text: 'Bold',
|
|
15990
|
+
commandText: '⌘ B',
|
|
15991
|
+
icon: 'bold',
|
|
15992
|
+
iconOnly: true,
|
|
15993
|
+
},
|
|
15994
|
+
{
|
|
15995
|
+
text: 'Italic',
|
|
15996
|
+
commandText: '⌘ I',
|
|
15997
|
+
icon: 'italic',
|
|
15998
|
+
iconOnly: true,
|
|
15999
|
+
},
|
|
16000
|
+
{
|
|
16001
|
+
text: 'Add or remove link',
|
|
16002
|
+
commandText: '⌘ shift U',
|
|
16003
|
+
icon: 'link',
|
|
16004
|
+
iconOnly: true,
|
|
16005
|
+
},
|
|
16006
|
+
{ separator: true },
|
|
16007
|
+
{
|
|
16008
|
+
text: 'Header Level 1',
|
|
16009
|
+
icon: 'header_1',
|
|
16010
|
+
iconOnly: true,
|
|
16011
|
+
},
|
|
16012
|
+
{
|
|
16013
|
+
text: 'Header Level 2',
|
|
16014
|
+
icon: 'header_2',
|
|
16015
|
+
iconOnly: true,
|
|
16016
|
+
},
|
|
16017
|
+
{
|
|
16018
|
+
text: 'Header Level 3',
|
|
16019
|
+
icon: 'header_3',
|
|
16020
|
+
iconOnly: true,
|
|
16021
|
+
},
|
|
16022
|
+
{ separator: true },
|
|
16023
|
+
{
|
|
16024
|
+
text: 'List',
|
|
16025
|
+
icon: 'list',
|
|
16026
|
+
iconOnly: true,
|
|
16027
|
+
},
|
|
16028
|
+
{
|
|
16029
|
+
text: 'Numbered list',
|
|
16030
|
+
icon: 'numbered_list',
|
|
16031
|
+
iconOnly: true,
|
|
16032
|
+
},
|
|
16033
|
+
{
|
|
16034
|
+
text: 'Blockquote',
|
|
16035
|
+
icon: 'quote_right',
|
|
16036
|
+
iconOnly: true,
|
|
16037
|
+
},
|
|
16038
|
+
];
|
|
16026
16039
|
|
|
16027
16040
|
const prosemirrorAdapterCss = "@charset \"UTF-8\";:host(limel-prosemirror-adapter){isolation:isolate;display:block}*{box-sizing:border-box}.ProseMirror-menubar-wrapper{display:grid;grid-template-rows:auto 1fr}.ProseMirror-textblock-dropdown{min-width:3em}.ProseMirror-tooltip .ProseMirror-menu{width:-webkit-fit-content;width:fit-content;white-space:pre}.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:\"liga\" 0;padding-top:0.75rem}.ProseMirror [draggable][contenteditable=false]{user-select:text}.ProseMirror:focus-visible{outline:none}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-selectednode{outline:0.125rem solid rgb(var(--color-sky-light))}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-2rem;right:-0.125rem;top:-0.125rem;bottom:-0.125rem;border:0.125rem solid rgb(var(--color-sky-light));pointer-events:none}img.ProseMirror-separator{display:inline !important;border:none !important;margin:0 !important}:host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}div#editor .ProseMirror-menubar{position:sticky !important;z-index:1;top:0;margin-left:-0.75rem;margin-right:-0.75rem;background-color:rgba(var(--contrast-200), 0.5);backdrop-filter:blur(0.25rem);-webkit-backdrop-filter:blur(0.25rem)}div#editor .ProseMirror-menubar[style*=\"position: fixed\"]{box-shadow:0 0.25rem 0.5rem -0.5rem rgb(var(--color-black), 0.8)}div#editor .ProseMirror-menubar-spacer{display:none}.ProseMirror-menubar{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:0.25rem;align-items:center;padding:0.125rem;border-top-left-radius:0.5rem;border-top-right-radius:0.5rem}.ProseMirror-menuitem{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:center;white-space:nowrap;line-height:1;height:1.5rem;min-width:1.5rem;border-radius:0.25rem;color:rgb(var(--contrast-1100));font-size:0.8125rem}.ProseMirror-menuitem:not(:has(.ProseMirror-menu-disabled)){transition:color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;cursor:pointer;color:var(--mdc-theme-on-surface);background-color:transparent}.ProseMirror-menuitem:not(:has(.ProseMirror-menu-disabled)):hover{color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}.ProseMirror-menuitem:not(:has(.ProseMirror-menu-disabled)):active{box-shadow:var(--button-shadow-pressed);transform:translate3d(0, 0.08rem, 0)}.ProseMirror-menuitem:has(.ProseMirror-menu-active){box-shadow:var(--button-shadow-inset);color:var(--mdc-theme-primary)}.ProseMirror-menuitem:has(.ProseMirror-menu-active) svg{color:var(--mdc-theme-primary)}.ProseMirror-menuitem:has(.ProseMirror-menu-dropdown-menu){box-shadow:var(--button-shadow-inset)}.ProseMirror-menuitem svg{fill:currentColor;height:1rem;color:rgb(var(--contrast-1100))}.ProseMirror-menuseparator{border-radius:1rem;background-color:rgb(var(--contrast-600));width:0.125rem;height:1rem}.ProseMirror-menu-dropdown{position:relative;display:flex;align-items:center;gap:0.5rem;padding:0 0.5rem}.ProseMirror-menu-dropdown:after{content:\"\";border-left:0.25rem solid transparent;border-right:0.25rem solid transparent;border-top:0.25rem solid currentColor}.ProseMirror-menu-dropdown-menu,.ProseMirror-menu-submenu{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.ProseMirror-menu-dropdown-menu{position:absolute;top:100%;background:rgb(var(--contrast-100));border-radius:0.25rem;padding:0.125rem}.ProseMirror-menu-submenu{position:absolute;background:rgb(var(--contrast-100));border-radius:0.25rem;padding:0.125rem;display:none;min-width:4em;left:100%;top:-0.75rem}.ProseMirror-menu-dropdown-item{transition:background-color 0.2s ease;cursor:pointer;border-radius:0.375rem;min-height:2.5rem;display:flex;align-items:center;width:100%}.ProseMirror-menu-dropdown-item>div{padding:0 1rem;width:100%}.ProseMirror-menu-dropdown-item:not(:has(.ProseMirror-menu-disabled)):hover{background-color:rgb(var(--contrast-300))}.ProseMirror-menu-submenu-wrap{position:relative;margin-right:-0.25rem}.ProseMirror-menu-submenu-wrap:hover .ProseMirror-menu-submenu{display:block}.ProseMirror-menu-submenu-label{position:relative;display:flex;align-items:center;justify-content:space-between;gap:0.5rem}.ProseMirror-menu-submenu-label:after{content:\"\";border-top:0.25rem solid transparent;border-bottom:0.25rem solid transparent;border-left:0.25rem solid currentColor}.ProseMirror-menu-disabled{opacity:0.3;cursor:default}.ProseMirror-menu-submenu-wrap-active .ProseMirror-menu-submenu{display:block}blockquote{position:relative;font-weight:100;font-size:0.875rem;max-width:100%;line-height:1.4;margin:0;padding:0.5rem 1.25rem;border-radius:0.05rem 0.75rem;background-color:rgb(var(--contrast-300))}blockquote:before,blockquote:after{position:absolute;font-size:2.75rem;opacity:0.4}blockquote:before{content:\"“\";left:0;top:-0.75rem}blockquote:after{content:\"”\";right:0;bottom:-2rem}:host(limel-markdown.truncate-paragraphs) p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}p,li{font-size:0.875rem;word-break:break-word;hyphens:auto;-webkit-hyphens:auto}a{word-break:break-all}p{margin-top:0;margin-bottom:0.5rem}p:only-child{margin-bottom:0}a{transition:color 0.2s ease;color:var(--markdown-hyperlink-color, rgb(var(--color-blue-dark)));text-decoration:none}a:hover{color:var(--markdown-hyperlink-color--hovered, rgb(var(--color-blue-default)))}hr{margin:1.75rem 0 2rem 0;border-width:0;border-top:1px solid rgb(var(--contrast-500))}dl{display:grid;grid-template-columns:1fr 2fr;grid-template-rows:1fr;margin-bottom:2rem;border:1px solid rgb(var(--contrast-400));border-radius:0.375rem;background-color:rgb(var(--contrast-200))}dl dt,dl dd{padding:0.375rem 0.5rem;font-size:0.875rem;margin:0}dl dt:nth-of-type(even),dl dd:nth-of-type(even){background-color:rgb(var(--contrast-300))}dl dt:first-child{border-top-left-radius:0.375rem}dl dt:last-child{border-bottom-left-radius:0.375rem}dl dd:first-child{border-top-right-radius:0.375rem}dl dd:last-child{border-bottom-right-radius:0.375rem}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}h4{font-size:1rem}h5{font-size:0.875rem}h6{font-size:0.75rem}h1,h2{margin-top:0.5rem;margin-bottom:0.5rem;letter-spacing:-0.03125rem;font-weight:500}h3,h4{margin-top:0.75rem;margin-bottom:0.25rem;font-weight:600}h5,h6{margin-top:0.5rem;margin-bottom:0.125rem;font-weight:600}h1,h2,h3,h4,h5,h6{word-break:break-word;hyphens:auto;-webkit-hyphens:auto}:not([contenteditable=true]) h1,:not([contenteditable=true]) h2,:not([contenteditable=true]) h3,:not([contenteditable=true]) h4,:not([contenteditable=true]) h5,:not([contenteditable=true]) h6{text-wrap:balance}[contenteditable=true] h1,[contenteditable=true] h2,[contenteditable=true] h3,[contenteditable=true] h4,[contenteditable=true] h5,[contenteditable=true] h6{text-wrap:initial}ul{list-style:none}ul li{position:relative;margin-left:0.75rem}ul li:before{content:\"\";position:absolute;left:-0.5rem;top:0.5rem;width:0.25rem;height:0.25rem;border-radius:50%;background-color:rgb(var(--contrast-700));display:block}ol{margin-top:0.25rem;padding-left:1rem}ul{margin-top:0.25rem;padding-left:0}ul ul,ul ol,ol ol,ol ul{margin-left:0}li{margin-bottom:0.25rem}code{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-size:0.8125rem;letter-spacing:-0.0125rem;color:rgb(var(--contrast-1300));-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;display:inline-block;border-radius:0.25rem;padding:0.03125rem 0.25rem;background-color:rgb(var(--contrast-600))}pre>code{display:block;margin:0.5rem 0;padding:0.5rem 0.75rem;overflow:auto;white-space:pre-wrap}:host(limel-markdown:not(.no-table-styles)) table{table-layout:auto;min-width:100%;border-collapse:collapse;border-spacing:0;background:transparent;margin:0.75rem 0;border:1px solid rgb(var(--contrast-400))}:host(limel-markdown:not(.no-table-styles)) th,:host(limel-markdown:not(.no-table-styles)) td{text-align:left;vertical-align:top;transition:background-color 0.2s ease;font-size:0.875rem}:host(limel-markdown:not(.no-table-styles)) td{padding:0.5rem 0.375rem 0.75rem 0.375rem}:host(limel-markdown:not(.no-table-styles)) tr th{background-color:rgb(var(--contrast-400));padding:0.25rem 0.375rem;font-weight:normal}:host(limel-markdown:not(.no-table-styles)) tr th:only-child{text-align:center}:host(limel-markdown:not(.no-table-styles)) tbody tr:nth-child(odd) td{background-color:rgb(var(--contrast-200))}:host(limel-markdown:not(.no-table-styles)) tbody tr:hover td{background-color:rgb(var(--contrast-300))}";
|
|
16028
16041
|
|
|
@@ -16038,27 +16051,37 @@ const ProsemirrorAdapter = class {
|
|
|
16038
16051
|
return this.view.dom.innerHTML;
|
|
16039
16052
|
}
|
|
16040
16053
|
};
|
|
16054
|
+
this.handleActionBarItem = (event) => {
|
|
16055
|
+
event.preventDefault();
|
|
16056
|
+
const { text } = event.detail;
|
|
16057
|
+
const mark = text.replace(/\s/g, '').toLowerCase();
|
|
16058
|
+
try {
|
|
16059
|
+
const command = this.menuCommandFactory.createCommand(mark);
|
|
16060
|
+
this.executeCommand(command);
|
|
16061
|
+
}
|
|
16062
|
+
catch (error) {
|
|
16063
|
+
throw new Error(`Error executing command: ${error}`);
|
|
16064
|
+
}
|
|
16065
|
+
};
|
|
16041
16066
|
this.value = undefined;
|
|
16042
16067
|
this.view = undefined;
|
|
16068
|
+
this.actionBarItems = [];
|
|
16043
16069
|
}
|
|
16044
|
-
componentWillLoad() { }
|
|
16045
16070
|
render() {
|
|
16046
|
-
return index.h("div", { id: "editor" });
|
|
16071
|
+
return (index.h("div", null, index.h("limel-action-bar", { accessibleLabel: "Toolbar", actions: this.actionBarItems, layout: "fullWidth", onItemSelected: this.handleActionBarItem }), index.h("div", { id: "editor" })));
|
|
16047
16072
|
}
|
|
16048
16073
|
componentDidLoad() {
|
|
16074
|
+
this.actionBarItems = textEditorMenuItems;
|
|
16049
16075
|
const mySchema = new Schema({
|
|
16050
16076
|
nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),
|
|
16051
16077
|
marks: schema.spec.marks,
|
|
16052
16078
|
});
|
|
16053
|
-
const menu = buildFullMenu(mySchema)
|
|
16054
|
-
.map((items) => getFilteredMenu(items, undefined))
|
|
16055
|
-
.filter((items) => items.length);
|
|
16056
16079
|
this.view = new EditorView(this.host.shadowRoot.querySelector('#editor'), {
|
|
16057
16080
|
state: EditorState.create({
|
|
16058
16081
|
doc: DOMParser.fromSchema(mySchema).parse(this.host.shadowRoot.querySelector('#editor')),
|
|
16059
16082
|
plugins: exampleSetup({
|
|
16060
16083
|
schema: mySchema,
|
|
16061
|
-
|
|
16084
|
+
menuBar: false,
|
|
16062
16085
|
}),
|
|
16063
16086
|
}),
|
|
16064
16087
|
dispatchTransaction: (transaction) => {
|
|
@@ -16067,10 +16090,24 @@ const ProsemirrorAdapter = class {
|
|
|
16067
16090
|
this.change.emit(this.getHTML());
|
|
16068
16091
|
},
|
|
16069
16092
|
});
|
|
16093
|
+
this.menuCommandFactory = new MenuCommandFactory(mySchema);
|
|
16070
16094
|
if (this.value) {
|
|
16071
16095
|
this.view.dom.innerHTML = this.value;
|
|
16072
16096
|
}
|
|
16073
16097
|
}
|
|
16098
|
+
executeCommand(command) {
|
|
16099
|
+
const { state } = this.view;
|
|
16100
|
+
const selection = state.selection;
|
|
16101
|
+
let transaction = state.tr;
|
|
16102
|
+
if (!selection.empty) {
|
|
16103
|
+
transaction.setSelection(selection);
|
|
16104
|
+
}
|
|
16105
|
+
command(state, (tr) => {
|
|
16106
|
+
transaction = tr;
|
|
16107
|
+
});
|
|
16108
|
+
this.view.dispatch(transaction);
|
|
16109
|
+
this.view.focus();
|
|
16110
|
+
}
|
|
16074
16111
|
get host() { return index.getElement(this); }
|
|
16075
16112
|
};
|
|
16076
16113
|
ProsemirrorAdapter.style = prosemirrorAdapterCss;
|