@limetech/lime-elements 40.2.3 → 40.2.5

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 (142) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/cjs/language-CaqPKPyW.js +28 -0
  3. package/dist/cjs/limel-action-bar_3.cjs.entry.js +2 -1
  4. package/dist/cjs/limel-ai-avatar.cjs.entry.js +2 -1
  5. package/dist/cjs/limel-callout.cjs.entry.js +2 -1
  6. package/dist/cjs/limel-chart.cjs.entry.js +2 -1
  7. package/dist/cjs/limel-chip-set.cjs.entry.js +3 -2
  8. package/dist/cjs/limel-chip_2.cjs.entry.js +3 -2
  9. package/dist/cjs/limel-code-diff.cjs.entry.js +3 -2
  10. package/dist/cjs/limel-code-editor.cjs.entry.js +2 -1
  11. package/dist/cjs/limel-collapsible-section.cjs.entry.js +2 -1
  12. package/dist/cjs/limel-date-picker.cjs.entry.js +4 -2
  13. package/dist/cjs/limel-drag-handle.cjs.entry.js +2 -1
  14. package/dist/cjs/limel-email-viewer.cjs.entry.js +2 -1
  15. package/dist/cjs/limel-file-viewer.cjs.entry.js +2 -1
  16. package/dist/cjs/limel-file.cjs.entry.js +2 -1
  17. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +10 -7
  18. package/dist/cjs/limel-hotkey_4.cjs.entry.js +54 -35
  19. package/dist/cjs/limel-list-item.cjs.entry.js +2 -1
  20. package/dist/cjs/limel-picker.cjs.entry.js +2 -1
  21. package/dist/cjs/limel-profile-picture.cjs.entry.js +2 -1
  22. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +4 -3
  23. package/dist/cjs/limel-select.cjs.entry.js +8 -5
  24. package/dist/cjs/limel-slider.cjs.entry.js +2 -1
  25. package/dist/cjs/limel-snackbar.cjs.entry.js +2 -1
  26. package/dist/cjs/limel-table.cjs.entry.js +2 -1
  27. package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +2 -1
  28. package/dist/cjs/{translations-Do_D3pxu.js → translations-ZgjCRtut.js} +19 -7
  29. package/dist/collection/components/chip/chip.js +1 -1
  30. package/dist/collection/components/chip-set/chip-set.js +1 -1
  31. package/dist/collection/components/code-diff/code-diff.js +1 -1
  32. package/dist/collection/components/date-picker/date-formatter.js +4 -2
  33. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js +2 -2
  34. package/dist/collection/components/date-picker/pickers/picker.js +7 -4
  35. package/dist/collection/components/portal/portal.js +54 -35
  36. package/dist/collection/components/select/select.css +1 -2
  37. package/dist/collection/components/select/select.js +2 -2
  38. package/dist/collection/components/select/select.template.js +5 -2
  39. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +2 -2
  40. package/dist/collection/global/translations.js +10 -7
  41. package/dist/collection/translations/da.js +1 -0
  42. package/dist/collection/translations/de.js +1 -0
  43. package/dist/collection/translations/en.js +1 -0
  44. package/dist/collection/translations/fi.js +1 -0
  45. package/dist/collection/translations/fr.js +1 -0
  46. package/dist/collection/translations/nl.js +1 -0
  47. package/dist/collection/translations/no.js +1 -0
  48. package/dist/collection/translations/sv.js +1 -0
  49. package/dist/collection/util/language.js +24 -0
  50. package/dist/esm/language-C3hECvXE.js +26 -0
  51. package/dist/esm/limel-action-bar_3.entry.js +2 -1
  52. package/dist/esm/limel-ai-avatar.entry.js +2 -1
  53. package/dist/esm/limel-callout.entry.js +2 -1
  54. package/dist/esm/limel-chart.entry.js +2 -1
  55. package/dist/esm/limel-chip-set.entry.js +3 -2
  56. package/dist/esm/limel-chip_2.entry.js +3 -2
  57. package/dist/esm/limel-code-diff.entry.js +3 -2
  58. package/dist/esm/limel-code-editor.entry.js +2 -1
  59. package/dist/esm/limel-collapsible-section.entry.js +2 -1
  60. package/dist/esm/limel-date-picker.entry.js +4 -2
  61. package/dist/esm/limel-drag-handle.entry.js +2 -1
  62. package/dist/esm/limel-email-viewer.entry.js +2 -1
  63. package/dist/esm/limel-file-viewer.entry.js +2 -1
  64. package/dist/esm/limel-file.entry.js +2 -1
  65. package/dist/esm/limel-flatpickr-adapter.entry.js +10 -7
  66. package/dist/esm/limel-hotkey_4.entry.js +54 -35
  67. package/dist/esm/limel-list-item.entry.js +2 -1
  68. package/dist/esm/limel-picker.entry.js +2 -1
  69. package/dist/esm/limel-profile-picture.entry.js +2 -1
  70. package/dist/esm/limel-prosemirror-adapter.entry.js +4 -3
  71. package/dist/esm/limel-select.entry.js +8 -5
  72. package/dist/esm/limel-slider.entry.js +2 -1
  73. package/dist/esm/limel-snackbar.entry.js +2 -1
  74. package/dist/esm/limel-table.entry.js +2 -1
  75. package/dist/esm/limel-text-editor-link-menu.entry.js +2 -1
  76. package/dist/esm/{translations-DgqE77nk.js → translations-CPFNSfWw.js} +19 -7
  77. package/dist/lime-elements/lime-elements.esm.js +1 -1
  78. package/dist/lime-elements/p-057356b0.entry.js +1 -0
  79. package/dist/lime-elements/p-09036073.entry.js +1 -0
  80. package/dist/lime-elements/p-0a46959b.entry.js +1 -0
  81. package/dist/lime-elements/p-15bedc64.entry.js +1 -0
  82. package/dist/lime-elements/p-20297168.entry.js +1 -0
  83. package/dist/lime-elements/p-24354198.entry.js +1 -0
  84. package/dist/lime-elements/p-2ad8eed9.entry.js +1 -0
  85. package/dist/lime-elements/{p-d521d599.entry.js → p-33ccc617.entry.js} +1 -1
  86. package/dist/lime-elements/p-3b052fff.entry.js +1 -0
  87. package/dist/lime-elements/p-4682ddb0.entry.js +1 -0
  88. package/dist/lime-elements/p-46bcdf3c.entry.js +1 -0
  89. package/dist/lime-elements/p-4b91d2c3.entry.js +1 -0
  90. package/dist/lime-elements/p-715cc741.entry.js +1 -0
  91. package/dist/lime-elements/p-88e40db2.entry.js +1 -0
  92. package/dist/lime-elements/p-93df903a.entry.js +1 -0
  93. package/dist/lime-elements/p-94191814.entry.js +16 -0
  94. package/dist/lime-elements/p-943e708f.entry.js +1 -0
  95. package/dist/lime-elements/p-9c2b3cf4.entry.js +1 -0
  96. package/dist/lime-elements/p-C3hECvXE.js +1 -0
  97. package/dist/lime-elements/p-Dhnynzqz.js +1 -0
  98. package/dist/lime-elements/p-ab0c7eeb.entry.js +1 -0
  99. package/dist/lime-elements/p-abf3dce5.entry.js +1 -0
  100. package/dist/lime-elements/p-b1fb33a2.entry.js +23 -0
  101. package/dist/lime-elements/p-ccb77bcf.entry.js +1 -0
  102. package/dist/lime-elements/p-d70c53ae.entry.js +1 -0
  103. package/dist/lime-elements/p-d79ee300.entry.js +1 -0
  104. package/dist/lime-elements/p-d873e490.entry.js +1 -0
  105. package/dist/types/components/date-picker/date.types.d.ts +5 -0
  106. package/dist/types/components/portal/portal.d.ts +4 -0
  107. package/dist/types/global/translations.d.ts +1 -0
  108. package/dist/types/translations/da.d.ts +1 -0
  109. package/dist/types/translations/de.d.ts +1 -0
  110. package/dist/types/translations/en.d.ts +1 -0
  111. package/dist/types/translations/fi.d.ts +1 -0
  112. package/dist/types/translations/fr.d.ts +1 -0
  113. package/dist/types/translations/nl.d.ts +1 -0
  114. package/dist/types/translations/no.d.ts +1 -0
  115. package/dist/types/translations/sv.d.ts +1 -0
  116. package/dist/types/util/language.d.ts +20 -0
  117. package/package.json +1 -1
  118. package/dist/lime-elements/p-056ba5c5.entry.js +0 -1
  119. package/dist/lime-elements/p-3ac35da4.entry.js +0 -1
  120. package/dist/lime-elements/p-3e316685.entry.js +0 -1
  121. package/dist/lime-elements/p-565f688a.entry.js +0 -1
  122. package/dist/lime-elements/p-5dde5d72.entry.js +0 -1
  123. package/dist/lime-elements/p-62a25deb.entry.js +0 -1
  124. package/dist/lime-elements/p-6c826c25.entry.js +0 -1
  125. package/dist/lime-elements/p-73d9f0f6.entry.js +0 -1
  126. package/dist/lime-elements/p-83bdbaf7.entry.js +0 -1
  127. package/dist/lime-elements/p-8b3b7505.entry.js +0 -1
  128. package/dist/lime-elements/p-8c3798ee.entry.js +0 -1
  129. package/dist/lime-elements/p-8cf79fa1.entry.js +0 -1
  130. package/dist/lime-elements/p-9152d7e1.entry.js +0 -23
  131. package/dist/lime-elements/p-DgqE77nk.js +0 -1
  132. package/dist/lime-elements/p-a6500046.entry.js +0 -1
  133. package/dist/lime-elements/p-b04c6602.entry.js +0 -1
  134. package/dist/lime-elements/p-b4b43404.entry.js +0 -1
  135. package/dist/lime-elements/p-b6528083.entry.js +0 -1
  136. package/dist/lime-elements/p-cafebc7d.entry.js +0 -1
  137. package/dist/lime-elements/p-dda63b8b.entry.js +0 -1
  138. package/dist/lime-elements/p-e8783848.entry.js +0 -1
  139. package/dist/lime-elements/p-ed53466d.entry.js +0 -1
  140. package/dist/lime-elements/p-eeddce38.entry.js +0 -16
  141. package/dist/lime-elements/p-f2294e26.entry.js +0 -1
  142. package/dist/lime-elements/p-f53d8bda.entry.js +0 -1
