@limetech/lime-elements 37.43.0 → 37.44.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js +1 -1
  4. package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js.map +1 -1
  5. package/dist/cjs/limel-callout.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
  7. package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
  8. package/dist/cjs/limel-file.cjs.entry.js +1 -1
  9. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
  10. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +94 -56
  11. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
  12. package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
  13. package/dist/cjs/limel-text-editor.cjs.entry.js +2 -1
  14. package/dist/cjs/limel-text-editor.cjs.entry.js.map +1 -1
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/cjs/{translations-a67fc927.js → translations-988a3f51.js} +55 -1
  17. package/dist/cjs/translations-988a3f51.js.map +1 -0
  18. package/dist/collection/components/input-field/input-field.css +3 -3
  19. package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js +19 -4
  20. package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js.map +1 -1
  21. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +97 -51
  22. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
  23. package/dist/collection/components/text-editor/text-editor.js +25 -1
  24. package/dist/collection/components/text-editor/text-editor.js.map +1 -1
  25. package/dist/collection/translations/da.js +9 -0
  26. package/dist/collection/translations/da.js.map +1 -1
  27. package/dist/collection/translations/en.js +9 -0
  28. package/dist/collection/translations/en.js.map +1 -1
  29. package/dist/collection/translations/fi.js +9 -0
  30. package/dist/collection/translations/fi.js.map +1 -1
  31. package/dist/collection/translations/nl.js +9 -0
  32. package/dist/collection/translations/nl.js.map +1 -1
  33. package/dist/collection/translations/no.js +9 -0
  34. package/dist/collection/translations/no.js.map +1 -1
  35. package/dist/collection/translations/sv.js +9 -0
  36. package/dist/collection/translations/sv.js.map +1 -1
  37. package/dist/esm/lime-elements.js +1 -1
  38. package/dist/esm/limel-breadcrumbs_7.entry.js +1 -1
  39. package/dist/esm/limel-breadcrumbs_7.entry.js.map +1 -1
  40. package/dist/esm/limel-callout.entry.js +1 -1
  41. package/dist/esm/limel-chip_2.entry.js +1 -1
  42. package/dist/esm/limel-file-viewer.entry.js +1 -1
  43. package/dist/esm/limel-file.entry.js +1 -1
  44. package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
  45. package/dist/esm/limel-prosemirror-adapter.entry.js +94 -56
  46. package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
  47. package/dist/esm/limel-snackbar.entry.js +1 -1
  48. package/dist/esm/limel-text-editor.entry.js +2 -1
  49. package/dist/esm/limel-text-editor.entry.js.map +1 -1
  50. package/dist/esm/loader.js +1 -1
  51. package/dist/esm/{translations-cab6bc1e.js → translations-e73d7840.js} +55 -1
  52. package/dist/esm/translations-e73d7840.js.map +1 -0
  53. package/dist/lime-elements/lime-elements.esm.js +1 -1
  54. package/dist/lime-elements/lime-elements.esm.js.map +1 -1
  55. package/dist/lime-elements/{p-61f3a6ab.entry.js → p-16f7ddd0.entry.js} +2 -2
  56. package/dist/lime-elements/{p-e1641410.entry.js → p-25d2faff.entry.js} +2 -2
  57. package/dist/lime-elements/{p-50d01bf8.entry.js → p-2f453044.entry.js} +2 -2
  58. package/dist/lime-elements/p-2f453044.entry.js.map +1 -0
  59. package/dist/lime-elements/p-50a34fa3.entry.js +2 -0
  60. package/dist/lime-elements/p-50a34fa3.entry.js.map +1 -0
  61. package/dist/lime-elements/{p-cab2fc85.entry.js → p-7681dae8.entry.js} +2 -2
  62. package/dist/lime-elements/{p-24c69726.entry.js → p-ab13cb4a.entry.js} +2 -2
  63. package/dist/lime-elements/{p-6886036e.entry.js → p-c5f96fcd.entry.js} +2 -2
  64. package/dist/lime-elements/p-c5f96fcd.entry.js.map +1 -0
  65. package/dist/lime-elements/{p-1b10fc91.entry.js → p-c8ce7cd4.entry.js} +2 -2
  66. package/dist/lime-elements/p-cd6b9ff0.js +2 -0
  67. package/dist/lime-elements/p-cd6b9ff0.js.map +1 -0
  68. package/dist/lime-elements/{p-0b52bddf.entry.js → p-dfc28411.entry.js} +2 -2
  69. package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-items.d.ts +13 -2
  70. package/dist/types/components/text-editor/prosemirror-adapter/prosemirror-adapter.d.ts +15 -3
  71. package/dist/types/components/text-editor/text-editor.d.ts +5 -0
  72. package/dist/types/components.d.ts +16 -0
  73. package/dist/types/translations/da.d.ts +9 -0
  74. package/dist/types/translations/en.d.ts +9 -0
  75. package/dist/types/translations/fi.d.ts +9 -0
  76. package/dist/types/translations/nl.d.ts +9 -0
  77. package/dist/types/translations/no.d.ts +9 -0
  78. package/dist/types/translations/sv.d.ts +9 -0
  79. package/package.json +1 -1
  80. package/dist/cjs/translations-a67fc927.js.map +0 -1
  81. package/dist/esm/translations-cab6bc1e.js.map +0 -1
  82. package/dist/lime-elements/p-00caa45f.js +0 -2
  83. package/dist/lime-elements/p-00caa45f.js.map +0 -1
  84. package/dist/lime-elements/p-11565c0e.entry.js +0 -2
  85. package/dist/lime-elements/p-11565c0e.entry.js.map +0 -1
  86. package/dist/lime-elements/p-50d01bf8.entry.js.map +0 -1
  87. package/dist/lime-elements/p-6886036e.entry.js.map +0 -1
  88. /package/dist/lime-elements/{p-61f3a6ab.entry.js.map → p-16f7ddd0.entry.js.map} +0 -0
  89. /package/dist/lime-elements/{p-e1641410.entry.js.map → p-25d2faff.entry.js.map} +0 -0
  90. /package/dist/lime-elements/{p-cab2fc85.entry.js.map → p-7681dae8.entry.js.map} +0 -0
  91. /package/dist/lime-elements/{p-24c69726.entry.js.map → p-ab13cb4a.entry.js.map} +0 -0
  92. /package/dist/lime-elements/{p-1b10fc91.entry.js.map → p-c8ce7cd4.entry.js.map} +0 -0
  93. /package/dist/lime-elements/{p-0b52bddf.entry.js.map → p-dfc28411.entry.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h } from './index-6156b4fd.js';
