@limetech/lime-elements 37.24.0 → 37.26.0
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 +21 -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 +154 -117
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-text-editor.cjs.entry.js +8 -2
- 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.css +73 -82
- 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 +172 -4
- package/dist/collection/components/text-editor/text-editor.js +7 -1
- package/dist/collection/components/text-editor/text-editor.js.map +1 -1
- package/dist/collection/style/internal/fieldset.scss +62 -0
- 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 +154 -117
- package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
- package/dist/esm/limel-text-editor.entry.js +8 -2
- 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-5b2e8739.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/lime-elements/p-f1e1f867.entry.js +2 -0
- package/dist/lime-elements/p-f1e1f867.entry.js.map +1 -0
- package/dist/lime-elements/style/internal/fieldset.scss +62 -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/dist/types/components/text-editor/text-editor.d.ts +1 -0
- package/package.json +3 -3
- 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-5b2e8739.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-caf959fe.entry.js +0 -2
- package/dist/lime-elements/p-caf959fe.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
|
@@ -15909,122 +15909,135 @@ 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
|
+
}
|
|
16026
15986
|
|
|
16027
|
-
const prosemirrorAdapterCss = "@charset \"UTF-8\";: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 )}:host(limel-text-editor){isolation:isolate;display:block}*{box-sizing:border-box}.ProseMirror-menubar-wrapper{transition:border 0.2s ease;display:grid;grid-template-rows:auto 1fr;border-radius:0.25rem;border:1px solid;border-color:rgba(var(--contrast-700), 0.65)}.ProseMirror-menubar-wrapper:hover{border-color:rgba(var(--contrast-700), 1)}.ProseMirror-menubar-wrapper:focus-within{border-color:var(--mdc-theme-primary)}.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;border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;padding:var(--limel-text-editor-padding);background-color:rgb(var(--contrast-100))}.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}div#editor .ProseMirror-menubar{position:sticky !important;z-index:1;top:0}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;background-color:rgb(var(--contrast-100));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))}";
|
|
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
|
+
];
|
|
16039
|
+
|
|
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
|
|
|
16029
16042
|
const ProsemirrorAdapter = class {
|
|
16030
16043
|
constructor(hostRef) {
|
|
@@ -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;
|