@@ -3,6 +3,7 @@ import { c as createRandomString } from './random-string-JbKhhoXs.js';
3
3
  import { i as isIOSDevice, a as isAndroidDevice } from './device-B-tmXAXV.js';
4
4
  import './sv-CY-6-yEp.js';
5
5
  import { m as moment } from './moment-DQRNe8qq.js';
6
+ import { g as getPrimarySubtag } from './language-C3hECvXE.js';
6
7
  import { M as MDCTextField } from './component-wGVqvUmL.js';
7
8
  import './_commonjsHelpers-B85MJLTf.js';
8
9
  import './ponyfill-ChRGk668.js';
@@ -26,10 +27,11 @@ class DateFormatter {
26
27
  return null;
27
28
  }
28
29
  getLanguage() {
29
- if (this.language === 'no') {
30
+ const language = getPrimarySubtag(this.language);
31
+ if (language === 'no') {
30
32
  return 'nb';
31
33
  }
32
- return this.language;
34
+ return language;
33
35
  }
34
36
  getDateFormat(type) {
35
37
  return ({
@@ -1,5 +1,6 @@
1
1
  import { r as registerInstance, h, H as Host } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-DgqE77nk.js';
2
+ import { t as translate } from './translations-CPFNSfWw.js';
3
+ import './language-C3hECvXE.js';
3
4
 
4
5
  const dragHandleCss = () => `@charset "UTF-8";limel-drag-handle{display:inline-flex;align-items:center;justify-content:center}button.limel-drag-handle{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit}button.limel-drag-handle:focus{outline:none}button.limel-drag-handle:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}button.limel-drag-handle{transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-theme-on-surface-color);background-color:transparent}button.limel-drag-handle:hover,button.limel-drag-handle:focus,button.limel-drag-handle:focus-visible{will-change:color, background-color, box-shadow, transform}button.limel-drag-handle:hover,button.limel-drag-handle:focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--mdc-theme-primary);background-color:transparent}button.limel-drag-handle:hover{box-shadow:var(--button-shadow-hovered)}button.limel-drag-handle:active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}button.limel-drag-handle:hover,button.limel-drag-handle:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}button.limel-drag-handle{touch-action:none;cursor:grab}button.limel-drag-handle:active{cursor:grabbing}button.limel-drag-handle:active,button.limel-drag-handle:hover{box-shadow:none !important}button.limel-drag-handle{display:inline-flex;align-items:center;justify-content:center;border-radius:0.4rem;padding:0.5rem;max-height:2.25rem;max-width:2.25rem;color:rgb(var(--contrast-900))}button.limel-drag-handle .drag-icon{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.2rem}limel-drag-handle[drag-direction=horizontal] button.limel-drag-handle .drag-icon{grid-template-columns:1fr 1fr}button.limel-drag-handle .drag-icon div{transition:transform 0.2s ease, background-color 0.2s ease;height:0.125rem;width:0.125rem;border-radius:1rem;background-color:currentColor;transform:scale(1)}.is-being-dragged button.limel-drag-handle .drag-icon div,button.limel-drag-handle:active .drag-icon div,button.limel-drag-handle:focus .drag-icon div,button.limel-drag-handle:hover .drag-icon div,button.limel-drag-handle:focus-visible .drag-icon div{background-color:var(--mdc-theme-primary);transform:scale(1.5)}`;
5
6
 
@@ -1,8 +1,9 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-DgqE77nk.js';
2
+ import { t as translate } from './translations-CPFNSfWw.js';
3
3
  import { f as formatBytes } from './format-bytes-u_sd2HMb.js';
4
4
  import { a as adaptColorContrast } from './adapt-color-contrast-Dgcw_h7C.js';
5
5
  import { g as getIconBackgroundColorForFile, a as getIconFillColorForFile, b as getIconForFile } from './icons-Bu_YRgCL.js';
6
+ import './language-C3hECvXE.js';
6
7
 
7
8
  /**
8
9
  * Checks whether the given HTML contains any images with a `data-remote-src`
@@ -1,7 +1,8 @@
1
1
  import { r as registerInstance, c as createEvent, h, F as Fragment, a as getElement } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-DgqE77nk.js';
2
+ import { t as translate } from './translations-CPFNSfWw.js';
3
3
  import { d as defaultSchema, u as unified, r as rehypeParse, a as rehypeSanitize, v as visit, b as rehypeStringify } from './index-CbciMfiU.js';
4
4
  import { I as ImageTemplate } from './image.template-BXDvrqGw.js';
5
+ import './language-C3hECvXE.js';
5
6
  import './_commonjsHelpers-B85MJLTf.js';
6
7
 
7
8
  /**
@@ -1,8 +1,9 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-DgqE77nk.js';
2
+ import { t as translate } from './translations-CPFNSfWw.js';
3
3
  import { g as getFileBackgroundColor, a as getFileColor, b as getFileExtensionTitle, c as getFileIcon } from './file-metadata-BHzkIH4g.js';
4
4
  import { f as formatBytes } from './format-bytes-u_sd2HMb.js';
5
5
  import { r as resizeImage } from './image-resize-BTSG--2-.js';
6
+ import './language-C3hECvXE.js';
6
7
  import './icons-Bu_YRgCL.js';
7
8
  import './get-icon-props-CgNJbSP4.js';
8
9
 
@@ -1,9 +1,10 @@
1
1
  import { r as registerInstance, c as createEvent, h } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-DgqE77nk.js';
2
+ import { t as translate } from './translations-CPFNSfWw.js';
3
3
  import { g as getDefaultExportFromCjs } from './_commonjsHelpers-B85MJLTf.js';
4
4
  import './sv-CY-6-yEp.js';
5
5
  import { m as moment } from './moment-DQRNe8qq.js';
6
6
  import { i as isIOSDevice, a as isAndroidDevice } from './device-B-tmXAXV.js';
7
+ import { g as getPrimarySubtag } from './language-C3hECvXE.js';
7
8
  import { i as isIterateeCall, t as toFinite } from './_isIterateeCall-Bb4gUZLK.js';
8
9
  import './toNumber-D6JYpQI9.js';
9
10
  import './isObject-BJQylLSL.js';
@@ -6464,16 +6465,18 @@ class Picker {
6464
6465
  });
6465
6466
  }
6466
6467
  getFlatpickrLang() {
6467
- if (this.language === 'nb') {
6468
+ const language = getPrimarySubtag(this.language);
6469
+ if (language === 'nb') {
6468
6470
  return 'no';
6469
6471
  }
6470
- return this.language;
6472
+ return language;
6471
6473
  }
6472
6474
  getMomentLang() {
6473
- if (this.language === 'no') {
6475
+ const language = getPrimarySubtag(this.language);
6476
+ if (language === 'no') {
6474
6477
  return 'nb';
6475
6478
  }
6476
- return this.language;
6479
+ return language;
6477
6480
  }
6478
6481
  getPickerDate(selectedDates) {
6479
6482
  return selectedDates[0] ? new Date(selectedDates[0].toJSON()) : null;
@@ -7651,8 +7654,8 @@ const DatePickerCalendar = class {
7651
7654
  });
7652
7655
  }
7653
7656
  render() {
7654
- return (h("div", { key: '84520ade591db0e5be9b730765d2fb0b381cac40', class: "container", ref: (el) => (this.container = el), style: {
7655
- '--today-label': `"${translate.get('date-picker.today')}"`,
7657
+ return (h("div", { key: 'fd9845319e7c8bcc5b1621666c0d89d4b7e99fe4', class: "container", ref: (el) => (this.container = el), style: {
7658
+ '--today-label': `"${translate.get('date-picker.today', this.language)}"`,
7656
7659
  } }));
7657
7660
  }
7658
7661
  };
@@ -1919,6 +1919,9 @@ const IS_VISIBLE_CLASS = 'is-visible';
1919
1919
  const IS_HIDING_CLASS = 'is-hiding';
1920
1920
  const hideAnimationDuration = 300;
1921
1921
  const Portal = class {
1922
+ get anchorElement() {
1923
+ return this.anchor || this.host;
1924
+ }
1922
1925
  constructor(hostRef) {
1923
1926
  registerInstance(this, hostRef);
1924
1927
  /**
@@ -1951,14 +1954,13 @@ const Portal = class {
1951
1954
  */
1952
1955
  this.anchor = null;
1953
1956
  this.loaded = false;
1957
+ this.writtenStyles = {};
1954
1958
  this.parents = new WeakMap();
1955
1959
  }
1956
1960
  disconnectedCallback() {
1957
1961
  this.removeContainer();
1958
1962
  this.destroyPopper();
1959
- if (this.observer && this.container) {
1960
- this.observer.unobserve(this.container);
1961
- }
1963
+ this.observer = null;
1962
1964
  this.container = null;
1963
1965
  }
1964
1966
  connectedCallback() {
@@ -1985,18 +1987,9 @@ const Portal = class {
1985
1987
  this.createPopper();
1986
1988
  this.showContainer();
1987
1989
  }
1988
- if ('ResizeObserver' in window) {
1989
- this.observer = new ResizeObserver(() => {
1990
- if (this.popperInstance) {
1991
- this.styleContainer();
1992
- this.popperInstance.update();
1993
- }
1994
- });
1995
- this.observer.observe(this.container);
1996
- }
1997
1990
  }
1998
1991
  render() {
1999
- return h("slot", { key: '7a76d96c24d8404f46205dc00cc2351be9fe1c19' });
1992
+ return h("slot", { key: '18852003d1bf5f0aeb7c18f73eb26f37e8c75294' });
2000
1993
  }
2001
1994
  onVisible() {
2002
1995
  if (!this.container && this.visible) {
@@ -2016,6 +2009,7 @@ const Portal = class {
2016
2009
  createContainer() {
2017
2010
  const slot = this.host.shadowRoot.querySelector('slot');
2018
2011
  const content = (slot.assignedElements && slot.assignedElements()) || [];
2012
+ this.writtenStyles = {};
2019
2013
  this.container = document.createElement('div');
2020
2014
  this.container.setAttribute('id', this.containerId);
2021
2015
  this.container.setAttribute('class', 'limel-portal--container');
@@ -2072,20 +2066,19 @@ const Portal = class {
2072
2066
  }, hideAnimationDuration);
2073
2067
  }
2074
2068
  styleContainer() {
2075
- this.setContainerWidth();
2076
- this.setContainerHeight();
2069
+ const hostRect = this.host.getBoundingClientRect();
2070
+ this.setContainerWidth(hostRect);
2071
+ this.setContainerHeight(hostRect);
2077
2072
  this.setContainerStyles();
2078
2073
  }
2079
- setContainerWidth() {
2080
- const hostWidth = this.host.getBoundingClientRect().width;
2081
- if (this.inheritParentWidth) {
2082
- const containerWidth = this.getContentWidth(this.container);
2083
- let width = containerWidth;
2084
- if (hostWidth > 0) {
2085
- width = hostWidth;
2086
- }
2087
- this.container.style.width = `${width}px`;
2074
+ setContainerWidth(hostRect) {
2075
+ if (!this.inheritParentWidth) {
2076
+ return;
2088
2077
  }
2078
+ const width = hostRect.width > 0
2079
+ ? hostRect.width
2080
+ : this.getContentWidth(this.container);
2081
+ this.setContainerStyle('width', `${width}px`);
2089
2082
  }
2090
2083
  getContentWidth(element) {
2091
2084
  if (!element) {
@@ -2103,15 +2096,42 @@ const Portal = class {
2103
2096
  this.container.style[property] = this.containerStyle[property];
2104
2097
  }
2105
2098
  }
2099
+ // Compared against what was last written rather than against
2100
+ // `container.style`, which serializes lengths to six significant digits
2101
+ // and so never reads back a fractional width verbatim.
2102
+ setContainerStyle(property, value) {
2103
+ if (this.writtenStyles[property] === value) {
2104
+ return;
2105
+ }
2106
+ this.writtenStyles[property] = value;
2107
+ this.container.style[property] = value;
2108
+ }
2106
2109
  createPopper() {
2110
+ this.destroyPopper();
2107
2111
  const config = this.createPopperConfig();
2108
- this.popperInstance = createPopper(this.anchor || this.host, this.container, config);
2112
+ this.popperInstance = createPopper(this.anchorElement, this.container, config);
2113
+ this.observeResize();
2109
2114
  }
2110
2115
  destroyPopper() {
2111
- var _a;
2112
- (_a = this.popperInstance) === null || _a === void 0 ? void 0 : _a.destroy();
2116
+ var _a, _b;
2117
+ (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
2118
+ (_b = this.popperInstance) === null || _b === void 0 ? void 0 : _b.destroy();
2113
2119
  this.popperInstance = null;
2114
2120
  }
2121
+ observeResize() {
2122
+ var _a;
2123
+ if (!('ResizeObserver' in window)) {
2124
+ return;
2125
+ }
2126
+ (_a = this.observer) !== null && _a !== void 0 ? _a : (this.observer = new ResizeObserver(() => {
2127
+ if (this.popperInstance) {
2128
+ this.styleContainer();
2129
+ this.popperInstance.update();
2130
+ }
2131
+ }));
2132
+ this.observer.observe(this.container);
2133
+ this.observer.observe(this.anchorElement);
2134
+ }
2115
2135
  createPopperConfig() {
2116
2136
  const placement = this.getPlacement(this.openDirection);
2117
2137
  const flipPlacement = this.getFlipPlacement(this.openDirection);
@@ -2162,20 +2182,19 @@ const Portal = class {
2162
2182
  };
2163
2183
  return flipPlacements[direction];
2164
2184
  }
2165
- setContainerHeight() {
2185
+ setContainerHeight(hostRect) {
2166
2186
  const viewHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);
2167
- const { top, bottom } = this.host.getBoundingClientRect();
2168
- const spaceAboveTopOfSurface = Math.max(top, 0);
2169
- const spaceBelowTopOfSurface = Math.max(viewHeight - bottom, 0);
2187
+ const spaceAboveTopOfSurface = Math.max(hostRect.top, 0);
2188
+ const spaceBelowTopOfSurface = Math.max(viewHeight - hostRect.bottom, 0);
2170
2189
  const extraCosmeticSpace = 16;
2171
- const maxHeight = Math.max(spaceAboveTopOfSurface, spaceBelowTopOfSurface) -
2172
- extraCosmeticSpace;
2173
- this.container.style.maxHeight = `${maxHeight}px`;
2190
+ const maxHeight = Math.max(0, Math.round(Math.max(spaceAboveTopOfSurface, spaceBelowTopOfSurface) -
2191
+ extraCosmeticSpace));
2192
+ this.setContainerStyle('maxHeight', `${maxHeight}px`);
2174
2193
  }
2175
2194
  // Returns the parent element where the content of the portal will be moved to.
2176
2195
  // It needs to have styling of the portal container.
2177
2196
  getParent() {
2178
- let element = this.anchor || this.host;
2197
+ let element = this.anchorElement;
2179
2198
  while (element) {
2180
2199
  const parent = element.closest('.limel-portal--parent');
2181
2200
  if (parent) {
@@ -3,8 +3,9 @@ import { g as getIconName } from './get-icon-props-CgNJbSP4.js';
3
3
  import { c as createRandomString } from './random-string-JbKhhoXs.js';
4
4
  import { r as renderListComponent } from './render-list-component-CUJ2wdo4.js';
5
5
  import { C as CheckboxTemplate } from './checkbox.template-LN1xNaDw.js';
6
- import { t as translate } from './translations-DgqE77nk.js';
6
+ import { t as translate } from './translations-CPFNSfWw.js';
7
7
  import { I as ImageTemplate } from './image.template-BXDvrqGw.js';
8
+ import './language-C3hECvXE.js';
8
9
 
9
10
  const listItemCss = () => `@charset "UTF-8";*,*:before,*:after{box-sizing:border-box}.boolean-input{--limel-boolean-input-box-size:1.25rem;--limel-boolean-input-gap-size:0.5rem;position:relative;isolation:isolate;display:flex;align-items:center;min-height:var(--limel-checkbox-min-height, 2.5rem);width:100%}.boolean-input input[type=checkbox],.boolean-input input[type=radio]{position:absolute;width:0;height:0;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;-webkit-appearance:none;-moz-appearance:none;appearance:none}label.boolean-input-label{min-width:var(--limel-boolean-input-box-size);min-height:var(--limel-boolean-input-box-size);padding-top:0.125rem;cursor:pointer;position:relative;width:100%;overflow-wrap:var(--limel-boolean-input-label-overflow-wrap, normal);font-size:var(--limel-theme-default-small-font-size);color:var(--limel-theme-text-primary-on-background-color);padding-left:calc(var(--limel-boolean-input-box-size) + var(--limel-boolean-input-gap-size))}.disabled:not([readonly]):not([readonly=true]) label.boolean-input-label{cursor:not-allowed;color:var(--limel-theme-text-disabled-color)}.required label.boolean-input-label:after{margin-left:0.0625rem;content:"*"}.invalid:not(.readonly) label.boolean-input-label{color:var(--limel-theme-error-text-color)}:host(limel-checkbox.hide-label) label.boolean-input-label,.hide-label label.boolean-input-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;opacity:0;width:var(--limel-boolean-input-box-size)}.box{position:absolute;pointer-events:none;transition:border-color 0.4s ease 0.2s, background-color 0.2s ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease;display:inline-block;vertical-align:middle;width:var(--limel-boolean-input-box-size);height:var(--limel-boolean-input-box-size);margin-right:var(--limel-boolean-input-gap-size);border-radius:var(--limel-boolean-input-box-border-radius);border:0.125rem solid;border-color:var(--checkbox-unchecked-border-color, rgb(var(--contrast-900)));background-color:var(--limel-checkbox-background-color, rgb(var(--contrast-300)));}.checked .box,.boolean-input>input[type=checkbox]:checked+.box,.boolean-input>input[type=radio]:checked+.box{background-color:var(--lime-primary-color, var(--limel-theme-primary-color));border-color:var(--lime-primary-color, var(--limel-theme-primary-color))}.disabled .box{opacity:0.4}.box{}.boolean-input:not(.disabled):hover .box{will-change:box-shadow;box-shadow:var(--button-shadow-hovered)}.boolean-input:not(.disabled):active .box{will-change:box-shadow;box-shadow:var(--button-shadow-pressed)}.box:before{transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);content:"";position:absolute;inset:-0.1875rem;border-radius:inherit;}.boolean-input>input[type=checkbox]:focus-visible+.box:before,.boolean-input>input[type=radio]:focus-visible+.box:before{will-change:box-shadow;box-shadow:var(--shadow-depth-8-focused)}.box:after{transition:opacity 0.2s ease, width 0.4s ease, box-shadow 0.6s cubic-bezier(0.68, -0.55, 0, 1.87), transform 0.6s cubic-bezier(0.68, -0.55, 0, 1.87);content:"";position:absolute;inset:0;margin:auto;border-radius:1rem;opacity:0;background-color:rgb(var(--color-white));}.boolean-input:not(.disabled):hover .box:after{will-change:opacity, box-shadow, transform, width}:host(limel-checkbox){--limel-boolean-input-label-overflow-wrap:var( --checkbox-label-overflow-wrap, normal );min-height:var(--limel-checkbox-min-height, 2.5rem)}.box:after{height:0.125rem;width:0.25rem}.indeterminate .box:after{opacity:1;width:calc(var(--limel-boolean-input-box-size) - 0.5rem)}.checkbox{--limel-boolean-input-box-border-radius:0.25rem}.checkbox svg.check-mark{position:absolute;z-index:1;inset:0;transform:translate3d(-0.125rem, -0.125rem, 0);width:var(--limel-boolean-input-box-size);height:var(--limel-boolean-input-box-size);padding:0.25rem;color:rgb(var(--color-white));opacity:0;stroke-width:0.1875rem;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.checkbox svg.check-mark path{stroke-dashoffset:29.7833;stroke-dasharray:29.7833;transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1)}.checkbox{}.checkbox:not(.indeterminate)>input[type=checkbox]:checked+.box svg.check-mark{opacity:1}.checkbox:not(.indeterminate)>input[type=checkbox]:checked+.box svg.check-mark path{stroke-dashoffset:0}limel-dynamic-label{margin-top:0.375rem;margin-left:-0.25rem}:host(limel-checkbox:focus),:host(limel-checkbox:focus-visible),:host(limel-checkbox:focus-within){--limel-h-l-grid-template-rows-transition-speed:0.46s;--limel-h-l-grid-template-rows:1fr}:host(limel-checkbox){--limel-h-l-grid-template-rows-transition-speed:0.3s;--limel-h-l-grid-template-rows:0fr}:host(limel-checkbox:focus) limel-helper-line,:host(limel-checkbox:focus-visible) limel-helper-line,:host(limel-checkbox:focus-within) limel-helper-line,:host(limel-checkbox:hover) limel-helper-line{will-change:grid-template-rows}*,*:before,*:after{box-sizing:border-box}limel-list-item{--limel-list-item-image-size:2rem;min-height:2.5rem}limel-list-item:focus{outline:none}limel-list-item:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-list-item{transition:background-color 0.6s ease;position:relative;isolation:isolate;display:flex;align-items:center;gap:0.5rem;padding:0 1rem;background-color:rgb(var(--contrast-100))}limel-list-item:hover{z-index:1;transition:background-color 0.2s ease;border-radius:0.5rem}limel-list-item:focus,limel-list-item:focus-visible,limel-list-item:active{z-index:1;border-radius:0.5rem}limel-list-item:first-of-type{border-top-left-radius:0.5rem;border-top-right-radius:0.5rem}limel-list-item:last-of-type{border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem}limel-list-item:not([disabled]):not([disabled=true]){cursor:pointer}limel-list-item[disabled]:not([disabled=false]){cursor:not-allowed}limel-list-item[disabled]:not([disabled=false]){cursor:not-allowed}limel-list-item[disabled]:not([disabled=false]) .text,limel-list-item[disabled]:not([disabled=false]) limel-icon,limel-list-item[disabled]:not([disabled=false]) img,limel-list-item[disabled]:not([disabled=false]) .boolean-input{opacity:0.4}limel-list-item:not([disabled]):not([disabled=true]):hover,limel-list-item:not([disabled]):not([disabled=true]):focus-visible{background-color:rgb(var(--contrast-400))}limel-list-item[type=option]:before{transition:background-color 0.6s ease;content:"";position:absolute;inset:0;opacity:0.2;border-radius:0.5rem}limel-list-item[type=option][selected]:not([selected=false]):before{transition:background-color 0.2s ease;background-color:var(--mdc-theme-primary)}limel-list-item .text{flex-grow:1;min-width:0;display:flex;flex-direction:column;padding:0.5rem 0;color:var(--limel-theme-text-primary-on-background-color)}limel-list-item .label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--limel-theme-default-font-size);line-height:1rem}limel-list-item .description{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:var(--maxLinesSecondaryText);line-height:1rem;font-size:var(--limel-theme-default-small-font-size);opacity:0.6}limel-list-item limel-icon{color:var(--limel-theme-text-secondary-on-background-color);flex-shrink:0;margin-left:-0.5rem}limel-list-item limel-icon:has(+img){margin-left:0;position:absolute;top:0.125rem;left:0.125rem;padding:0.1875rem;width:1.25rem;background-color:rgb(var(--contrast-200), 0.8)}limel-list-item img{flex-shrink:0;object-fit:var(--list-item-image-object-fit, cover);border-radius:var(--list-item-image-border-radius, 50%);width:var(--limel-list-item-image-size);height:var(--limel-list-item-image-size);box-shadow:0 0 0 1px rgb(var(--contrast-800), 0.5)}limel-list-item limel-menu{margin-right:-0.5rem;order:var(--limel-list-item-menu-order, 3)}:has(>limel-list-item>img)>limel-list-item:not(:has(>img))>limel-icon{margin-left:0;min-width:var(--limel-list-item-image-size);max-width:var(--limel-list-item-image-size);min-height:var(--limel-list-item-image-size);max-height:var(--limel-list-item-image-size);box-shadow:0 0 0 1px rgb(var(--contrast-800), 0.5)}:has(>limel-list-item>img)>limel-list-item:not(:has(>img))>limel-icon:not([badge]){padding:0.25rem}limel-list-item[role=menuitem] limel-list-item .label{font-size:var(--limel-theme-default-small-font-size)}.boolean-input,limel-radio-button{width:var(--limel-boolean-input-box-size) !important;margin-left:-0.25rem !important}.boolean-input.checkbox{margin-right:0.25rem}limel-list-item:has(limel-icon) .boolean-input,limel-list-item:has(img) .boolean-input{margin-right:-0.25rem;margin-left:0;order:2}.boolean-input .boolean-input-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;opacity:0;width:var(--limel-boolean-input-box-size)}`;
10
11
 
@@ -1,10 +1,11 @@
1
1
  import { r as registerInstance, c as createEvent, h, a as getElement } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-DgqE77nk.js';
2
+ import { t as translate } from './translations-CPFNSfWw.js';
3
3
  import { i as isDescendant } from './dom-B9Ofc5RB.js';
4
4
  import { E as ESCAPE, T as TAB, a as ENTER, A as ARROW_UP, b as ARROW_DOWN } from './keycodes-C4_9qUMP.js';
5
5
  import { c as createRandomString } from './random-string-JbKhhoXs.js';
6
6
  import { a as getIconFillColor, g as getIconName } from './get-icon-props-CgNJbSP4.js';
7
7
  import { d as debounce } from './debounce-B67JMchz.js';
8
+ import './language-C3hECvXE.js';
8
9
  import './isObject-BJQylLSL.js';
9
10
  import './toNumber-D6JYpQI9.js';
10
11
  import './isSymbol-ClAke5ga.js';
@@ -1,12 +1,13 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-BGxJfR2f.js';
2
2
  import { i as isTypeAccepted } from './files-DnkFEKoB.js';
3
3
  import { g as getIconName } from './get-icon-props-CgNJbSP4.js';
4
- import { t as translate } from './translations-DgqE77nk.js';
4
+ import { t as translate } from './translations-CPFNSfWw.js';
5
5
  import { c as createRandomString } from './random-string-JbKhhoXs.js';
6
6
  import { r as resizeImage } from './image-resize-BTSG--2-.js';
7
7
  import { I as ImageTemplate } from './image.template-BXDvrqGw.js';
8
8
  import './file-metadata-BHzkIH4g.js';
9
9
  import './icons-Bu_YRgCL.js';
10
+ import './language-C3hECvXE.js';
10
11
 
11
12
  const profilePictureCss = () => `@charset "UTF-8";:host(limel-profile-picture){position:relative;display:inline-flex;min-width:1.5rem;min-height:1.5rem;border-radius:var(--profile-picture-border-radius, 100vw);background-color:rgb(var(--contrast-400))}*{box-sizing:border-box}limel-file-dropzone,limel-file-input,button.avatar{display:flex;align-items:center;justify-content:center;width:100%;height:100%}button{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;display:block}button:focus{outline:none}button:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}button.avatar{overflow:hidden;border-radius:var(--profile-picture-border-radius, 100vw)}:host(:not([disabled]):not([disabled=true])) button.avatar{transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-theme-on-surface-color);background-color:transparent}:host(:not([disabled]):not([disabled=true])) button.avatar:hover,:host(:not([disabled]):not([disabled=true])) button.avatar:focus,:host(:not([disabled]):not([disabled=true])) button.avatar:focus-visible{will-change:color, background-color, box-shadow, transform}:host(:not([disabled]):not([disabled=true])) button.avatar:hover,:host(:not([disabled]):not([disabled=true])) button.avatar:focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}:host(:not([disabled]):not([disabled=true])) button.avatar:hover{box-shadow:var(--button-shadow-hovered)}:host(:not([disabled]):not([disabled=true])) button.avatar:active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}:host(:not([disabled]):not([disabled=true])) button.avatar:hover,:host(:not([disabled]):not([disabled=true])) button.avatar:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}:host([invalid]:not([invalid=false])) button.avatar{box-shadow:var(--shadow-error-state)}button.remove{transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-theme-on-surface-color);background-color:rgb(var(--contrast-900))}button.remove:hover,button.remove:focus,button.remove:focus-visible{will-change:color, background-color, box-shadow, transform}button.remove:hover,button.remove:focus-visible{transform:translate3d(0, 0.01rem, 0);color:rgb(var(--color-white));background-color:rgb(var(--color-red-default))}button.remove:hover{box-shadow:var(--button-shadow-hovered)}button.remove:active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}button.remove:hover,button.remove:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}button.remove{cursor:pointer;height:1.25rem;width:1.25rem;border-radius:50%;background-repeat:no-repeat;background-position:center;background-size:0.75rem;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%3E%3Cdefs/%3E%3Cpath%20fill='rgb(255,255,255)'%20d='M7.219%205.781L5.78%207.22%2014.563%2016%205.78%2024.781%207.22%2026.22%2016%2017.437l8.781%208.782%201.438-1.438L17.437%2016l8.782-8.781L24.78%205.78%2016%2014.563z'/%3E%3C/svg%3E");position:absolute;top:0;left:0;opacity:0}:host(:hover) button.remove,:host(:focus) button.remove,:host(:focus-visible) button.remove,:host(:focus-within) button.remove,:host(:active) button.remove{animation:show 0.4s ease-in-out forwards}@keyframes show{0%{transform:scale(0.9);opacity:0}100%{transform:scale(1);opacity:1}}button.avatar,img,limel-icon{border-radius:var(--profile-picture-border-radius, 100vw)}limel-icon{width:calc(100% - 1rem);min-width:1rem;max-width:4rem;color:var(--limel-theme-text-secondary-on-background-color);margin:auto}img{object-fit:var(--limel-profile-picture-object-fit);width:100%;height:100%}:host(.has-image-error) img{border:1px dashed rgb(var(--contrast-600));background:url("data:image/svg+xml;charset=utf-8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' style='fill-rule:evenodd;'><path fill='rgba(186,186,192,0.16)' d='M0 0h4v4H0zM4 4h4v4H4z'/></svg>");background-size:0.5rem}limel-spinner{position:absolute;inset:0;margin:auto}limel-popover{position:absolute;inset:auto 0 0 auto;display:block;width:2.25rem;height:2.25rem}`;
12
13
 
@@ -2,7 +2,7 @@ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement
2
2
  import { L as LevelMapping, E as EditorMenuTypes, i as isInlineImageTag, M as MouseButtons, e as editorMenuTypesArray } from './types-C_Yu8dOg.js';
3
3
  import { g as getLinkAttributes, m as markdownToHTML, s as sanitizeHTML } from './markdown-parser-DrxxGLF5.js';
4
4
  import { h as cloneDeep } from './cloneDeep-CL7UD3mR.js';
5
- import { t as translate } from './translations-DgqE77nk.js';
5
+ import { t as translate } from './translations-CPFNSfWw.js';
6
6
  import { c as decodeHTML, e as decodeHTMLStrict } from './index-CbciMfiU.js';
7
7
  import { c as createRandomString } from './random-string-JbKhhoXs.js';
8
8
  import { i as isItem } from './is-item-CrvUOVvg.js';
@@ -23,6 +23,7 @@ import './_isIndex-B--C3qwe.js';
23
23
  import './_assignValue-CEFvyZxO.js';
24
24
  import './_defineProperty-C69Btzid.js';
25
25
  import './_getAllKeysIn-kT3KizYN.js';
26
+ import './language-C3hECvXE.js';
26
27
  import './file-metadata-BHzkIH4g.js';
27
28
  import './icons-Bu_YRgCL.js';
28
29
  import './get-icon-props-CgNJbSP4.js';
@@ -28440,13 +28441,13 @@ const ProsemirrorAdapter = class {
28440
28441
  if (this.actionBarItems.length === 0 || this.ui === 'no-toolbar') {
28441
28442
  return;
28442
28443
  }
28443
- return (h("div", { class: "toolbar" }, h("limel-action-bar", { ref: (el) => (this.actionBarElement = el), accessibleLabel: "Toolbar", actions: this.actionBarItems, onItemSelected: this.handleActionBarItem })));
28444
+ return (h("div", { class: "toolbar" }, h("limel-action-bar", { ref: (el) => (this.actionBarElement = el), accessibleLabel: translate.get('editor-menu.toolbar', this.language), actions: this.actionBarItems, onItemSelected: this.handleActionBarItem })));
28444
28445
  }
28445
28446
  renderLinkMenu() {
28446
28447
  if (!this.isLinkMenuOpen) {
28447
28448
  return;
28448
28449
  }
28449
- return (h("limel-portal", { containerId: this.portalId, visible: this.isLinkMenuOpen, openDirection: "top", inheritParentWidth: true, anchor: this.actionBarElement }, h("limel-text-editor-link-menu", { link: this.link, isOpen: this.isLinkMenuOpen, onLinkChange: this.handleLinkChange, onCancel: this.handleCancelLinkMenu, onSave: this.handleSaveLinkMenu })));
28450
+ return (h("limel-portal", { containerId: this.portalId, visible: this.isLinkMenuOpen, openDirection: "top", inheritParentWidth: true, anchor: this.actionBarElement }, h("limel-text-editor-link-menu", { language: this.language, link: this.link, isOpen: this.isLinkMenuOpen, onLinkChange: this.handleLinkChange, onCancel: this.handleCancelLinkMenu, onSave: this.handleSaveLinkMenu })));
28450
28451
  }
28451
28452
  validateInlineImages() {
28452
28453
  const config = this.inlineImages;