2
- import { t as translate } from './translations-cab6bc1e.js';
2
+ import { t as translate } from './translations-e73d7840.js';
3
3
 
4
4
  const calloutIcons = {
5
5
  note: 'info',
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-6156b4fd.js';
2
2
  import { g as getIconName } from './get-icon-props-0b65f85e.js';
3
3
  import { m as makeEnterClickable, r as removeEnterClickable } from './make-enter-clickable-a30589fb.js';
4
- import { t as translate } from './translations-cab6bc1e.js';
4
+ import { t as translate } from './translations-e73d7840.js';
5
5
  import { D as DELETE, B as BACKSPACE, i as DELETE_KEY_CODE, j as BACKSPACE_KEY_CODE, k as ARROW_LEFT, l as ARROW_LEFT_KEY_CODE, m as ARROW_RIGHT, n as ARROW_RIGHT_KEY_CODE, a as ENTER, d as ENTER_KEY_CODE, E as ESCAPE, c as ESCAPE_KEY_CODE } from './keycodes-bf11a644.js';
6
6
  import { i as isEmpty } from './isEmpty-3c6786a3.js';
7
7
  import { g as getHref, a as getTarget } from './link-helper-725a9166.js';
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-6156b4fd.js';
2
- import { t as translate } from './translations-cab6bc1e.js';
2
+ import { t as translate } from './translations-e73d7840.js';
3
3
 
4
4
  function detectExtension(fileName, url) {
5
5
  const pathLike = fileName || url;
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h } from './index-6156b4fd.js';
2
- import { t as translate } from './translations-cab6bc1e.js';
2
+ import { t as translate } from './translations-e73d7840.js';
3
3
  import { g as getFileIcon, a as getFileExtensionTitle, b as getFileColor, c as getFileBackgroundColor } from './file-metadata-9a4780e2.js';
4
4
  import './get-icon-props-0b65f85e.js';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h } from './index-6156b4fd.js';
