@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.
Files changed (104) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/{dom-ee8ee17d.js → debounce-2e5f4b7e.js} +1 -31
  3. package/dist/cjs/debounce-2e5f4b7e.js.map +1 -0
  4. package/dist/cjs/dom-81eaa633.js +34 -0
  5. package/dist/cjs/dom-81eaa633.js.map +1 -0
  6. package/dist/cjs/lime-elements.cjs.js +1 -1
  7. package/dist/cjs/{limel-action-bar-item_2.cjs.entry.js → limel-action-bar_3.cjs.entry.js} +106 -1
  8. package/dist/cjs/limel-action-bar_3.cjs.entry.js.map +1 -0
  9. package/dist/cjs/{limel-breadcrumbs_3.cjs.entry.js → limel-breadcrumbs_4.cjs.entry.js} +519 -20
  10. package/dist/cjs/limel-breadcrumbs_4.cjs.entry.js.map +1 -0
  11. package/dist/cjs/{limel-input-field_3.cjs.entry.js → limel-dynamic-label_4.cjs.entry.js} +75 -494
  12. package/dist/cjs/limel-dynamic-label_4.cjs.entry.js.map +1 -0
  13. package/dist/cjs/limel-picker.cjs.entry.js +3 -2
  14. package/dist/cjs/limel-picker.cjs.entry.js.map +1 -1
  15. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +154 -117
  16. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
  17. package/dist/cjs/limel-text-editor.cjs.entry.js +8 -2
  18. package/dist/cjs/limel-text-editor.cjs.entry.js.map +1 -1
  19. package/dist/cjs/loader.cjs.js +1 -1
  20. package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-commands.js +77 -0
  21. package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-commands.js.map +1 -0
  22. package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js +53 -0
  23. package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js.map +1 -0
  24. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.css +73 -82
  25. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +34 -9
  26. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
  27. package/dist/collection/components/text-editor/text-editor.css +172 -4
  28. package/dist/collection/components/text-editor/text-editor.js +7 -1
  29. package/dist/collection/components/text-editor/text-editor.js.map +1 -1
  30. package/dist/collection/style/internal/fieldset.scss +62 -0
  31. package/dist/esm/{dom-ae531ebc.js → debounce-9a05c91c.js} +2 -31
  32. package/dist/esm/debounce-9a05c91c.js.map +1 -0
  33. package/dist/esm/dom-0b0170a0.js +32 -0
  34. package/dist/esm/dom-0b0170a0.js.map +1 -0
  35. package/dist/esm/lime-elements.js +1 -1
  36. package/dist/esm/{limel-action-bar-item_2.entry.js → limel-action-bar_3.entry.js} +107 -3
  37. package/dist/esm/limel-action-bar_3.entry.js.map +1 -0
  38. package/dist/esm/{limel-breadcrumbs_3.entry.js → limel-breadcrumbs_4.entry.js} +501 -3
  39. package/dist/esm/limel-breadcrumbs_4.entry.js.map +1 -0
  40. package/dist/esm/{limel-input-field_3.entry.js → limel-dynamic-label_4.entry.js} +70 -490
  41. package/dist/esm/limel-dynamic-label_4.entry.js.map +1 -0
  42. package/dist/esm/limel-picker.entry.js +2 -1
  43. package/dist/esm/limel-picker.entry.js.map +1 -1
  44. package/dist/esm/limel-prosemirror-adapter.entry.js +154 -117
  45. package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
  46. package/dist/esm/limel-text-editor.entry.js +8 -2
  47. package/dist/esm/limel-text-editor.entry.js.map +1 -1
  48. package/dist/esm/loader.js +1 -1
  49. package/dist/lime-elements/lime-elements.esm.js +1 -1
  50. package/dist/lime-elements/lime-elements.esm.js.map +1 -1
  51. package/dist/lime-elements/p-18c97232.js +2 -0
  52. package/dist/lime-elements/p-18c97232.js.map +1 -0
  53. package/dist/lime-elements/p-2bff59a1.entry.js +2 -0
  54. package/dist/lime-elements/p-2bff59a1.entry.js.map +1 -0
  55. package/dist/lime-elements/p-3ab8d3e9.entry.js +68 -0
  56. package/dist/lime-elements/p-3ab8d3e9.entry.js.map +1 -0
  57. package/dist/lime-elements/p-5e7b7b03.js +2 -0
  58. package/dist/lime-elements/p-5e7b7b03.js.map +1 -0
  59. package/dist/lime-elements/p-5fcdb9d2.entry.js +2 -0
  60. package/dist/lime-elements/{p-3e90be0a.entry.js.map → p-5fcdb9d2.entry.js.map} +1 -1
  61. package/dist/lime-elements/{p-5b2e8739.entry.js → p-db7ce0f8.entry.js} +2 -2
  62. package/dist/lime-elements/p-db7ce0f8.entry.js.map +1 -0
  63. package/dist/lime-elements/p-e4424368.entry.js +2 -0
  64. package/dist/lime-elements/p-e4424368.entry.js.map +1 -0
  65. package/dist/lime-elements/p-f1e1f867.entry.js +2 -0
  66. package/dist/lime-elements/p-f1e1f867.entry.js.map +1 -0
  67. package/dist/lime-elements/style/internal/fieldset.scss +62 -0
  68. package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-commands.d.ts +12 -0
  69. package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-items.d.ts +4 -0
  70. package/dist/types/components/text-editor/prosemirror-adapter/prosemirror-adapter.d.ts +4 -1
  71. package/dist/types/components/text-editor/text-editor.d.ts +1 -0
  72. package/package.json +3 -3
  73. package/dist/cjs/dom-ee8ee17d.js.map +0 -1
  74. package/dist/cjs/limel-action-bar-item_2.cjs.entry.js.map +0 -1
  75. package/dist/cjs/limel-action-bar.cjs.entry.js +0 -113
  76. package/dist/cjs/limel-action-bar.cjs.entry.js.map +0 -1
  77. package/dist/cjs/limel-breadcrumbs_3.cjs.entry.js.map +0 -1
  78. package/dist/cjs/limel-dynamic-label_2.cjs.entry.js +0 -91
  79. package/dist/cjs/limel-dynamic-label_2.cjs.entry.js.map +0 -1
  80. package/dist/cjs/limel-input-field_3.cjs.entry.js.map +0 -1
  81. package/dist/esm/dom-ae531ebc.js.map +0 -1
  82. package/dist/esm/limel-action-bar-item_2.entry.js.map +0 -1
  83. package/dist/esm/limel-action-bar.entry.js +0 -109
  84. package/dist/esm/limel-action-bar.entry.js.map +0 -1
  85. package/dist/esm/limel-breadcrumbs_3.entry.js.map +0 -1
  86. package/dist/esm/limel-dynamic-label_2.entry.js +0 -86
  87. package/dist/esm/limel-dynamic-label_2.entry.js.map +0 -1
  88. package/dist/esm/limel-input-field_3.entry.js.map +0 -1
  89. package/dist/lime-elements/p-3e90be0a.entry.js +0 -2
  90. package/dist/lime-elements/p-497a0b69.entry.js +0 -68
  91. package/dist/lime-elements/p-497a0b69.entry.js.map +0 -1
  92. package/dist/lime-elements/p-5b2e8739.entry.js.map +0 -1
  93. package/dist/lime-elements/p-6eeb61e4.entry.js +0 -2
  94. package/dist/lime-elements/p-6eeb61e4.entry.js.map +0 -1
  95. package/dist/lime-elements/p-714d6937.js +0 -2
  96. package/dist/lime-elements/p-714d6937.js.map +0 -1
  97. package/dist/lime-elements/p-a2d19673.entry.js +0 -2
  98. package/dist/lime-elements/p-a2d19673.entry.js.map +0 -1
  99. package/dist/lime-elements/p-af964180.entry.js +0 -2
  100. package/dist/lime-elements/p-af964180.entry.js.map +0 -1
  101. package/dist/lime-elements/p-caf959fe.entry.js +0 -2
  102. package/dist/lime-elements/p-caf959fe.entry.js.map +0 -1
  103. package/dist/lime-elements/p-da62cd3f.entry.js +0 -2
  104. package/dist/lime-elements/p-da62cd3f.entry.js.map +0 -1
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-d1052409.js');
6
6
 
7
- const textEditorCss = ":host(limel-text-editor){--limel-text-editor-padding:0.5rem 1rem}limel-markdown{display:block;padding:var(--limel-text-editor-padding)}";
7
+ const textEditorCss = "@charset \"UTF-8\";:host(limel-text-editor){display:flex;flex-direction:column;width:100%}fieldset{min-width:0;min-height:0}:host(limel-text-editor[readonly]) fieldset{padding-block-start:0.75rem}: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 )}fieldset{box-sizing:border-box;transition:border-color 0.2s ease, background-color 0.2s ease;border:1px solid;border-radius:0.25rem;margin-inline-start:0;margin-inline-end:0;padding-block-start:0;padding-inline-start:0.75rem;padding-inline-end:0.75rem;padding-block-end:0.75rem}fieldset:not([disabled]){border-color:rgba(var(--contrast-700), 0.65);background-color:rgba(var(--contrast-200), 0.5)}fieldset:not([disabled]):hover{border-color:rgba(var(--contrast-700), 1);background-color:rgba(var(--contrast-200), 1)}fieldset:not([disabled]):focus-within{border-color:var(--mdc-theme-primary)}fieldset[disabled]{border-color:transparent}fieldset:has(legend){margin-top:calc((-0.75rem / 2) + (1px / 2))}legend{box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;color:rgba(var(--contrast-1200), 1);font-size:0.65rem;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);padding-inline-start:0.25rem;padding-inline-end:0.25rem}";
8
8
 
