@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
|
@@ -15905,120 +15905,133 @@ function exampleSetup(options) {
|
|
|
15905
15905
|
}));
|
|
15906
15906
|
}
|
|
15907
15907
|
|
|
15908
|
-
|
|
15909
|
-
|
|
15910
|
-
|
|
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
|
-
const allItems = {
|
|
15948
|
-
strong: 'Toggle strong style',
|
|
15949
|
-
emphasis: 'Toggle emphasis',
|
|
15950
|
-
code: 'Toggle code font',
|
|
15951
|
-
link: 'Add or remove link',
|
|
15952
|
-
'horizontal rule': 'hr',
|
|
15953
|
-
paragraph: 'Change to paragraph',
|
|
15954
|
-
'code block': 'Change to code block',
|
|
15955
|
-
'heading 1': 'Change to heading 1',
|
|
15956
|
-
'heading 2': 'Change to heading 2',
|
|
15957
|
-
'heading 3': 'Change to heading 3',
|
|
15958
|
-
'heading 4': 'Change to heading 4',
|
|
15959
|
-
'heading 5': 'Change to heading 5',
|
|
15960
|
-
'heading 6': 'Change to heading 6',
|
|
15961
|
-
undo: 'Undo last change',
|
|
15962
|
-
redo: 'Redo last undone change',
|
|
15963
|
-
'bullet list': 'Wrap in bullet list',
|
|
15964
|
-
'ordered list': 'Wrap in ordered list',
|
|
15965
|
-
'block quote': 'Wrap in block quote',
|
|
15966
|
-
'join above': 'Join with above block',
|
|
15967
|
-
'lift out': 'Lift out of enclosing block',
|
|
15968
|
-
};
|
|
15969
|
-
const defaultItems = [
|
|
15970
|
-
'strong',
|
|
15971
|
-
'emphasis',
|
|
15972
|
-
'link',
|
|
15973
|
-
'heading 1',
|
|
15974
|
-
'heading 2',
|
|
15975
|
-
'heading 3',
|
|
15976
|
-
'heading 4',
|
|
15977
|
-
'heading 5',
|
|
15978
|
-
'heading 6',
|
|
15979
|
-
'block quote',
|
|
15980
|
-
'bullet list',
|
|
15981
|
-
'ordered list',
|
|
15982
|
-
];
|
|
15983
|
-
/**
|
|
15984
|
-
* Filters the full menu recursively based on the items provided
|
|
15985
|
-
*
|
|
15986
|
-
* @param menu - The menu to filter
|
|
15987
|
-
* @param items - The menu items to display. If undefined, all items will be displayed
|
|
15988
|
-
* @returns The filtered menu
|
|
15989
|
-
*/
|
|
15990
|
-
const getFilteredMenu = (menu, items) => {
|
|
15991
|
-
let menuItems = defaultItems.map((item) => allItems[item]);
|
|
15992
|
-
if (items !== undefined) {
|
|
15993
|
-
menuItems = menuItems.concat(items.map((item) => allItems[item]));
|
|
15908
|
+
class MenuCommandFactory {
|
|
15909
|
+
constructor(schema) {
|
|
15910
|
+
this.markNames = {
|
|
15911
|
+
bold: 'strong',
|
|
15912
|
+
italic: 'em',
|
|
15913
|
+
underline: 'underline',
|
|
15914
|
+
blockquote: 'blockquote',
|
|
15915
|
+
headerlevel1: 'headerlevel1',
|
|
15916
|
+
headerlevel2: 'headerlevel2',
|
|
15917
|
+
headerlevel3: 'headerlevel3',
|
|
15918
|
+
addorremovelink: 'link',
|
|
15919
|
+
numberedlist: 'ordered_list',
|
|
15920
|
+
list: 'bullet_list',
|
|
15921
|
+
};
|
|
15922
|
+
this.schema = schema;
|
|
15923
|
+
}
|
|
15924
|
+
createCommand(mark) {
|
|
15925
|
+
if (this.markNames[mark]) {
|
|
15926
|
+
mark = this.markNames[mark];
|
|
15927
|
+
}
|
|
15928
|
+
switch (mark) {
|
|
15929
|
+
case 'strong':
|
|
15930
|
+
case 'em':
|
|
15931
|
+
case 'underline':
|
|
15932
|
+
return this.createToggleMarkCommand(mark);
|
|
15933
|
+
case 'paragraph':
|
|
15934
|
+
return this.createSetNodeTypeCommand(mark);
|
|
15935
|
+
case 'headerlevel1':
|
|
15936
|
+
case 'headerlevel2':
|
|
15937
|
+
case 'headerlevel3':
|
|
15938
|
+
return this.createSetNodeTypeCommand('heading', parseInt(mark[mark.length - 1], 10));
|
|
15939
|
+
case 'blockquote':
|
|
15940
|
+
return this.createWrapInCommand(mark);
|
|
15941
|
+
case 'ordered_list':
|
|
15942
|
+
case 'bullet_list':
|
|
15943
|
+
return this.createListCommand(mark);
|
|
15944
|
+
default:
|
|
15945
|
+
throw new Error(`The Mark "${mark}" is not supported`);
|
|
15946
|
+
}
|
|
15994
15947
|
}
|
|
15995
|
-
|
|
15996
|
-
|
|
15997
|
-
if (
|
|
15998
|
-
|
|
15948
|
+
createToggleMarkCommand(markName) {
|
|
15949
|
+
const markType = this.schema.marks[markName];
|
|
15950
|
+
if (!markType) {
|
|
15951
|
+
throw new Error(`Mark "${markName}" not found in schema`);
|
|
15999
15952
|
}
|
|
16000
|
-
|
|
16001
|
-
|
|
15953
|
+
return toggleMark(markType);
|
|
15954
|
+
}
|
|
15955
|
+
createSetNodeTypeCommand(nodeType, level) {
|
|
15956
|
+
const type = this.schema.nodes[nodeType];
|
|
15957
|
+
if (!type) {
|
|
15958
|
+
throw new Error(`Node type "${nodeType}" not found in schema`);
|
|
15959
|
+
}
|
|
15960
|
+
if (nodeType === 'heading' && level) {
|
|
15961
|
+
return setBlockType(type, { level: level });
|
|
15962
|
+
}
|
|
15963
|
+
else {
|
|
15964
|
+
return setBlockType(type);
|
|
16002
15965
|
}
|
|
16003
|
-
return false;
|
|
16004
|
-
})
|
|
16005
|
-
.filter(Boolean)
|
|
16006
|
-
.map(createFilteredDropdown(items));
|
|
16007
|
-
};
|
|
16008
|
-
const createFilteredDropdown = (items) => (item) => {
|
|
16009
|
-
if (isDropdown(item)) {
|
|
16010
|
-
return new Dropdown(getFilteredMenu(item.content, items), {
|
|
16011
|
-
label: item.label,
|
|
16012
|
-
});
|
|
16013
15966
|
}
|
|
16014
|
-
|
|
16015
|
-
|
|
16016
|
-
|
|
16017
|
-
|
|
16018
|
-
}
|
|
16019
|
-
|
|
16020
|
-
|
|
16021
|
-
|
|
15967
|
+
createWrapInCommand(nodeType) {
|
|
15968
|
+
const type = this.schema.nodes[nodeType];
|
|
15969
|
+
if (!type) {
|
|
15970
|
+
throw new Error(`Node type "${nodeType}" not found in schema`);
|
|
15971
|
+
}
|
|
15972
|
+
return wrapIn(type);
|
|
15973
|
+
}
|
|
15974
|
+
createListCommand(listType) {
|
|
15975
|
+
const type = this.schema.nodes[listType];
|
|
15976
|
+
if (!type) {
|
|
15977
|
+
throw new Error(`List type "${listType}" not found in schema`);
|
|
15978
|
+
}
|
|
15979
|
+
return wrapInList(type);
|
|
15980
|
+
}
|
|
15981
|
+
}
|
|
15982
|
+
|
|
15983
|
+
const textEditorMenuItems = [
|
|
15984
|
+
{
|
|
15985
|
+
text: 'Bold',
|
|
15986
|
+
commandText: '⌘ B',
|
|
15987
|
+
icon: 'bold',
|
|
15988
|
+
iconOnly: true,
|
|
15989
|
+
},
|
|
15990
|
+
{
|
|
15991
|
+
text: 'Italic',
|
|
15992
|
+
commandText: '⌘ I',
|
|
15993
|
+
icon: 'italic',
|
|
15994
|
+
iconOnly: true,
|
|
15995
|
+
},
|
|
15996
|
+
{
|
|
15997
|
+
text: 'Add or remove link',
|
|
15998
|
+
commandText: '⌘ shift U',
|
|
15999
|
+
icon: 'link',
|
|
16000
|
+
iconOnly: true,
|
|
16001
|
+
},
|
|
16002
|
+
{ separator: true },
|
|
16003
|
+
{
|
|
16004
|
+
text: 'Header Level 1',
|
|
16005
|
+
icon: 'header_1',
|
|
16006
|
+
iconOnly: true,
|
|
16007
|
+
},
|
|
16008
|
+
{
|
|
16009
|
+
text: 'Header Level 2',
|
|
16010
|
+
icon: 'header_2',
|
|
16011
|
+
iconOnly: true,
|
|
16012
|
+
},
|
|
16013
|
+
{
|
|
16014
|
+
text: 'Header Level 3',
|
|
16015
|
+
icon: 'header_3',
|
|
16016
|
+
iconOnly: true,
|
|
16017
|
+
},
|
|
16018
|
+
{ separator: true },
|
|
16019
|
+
{
|
|
16020
|
+
text: 'List',
|
|
16021
|
+
icon: 'list',
|
|
16022
|
+
iconOnly: true,
|
|
16023
|
+
},
|
|
16024
|
+
{
|
|
16025
|
+
text: 'Numbered list',
|
|
16026
|
+
icon: 'numbered_list',
|
|
16027
|
+
iconOnly: true,
|
|
16028
|
+
},
|
|
16029
|
+
{
|
|
16030
|
+
text: 'Blockquote',
|
|
16031
|
+
icon: 'quote_right',
|
|
16032
|
+
iconOnly: true,
|
|
16033
|
+
},
|
|
16034
|
+
];
|
|
16022
16035
|
|
|
16023
16036
|
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))}";
|
|
16024
16037
|
|
|
@@ -16034,27 +16047,37 @@ const ProsemirrorAdapter = class {
|
|
|
16034
16047
|
return this.view.dom.innerHTML;
|
|
16035
16048
|
}
|
|
16036
16049
|
};
|
|
16050
|
+
this.handleActionBarItem = (event) => {
|
|
16051
|
+
event.preventDefault();
|
|
16052
|
+
const { text } = event.detail;
|
|
16053
|
+
const mark = text.replace(/\s/g, '').toLowerCase();
|
|
16054
|
+
try {
|
|
16055
|
+
const command = this.menuCommandFactory.createCommand(mark);
|
|
16056
|
+
this.executeCommand(command);
|
|
16057
|
+
}
|
|
16058
|
+
catch (error) {
|
|
16059
|
+
throw new Error(`Error executing command: ${error}`);
|
|
16060
|
+
}
|
|
16061
|
+
};
|
|
16037
16062
|
this.value = undefined;
|
|
16038
16063
|
this.view = undefined;
|
|
16064
|
+
this.actionBarItems = [];
|
|
16039
16065
|
}
|
|
16040
|
-
componentWillLoad() { }
|
|
16041
16066
|
render() {
|
|
16042
|
-
return h("div", { id: "editor" });
|
|
16067
|
+
return (h("div", null, h("limel-action-bar", { accessibleLabel: "Toolbar", actions: this.actionBarItems, layout: "fullWidth", onItemSelected: this.handleActionBarItem }), h("div", { id: "editor" })));
|
|
16043
16068
|
}
|
|
16044
16069
|
componentDidLoad() {
|
|
16070
|
+
this.actionBarItems = textEditorMenuItems;
|
|
16045
16071
|
const mySchema = new Schema({
|
|
16046
16072
|
nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),
|
|
16047
16073
|
marks: schema.spec.marks,
|
|
16048
16074
|
});
|
|
16049
|
-
const menu = buildFullMenu(mySchema)
|
|
16050
|
-
.map((items) => getFilteredMenu(items, undefined))
|
|
16051
|
-
.filter((items) => items.length);
|
|
16052
16075
|
this.view = new EditorView(this.host.shadowRoot.querySelector('#editor'), {
|
|
16053
16076
|
state: EditorState.create({
|
|
16054
16077
|
doc: DOMParser.fromSchema(mySchema).parse(this.host.shadowRoot.querySelector('#editor')),
|
|
16055
16078
|
plugins: exampleSetup({
|
|
16056
16079
|
schema: mySchema,
|
|
16057
|
-
|
|
16080
|
+
menuBar: false,
|
|
16058
16081
|
}),
|
|
16059
16082
|
}),
|
|
16060
16083
|
dispatchTransaction: (transaction) => {
|
|
@@ -16063,10 +16086,24 @@ const ProsemirrorAdapter = class {
|
|
|
16063
16086
|
this.change.emit(this.getHTML());
|
|
16064
16087
|
},
|
|
16065
16088
|
});
|
|
16089
|
+
this.menuCommandFactory = new MenuCommandFactory(mySchema);
|
|
16066
16090
|
if (this.value) {
|
|
16067
16091
|
this.view.dom.innerHTML = this.value;
|
|
16068
16092
|
}
|
|
16069
16093
|
}
|
|
16094
|
+
executeCommand(command) {
|
|
16095
|
+
const { state } = this.view;
|
|
16096
|
+
const selection = state.selection;
|
|
16097
|
+
let transaction = state.tr;
|
|
16098
|
+
if (!selection.empty) {
|
|
16099
|
+
transaction.setSelection(selection);
|
|
16100
|
+
}
|
|
16101
|
+
command(state, (tr) => {
|
|
16102
|
+
transaction = tr;
|
|
16103
|
+
});
|
|
16104
|
+
this.view.dispatch(transaction);
|
|
16105
|
+
this.view.focus();
|
|
16106
|
+
}
|
|
16070
16107
|
get host() { return getElement(this); }
|
|
16071
16108
|
};
|
|
16072
16109
|
ProsemirrorAdapter.style = prosemirrorAdapterCss;
|