2
- import { t as translate } from './translations-cab6bc1e.js';
2
+ import { t as translate } from './translations-e73d7840.js';
3
3
  import { c as createCommonjsModule, a as commonjsGlobal, g as getDefaultExportFromCjs } from './_commonjsHelpers-5ec8f9b7.js';
4
4
  import './sv-f0ccdb13.js';
5
5
  import { m as moment } from './moment-be8ab0fa.js';
@@ -1,17 +1,18 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-6156b4fd.js';
2
- import { d as decodeHTML, m as markdownToHTML } from './markdown-parser-2ab3dab9.js';
3
- import { i as isItem } from './isItem-b0459122.js';
4
2
  import { k as keys$1, l as getSymbols, U as Uint8Array, e as isPrototype, a as getTag, n as baseUnary, p as nodeUtil, i as isBuffer, S as Stack, g as getAllKeys } from './_Uint8Array-75f23d1a.js';
5
3
  import { b as baseAssignValue, a as assignValue } from './_assignValue-fb2bf80a.js';
6
4
  import { k as keysIn, b as getSymbolsIn, g as getPrototype, a as getAllKeysIn } from './_getAllKeysIn-6b6bd0f6.js';
7
5
  import { i as isObject$1, r as root, S as Symbol } from './isObject-c74e273c.js';
8
6
  import { i as isArray } from './isArray-80298bc7.js';
9
7
  import { i as isObjectLike } from './isObjectLike-38996507.js';
10
- import './_commonjsHelpers-5ec8f9b7.js';
8
+ import { d as decodeHTML, m as markdownToHTML } from './markdown-parser-2ab3dab9.js';
9
+ import { t as translate$1 } from './translations-e73d7840.js';
10
+ import { i as isItem } from './isItem-b0459122.js';
11
11
  import './eq-c1c7f528.js';
12
12
  import './_getNative-93d6bfe9.js';
13
13
  import './isArrayLike-385e0f31.js';
14
14
  import './_defineProperty-2105cb48.js';
15
+ import './_commonjsHelpers-5ec8f9b7.js';
15
16
 
16
17
  /** Built-in value references. */
17
18
  var objectCreate = Object.create;