9
9
  const TextEditor = class {
10
10
  constructor(hostRef) {
@@ -23,7 +23,7 @@ const TextEditor = class {
23
23
  this.value = undefined;
24
24
  }
25
25
  render() {
26
- return this.renderEditor();
26
+ return (index.h("fieldset", { disabled: this.readonly || this.disabled }, this.renderLabel(), this.renderEditor()));
27
27
  }
28
28
  renderEditor() {
29
29
  if (this.readonly) {
@@ -31,6 +31,12 @@ const TextEditor = class {
31
31
  }
32
32
  return (index.h("limel-prosemirror-adapter", { onChange: this.handleChange, value: this.value }));
33
33
  }
34
+ renderLabel() {
35
+ if (!this.label) {
36
+ return;
37
+ }
38
+ return index.h("legend", null, this.label);
39
+ }
34
40
  };
35
41
  TextEditor.style = textEditorCss;
36
42
 
@@ -1 +1 @@
1
- {"file":"limel-text-editor.entry.cjs.js","mappings":";;;;;;AAAA,MAAM,aAAa,GAAG,yIAAyI;;MCsBlJ,UAAU;;;;IA6EX,iBAAY,GAAG,MAAM,CAAC,KAA0B;MACpD,KAAK,CAAC,eAAe,EAAE,CAAC;MACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAClC,CAAC;;;;;;;;;EApBK,MAAM;IACT,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;GAC9B;EAEO,YAAY;IAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;MACf,OAAOA,4BAAgB,KAAK,EAAE,IAAI,CAAC,KAAK,GAAI,CAAC;KAChD;IAED,QACIA,uCACI,QAAQ,EAAE,IAAI,CAAC,YAAY,EAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,GACnB,EACJ;GACL;;;;;;","names":["h"],"sources":["./src/components/text-editor/text-editor.scss?tag=limel-text-editor&encapsulation=shadow","./src/components/text-editor/text-editor.tsx"],"sourcesContent":[":host(limel-text-editor) {\n --limel-text-editor-padding: 0.5rem 1rem;\n}\n\nlimel-markdown {\n display: block;\n padding: var(--limel-text-editor-padding);\n}\n","import { Component, Event, EventEmitter, Prop, h } from '@stencil/core';\nimport { FormComponent } from '../form/form.types';\n/**\n * A rich text editor that offers a rich text editing experience with markdown support,\n * in the sense that you can easily type markdown syntax and see the rendered\n * result as rich text in real-time. For instance, you can type `# Hello, world!`\n * and see it directly turning to a heading 1 (an `<h1>` HTML element).\n *\n * Naturally, you can use standard keyboard hotkeys such as <kbd>Ctrl</kbd> + <kbd>B</kbd>\n * to toggle bold text, <kbd>Ctrl</kbd> + <kbd>I</kbd> to toggle italic text, and so on.\n *\n * @exampleComponent limel-example-text-editor-basic\n * @exampleComponent limel-example-text-editor-as-form-component\n * @exampleComponent limel-example-text-editor-composite\n * @beta\n * @private\n */\n@Component({\n tag: 'limel-text-editor',\n shadow: true,\n styleUrl: 'text-editor.scss',\n})\nexport class TextEditor implements FormComponent<string> {\n /**\n * Set to `true` to disable the field.\n * Use `disabled` to indicate that the field can normally be interacted\n * with, but is currently disabled. This tells the user that if certain\n * requirements are met, the field may become enabled again.\n */\n @Prop({ reflect: true })\n public disabled?: boolean;\n\n /**\n * Set to `true` to make the component read-only.\n * Use `readonly` when the field is only there to present the data it holds,\n * and will not become possible for the current user to edit.\n * :::note\n * Consider that it might be better to use `limel-markdown`\n * instead of `limel-text-editor` when the goal is visualizing data.\n * :::\n */\n @Prop({ reflect: true })\n public readonly?: boolean;\n\n /**\n * Optional helper text to display below the input field when it has focus\n */\n @Prop({ reflect: true })\n public helperText?: string;\n\n /**\n * The placeholder text shown inside the input field,\n * when the field is empty.\n */\n @Prop({ reflect: true })\n public placeholder?: string;\n\n /**\n * The label of the editor\n */\n @Prop({ reflect: true })\n public label?: string;\n\n /**\n * Set to `true` to indicate that the current value of the editor is\n * invalid.\n */\n @Prop({ reflect: true })\n public invalid?: boolean;\n\n /**\n * Description of the text inside the editor as serialised HTML\n */\n @Prop({ reflect: true })\n public value: string;\n\n /**\n * Dispatched when a change is made to the editor\n */\n @Event()\n public change: EventEmitter<string>;\n\n public render() {\n return this.renderEditor();\n }\n\n private renderEditor() {\n if (this.readonly) {\n return <limel-markdown value={this.value} />;\n }\n\n return (\n <limel-prosemirror-adapter\n onChange={this.handleChange}\n value={this.value}\n />\n );\n }\n\n private handleChange = () => (event: CustomEvent<string>) => {\n event.stopPropagation();\n this.change.emit(event.detail);\n };\n}\n"],"version":3}
1
+ {"file":"limel-text-editor.entry.cjs.js","mappings":";;;;;;AAAA,MAAM,aAAa,GAAG,+yEAA+yE;;MCsBxzE,UAAU;;;;IA0FX,iBAAY,GAAG,MAAM,CAAC,KAA0B;MACpD,KAAK,CAAC,eAAe,EAAE,CAAC;MACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAClC,CAAC;;;;;;;;;EAjCK,MAAM;IACT,QACIA,sBAAU,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAC7C,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,YAAY,EAAE,CACb,EACb;GACL;EAEO,YAAY;IAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;MACf,OAAOA,4BAAgB,KAAK,EAAE,IAAI,CAAC,KAAK,GAAI,CAAC;KAChD;IAED,QACIA,uCACI,QAAQ,EAAE,IAAI,CAAC,YAAY,EAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,GACnB,EACJ;GACL;EAEO,WAAW;IACf,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;MACb,OAAO;KACV;IAED,OAAOA,wBAAS,IAAI,CAAC,KAAK,CAAU,CAAC;GACxC;;;;;;","names":["h"],"sources":["./src/components/text-editor/text-editor.scss?tag=limel-text-editor&encapsulation=shadow","./src/components/text-editor/text-editor.tsx"],"sourcesContent":[":host(limel-text-editor) {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\nfieldset {\n min-width: 0;\n min-height: 0;\n\n :host(limel-text-editor[readonly]) & {\n padding-block-start: 0.75rem;\n }\n}\n\n@import '../../style/internal/fieldset.scss';\n","import { Component, Event, EventEmitter, Prop, h } from '@stencil/core';\nimport { FormComponent } from '../form/form.types';\n/**\n * A rich text editor that offers a rich text editing experience with markdown support,\n * in the sense that you can easily type markdown syntax and see the rendered\n * result as rich text in real-time. For instance, you can type `# Hello, world!`\n * and see it directly turning to a heading 1 (an `<h1>` HTML element).\n *\n * Naturally, you can use standard keyboard hotkeys such as <kbd>Ctrl</kbd> + <kbd>B</kbd>\n * to toggle bold text, <kbd>Ctrl</kbd> + <kbd>I</kbd> to toggle italic text, and so on.\n *\n * @exampleComponent limel-example-text-editor-basic\n * @exampleComponent limel-example-text-editor-as-form-component\n * @exampleComponent limel-example-text-editor-composite\n * @beta\n * @private\n */\n@Component({\n tag: 'limel-text-editor',\n shadow: true,\n styleUrl: 'text-editor.scss',\n})\nexport class TextEditor implements FormComponent<string> {\n /**\n * Set to `true` to disable the field.\n * Use `disabled` to indicate that the field can normally be interacted\n * with, but is currently disabled. This tells the user that if certain\n * requirements are met, the field may become enabled again.\n */\n @Prop({ reflect: true })\n public disabled?: boolean;\n\n /**\n * Set to `true` to make the component read-only.\n * Use `readonly` when the field is only there to present the data it holds,\n * and will not become possible for the current user to edit.\n * :::note\n * Consider that it might be better to use `limel-markdown`\n * instead of `limel-text-editor` when the goal is visualizing data.\n * :::\n */\n @Prop({ reflect: true })\n public readonly?: boolean;\n\n /**\n * Optional helper text to display below the input field when it has focus\n */\n @Prop({ reflect: true })\n public helperText?: string;\n\n /**\n * The placeholder text shown inside the input field,\n * when the field is empty.\n */\n @Prop({ reflect: true })\n public placeholder?: string;\n\n /**\n * The label of the editor\n */\n @Prop({ reflect: true })\n public label?: string;\n\n /**\n * Set to `true` to indicate that the current value of the editor is\n * invalid.\n */\n @Prop({ reflect: true })\n public invalid?: boolean;\n\n /**\n * Description of the text inside the editor as serialised HTML\n */\n @Prop({ reflect: true })\n public value: string;\n\n /**\n * Dispatched when a change is made to the editor\n */\n @Event()\n public change: EventEmitter<string>;\n\n public render() {\n return (\n <fieldset disabled={this.readonly || this.disabled}>\n {this.renderLabel()}\n {this.renderEditor()}\n </fieldset>\n );\n }\n\n private renderEditor() {\n if (this.readonly) {\n return <limel-markdown value={this.value} />;\n }\n\n return (\n <limel-prosemirror-adapter\n onChange={this.handleChange}\n value={this.value}\n />\n );\n }\n\n private renderLabel() {\n if (!this.label) {\n return;\n }\n\n return <legend>{this.label}</legend>;\n }\n\n private handleChange = () => (event: CustomEvent<string>) => {\n event.stopPropagation();\n this.change.emit(event.detail);\n };\n}\n"],"version":3}
@@ -14,7 +14,7 @@ const patchEsm = () => {
14
14
  const defineCustomElements = (win, options) => {
15
15
  if (typeof window === 'undefined') return Promise.resolve();
16
16
  return patchEsm().then(() => {
17
- return index.bootstrapLazy(JSON.parse("[[\"limel-action-bar.cjs\",[[1,\"limel-action-bar\",{\"actions\":[16],\"accessibleLabel\":[513,\"accessible-label\"],\"layout\":[513],\"openDirection\":[513,\"open-direction\"],\"overflowCutoff\":[32]}]]],[\"limel-split-button.cjs\",[[1,\"limel-split-button\",{\"label\":[513],\"primary\":[516],\"icon\":[513],\"disabled\":[516],\"items\":[16]}]]],[\"limel-file-viewer.cjs\",[[1,\"limel-file-viewer\",{\"url\":[513],\"filename\":[513],\"alt\":[513],\"allowFullscreen\":[516,\"allow-fullscreen\"],\"allowOpenInNewTab\":[516,\"allow-open-in-new-tab\"],\"allowDownload\":[516,\"allow-download\"],\"language\":[1],\"officeViewer\":[513,\"office-viewer\"],\"actions\":[16],\"isFullscreen\":[32],\"fileType\":[32],\"loading\":[32],\"fileUrl\":[32]}]]],[\"limel-color-picker.cjs\",[[1,\"limel-color-picker\",{\"value\":[513],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"tooltipLabel\":[513,\"tooltip-label\"],\"required\":[516],\"readonly\":[516],\"isOpen\":[32]}]]],[\"limel-picker.cjs\",[[1,\"limel-picker\",{\"disabled\":[4],\"readonly\":[516],\"label\":[1],\"searchLabel\":[1,\"search-label\"],\"helperText\":[513,\"helper-text\"],\"leadingIcon\":[1,\"leading-icon\"],\"emptyResultMessage\":[1,\"empty-result-message\"],\"required\":[4],\"invalid\":[516],\"value\":[16],\"searcher\":[16],\"multiple\":[4],\"delimiter\":[513],\"actions\":[16],\"actionPosition\":[1,\"action-position\"],\"actionScrollBehavior\":[1,\"action-scroll-behavior\"],\"badgeIcons\":[516,\"badge-icons\"],\"items\":[32],\"textValue\":[32],\"loading\":[32],\"chips\":[32]}]]],[\"limel-date-picker.cjs\",[[1,\"limel-date-picker\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"label\":[513],\"placeholder\":[513],\"helperText\":[513,\"helper-text\"],\"required\":[516],\"value\":[16],\"type\":[513],\"format\":[513],\"language\":[513],\"formatter\":[16],\"formattedValue\":[32],\"internalFormat\":[32],\"showPortal\":[32]}]]],[\"limel-dock.cjs\",[[1,\"limel-dock\",{\"dockItems\":[16],\"dockFooterItems\":[16],\"accessibleLabel\":[513,\"accessible-label\"],\"expanded\":[516],\"allowResize\":[516,\"allow-resize\"],\"mobileBreakPoint\":[514,\"mobile-break-point\"],\"useMobileLayout\":[32]}]]],[\"limel-file.cjs\",[[1,\"limel-file\",{\"value\":[16],\"label\":[513],\"required\":[516],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"accept\":[513],\"language\":[1]}]]],[\"limel-snackbar.cjs\",[[1,\"limel-snackbar\",{\"message\":[1],\"timeout\":[2],\"actionText\":[1,\"action-text\"],\"dismissible\":[4],\"multiline\":[4],\"language\":[1],\"show\":[64]}]]],[\"limel-tab-panel.cjs\",[[1,\"limel-tab-panel\",{\"tabs\":[1040]}]]],[\"limel-select.cjs\",[[1,\"limel-select\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"required\":[516],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"value\":[16],\"options\":[16],\"multiple\":[4],\"menuOpen\":[32]}]]],[\"limel-button-group.cjs\",[[1,\"limel-button-group\",{\"value\":[16],\"disabled\":[516],\"selectedButtonId\":[32]}]]],[\"limel-collapsible-section.cjs\",[[1,\"limel-collapsible-section\",{\"isOpen\":[1540,\"is-open\"],\"header\":[513],\"actions\":[16]}]]],[\"limel-help.cjs\",[[1,\"limel-help\",{\"value\":[1],\"trigger\":[1],\"readMoreLink\":[16],\"openDirection\":[513,\"open-direction\"],\"isOpen\":[32]}]]],[\"limel-table.cjs\",[[1,\"limel-table\",{\"data\":[16],\"columns\":[16],\"mode\":[1],\"layout\":[1],\"pageSize\":[2,\"page-size\"],\"totalRows\":[2,\"total-rows\"],\"sorting\":[16],\"activeRow\":[1040],\"movableColumns\":[4,\"movable-columns\"],\"loading\":[4],\"page\":[2],\"emptyMessage\":[1,\"empty-message\"],\"aggregates\":[16],\"selectable\":[4],\"selection\":[16]}]]],[\"limel-circular-progress.cjs\",[[1,\"limel-circular-progress\",{\"value\":[2],\"maxValue\":[2,\"max-value\"],\"prefix\":[513],\"suffix\":[1],\"displayPercentageColors\":[4,\"display-percentage-colors\"],\"size\":[513]}]]],[\"limel-icon.cjs\",[[1,\"limel-icon\",{\"size\":[513],\"name\":[513],\"badge\":[516]}]]],[\"limel-info-tile.cjs\",[[1,\"limel-info-tile\",{\"value\":[520],\"icon\":[1],\"label\":[513],\"prefix\":[513],\"suffix\":[513],\"disabled\":[516],\"badge\":[520],\"loading\":[516],\"link\":[16],\"progress\":[16]}]]],[\"limel-switch.cjs\",[[1,\"limel-switch\",{\"label\":[513],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"value\":[516],\"helperText\":[513,\"helper-text\"],\"readonlyLabels\":[16],\"fieldId\":[32]}]]],[\"limel-header.cjs\",[[1,\"limel-header\",{\"icon\":[1],\"heading\":[1],\"subheading\":[1],\"supportingText\":[1,\"supporting-text\"],\"subheadingDivider\":[1,\"subheading-divider\"]}]]],[\"limel-dialog.cjs\",[[1,\"limel-dialog\",{\"heading\":[1],\"fullscreen\":[516],\"open\":[1540],\"closingActions\":[16]}]]],[\"limel-progress-flow.cjs\",[[1,\"limel-progress-flow\",{\"flowItems\":[16],\"disabled\":[4],\"readonly\":[4]}]]],[\"limel-shortcut.cjs\",[[1,\"limel-shortcut\",{\"icon\":[513],\"label\":[513],\"disabled\":[516],\"badge\":[520],\"link\":[16]}]]],[\"limel-text-editor.cjs\",[[1,\"limel-text-editor\",{\"disabled\":[516],\"readonly\":[516],\"helperText\":[513,\"helper-text\"],\"placeholder\":[513],\"label\":[513],\"invalid\":[516],\"value\":[513]}]]],[\"limel-banner.cjs\",[[1,\"limel-banner\",{\"message\":[513],\"icon\":[513],\"isOpen\":[32],\"open\":[64],\"close\":[64]}]]],[\"limel-callout.cjs\",[[1,\"limel-callout\",{\"heading\":[513],\"icon\":[513],\"type\":[513],\"language\":[1]}]]],[\"limel-badge.cjs\",[[1,\"limel-badge\",{\"label\":[520]}]]],[\"limel-dynamic-label_2.cjs\",[[1,\"limel-dynamic-label\",{\"value\":[8],\"defaultLabel\":[16],\"labels\":[16]}],[1,\"limel-helper-line\",{\"helperText\":[513,\"helper-text\"],\"length\":[514],\"maxLength\":[514,\"max-length\"],\"invalid\":[516],\"helperTextId\":[513,\"helper-text-id\"]}]]],[\"limel-slider.cjs\",[[1,\"limel-slider\",{\"disabled\":[516],\"readonly\":[516],\"factor\":[514],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"unit\":[513],\"value\":[514],\"valuemax\":[514],\"valuemin\":[514],\"step\":[514],\"percentageClass\":[32]}]]],[\"limel-code-editor.cjs\",[[1,\"limel-code-editor\",{\"value\":[1],\"language\":[1],\"readonly\":[4],\"lineNumbers\":[4,\"line-numbers\"],\"fold\":[4],\"lint\":[4],\"colorScheme\":[1,\"color-scheme\"],\"random\":[32]}]]],[\"limel-config.cjs\",[[1,\"limel-config\",{\"config\":[16]}]]],[\"limel-flex-container.cjs\",[[1,\"limel-flex-container\",{\"direction\":[513],\"justify\":[513],\"align\":[513],\"reverse\":[516]}]]],[\"limel-form.cjs\",[[1,\"limel-form\",{\"schema\":[16],\"value\":[16],\"disabled\":[4],\"propsFactory\":[16],\"transformErrors\":[16],\"errors\":[16]}]]],[\"limel-grid.cjs\",[[1,\"limel-grid\"]]],[\"limel-color-picker-palette.cjs\",[[17,\"limel-color-picker-palette\",{\"value\":[513],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"required\":[516]}]]],[\"limel-dock-button.cjs\",[[0,\"limel-dock-button\",{\"item\":[16],\"expanded\":[516],\"useMobileLayout\":[516,\"use-mobile-layout\"],\"isOpen\":[32]}]]],[\"limel-icon-button.cjs\",[[1,\"limel-icon-button\",{\"icon\":[513],\"elevated\":[516],\"label\":[513],\"disabled\":[516]}]]],[\"limel-tab-bar.cjs\",[[1,\"limel-tab-bar\",{\"tabs\":[1040],\"canScrollLeft\":[32],\"canScrollRight\":[32]},[[9,\"resize\",\"handleWindowResize\"]]]]],[\"limel-checkbox.cjs\",[[1,\"limel-checkbox\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"checked\":[516],\"indeterminate\":[516],\"required\":[516],\"readonlyLabels\":[16],\"modified\":[32]}]]],[\"limel-help-content.cjs\",[[1,\"limel-help-content\",{\"value\":[1],\"readMoreLink\":[16]}]]],[\"limel-progress-flow-item.cjs\",[[0,\"limel-progress-flow-item\",{\"item\":[16],\"disabled\":[4],\"readonly\":[4],\"currentStep\":[4,\"current-step\"]}]]],[\"limel-flatpickr-adapter.cjs\",[[1,\"limel-flatpickr-adapter\",{\"value\":[16],\"type\":[1],\"format\":[1],\"isOpen\":[4,\"is-open\"],\"inputElement\":[16],\"language\":[1],\"formatter\":[16]}]]],[\"limel-prosemirror-adapter.cjs\",[[1,\"limel-prosemirror-adapter\",{\"value\":[1],\"view\":[32]}]]],[\"limel-breadcrumbs_3.cjs\",[[1,\"limel-menu\",{\"items\":[16],\"disabled\":[516],\"openDirection\":[513,\"open-direction\"],\"surfaceWidth\":[513,\"surface-width\"],\"open\":[1540],\"badgeIcons\":[516,\"badge-icons\"],\"gridLayout\":[516,\"grid-layout\"],\"loading\":[516],\"currentSubMenu\":[1040],\"rootItem\":[16],\"searcher\":[16],\"emptyResultMessage\":[1,\"empty-result-message\"],\"loadingSubItems\":[32],\"searchValue\":[32],\"searchResults\":[32]}],[1,\"limel-breadcrumbs\",{\"items\":[16],\"divider\":[1]}],[1,\"limel-menu-list\",{\"items\":[16],\"badgeIcons\":[4,\"badge-icons\"],\"iconSize\":[1,\"icon-size\"],\"type\":[1],\"maxLinesSecondaryText\":[2,\"max-lines-secondary-text\"]}]]],[\"limel-action-bar-item_2.cjs\",[[0,\"limel-action-bar-overflow-menu\",{\"items\":[16],\"openDirection\":[513,\"open-direction\"]}],[0,\"limel-action-bar-item\",{\"item\":[16],\"isVisible\":[516,\"is-visible\"]}]]],[\"limel-button.cjs\",[[1,\"limel-button\",{\"label\":[513],\"primary\":[516],\"outlined\":[516],\"icon\":[513],\"disabled\":[516],\"loading\":[516],\"loadingFailed\":[516,\"loading-failed\"],\"justLoaded\":[32]}]]],[\"limel-file-dropzone_2.cjs\",[[1,\"limel-file-dropzone\",{\"accept\":[513],\"disabled\":[4],\"text\":[1],\"helperText\":[1,\"helper-text\"],\"hasFileToDrop\":[32]}],[1,\"limel-file-input\",{\"accept\":[513],\"disabled\":[516],\"multiple\":[516]}]]],[\"limel-markdown.cjs\",[[1,\"limel-markdown\",{\"value\":[1]}]]],[\"limel-linear-progress.cjs\",[[1,\"limel-linear-progress\",{\"value\":[514],\"indeterminate\":[516]}]]],[\"limel-chip_2.cjs\",[[1,\"limel-chip-set\",{\"value\":[16],\"type\":[513],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"inputType\":[513,\"input-type\"],\"maxItems\":[514,\"max-items\"],\"required\":[516],\"searchLabel\":[513,\"search-label\"],\"emptyInputOnBlur\":[516,\"empty-input-on-blur\"],\"clearAllButton\":[4,\"clear-all-button\"],\"leadingIcon\":[513,\"leading-icon\"],\"delimiter\":[513],\"language\":[1],\"editMode\":[32],\"textValue\":[32],\"blurred\":[32],\"inputChipIndexSelected\":[32],\"selectedChipIds\":[32],\"getEditMode\":[64],\"setFocus\":[64],\"emptyInput\":[64]}],[1,\"limel-chip\",{\"language\":[513],\"text\":[513],\"icon\":[1],\"link\":[16],\"badge\":[520],\"disabled\":[516],\"readonly\":[516],\"selected\":[516],\"invalid\":[516],\"removable\":[516],\"type\":[513],\"loading\":[516],\"progress\":[514],\"identifier\":[520]}]]],[\"limel-portal_3.cjs\",[[1,\"limel-tooltip\",{\"elementId\":[513,\"element-id\"],\"label\":[513],\"helperLabel\":[513,\"helper-label\"],\"maxlength\":[514],\"openDirection\":[513,\"open-direction\"],\"open\":[32]}],[1,\"limel-tooltip-content\",{\"label\":[513],\"helperLabel\":[513,\"helper-label\"],\"maxlength\":[514]}],[1,\"limel-portal\",{\"openDirection\":[513,\"open-direction\"],\"position\":[513],\"containerId\":[513,\"container-id\"],\"containerStyle\":[16],\"parent\":[16],\"inheritParentWidth\":[516,\"inherit-parent-width\"],\"visible\":[516],\"anchor\":[16]}]]],[\"limel-popover_2.cjs\",[[1,\"limel-popover\",{\"open\":[4],\"openDirection\":[513,\"open-direction\"]}],[1,\"limel-popover-surface\",{\"contentCollection\":[16]}]]],[\"limel-spinner.cjs\",[[1,\"limel-spinner\",{\"size\":[513],\"limeBranded\":[4,\"lime-branded\"]}]]],[\"limel-input-field_3.cjs\",[[1,\"limel-input-field\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"label\":[513],\"placeholder\":[513],\"helperText\":[513,\"helper-text\"],\"prefix\":[513],\"suffix\":[513],\"required\":[516],\"value\":[513],\"trailingIcon\":[513,\"trailing-icon\"],\"leadingIcon\":[513,\"leading-icon\"],\"pattern\":[513],\"type\":[513],\"formatNumber\":[516,\"format-number\"],\"step\":[520],\"max\":[514],\"min\":[514],\"maxlength\":[514],\"minlength\":[514],\"completions\":[16],\"showLink\":[516,\"show-link\"],\"locale\":[513],\"isFocused\":[32],\"isModified\":[32],\"showCompletions\":[32]}],[1,\"limel-list\",{\"items\":[16],\"badgeIcons\":[4,\"badge-icons\"],\"iconSize\":[1,\"icon-size\"],\"type\":[1],\"maxLinesSecondaryText\":[2,\"max-lines-secondary-text\"]}],[1,\"limel-menu-surface\",{\"open\":[4],\"allowClicksElement\":[16]}]]]]"), options);
17
+ return index.bootstrapLazy(JSON.parse("[[\"limel-text-editor.cjs\",[[1,\"limel-text-editor\",{\"disabled\":[516],\"readonly\":[516],\"helperText\":[513,\"helper-text\"],\"placeholder\":[513],\"label\":[513],\"invalid\":[516],\"value\":[513]}]]],[\"limel-split-button.cjs\",[[1,\"limel-split-button\",{\"label\":[513],\"primary\":[516],\"icon\":[513],\"disabled\":[516],\"items\":[16]}]]],[\"limel-file-viewer.cjs\",[[1,\"limel-file-viewer\",{\"url\":[513],\"filename\":[513],\"alt\":[513],\"allowFullscreen\":[516,\"allow-fullscreen\"],\"allowOpenInNewTab\":[516,\"allow-open-in-new-tab\"],\"allowDownload\":[516,\"allow-download\"],\"language\":[1],\"officeViewer\":[513,\"office-viewer\"],\"actions\":[16],\"isFullscreen\":[32],\"fileType\":[32],\"loading\":[32],\"fileUrl\":[32]}]]],[\"limel-color-picker.cjs\",[[1,\"limel-color-picker\",{\"value\":[513],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"tooltipLabel\":[513,\"tooltip-label\"],\"required\":[516],\"readonly\":[516],\"isOpen\":[32]}]]],[\"limel-picker.cjs\",[[1,\"limel-picker\",{\"disabled\":[4],\"readonly\":[516],\"label\":[1],\"searchLabel\":[1,\"search-label\"],\"helperText\":[513,\"helper-text\"],\"leadingIcon\":[1,\"leading-icon\"],\"emptyResultMessage\":[1,\"empty-result-message\"],\"required\":[4],\"invalid\":[516],\"value\":[16],\"searcher\":[16],\"multiple\":[4],\"delimiter\":[513],\"actions\":[16],\"actionPosition\":[1,\"action-position\"],\"actionScrollBehavior\":[1,\"action-scroll-behavior\"],\"badgeIcons\":[516,\"badge-icons\"],\"items\":[32],\"textValue\":[32],\"loading\":[32],\"chips\":[32]}]]],[\"limel-date-picker.cjs\",[[1,\"limel-date-picker\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"label\":[513],\"placeholder\":[513],\"helperText\":[513,\"helper-text\"],\"required\":[516],\"value\":[16],\"type\":[513],\"format\":[513],\"language\":[513],\"formatter\":[16],\"formattedValue\":[32],\"internalFormat\":[32],\"showPortal\":[32]}]]],[\"limel-dock.cjs\",[[1,\"limel-dock\",{\"dockItems\":[16],\"dockFooterItems\":[16],\"accessibleLabel\":[513,\"accessible-label\"],\"expanded\":[516],\"allowResize\":[516,\"allow-resize\"],\"mobileBreakPoint\":[514,\"mobile-break-point\"],\"useMobileLayout\":[32]}]]],[\"limel-file.cjs\",[[1,\"limel-file\",{\"value\":[16],\"label\":[513],\"required\":[516],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"accept\":[513],\"language\":[1]}]]],[\"limel-snackbar.cjs\",[[1,\"limel-snackbar\",{\"message\":[1],\"timeout\":[2],\"actionText\":[1,\"action-text\"],\"dismissible\":[4],\"multiline\":[4],\"language\":[1],\"show\":[64]}]]],[\"limel-tab-panel.cjs\",[[1,\"limel-tab-panel\",{\"tabs\":[1040]}]]],[\"limel-select.cjs\",[[1,\"limel-select\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"required\":[516],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"value\":[16],\"options\":[16],\"multiple\":[4],\"menuOpen\":[32]}]]],[\"limel-button-group.cjs\",[[1,\"limel-button-group\",{\"value\":[16],\"disabled\":[516],\"selectedButtonId\":[32]}]]],[\"limel-collapsible-section.cjs\",[[1,\"limel-collapsible-section\",{\"isOpen\":[1540,\"is-open\"],\"header\":[513],\"actions\":[16]}]]],[\"limel-help.cjs\",[[1,\"limel-help\",{\"value\":[1],\"trigger\":[1],\"readMoreLink\":[16],\"openDirection\":[513,\"open-direction\"],\"isOpen\":[32]}]]],[\"limel-checkbox.cjs\",[[1,\"limel-checkbox\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"checked\":[516],\"indeterminate\":[516],\"required\":[516],\"readonlyLabels\":[16],\"modified\":[32]}]]],[\"limel-table.cjs\",[[1,\"limel-table\",{\"data\":[16],\"columns\":[16],\"mode\":[1],\"layout\":[1],\"pageSize\":[2,\"page-size\"],\"totalRows\":[2,\"total-rows\"],\"sorting\":[16],\"activeRow\":[1040],\"movableColumns\":[4,\"movable-columns\"],\"loading\":[4],\"page\":[2],\"emptyMessage\":[1,\"empty-message\"],\"aggregates\":[16],\"selectable\":[4],\"selection\":[16]}]]],[\"limel-info-tile.cjs\",[[1,\"limel-info-tile\",{\"value\":[520],\"icon\":[1],\"label\":[513],\"prefix\":[513],\"suffix\":[513],\"disabled\":[516],\"badge\":[520],\"loading\":[516],\"link\":[16],\"progress\":[16]}]]],[\"limel-switch.cjs\",[[1,\"limel-switch\",{\"label\":[513],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"value\":[516],\"helperText\":[513,\"helper-text\"],\"readonlyLabels\":[16],\"fieldId\":[32]}]]],[\"limel-dialog.cjs\",[[1,\"limel-dialog\",{\"heading\":[1],\"fullscreen\":[516],\"open\":[1540],\"closingActions\":[16]}]]],[\"limel-progress-flow.cjs\",[[1,\"limel-progress-flow\",{\"flowItems\":[16],\"disabled\":[4],\"readonly\":[4]}]]],[\"limel-shortcut.cjs\",[[1,\"limel-shortcut\",{\"icon\":[513],\"label\":[513],\"disabled\":[516],\"badge\":[520],\"link\":[16]}]]],[\"limel-banner.cjs\",[[1,\"limel-banner\",{\"message\":[513],\"icon\":[513],\"isOpen\":[32],\"open\":[64],\"close\":[64]}]]],[\"limel-callout.cjs\",[[1,\"limel-callout\",{\"heading\":[513],\"icon\":[513],\"type\":[513],\"language\":[1]}]]],[\"limel-slider.cjs\",[[1,\"limel-slider\",{\"disabled\":[516],\"readonly\":[516],\"factor\":[514],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"unit\":[513],\"value\":[514],\"valuemax\":[514],\"valuemin\":[514],\"step\":[514],\"percentageClass\":[32]}]]],[\"limel-code-editor.cjs\",[[1,\"limel-code-editor\",{\"value\":[1],\"language\":[1],\"readonly\":[4],\"lineNumbers\":[4,\"line-numbers\"],\"fold\":[4],\"lint\":[4],\"colorScheme\":[1,\"color-scheme\"],\"random\":[32]}]]],[\"limel-config.cjs\",[[1,\"limel-config\",{\"config\":[16]}]]],[\"limel-flex-container.cjs\",[[1,\"limel-flex-container\",{\"direction\":[513],\"justify\":[513],\"align\":[513],\"reverse\":[516]}]]],[\"limel-form.cjs\",[[1,\"limel-form\",{\"schema\":[16],\"value\":[16],\"disabled\":[4],\"propsFactory\":[16],\"transformErrors\":[16],\"errors\":[16]}]]],[\"limel-grid.cjs\",[[1,\"limel-grid\"]]],[\"limel-action-bar_3.cjs\",[[1,\"limel-action-bar\",{\"actions\":[16],\"accessibleLabel\":[513,\"accessible-label\"],\"layout\":[513],\"openDirection\":[513,\"open-direction\"],\"overflowCutoff\":[32]}],[0,\"limel-action-bar-overflow-menu\",{\"items\":[16],\"openDirection\":[513,\"open-direction\"]}],[0,\"limel-action-bar-item\",{\"item\":[16],\"isVisible\":[516,\"is-visible\"]}]]],[\"limel-prosemirror-adapter.cjs\",[[1,\"limel-prosemirror-adapter\",{\"value\":[1],\"view\":[32],\"actionBarItems\":[32]}]]],[\"limel-color-picker-palette.cjs\",[[17,\"limel-color-picker-palette\",{\"value\":[513],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"required\":[516]}]]],[\"limel-dock-button.cjs\",[[0,\"limel-dock-button\",{\"item\":[16],\"expanded\":[516],\"useMobileLayout\":[516,\"use-mobile-layout\"],\"isOpen\":[32]}]]],[\"limel-tab-bar.cjs\",[[1,\"limel-tab-bar\",{\"tabs\":[1040],\"canScrollLeft\":[32],\"canScrollRight\":[32]},[[9,\"resize\",\"handleWindowResize\"]]]]],[\"limel-header.cjs\",[[1,\"limel-header\",{\"icon\":[1],\"heading\":[1],\"subheading\":[1],\"supportingText\":[1,\"supporting-text\"],\"subheadingDivider\":[1,\"subheading-divider\"]}]]],[\"limel-help-content.cjs\",[[1,\"limel-help-content\",{\"value\":[1],\"readMoreLink\":[16]}]]],[\"limel-progress-flow-item.cjs\",[[0,\"limel-progress-flow-item\",{\"item\":[16],\"disabled\":[4],\"readonly\":[4],\"currentStep\":[4,\"current-step\"]}]]],[\"limel-circular-progress.cjs\",[[1,\"limel-circular-progress\",{\"value\":[2],\"maxValue\":[2,\"max-value\"],\"prefix\":[513],\"suffix\":[1],\"displayPercentageColors\":[4,\"display-percentage-colors\"],\"size\":[513]}]]],[\"limel-flatpickr-adapter.cjs\",[[1,\"limel-flatpickr-adapter\",{\"value\":[16],\"type\":[1],\"format\":[1],\"isOpen\":[4,\"is-open\"],\"inputElement\":[16],\"language\":[1],\"formatter\":[16]}]]],[\"limel-button.cjs\",[[1,\"limel-button\",{\"label\":[513],\"primary\":[516],\"outlined\":[516],\"icon\":[513],\"disabled\":[516],\"loading\":[516],\"loadingFailed\":[516,\"loading-failed\"],\"justLoaded\":[32]}]]],[\"limel-file-dropzone_2.cjs\",[[1,\"limel-file-dropzone\",{\"accept\":[513],\"disabled\":[4],\"text\":[1],\"helperText\":[1,\"helper-text\"],\"hasFileToDrop\":[32]}],[1,\"limel-file-input\",{\"accept\":[513],\"disabled\":[516],\"multiple\":[516]}]]],[\"limel-markdown.cjs\",[[1,\"limel-markdown\",{\"value\":[1]}]]],[\"limel-icon-button.cjs\",[[1,\"limel-icon-button\",{\"icon\":[513],\"elevated\":[516],\"label\":[513],\"disabled\":[516]}]]],[\"limel-linear-progress.cjs\",[[1,\"limel-linear-progress\",{\"value\":[514],\"indeterminate\":[516]}]]],[\"limel-chip_2.cjs\",[[1,\"limel-chip-set\",{\"value\":[16],\"type\":[513],\"label\":[513],\"helperText\":[513,\"helper-text\"],\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"inputType\":[513,\"input-type\"],\"maxItems\":[514,\"max-items\"],\"required\":[516],\"searchLabel\":[513,\"search-label\"],\"emptyInputOnBlur\":[516,\"empty-input-on-blur\"],\"clearAllButton\":[4,\"clear-all-button\"],\"leadingIcon\":[513,\"leading-icon\"],\"delimiter\":[513],\"language\":[1],\"editMode\":[32],\"textValue\":[32],\"blurred\":[32],\"inputChipIndexSelected\":[32],\"selectedChipIds\":[32],\"getEditMode\":[64],\"setFocus\":[64],\"emptyInput\":[64]}],[1,\"limel-chip\",{\"language\":[513],\"text\":[513],\"icon\":[1],\"link\":[16],\"badge\":[520],\"disabled\":[516],\"readonly\":[516],\"selected\":[516],\"invalid\":[516],\"removable\":[516],\"type\":[513],\"loading\":[516],\"progress\":[514],\"identifier\":[520]}]]],[\"limel-popover_2.cjs\",[[1,\"limel-popover\",{\"open\":[4],\"openDirection\":[513,\"open-direction\"]}],[1,\"limel-popover-surface\",{\"contentCollection\":[16]}]]],[\"limel-spinner.cjs\",[[1,\"limel-spinner\",{\"size\":[513],\"limeBranded\":[4,\"lime-branded\"]}]]],[\"limel-badge.cjs\",[[1,\"limel-badge\",{\"label\":[520]}]]],[\"limel-icon.cjs\",[[1,\"limel-icon\",{\"size\":[513],\"name\":[513],\"badge\":[516]}]]],[\"limel-dynamic-label_4.cjs\",[[1,\"limel-list\",{\"items\":[16],\"badgeIcons\":[4,\"badge-icons\"],\"iconSize\":[1,\"icon-size\"],\"type\":[1],\"maxLinesSecondaryText\":[2,\"max-lines-secondary-text\"]}],[1,\"limel-menu-surface\",{\"open\":[4],\"allowClicksElement\":[16]}],[1,\"limel-dynamic-label\",{\"value\":[8],\"defaultLabel\":[16],\"labels\":[16]}],[1,\"limel-helper-line\",{\"helperText\":[513,\"helper-text\"],\"length\":[514],\"maxLength\":[514,\"max-length\"],\"invalid\":[516],\"helperTextId\":[513,\"helper-text-id\"]}]]],[\"limel-portal_3.cjs\",[[1,\"limel-tooltip\",{\"elementId\":[513,\"element-id\"],\"label\":[513],\"helperLabel\":[513,\"helper-label\"],\"maxlength\":[514],\"openDirection\":[513,\"open-direction\"],\"open\":[32]}],[1,\"limel-tooltip-content\",{\"label\":[513],\"helperLabel\":[513,\"helper-label\"],\"maxlength\":[514]}],[1,\"limel-portal\",{\"openDirection\":[513,\"open-direction\"],\"position\":[513],\"containerId\":[513,\"container-id\"],\"containerStyle\":[16],\"parent\":[16],\"inheritParentWidth\":[516,\"inherit-parent-width\"],\"visible\":[516],\"anchor\":[16]}]]],[\"limel-breadcrumbs_4.cjs\",[[1,\"limel-menu\",{\"items\":[16],\"disabled\":[516],\"openDirection\":[513,\"open-direction\"],\"surfaceWidth\":[513,\"surface-width\"],\"open\":[1540],\"badgeIcons\":[516,\"badge-icons\"],\"gridLayout\":[516,\"grid-layout\"],\"loading\":[516],\"currentSubMenu\":[1040],\"rootItem\":[16],\"searcher\":[16],\"emptyResultMessage\":[1,\"empty-result-message\"],\"loadingSubItems\":[32],\"searchValue\":[32],\"searchResults\":[32]}],[1,\"limel-breadcrumbs\",{\"items\":[16],\"divider\":[1]}],[1,\"limel-menu-list\",{\"items\":[16],\"badgeIcons\":[4,\"badge-icons\"],\"iconSize\":[1,\"icon-size\"],\"type\":[1],\"maxLinesSecondaryText\":[2,\"max-lines-secondary-text\"]}],[1,\"limel-input-field\",{\"disabled\":[516],\"readonly\":[516],\"invalid\":[516],\"label\":[513],\"placeholder\":[513],\"helperText\":[513,\"helper-text\"],\"prefix\":[513],\"suffix\":[513],\"required\":[516],\"value\":[513],\"trailingIcon\":[513,\"trailing-icon\"],\"leadingIcon\":[513,\"leading-icon\"],\"pattern\":[513],\"type\":[513],\"formatNumber\":[516,\"format-number\"],\"step\":[520],\"max\":[514],\"min\":[514],\"maxlength\":[514],\"minlength\":[514],\"completions\":[16],\"showLink\":[516,\"show-link\"],\"locale\":[513],\"isFocused\":[32],\"isModified\":[32],\"showCompletions\":[32]}]]]]"), options);
18
18
  });
19
19
  };
20
20
 
@@ -0,0 +1,77 @@
1
+ import { toggleMark, setBlockType, wrapIn } from 'prosemirror-commands';
2
+ import { wrapInList } from 'prosemirror-schema-list';
3
+ export class MenuCommandFactory {
4
+ constructor(schema) {
5
+ this.markNames = {
6
+ bold: 'strong',
7
+ italic: 'em',
8
+ underline: 'underline',
9
+ blockquote: 'blockquote',
10
+ headerlevel1: 'headerlevel1',
11
+ headerlevel2: 'headerlevel2',
12
+ headerlevel3: 'headerlevel3',
13
+ addorremovelink: 'link',
14
+ numberedlist: 'ordered_list',
15
+ list: 'bullet_list',
16
+ };
17
+ this.schema = schema;
18
+ }
19
+ createCommand(mark) {
20
+ if (this.markNames[mark]) {
21
+ mark = this.markNames[mark];
22
+ }
23
+ switch (mark) {
24
+ case 'strong':
25
+ case 'em':
26
+ case 'underline':
27
+ return this.createToggleMarkCommand(mark);
28
+ case 'paragraph':
29
+ return this.createSetNodeTypeCommand(mark);
30
+ case 'headerlevel1':
31
+ case 'headerlevel2':
32
+ case 'headerlevel3':
33
+ return this.createSetNodeTypeCommand('heading', parseInt(mark[mark.length - 1], 10));
34
+ case 'blockquote':
35
+ return this.createWrapInCommand(mark);
36
+ case 'ordered_list':
37
+ case 'bullet_list':
38
+ return this.createListCommand(mark);
39
+ default:
40
+ throw new Error(`The Mark "${mark}" is not supported`);
41
+ }
42
+ }
43
+ createToggleMarkCommand(markName) {
44
+ const markType = this.schema.marks[markName];
45
+ if (!markType) {
46
+ throw new Error(`Mark "${markName}" not found in schema`);
47
+ }
48
+ return toggleMark(markType);
49
+ }
50
+ createSetNodeTypeCommand(nodeType, level) {
51
+ const type = this.schema.nodes[nodeType];
52
+ if (!type) {
53
+ throw new Error(`Node type "${nodeType}" not found in schema`);
54
+ }
55
+ if (nodeType === 'heading' && level) {
56
+ return setBlockType(type, { level: level });
57
+ }
58
+ else {
59
+ return setBlockType(type);
60
+ }
61
+ }
62
+ createWrapInCommand(nodeType) {
63
+ const type = this.schema.nodes[nodeType];
64
+ if (!type) {
65
+ throw new Error(`Node type "${nodeType}" not found in schema`);
66
+ }
67
+ return wrapIn(type);
68
+ }
69
+ createListCommand(listType) {
70
+ const type = this.schema.nodes[listType];
71
+ if (!type) {
72
+ throw new Error(`List type "${listType}" not found in schema`);
73
+ }
74
+ return wrapInList(type);
75
+ }
76
+ }
77
+ //# sourceMappingURL=menu-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-commands.js","sourceRoot":"","sources":["../../../../../src/components/text-editor/prosemirror-adapter/menu/menu-commands.ts"],"names":[],"mappings":"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","sourcesContent":["import { toggleMark, setBlockType, wrapIn } from 'prosemirror-commands';\nimport { Schema, MarkType } from 'prosemirror-model';\nimport { wrapInList } from 'prosemirror-schema-list';\n\nexport class MenuCommandFactory {\n private schema: Schema;\n\n constructor(schema: Schema) {\n this.schema = schema;\n }\n\n private markNames = {\n bold: 'strong',\n italic: 'em',\n underline: 'underline',\n blockquote: 'blockquote',\n headerlevel1: 'headerlevel1',\n headerlevel2: 'headerlevel2',\n headerlevel3: 'headerlevel3',\n addorremovelink: 'link',\n numberedlist: 'ordered_list',\n list: 'bullet_list',\n };\n\n createCommand(mark: string) {\n if (this.markNames[mark]) {\n mark = this.markNames[mark];\n }\n\n switch (mark) {\n case 'strong':\n case 'em':\n case 'underline':\n return this.createToggleMarkCommand(mark);\n case 'paragraph':\n return this.createSetNodeTypeCommand(mark);\n case 'headerlevel1':\n case 'headerlevel2':\n case 'headerlevel3':\n return this.createSetNodeTypeCommand(\n 'heading',\n parseInt(mark[mark.length - 1], 10),\n );\n case 'blockquote':\n return this.createWrapInCommand(mark);\n case 'ordered_list':\n case 'bullet_list':\n return this.createListCommand(mark);\n default:\n throw new Error(`The Mark \"${mark}\" is not supported`);\n }\n }\n\n private createToggleMarkCommand(markName: string) {\n const markType: MarkType | undefined = this.schema.marks[markName];\n if (!markType) {\n throw new Error(`Mark \"${markName}\" not found in schema`);\n }\n\n return toggleMark(markType);\n }\n\n private createSetNodeTypeCommand(nodeType: string, level?: number) {\n const type = this.schema.nodes[nodeType];\n if (!type) {\n throw new Error(`Node type \"${nodeType}\" not found in schema`);\n }\n\n if (nodeType === 'heading' && level) {\n return setBlockType(type, { level: level });\n } else {\n return setBlockType(type);\n }\n }\n\n private createWrapInCommand(nodeType: string) {\n const type = this.schema.nodes[nodeType];\n if (!type) {\n throw new Error(`Node type \"${nodeType}\" not found in schema`);\n }\n\n return wrapIn(type);\n }\n\n private createListCommand(listType: string) {\n const type = this.schema.nodes[listType];\n if (!type) {\n throw new Error(`List type \"${listType}\" not found in schema`);\n }\n\n return wrapInList(type);\n }\n}\n"]}
@@ -0,0 +1,53 @@
1
+ export const textEditorMenuItems = [
2
+ {
3
+ text: 'Bold',
4
+ commandText: '⌘ B',
5
+ icon: 'bold',
6
+ iconOnly: true,
7
+ },
8
+ {
9
+ text: 'Italic',
10
+ commandText: '⌘ I',
11
+ icon: 'italic',
12
+ iconOnly: true,
13
+ },
14
+ {
15
+ text: 'Add or remove link',
16
+ commandText: '⌘ shift U',
17
+ icon: 'link',
18
+ iconOnly: true,
19
+ },
20
+ { separator: true },
21
+ {
22
+ text: 'Header Level 1',
23
+ icon: 'header_1',
24
+ iconOnly: true,
25
+ },
26
+ {
27
+ text: 'Header Level 2',
28
+ icon: 'header_2',
29
+ iconOnly: true,
30
+ },
31
+ {
32
+ text: 'Header Level 3',
33
+ icon: 'header_3',
34
+ iconOnly: true,
35
+ },
36
+ { separator: true },
37
+ {
38
+ text: 'List',
39
+ icon: 'list',
40
+ iconOnly: true,
41
+ },
42
+ {
43
+ text: 'Numbered list',
44
+ icon: 'numbered_list',
45
+ iconOnly: true,
46
+ },
47
+ {
48
+ text: 'Blockquote',
49
+ icon: 'quote_right',
50
+ iconOnly: true,
51
+ },
52
+ ];
53
+ //# sourceMappingURL=menu-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-items.js","sourceRoot":"","sources":["../../../../../src/components/text-editor/prosemirror-adapter/menu/menu-items.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAyC;EACrE;IACI,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,IAAI;GACjB;EACD;IACI,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;GACjB;EACD;IACI,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,IAAI;GACjB;EACD,EAAE,SAAS,EAAE,IAAI,EAAE;EACnB;IACI,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,IAAI;GACjB;EACD;IACI,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,IAAI;GACjB;EACD;IACI,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,IAAI;GACjB;EACD,EAAE,SAAS,EAAE,IAAI,EAAE;EACnB;IACI,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,IAAI;GACjB;EACD;IACI,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,IAAI;GACjB;EACD;IACI,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,IAAI;GACjB;CACJ,CAAC","sourcesContent":["import { ActionBarItem } from 'src/components/action-bar/action-bar.types';\nimport { ListSeparator } from 'src/components/list/list-item.types';\n\nexport const textEditorMenuItems: Array<ActionBarItem | ListSeparator> = [\n {\n text: 'Bold',\n commandText: '⌘ B',\n icon: 'bold',\n iconOnly: true,\n },\n {\n text: 'Italic',\n commandText: '⌘ I',\n icon: 'italic',\n iconOnly: true,\n },\n {\n text: 'Add or remove link',\n commandText: '⌘ shift U',\n icon: 'link',\n iconOnly: true,\n },\n { separator: true },\n {\n text: 'Header Level 1',\n icon: 'header_1',\n iconOnly: true,\n },\n {\n text: 'Header Level 2',\n icon: 'header_2',\n iconOnly: true,\n },\n {\n text: 'Header Level 3',\n icon: 'header_3',\n iconOnly: true,\n },\n { separator: true },\n {\n text: 'List',\n icon: 'list',\n iconOnly: true,\n },\n {\n text: 'Numbered list',\n icon: 'numbered_list',\n iconOnly: true,\n },\n {\n text: 'Blockquote',\n icon: 'quote_right',\n iconOnly: true,\n },\n];\n"]}
@@ -1,71 +1,5 @@
1
1
  @charset "UTF-8";
2
- /*
3
- * This file is imported into every component!
4
- *
5
- * Nothing in this file may output any CSS
6
- * without being explicitly called by outside code.
7
- */
8
- /*
9
- * This file is imported into every component that uses MDC!
10
- *
11
- * Anything in this file that generates CSS output on its own,
12
- * without being explicitly used, will output that CSS in every
13
- * single component, increasing the size of the production build.
14
- * Avoid that unless there's very good reason for it!
15
- */
16
- /*
17
- * This file is imported into every component that uses MDC!
18
- *
19
- * Anything in this file that generates CSS output on its own,
20
- * without being explicitly used, will output that CSS in every
21
- * single component, increasing the size of the production build.
22
- * Avoid that unless there's very good reason for it!
23
- */
24
- :host {
25
- --mdc-theme-primary: var(
26
- --lime-primary-color,
27
- rgb(var(--color-teal-default))
28
- );
29
- --mdc-theme-secondary: var(
30
- --lime-secondary-color,
31
- rgb(var(--contrast-1100))
32
- );
33
- --mdc-theme-on-primary: var(
34
- --lime-on-primary-color,
35
- rgb(var(--contrast-100))
36
- );
37
- --mdc-theme-on-secondary: var(
38
- --lime-on-secondary-color,
39
- rgb(var(--contrast-100))
40
- );
41
- --mdc-theme-text-disabled-on-background: var(
42
- --lime-text-disabled-on-background-color,
43
- rgba(var(--contrast-1700), 0.38)
44
- );
45
- --mdc-theme-text-primary-on-background: var(
46
- --lime-text-primary-on-background-color,
47
- rgba(var(--contrast-1700), 0.87)
48
- );
49
- --mdc-theme-text-secondary-on-background: var(
50
- --lime-text-secondary-on-background-color,
51
- rgba(var(--contrast-1700), 0.54)
52
- );
53
- --mdc-theme-error: var(
54
- --lime-error-background-color,
55
- rgb(var(--color-red-dark))
56
- );
57
- --lime-error-text-color: rgb(var(--color-red-darker));
58
- --mdc-theme-surface: var(
59
- --lime-surface-background-color,
60
- rgb(var(--contrast-100))
61
- );
62
- --mdc-theme-on-surface: var(
63
- --lime-on-surface-color,
64
- rgb(var(--contrast-1500))
65
- );
66
- }
67
-
68
- :host(limel-text-editor) {
2
+ :host(limel-prosemirror-adapter) {
69
3
  isolation: isolate;
70
4
  display: block;
71
5
  }
@@ -75,18 +9,8 @@
75
9
  }
76
10
 
77
11
  .ProseMirror-menubar-wrapper {
78
- transition: border 0.2s ease;
79
12
  display: grid;
80
13
  grid-template-rows: auto 1fr;
81
- border-radius: 0.25rem;
82
- border: 1px solid;
83
- border-color: rgba(var(--contrast-700), 0.65);
84
- }
85
- .ProseMirror-menubar-wrapper:hover {
86
- border-color: rgba(var(--contrast-700), 1);
87
- }
88
- .ProseMirror-menubar-wrapper:focus-within {
89
- border-color: var(--mdc-theme-primary);
90
14
  }
91
15
 
92
16
  .ProseMirror-textblock-dropdown {
@@ -107,10 +31,7 @@
107
31
  -webkit-font-variant-ligatures: none;
108
32
  font-variant-ligatures: none;
109
33
  font-feature-settings: "liga" 0;
110
- border-bottom-left-radius: 0.5rem;
111
- border-bottom-right-radius: 0.5rem;
112
- padding: var(--limel-text-editor-padding);
113
- background-color: rgb(var(--contrast-100));
34
+ padding-top: 0.75rem;
114
35
  }
115
36
  .ProseMirror [draggable][contenteditable=false] {
116
37
  user-select: text;
@@ -206,10 +127,81 @@ img.ProseMirror-separator {
206
127
  * 2. the CSS variables of `--kompendium-example-font-family`
207
128
  * in the `<style>` tag of `index.html`.
208
129
  */
130
+ /*
131
+ * This file is imported into every component!
132
+ *
133
+ * Nothing in this file may output any CSS
134
+ * without being explicitly called by outside code.
135
+ */
136
+ /*
137
+ * This file is imported into every component that uses MDC!
138
+ *
139
+ * Anything in this file that generates CSS output on its own,
140
+ * without being explicitly used, will output that CSS in every
141
+ * single component, increasing the size of the production build.
142
+ * Avoid that unless there's very good reason for it!
143
+ */
144
+ /*
145
+ * This file is imported into every component that uses MDC!
146
+ *
147
+ * Anything in this file that generates CSS output on its own,
148
+ * without being explicitly used, will output that CSS in every
149
+ * single component, increasing the size of the production build.
150
+ * Avoid that unless there's very good reason for it!
151
+ */
152
+ :host {
153
+ --mdc-theme-primary: var(
154
+ --lime-primary-color,
155
+ rgb(var(--color-teal-default))
156
+ );
157
+ --mdc-theme-secondary: var(
158
+ --lime-secondary-color,
159
+ rgb(var(--contrast-1100))
160
+ );
161
+ --mdc-theme-on-primary: var(
162
+ --lime-on-primary-color,
163
+ rgb(var(--contrast-100))
164
+ );
165
+ --mdc-theme-on-secondary: var(
166
+ --lime-on-secondary-color,
167
+ rgb(var(--contrast-100))
168
+ );
169
+ --mdc-theme-text-disabled-on-background: var(
170
+ --lime-text-disabled-on-background-color,
171
+ rgba(var(--contrast-1700), 0.38)
172
+ );
173
+ --mdc-theme-text-primary-on-background: var(
174
+ --lime-text-primary-on-background-color,
175
+ rgba(var(--contrast-1700), 0.87)
176
+ );
177
+ --mdc-theme-text-secondary-on-background: var(
178
+ --lime-text-secondary-on-background-color,
179
+ rgba(var(--contrast-1700), 0.54)
180
+ );
181
+ --mdc-theme-error: var(
182
+ --lime-error-background-color,
183
+ rgb(var(--color-red-dark))
184
+ );
185
+ --lime-error-text-color: rgb(var(--color-red-darker));
186
+ --mdc-theme-surface: var(
187
+ --lime-surface-background-color,
188
+ rgb(var(--contrast-100))
189
+ );
190
+ --mdc-theme-on-surface: var(
191
+ --lime-on-surface-color,
192
+ rgb(var(--contrast-1500))
193
+ );
194
+ }
195
+
209
196
  div#editor .ProseMirror-menubar {
210
197
  position: sticky !important;
211
198
  z-index: 1;
212
199
  top: 0;
200
+ margin-left: -0.75rem;
201
+ margin-right: -0.75rem;
202
+ background-color: rgba(var(--contrast-200), 0.5);
203
+ backdrop-filter: blur(0.25rem);
204
+ -webkit-backdrop-filter: blur(0.25rem);
213
205
  }
214
206
  div#editor .ProseMirror-menubar[style*="position: fixed"] {
215
207
  box-shadow: 0 0.25rem 0.5rem -0.5rem rgb(var(--color-black), 0.8);
@@ -226,7 +218,6 @@ div#editor .ProseMirror-menubar-spacer {
226
218
  gap: 0.25rem;
227
219
  align-items: center;
228
220
  padding: 0.125rem;
229
- background-color: rgb(var(--contrast-100));
230
221
  border-top-left-radius: 0.5rem;
231
222
  border-top-right-radius: 0.5rem;
232
223
  }
@@ -5,8 +5,8 @@ import { Schema, DOMParser } from 'prosemirror-model';
5
5
  import { schema } from 'prosemirror-schema-basic';
6
6
  import { addListNodes } from 'prosemirror-schema-list';
7
7
  import { exampleSetup } from 'prosemirror-example-setup';
8
- import { buildFullMenu } from './menu/full-menu';
9
- import { getFilteredMenu } from './menu/menu-filter';
8
+ import { MenuCommandFactory } from './menu/menu-commands';
9
+ import { textEditorMenuItems } from './menu/menu-items';
10
10
  /**
11
11
  * The ProseMirror adapter offers a rich text editing experience with markdown support.
12
12
  * [Read more...](https://prosemirror.net/)
@@ -26,27 +26,37 @@ export class ProsemirrorAdapter {
26
26
  return this.view.dom.innerHTML;
27
27
  }
28
28
  };
29
+ this.handleActionBarItem = (event) => {
30
+ event.preventDefault();
31
+ const { text } = event.detail;
32
+ const mark = text.replace(/\s/g, '').toLowerCase();
33
+ try {
34
+ const command = this.menuCommandFactory.createCommand(mark);
35
+ this.executeCommand(command);
36
+ }
37
+ catch (error) {
38
+ throw new Error(`Error executing command: ${error}`);
39
+ }
40
+ };
29
41
  this.value = undefined;
30
42
  this.view = undefined;
43
+ this.actionBarItems = [];
31
44
  }
32
- componentWillLoad() { }
33
45
  render() {
34
- return h("div", { id: "editor" });
46
+ return (h("div", null, h("limel-action-bar", { accessibleLabel: "Toolbar", actions: this.actionBarItems, layout: "fullWidth", onItemSelected: this.handleActionBarItem }), h("div", { id: "editor" })));
35
47
  }
36
48
  componentDidLoad() {
49
+ this.actionBarItems = textEditorMenuItems;
37
50
  const mySchema = new Schema({
38
51
  nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),
39
52
  marks: schema.spec.marks,
40
53
  });
41
- const menu = buildFullMenu(mySchema)
42
- .map((items) => getFilteredMenu(items, undefined))
43
- .filter((items) => items.length);
44
54
  this.view = new EditorView(this.host.shadowRoot.querySelector('#editor'), {
45
55
  state: EditorState.create({
46
56
  doc: DOMParser.fromSchema(mySchema).parse(this.host.shadowRoot.querySelector('#editor')),
47
57
  plugins: exampleSetup({
48
58
  schema: mySchema,
49
- menuContent: menu,
59
+ menuBar: false,
50
60
  }),
51
61
  }),
52
62
  dispatchTransaction: (transaction) => {
@@ -55,10 +65,24 @@ export class ProsemirrorAdapter {
55
65
  this.change.emit(this.getHTML());
56
66
  },
57
67
  });
68
+ this.menuCommandFactory = new MenuCommandFactory(mySchema);
58
69
  if (this.value) {
59
70
  this.view.dom.innerHTML = this.value;
60
71
  }
61
72
  }
73
+ executeCommand(command) {
74
+ const { state } = this.view;
75
+ const selection = state.selection;
76
+ let transaction = state.tr;
77
+ if (!selection.empty) {
78
+ transaction.setSelection(selection);
79
+ }
80
+ command(state, (tr) => {
81
+ transaction = tr;
82
+ });
83
+ this.view.dispatch(transaction);
84
+ this.view.focus();
85
+ }
62
86
  static get is() { return "limel-prosemirror-adapter"; }
63
87
  static get encapsulation() { return "shadow"; }
64
88
  static get originalStyleUrls() {
@@ -94,7 +118,8 @@ export class ProsemirrorAdapter {
94
118
  }
95
119
  static get states() {
96
120
  return {
97
- "view": {}
121
+ "view": {},
122
+ "actionBarItems": {}
98
123
  };
99
124
  }
100
125
  static get events() {
@@ -1 +1 @@
1
- {"version":3,"file":"prosemirror-adapter.js","sourceRoot":"","sources":["../../../../src/components/text-editor/prosemirror-adapter/prosemirror-adapter.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,OAAO,EACP,KAAK,EAEL,IAAI,EACJ,KAAK,EACL,CAAC,GACJ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;GAQG;AAMH,MAAM,OAAO,kBAAkB;;IA6DnB,YAAO,GAAG,GAAW,EAAE;MAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,EAAE,EAAE;QAClC,OAAO,EAAE,CAAC;OACb;WAAM;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;OAClC;IACL,CAAC,CAAC;;;;EAhDK,iBAAiB,KAAI,CAAC;EAEtB,MAAM;IACT,OAAO,WAAK,EAAE,EAAC,QAAQ,GAAG,CAAC;EAC/B,CAAC;EAEM,gBAAgB;IACnB,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC;MACxB,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC;MACnE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;KAC3B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAoB,aAAa,CAAC,QAAQ,CAAC;OAChD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;OACjD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,EAC7C;MACI,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;QACtB,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAChD;QACD,OAAO,EAAE,YAAY,CAAC;UAClB,MAAM,EAAE,QAAQ;UAChB,WAAW,EAAE,IAAoB;SACpC,CAAC;OACL,CAAC;MACF,mBAAmB,EAAE,CAAC,WAAW,EAAE,EAAE;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;MACrC,CAAC;KACJ,CACJ,CAAC;IAEF,IAAI,IAAI,CAAC,KAAK,EAAE;MACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;KACxC;EACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASJ","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Prop,\n State,\n h,\n} from '@stencil/core';\nimport { EditorState } from 'prosemirror-state';\nimport { EditorView } from 'prosemirror-view';\nimport { Schema, DOMParser } from 'prosemirror-model';\nimport { schema } from 'prosemirror-schema-basic';\nimport { addListNodes } from 'prosemirror-schema-list';\nimport { exampleSetup } from 'prosemirror-example-setup';\nimport { MenuElement, MenuItem } from 'prosemirror-menu';\nimport { buildFullMenu } from './menu/full-menu';\nimport { getFilteredMenu } from './menu/menu-filter';\n\n/**\n * The ProseMirror adapter offers a rich text editing experience with markdown support.\n * [Read more...](https://prosemirror.net/)\n *\n * @exampleComponent limel-example-prosemirror-adapter-basic\n * @exampleComponent limel-example-prosemirror-adapter-with-custom-menu\n * @beta\n * @private\n */\n@Component({\n tag: 'limel-prosemirror-adapter',\n shadow: true,\n styleUrl: 'prosemirror-adapter.scss',\n})\nexport class ProsemirrorAdapter {\n /**\n * The value of the editor, expected to be serialised HTML\n */\n @Prop()\n public value: string;\n\n @Element()\n private host: HTMLLimelTextEditorElement;\n\n @State()\n private view: EditorView;\n\n /**\n * Dispatched when a change is made to the editor\n */\n @Event()\n private change: EventEmitter<string>;\n\n public componentWillLoad() {}\n\n public render() {\n return <div id=\"editor\" />;\n }\n\n public componentDidLoad() {\n const mySchema = new Schema({\n nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),\n marks: schema.spec.marks,\n });\n\n const menu: MenuElement[][] = buildFullMenu(mySchema)\n .map((items) => getFilteredMenu(items, undefined))\n .filter((items) => items.length);\n\n this.view = new EditorView(\n this.host.shadowRoot.querySelector('#editor'),\n {\n state: EditorState.create({\n doc: DOMParser.fromSchema(mySchema).parse(\n this.host.shadowRoot.querySelector('#editor'),\n ),\n plugins: exampleSetup({\n schema: mySchema,\n menuContent: menu as MenuItem[][],\n }),\n }),\n dispatchTransaction: (transaction) => {\n const newState = this.view.state.apply(transaction);\n this.view.updateState(newState);\n\n this.change.emit(this.getHTML());\n },\n },\n );\n\n if (this.value) {\n this.view.dom.innerHTML = this.value;\n }\n }\n\n private getHTML = (): string => {\n if (this.view.dom.textContent === '') {\n return '';\n } else {\n return this.view.dom.innerHTML;\n }\n };\n}\n"]}
1
+ {"version":3,"file":"prosemirror-adapter.js","sourceRoot":"","sources":["../../../../src/components/text-editor/prosemirror-adapter/prosemirror-adapter.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Prop,\n State,\n h,\n} from '@stencil/core';\nimport { EditorState } from 'prosemirror-state';\nimport { EditorView } from 'prosemirror-view';\nimport { Schema, DOMParser } from 'prosemirror-model';\nimport { schema } from 'prosemirror-schema-basic';\nimport { addListNodes } from 'prosemirror-schema-list';\nimport { exampleSetup } from 'prosemirror-example-setup';\nimport { ActionBarItem } from 'src/components/action-bar/action-bar.types';\nimport { ListSeparator } from 'src/components/list/list-item.types';\nimport { MenuCommandFactory } from './menu/menu-commands';\nimport { textEditorMenuItems } from './menu/menu-items';\n\n/**\n * The ProseMirror adapter offers a rich text editing experience with markdown support.\n * [Read more...](https://prosemirror.net/)\n *\n * @exampleComponent limel-example-prosemirror-adapter-basic\n * @exampleComponent limel-example-prosemirror-adapter-with-custom-menu\n * @beta\n * @private\n */\n@Component({\n tag: 'limel-prosemirror-adapter',\n shadow: true,\n styleUrl: 'prosemirror-adapter.scss',\n})\nexport class ProsemirrorAdapter {\n /**\n * The value of the editor, expected to be serialised HTML\n */\n @Prop()\n public value: string;\n\n @Element()\n private host: HTMLLimelTextEditorElement;\n\n @State()\n private view: EditorView;\n\n @State()\n private actionBarItems: Array<ActionBarItem | ListSeparator> = [];\n\n private menuCommandFactory: MenuCommandFactory;\n\n /**\n * Dispatched when a change is made to the editor\n */\n @Event()\n private change: EventEmitter<string>;\n\n public render() {\n return (\n <div>\n <limel-action-bar\n accessibleLabel=\"Toolbar\"\n actions={this.actionBarItems}\n layout=\"fullWidth\"\n onItemSelected={this.handleActionBarItem}\n />\n <div id=\"editor\" />\n </div>\n );\n }\n\n public componentDidLoad() {\n this.actionBarItems = textEditorMenuItems;\n\n const mySchema = new Schema({\n nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block'),\n marks: schema.spec.marks,\n });\n\n this.view = new EditorView(\n this.host.shadowRoot.querySelector('#editor'),\n {\n state: EditorState.create({\n doc: DOMParser.fromSchema(mySchema).parse(\n this.host.shadowRoot.querySelector('#editor'),\n ),\n plugins: exampleSetup({\n schema: mySchema,\n menuBar: false,\n }),\n }),\n dispatchTransaction: (transaction) => {\n const newState = this.view.state.apply(transaction);\n this.view.updateState(newState);\n\n this.change.emit(this.getHTML());\n },\n },\n );\n\n this.menuCommandFactory = new MenuCommandFactory(mySchema);\n\n if (this.value) {\n this.view.dom.innerHTML = this.value;\n }\n }\n\n private getHTML = (): string => {\n if (this.view.dom.textContent === '') {\n return '';\n } else {\n return this.view.dom.innerHTML;\n }\n };\n\n private handleActionBarItem = (event: CustomEvent<ActionBarItem>) => {\n event.preventDefault();\n\n const { text } = event.detail;\n const mark = text.replace(/\\s/g, '').toLowerCase();\n try {\n const command = this.menuCommandFactory.createCommand(mark);\n this.executeCommand(command);\n } catch (error) {\n throw new Error(`Error executing command: ${error}`);\n }\n };\n\n private executeCommand(command) {\n const { state } = this.view;\n const selection = state.selection;\n\n let transaction = state.tr;\n\n if (!selection.empty) {\n transaction.setSelection(selection);\n }\n\n command(state, (tr) => {\n transaction = tr;\n });\n this.view.dispatch(transaction);\n\n this.view.focus();\n }\n}\n"]}