@@ -16711,7 +16712,7 @@ const textEditorMenuItems = [
16711
16712
  { separator: true },
16712
16713
  {
16713
16714
  value: EditorMenuTypes.HeaderLevel1,
16714
- text: 'Header Level 1',
16715
+ text: 'Header 1',
16715
16716
  commandText: `${mod} ${shift} 1`,
16716
16717
  icon: '-lime-text-h-heading-1',
16717
16718
  iconOnly: true,
@@ -16719,7 +16720,7 @@ const textEditorMenuItems = [
16719
16720
  },
16720
16721
  {
16721
16722
  value: EditorMenuTypes.HeaderLevel2,
16722
- text: 'Header Level 2',
16723
+ text: 'Header 2',
16723
16724
  commandText: `${mod} ${shift} 2`,
16724
16725
  icon: '-lime-text-h-heading-2',
16725
16726
  iconOnly: true,
@@ -16727,7 +16728,7 @@ const textEditorMenuItems = [
16727
16728
  },
16728
16729
  {
16729
16730
  value: EditorMenuTypes.HeaderLevel3,
16730
- text: 'Header Level 3',
16731
+ text: 'Header 3',
16731
16732
  commandText: `${mod} ${shift} 3`,
16732
16733
  icon: '-lime-text-h-heading-3',
16733
16734
  iconOnly: true,
@@ -16756,6 +16757,20 @@ const textEditorMenuItems = [
16756
16757
  selected: false,
16757
16758
  },
16758
16759
  ];
16760
+ const getTextEditorMenuItems = () => cloneDeep(textEditorMenuItems);
16761
+ const menuTranslationIDs = {
16762
+ strong: 'editor-menu.bold',
16763
+ em: 'editor-menu.italic',
16764
+ headerlevel1: 'editor-menu.h1',
16765
+ headerlevel2: 'editor-menu.h2',
16766
+ headerlevel3: 'editor-menu.h3',
16767
+ /* eslint-disable camelcase */
16768
+ bullet_list: 'editor-menu.bulleted-list',
16769
+ ordered_list: 'editor-menu.numbered-list',
16770
+ /* eslint-enable camelcase */
16771
+ blockquote: 'editor-menu.blockquote',
16772
+ link: 'editor-menu.link',
16773
+ };
16759
16774
 
16760
16775
  /* eslint-disable no-bitwise */
16761
16776
 
@@ -25423,53 +25438,30 @@ const ProsemirrorAdapter = class {
25423
25438
  constructor(hostRef) {
25424
25439
  registerInstance(this, hostRef);
25425
25440
  this.change = createEvent(this, "change", 7);
25426
- this.editorKeyMap = {};
25427
- this.initializeTextEditor = async () => {
25428
- this.actionBarItems = textEditorMenuItems;
25429
- const mySchema = new Schema({
25430
- nodes: addListNodes(schema$1.spec.nodes, 'paragraph block*', 'block'),
25431
- marks: schema$1.spec.marks,
25432
- });
25433
- // Parse initial content directly if 'value' is provided
25434
- const initialContentElement = document.createElement('div');
25435
- initialContentElement.innerHTML = '<p></p>';
25436
- if (this.value) {
25437
- initialContentElement.innerHTML =
25438
- await this.contentConverter.parseAsHTML(this.value, schema$1);
25439
- }
25440
- const initialDoc = DOMParser.fromSchema(mySchema).parse(initialContentElement);
25441
- this.menuCommandFactory = new MenuCommandFactory(mySchema);
25442
- this.editorKeyMap = this.menuCommandFactory.buildKeymap();
25443
- const keymapPlugin = keymap(this.editorKeyMap);
25444
- this.view = new EditorView(this.host.shadowRoot.querySelector('#editor'), {
25445
- state: EditorState.create({
25446
- doc: initialDoc,
25447
- plugins: [
25448
- ...exampleSetup({
25449
- schema: mySchema,
25450
- menuBar: false,
25451
- }),
25452
- keymapPlugin,
25453
- this.createMenuStateTrackingPlugin(this.actionBarItems),
25454
- ],
25455
- }),
25456
- dispatchTransaction: (transaction) => {
25457
- const newState = this.view.state.apply(transaction);
25458
- this.view.updateState(newState);
25459
- this.change.emit(this.contentConverter.serialize(this.view, schema$1));
25460
- },
25461
- });
25462
- this.menuCommandFactory = new MenuCommandFactory(mySchema);
25463
- if (this.value) {
25464
- this.updateView(this.value);
25441
+ this.getActionBarItems = () => {
25442
+ this.actionBarItems = getTextEditorMenuItems().map(this.getTranslatedItem);
25443
+ };
25444
+ this.getTranslatedItem = (item) => {
25445
+ const newItem = cloneDeep(item);
25446
+ if (isItem(item)) {
25447
+ const translationId = menuTranslationIDs[item.value];
25448
+ if (translationId) {
25449
+ newItem.text = translate$1.get(translationId, this.language);
25450
+ }
25465
25451
  }
25452
+ return newItem;
25453
+ };
25454
+ this.handleTransaction = (transaction) => {
25455
+ const newState = this.view.state.apply(transaction);
25456
+ this.view.updateState(newState);
25457
+ this.change.emit(this.contentConverter.serialize(this.view, this.schema));
25466
25458
  };
25467
25459
  this.handleActionBarItem = (event) => {
25468
25460
  event.preventDefault();
25469
25461
  const { value } = event.detail;
25470
25462
  try {
25471
25463
  const command = this.menuCommandFactory.getCommand(value);
25472
- this.executeCommand(command);
25464
+ this.dispatchMenuCommand(command);
25473
25465
  }
25474
25466
  catch (error) {
25475
25467
  throw new Error(`Error executing command: ${error}`);
@@ -25503,29 +25495,28 @@ const ProsemirrorAdapter = class {
25503
25495
  };
25504
25496
  this.contentType = 'markdown';
25505
25497
  this.value = undefined;
25498
+ this.language = undefined;
25506
25499
  this.view = undefined;
25507
25500
  this.actionBarItems = [];
25508
25501
  }
25509
25502
  watchValue(newValue) {
25510
25503
  if (!this.view ||
25511
- newValue === this.contentConverter.serialize(this.view, schema$1)) {
25504
+ newValue === this.contentConverter.serialize(this.view, this.schema)) {
25512
25505
  return;
25513
25506
  }
25514
25507
  this.updateView(newValue);
25515
25508
  }
25516
25509
  componentWillLoad() {
25517
- if (this.contentType === 'markdown') {
25518
- this.contentConverter = new markdownConverter();
25519
- }
25520
- else if (this.contentType === 'html') {
25521
- this.contentConverter = new HTMLConverter();
25522
- }
25510
+ this.getActionBarItems();
25511
+ this.setupContentConverter();
25523
25512
  }
25524
25513
  componentDidLoad() {
25525
25514
  // Stencil complains loudly about triggering rerenders in
25526
25515
  // componentDidLoad, but we have to, so we're using setTimeout to
25527
25516
  // suppress the warning. /Ads
25528
- setTimeout(this.initializeTextEditor, 0);
25517
+ setTimeout(() => {
25518
+ this.initializeTextEditor();
25519
+ }, 0);
25529
25520
  }
25530
25521
  render() {
25531
25522
  return [
@@ -25533,8 +25524,55 @@ const ProsemirrorAdapter = class {
25533
25524
  h("limel-action-bar", { accessibleLabel: "Toolbar", actions: this.actionBarItems, onItemSelected: this.handleActionBarItem }),
25534
25525
  ];
25535
25526
  }
25527
+ setupContentConverter() {
25528
+ /* eslint-disable multiline-ternary */
25529
+ this.contentConverter =
25530
+ this.contentType === 'markdown'
25531
+ ? new markdownConverter()
25532
+ : new HTMLConverter();
25533
+ /* eslint-enable multiline-ternary */
25534
+ }
25535
+ async initializeTextEditor() {
25536
+ this.schema = this.initializeSchema();
25537
+ const initialDoc = await this.parseInitialContent();
25538
+ this.menuCommandFactory = new MenuCommandFactory(this.schema);
25539
+ this.view = new EditorView(this.host.shadowRoot.querySelector('#editor'), {
25540
+ state: this.createEditorState(initialDoc),
25541
+ dispatchTransaction: this.handleTransaction,
25542
+ });
25543
+ if (this.value) {
25544
+ this.updateView(this.value);
25545
+ }
25546
+ }
25547
+ initializeSchema() {
25548
+ return new Schema({
25549
+ nodes: addListNodes(schema$1.spec.nodes, 'paragraph block*', 'block'),
25550
+ marks: schema$1.spec.marks,
25551
+ });
25552
+ }
25553
+ async parseInitialContent() {
25554
+ const initialContentElement = document.createElement('div');
25555
+ if (this.value) {
25556
+ initialContentElement.innerHTML =
25557
+ await this.contentConverter.parseAsHTML(this.value, this.schema);
25558
+ }
25559
+ else {
25560
+ initialContentElement.innerHTML = '<p></p>';
25561
+ }
25562
+ return DOMParser.fromSchema(this.schema).parse(initialContentElement);
25563
+ }
25564
+ createEditorState(initialDoc) {
25565
+ return EditorState.create({
25566
+ doc: initialDoc,
25567
+ plugins: [
25568
+ ...exampleSetup({ schema: this.schema, menuBar: false }),
25569
+ keymap(this.menuCommandFactory.buildKeymap()),
25570
+ this.createMenuStateTrackingPlugin(this.actionBarItems),
25571
+ ],
25572
+ });
25573
+ }
25536
25574
  async updateView(content) {
25537
- const html = await this.contentConverter.parseAsHTML(content, schema$1);
25575
+ const html = await this.contentConverter.parseAsHTML(content, this.schema);
25538
25576
  const prosemirrorDOMparser = DOMParser.fromSchema(this.view.state.schema);
25539
25577
  const domParser = new window.DOMParser();
25540
25578
  const doc = domParser.parseFromString(html, 'text/html');
@@ -25543,7 +25581,7 @@ const ProsemirrorAdapter = class {
25543
25581
  tr.replaceWith(0, tr.doc.content.size, prosemirrorDoc.content);
25544
25582
  this.view.dispatch(tr);
25545
25583
  }
25546
- executeCommand(command) {
25584
+ dispatchMenuCommand(command) {
25547
25585
  const { state } = this.view;
25548
25586
  const selection = state.selection;
25549
25587
  let transaction = state.tr;