@limetech/lime-elements 39.40.0 → 39.42.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 (130) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/{image-resize-FAwzj92q.js → image-resize-BWRGvgkM.js} +42 -2
  3. package/dist/cjs/index.cjs.js +3 -2
  4. package/dist/cjs/lime-elements.cjs.js +1 -1
  5. package/dist/cjs/limel-action-bar_3.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-ai-avatar.cjs.entry.js +1 -1
  7. package/dist/cjs/limel-callout.cjs.entry.js +1 -1
  8. package/dist/cjs/limel-chart.cjs.entry.js +1 -1
  9. package/dist/cjs/limel-chip-set.cjs.entry.js +1 -1
  10. package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
  11. package/dist/cjs/limel-code-diff.cjs.entry.js +1 -1
  12. package/dist/cjs/limel-code-editor.cjs.entry.js +1 -1
  13. package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
  14. package/dist/cjs/limel-drag-handle.cjs.entry.js +1 -1
  15. package/dist/cjs/limel-email-viewer.cjs.entry.js +1 -1
  16. package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
  17. package/dist/cjs/limel-file.cjs.entry.js +84 -18
  18. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
  19. package/dist/cjs/limel-list-item.cjs.entry.js +1 -1
  20. package/dist/cjs/limel-picker.cjs.entry.js +1 -1
  21. package/dist/cjs/limel-profile-picture.cjs.entry.js +2 -2
  22. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +440 -212
  23. package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
  24. package/dist/cjs/limel-table.cjs.entry.js +1 -1
  25. package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +1 -1
  26. package/dist/cjs/limel-text-editor.cjs.entry.js +2 -2
  27. package/dist/cjs/loader.cjs.js +1 -1
  28. package/dist/cjs/{translations-VEsa81QY.js → translations-Bnw00bkf.js} +8 -0
  29. package/dist/cjs/{types-Bu6wcdI0.js → types-C7gNcwzE.js} +12 -0
  30. package/dist/collection/components/file/file.js +119 -18
  31. package/dist/collection/components/profile-picture/profile-picture.js +1 -1
  32. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/image/inserter.js +101 -30
  33. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/image/node.js +160 -54
  34. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/image/view.js +6 -1
  35. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +51 -5
  36. package/dist/collection/components/text-editor/text-editor.js +33 -3
  37. package/dist/collection/components/text-editor/text-editor.types.js +10 -1
  38. package/dist/collection/components/text-editor/utils/content-type-converter.js +30 -1
  39. package/dist/collection/components/text-editor/utils/html-converter.js +4 -2
  40. package/dist/collection/components/text-editor/utils/markdown-converter.js +9 -5
  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/image-resize.js +42 -2
  50. package/dist/esm/{image-resize-DPcww8rE.js → image-resize-65ma7B85.js} +42 -2
  51. package/dist/esm/index.js +2 -2
  52. package/dist/esm/lime-elements.js +1 -1
  53. package/dist/esm/limel-action-bar_3.entry.js +1 -1
  54. package/dist/esm/limel-ai-avatar.entry.js +1 -1
  55. package/dist/esm/limel-callout.entry.js +1 -1
  56. package/dist/esm/limel-chart.entry.js +1 -1
  57. package/dist/esm/limel-chip-set.entry.js +1 -1
  58. package/dist/esm/limel-chip_2.entry.js +1 -1
  59. package/dist/esm/limel-code-diff.entry.js +1 -1
  60. package/dist/esm/limel-code-editor.entry.js +1 -1
  61. package/dist/esm/limel-collapsible-section.entry.js +1 -1
  62. package/dist/esm/limel-drag-handle.entry.js +1 -1
  63. package/dist/esm/limel-email-viewer.entry.js +1 -1
  64. package/dist/esm/limel-file-viewer.entry.js +1 -1
  65. package/dist/esm/limel-file.entry.js +84 -18
  66. package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
  67. package/dist/esm/limel-list-item.entry.js +1 -1
  68. package/dist/esm/limel-picker.entry.js +1 -1
  69. package/dist/esm/limel-profile-picture.entry.js +2 -2
  70. package/dist/esm/limel-prosemirror-adapter.entry.js +440 -212
  71. package/dist/esm/limel-snackbar.entry.js +1 -1
  72. package/dist/esm/limel-table.entry.js +1 -1
  73. package/dist/esm/limel-text-editor-link-menu.entry.js +1 -1
  74. package/dist/esm/limel-text-editor.entry.js +2 -2
  75. package/dist/esm/loader.js +1 -1
  76. package/dist/esm/{translations-EPnIW0K5.js → translations-Cb9R_zmF.js} +8 -0
  77. package/dist/esm/{types-BWYo6dLf.js → types-C_Yu8dOg.js} +12 -1
  78. package/dist/lime-elements/index.esm.js +1 -1
  79. package/dist/lime-elements/lime-elements.esm.js +1 -1
  80. package/dist/lime-elements/{p-068e7087.entry.js → p-19c81ded.entry.js} +2 -2
  81. package/dist/lime-elements/p-1cc3b516.entry.js +1 -0
  82. package/dist/lime-elements/{p-ca0a8a5a.entry.js → p-1e3cdfa1.entry.js} +1 -1
  83. package/dist/lime-elements/p-1f35fc44.entry.js +1 -0
  84. package/dist/lime-elements/{p-2531a103.entry.js → p-2284caa7.entry.js} +1 -1
  85. package/dist/lime-elements/{p-d8cb7d42.entry.js → p-2f223e46.entry.js} +1 -1
  86. package/dist/lime-elements/{p-a3a2aafe.entry.js → p-4a09fb2e.entry.js} +1 -1
  87. package/dist/lime-elements/{p-f197036b.entry.js → p-552d0733.entry.js} +1 -1
  88. package/dist/lime-elements/p-65ma7B85.js +1 -0
  89. package/dist/lime-elements/{p-fd78537c.entry.js → p-6fbf20c6.entry.js} +1 -1
  90. package/dist/lime-elements/{p-5571f0de.entry.js → p-758939be.entry.js} +1 -1
  91. package/dist/lime-elements/{p-19347686.entry.js → p-7f7e2180.entry.js} +1 -1
  92. package/dist/lime-elements/{p-2a871a95.entry.js → p-89f9bd6c.entry.js} +1 -1
  93. package/dist/lime-elements/{p-79caf3f6.entry.js → p-9ae7d11b.entry.js} +1 -1
  94. package/dist/lime-elements/p-C_Yu8dOg.js +1 -0
  95. package/dist/lime-elements/p-Cb9R_zmF.js +1 -0
  96. package/dist/lime-elements/{p-6edf13b1.entry.js → p-a089b580.entry.js} +1 -1
  97. package/dist/lime-elements/{p-04b4e903.entry.js → p-aa080a8f.entry.js} +1 -1
  98. package/dist/lime-elements/{p-54961e0e.entry.js → p-c1ceade7.entry.js} +1 -1
  99. package/dist/lime-elements/{p-e08f770e.entry.js → p-c8116a01.entry.js} +1 -1
  100. package/dist/lime-elements/{p-36ccc68e.entry.js → p-c8982eef.entry.js} +1 -1
  101. package/dist/lime-elements/{p-d98168a1.entry.js → p-ca0b86ee.entry.js} +1 -1
  102. package/dist/lime-elements/{p-1525274d.entry.js → p-d7bb4310.entry.js} +1 -1
  103. package/dist/lime-elements/p-d7f75a6d.entry.js +1 -0
  104. package/dist/lime-elements/{p-bb201b0d.entry.js → p-e545c9e8.entry.js} +1 -1
  105. package/dist/types/components/file/file.d.ts +20 -0
  106. package/dist/types/components/text-editor/prosemirror-adapter/plugins/image/inserter.d.ts +2 -2
  107. package/dist/types/components/text-editor/prosemirror-adapter/plugins/image/node.d.ts +41 -19
  108. package/dist/types/components/text-editor/prosemirror-adapter/prosemirror-adapter.d.ts +13 -1
  109. package/dist/types/components/text-editor/text-editor.d.ts +10 -2
  110. package/dist/types/components/text-editor/text-editor.types.d.ts +52 -0
  111. package/dist/types/components/text-editor/utils/content-type-converter.d.ts +12 -0
  112. package/dist/types/components/text-editor/utils/html-converter.d.ts +3 -1
  113. package/dist/types/components/text-editor/utils/markdown-converter.d.ts +3 -1
  114. package/dist/types/components.d.ts +50 -8
  115. package/dist/types/translations/da.d.ts +1 -0
  116. package/dist/types/translations/de.d.ts +1 -0
  117. package/dist/types/translations/en.d.ts +1 -0
  118. package/dist/types/translations/fi.d.ts +1 -0
  119. package/dist/types/translations/fr.d.ts +1 -0
  120. package/dist/types/translations/nl.d.ts +1 -0
  121. package/dist/types/translations/no.d.ts +1 -0
  122. package/dist/types/translations/sv.d.ts +1 -0
  123. package/dist/types/util/image-resize.d.ts +12 -4
  124. package/package.json +1 -1
  125. package/dist/lime-elements/p-366419ee.entry.js +0 -1
  126. package/dist/lime-elements/p-5cf7464f.entry.js +0 -1
  127. package/dist/lime-elements/p-BWYo6dLf.js +0 -1
  128. package/dist/lime-elements/p-DPcww8rE.js +0 -1
  129. package/dist/lime-elements/p-EPnIW0K5.js +0 -1
  130. package/dist/lime-elements/p-b7d734d2.entry.js +0 -1
@@ -3,7 +3,7 @@ import { d as dispatchResizeEvent } from './dispatch-resize-event-z_E3sq3p.js';
3
3
  import { m as makeEnterClickable, r as removeEnterClickable } from './make-enter-clickable-BgTwPGeH.js';
4
4
  import { c as createRandomString } from './random-string-JbKhhoXs.js';
5
5
  import { b as getIconColor, d as getIconTitle, g as getIconName } from './get-icon-props-CgNJbSP4.js';
6
- import { t as translate } from './translations-EPnIW0K5.js';
6
+ import { t as translate } from './translations-Cb9R_zmF.js';
7
7
 
8
8
  const collapsibleSectionCss = () => `@charset "UTF-8";.expand-icon{position:relative;display:flex;align-items:center;justify-content:center;height:1.875rem;margin:0 0 0 0.5rem;width:0.75rem;flex-shrink:0}.line{position:absolute;inset:auto;margin:auto;width:100%;border-radius:1rem;height:0.125rem}.line:first-of-type,.line:last-of-type{transition:opacity 0.2s ease 0.1s, transform 0.4s ease 0.3s;opacity:0;background-color:var(--header-stroke-color, rgb(var(--contrast-900)))}.line:nth-of-type(2){transform:translate3d(0, 0.25rem, 0) rotate(90deg)}.line:nth-of-type(3){transform:translate3d(0, -0.25rem, 0) rotate(-90deg)}.line:nth-of-type(2),.line:nth-of-type(3){transition:opacity 0.2s ease, transform 0.18s ease}.line:nth-of-type(2):before,.line:nth-of-type(2):after,.line:nth-of-type(3):before,.line:nth-of-type(3):after{content:"";position:absolute;inset:0;margin:auto;width:50%;height:100%;border-radius:inherit;background-color:var(--header-stroke-color, rgb(var(--contrast-900)))}.line:nth-of-type(2):before,.line:nth-of-type(3):before{transform:translate3d(0, -0.1rem, 0) rotate(45deg)}.line:nth-of-type(2):after,.line:nth-of-type(3):after{transform:translate3d(0, 0.1rem, 0) rotate(-45deg)}.open-close-toggle:hover+.expand-icon .line:first-of-type,.open-close-toggle:hover+.expand-icon .line:last-of-type,.open-close-toggle:focus-visible+.expand-icon .line:first-of-type,.open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transition:opacity 0.8s ease 0.4s, transform 0.4s ease 0.3s;opacity:1}.open-close-toggle:hover+.expand-icon .line:first-of-type,.open-close-toggle:focus-visible+.expand-icon .line:first-of-type{transform:rotate3d(0, 0, 1, 0deg)}.open-close-toggle:hover+.expand-icon .line:last-of-type,.open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transform:rotate3d(0, 0, 1, 0deg)}.open-close-toggle:hover+.expand-icon .line:nth-of-type(2),.open-close-toggle:hover+.expand-icon .line:nth-of-type(3),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(2),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(3){transition:opacity 0.5s ease 0.4s, transform 0.7s cubic-bezier(0.85, 0.11, 0.14, 1.35) 0.2s}.open-close-toggle:hover+.expand-icon .line:nth-of-type(2),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(2){transform:translate3d(0, 0.5rem, 0) rotate(90deg);opacity:0.4}.open-close-toggle:hover+.expand-icon .line:nth-of-type(3),.open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(3){transform:translate3d(0, -0.5rem, 0) rotate(-90deg);opacity:0.4}section.open .line:first-of-type,section.open .line:last-of-type{transition:opacity 0.2s ease 0.1s, transform 0.4s ease 0.3s;opacity:1}section.open .line:first-of-type{transform:rotate3d(0, 0, 1, 0deg)}section.open .line:last-of-type{transform:rotate3d(0, 0, 1, 0deg)}section.open .line:nth-of-type(2),section.open .line:nth-of-type(3){transition:opacity 1s ease, transform 0.4s ease}section.open .line:nth-of-type(2){transform:translate3d(0, 1rem, 0) rotate(90deg);opacity:0}section.open .line:nth-of-type(3){transform:translate3d(0, -1rem, 0) rotate(-90deg);opacity:0}section.open .open-close-toggle:hover+.expand-icon .line:first-of-type,section.open .open-close-toggle:hover+.expand-icon .line:last-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:first-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transition:opacity 0.2s ease 0.4s, transform 0.4s cubic-bezier(0.85, 0.11, 0.14, 1.35) 0.2s}section.open .open-close-toggle:hover+.expand-icon .line:first-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:first-of-type{transform:rotate3d(0, 0, 1, 45deg)}section.open .open-close-toggle:hover+.expand-icon .line:last-of-type,section.open .open-close-toggle:focus-visible+.expand-icon .line:last-of-type{transform:rotate3d(0, 0, 1, -45deg)}section.open .open-close-toggle:hover+.expand-icon .line:nth-of-type(2),section.open .open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(2){transform:translate3d(0, 1rem, 0) rotate(90deg);opacity:0}section.open .open-close-toggle:hover+.expand-icon .line:nth-of-type(3),section.open .open-close-toggle:focus-visible+.expand-icon .line:nth-of-type(3){transform:translate3d(0, -1rem, 0) rotate(-90deg);opacity:0}:host(limel-collapsible-section){--border-radius-of-header:0.75rem;display:block}:host([hidden]){display:none}button.open-close-toggle{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;position:absolute;inset:0;width:100%}button.open-close-toggle:focus{outline:none}button.open-close-toggle:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}button.open-close-toggle{transition:background-color 0.4s ease, border-radius 0.1s ease;cursor:pointer;z-index:-1;background-color:var(--closed-header-background-color, rgb(var(--contrast-200)));border-radius:var(--border-radius-of-header)}button.open-close-toggle:hover,button.open-close-toggle:focus-visible{background-color:var(--open-header-background-color, rgb(var(--contrast-300)))}section.open button.open-close-toggle{background-color:var(--open-header-background-color, rgb(var(--contrast-100)));border-radius:var(--border-radius-of-header) var(--border-radius-of-header) var(--limel-cs-open-header-bottom-border-radius, 0) var(--limel-cs-open-header-bottom-border-radius, 0)}section.open button.open-close-toggle:hover,section.open button.open-close-toggle:focus-visible{background-color:var(--open-header-background-color, rgb(var(--contrast-300)))}.title,.divider-line,.expand-icon{pointer-events:none}section{transition:box-shadow 0.4s ease;border-radius:var(--border-radius-of-header)}section[aria-invalid]:not([aria-invalid=false]){--header-stroke-color:rgb(var(--color-red-default)) !important}section[aria-invalid]:not([aria-invalid=false]):not(.open){box-shadow:0 0 0 1px rgb(var(--color-red-default))}header{isolation:isolate;position:relative;align-items:center;display:flex;justify-content:space-between;gap:0.5rem;padding-left:0.5rem;height:2.5rem}limel-icon{width:1.5rem;flex-shrink:0}.title{font-size:1rem;font-weight:300;color:var(--limel-theme-on-surface-color);justify-self:flex-start;user-select:none;height:auto;max-height:3rem;line-height:1.2rem;display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.divider-line{transition:opacity 0.3s ease 0.3s;flex-grow:1;height:0.125rem;border-radius:1rem;background-color:var(--header-stroke-color, rgb(var(--contrast-900)));opacity:0;margin-right:0.5rem}section.open .divider-line{opacity:0.16}.actions{justify-self:flex-end;flex-shrink:0}::slotted([slot=header]){margin-right:0.5rem}.body{background-color:var(--body-background-color, var(--contrast-100));padding-left:var(--body-padding, 1.25rem);padding-right:var(--body-padding, 1.25rem);border-radius:0 0 var(--border-radius-of-header) var(--border-radius-of-header)}.body{transition:grid-template-rows var(--limel-cs-grid-template-rows-transition-speed) cubic-bezier(1, 0.09, 0, 0.89);display:grid;grid-template-rows:var(--limel-cs-grid-template-rows)}.body slot{transition:opacity var(--limel-cs-opacity-transition-speed) ease var(--limel-cs-opacity-transition-delay);display:block;overflow:hidden}:host(limel-collapsible-section:not([is-open])){--limel-cs-opacity-transition-speed:0.1s;--limel-cs-opacity-transition-delay:0s;--limel-cs-grid-template-rows-transition-speed:0.3s;--limel-cs-grid-template-rows:0fr}:host(limel-collapsible-section:not([is-open])) slot{opacity:0}:host(limel-collapsible-section[is-open]){--limel-cs-opacity-transition-speed:0.4s;--limel-cs-opacity-transition-delay:0.3s;--limel-cs-grid-template-rows-transition-speed:0.46s;--limel-cs-grid-template-rows:1fr}:host(limel-collapsible-section[is-open]) slot{opacity:1}header:hover+.body,header:has(.open-close-toggle:hover)+.body,header:has(.open-close-toggle:focus-visible)+.body{will-change:grid-template-rows}header:hover+.body slot,header:has(.open-close-toggle:hover)+.body slot,header:has(.open-close-toggle:focus-visible)+.body slot{will-change:opacity}`;
9
9
 
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h, H as Host } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-EPnIW0K5.js';
2
+ import { t as translate } from './translations-Cb9R_zmF.js';
3
3
 
4
4
  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
5
 
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-EPnIW0K5.js';
2
+ import { t as translate } from './translations-Cb9R_zmF.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';
@@ -1,5 +1,5 @@
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-EPnIW0K5.js';
2
+ import { t as translate } from './translations-Cb9R_zmF.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
5
  import './_commonjsHelpers-B85MJLTf.js';
@@ -1,7 +1,8 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-EPnIW0K5.js';
2
+ import { t as translate } from './translations-Cb9R_zmF.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
+ import { r as resizeImage } from './image-resize-65ma7B85.js';
5
6
  import './icons-Bu_YRgCL.js';
6
7
  import './get-icon-props-CgNJbSP4.js';
7
8
 
@@ -52,14 +53,51 @@ const File = class {
52
53
  this.dropZoneTip = () => {
53
54
  return this.getTranslation('file.drag-and-drop-tips');
54
55
  };
55
- this.handleNewFiles = (event) => {
56
+ this.handleNewFiles = async (event) => {
56
57
  this.preventAndStop(event);
57
- this.change.emit(event.detail[0]);
58
+ const file = event.detail[0];
59
+ let out = file;
60
+ const content = file === null || file === void 0 ? void 0 : file.fileContent;
61
+ // `instanceof Blob` (not `File`) guards against a value with no real
62
+ // binary and narrows to the DOM file type; `File` here is the class.
63
+ if (this.resizeImage &&
64
+ content instanceof Blob &&
65
+ this.isResizableImage(content)) {
66
+ // Show the selected file with a loading badge while it resizes.
67
+ // This object doubles as the in-flight token: if it is cleared or
68
+ // replaced during the await (e.g. the file is removed), the resize
69
+ // result is stale and must be dropped.
70
+ const pending = Object.assign(Object.assign({}, file), { loading: true, statusText: this.getTranslation('file.optimizing') });
71
+ this.resizingFile = pending;
72
+ try {
73
+ const processed = await resizeImage(content, this.resizeImage);
74
+ out = Object.assign(Object.assign({}, file), { filename: processed.name, size: processed.size, contentType: processed.type, fileContent: processed });
75
+ }
76
+ catch (_a) {
77
+ // Best-effort: on any decode or encode failure emit the
78
+ // original file unchanged.
79
+ }
80
+ // Bail if the selection changed while we were resizing, so a
81
+ // removed or superseded file is neither re-shown nor re-emitted.
82
+ if (this.resizingFile !== pending) {
83
+ return;
84
+ }
85
+ // Keep the result on the same chip until `value` catches up.
86
+ this.resizingFile = out;
87
+ }
88
+ this.change.emit(out);
58
89
  };
59
90
  this.handleChipSetChange = (event) => {
60
91
  event.stopPropagation();
61
92
  const file = event.detail.length === 0 ? event.detail[0] : null;
62
93
  if (!file) {
94
+ // Removing the chip cancels any in-flight resize: drop the
95
+ // transient so the chip disappears immediately, and the token
96
+ // guard in `handleNewFiles` discards the resize result instead of
97
+ // re-emitting the removed file once it finishes. Without this, a
98
+ // removal during resize is swallowed, because `value` is already
99
+ // `undefined` so the `@Watch('value')` clear never fires.
100
+ this.resizingFile = undefined;
63
101
  this.change.emit(file);
64
102
  }
65
103
  };
@@ -68,12 +106,23 @@ const File = class {
68
106
  this.interact.emit(event.detail.id);
69
107
  };
70
108
  }
109
+ /** The committed `value`, or the file currently being resized. */
110
+ get displayedFile() {
111
+ var _a;
112
+ return (_a = this.value) !== null && _a !== void 0 ? _a : this.resizingFile;
113
+ }
114
+ // Clear the transient file once `value` reflects the selection, keeping the
115
+ // same chip mounted across the hand-off (see file.spec.tsx) so only its
116
+ // badge changes instead of the field flashing empty.
117
+ handleValueChange() {
118
+ this.resizingFile = undefined;
119
+ }
71
120
  render() {
72
- return (h(Host, { key: 'efdeb4e071a7bf484780eb239a1117a0e0fd0472', "aria-busy": this.isBusy ? 'true' : 'false' }, h("limel-file-dropzone", { key: '88d3924f5db23d1f3b07321bc7dc35663feeac8f', disabled: this.disabled || this.readonly || !!this.value, accept: this.accept, onFilesSelected: this.handleNewFiles }, this.renderChipset()), this.renderDragAndDropTip(), this.renderSpinner()));
121
+ return (h(Host, { key: '3f314e0a075c61a8b1e2b4a51451193abc53e12f', "aria-busy": this.isBusy ? 'true' : 'false' }, h("limel-file-dropzone", { key: '8374175635679e2082b4f80d431686f8fd76af61', disabled: this.disabled || this.readonly || !!this.displayedFile, accept: this.accept, onFilesSelected: this.handleNewFiles }, this.renderChipset()), this.renderDragAndDropTip(), this.renderSpinner()));
73
122
  }
74
123
  get statusText() {
75
124
  var _a, _b, _c;
76
- return (_c = (_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.statusText) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '';
125
+ return (_c = (_b = (_a = this.displayedFile) === null || _a === void 0 ? void 0 : _a.statusText) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '';
77
126
  }
78
127
  /**
79
128
  * The component is busy for any reason: its own `loading`, or a file that
@@ -84,8 +133,8 @@ const File = class {
84
133
  get isBusy() {
85
134
  var _a, _b;
86
135
  return (this.loading ||
87
- Boolean((_a = this.value) === null || _a === void 0 ? void 0 : _a.loading) ||
88
- ((_b = this.value) === null || _b === void 0 ? void 0 : _b.progress) !== undefined);
136
+ Boolean((_a = this.displayedFile) === null || _a === void 0 ? void 0 : _a.loading) ||
137
+ ((_b = this.displayedFile) === null || _b === void 0 ? void 0 : _b.progress) !== undefined);
89
138
  }
90
139
  renderSpinner() {
91
140
  if (!this.isBusy) {
@@ -94,35 +143,47 @@ const File = class {
94
143
  return h("limel-spinner", null);
95
144
  }
96
145
  renderDragAndDropTip() {
97
- if (this.value || this.disabled || this.readonly || this.isBusy) {
146
+ if (this.displayedFile ||
147
+ this.disabled ||
148
+ this.readonly ||
149
+ this.isBusy) {
98
150
  return;
99
151
  }
100
152
  return (h("div", { class: "drag-and-drop-tip" }, h("span", { class: "invisible-label-mock", role: "presentation" }, this.label), h("span", { class: "tip" }, this.dropZoneTip())));
101
153
  }
154
+ // Cheap pre-filter; the decode inside `resizeImage` is the authoritative
155
+ // check and throws (caught above) for anything that does not decode.
156
+ isResizableImage(file) {
157
+ var _a;
158
+ return (Boolean((_a = file.type) === null || _a === void 0 ? void 0 : _a.startsWith('image/')) &&
159
+ file.type !== 'image/svg+xml');
160
+ }
102
161
  getChipArray() {
103
- if (!this.value) {
162
+ const file = this.displayedFile;
163
+ if (!file) {
104
164
  return [];
105
165
  }
106
166
  return [
107
- Object.assign(Object.assign({}, DEFAULT_FILE_CHIP), { text: this.value.filename, id: this.value.id, icon: {
108
- name: getFileIcon(this.value),
109
- title: getFileExtensionTitle(this.value),
110
- color: getFileColor(this.value),
111
- backgroundColor: getFileBackgroundColor(this.value),
112
- }, badge: this.getBadge(), href: this.value.href, menuItems: this.value.menuItems, loading: this.value.loading, progress: this.value.progress, invalid: this.value.invalid }),
167
+ Object.assign(Object.assign({}, DEFAULT_FILE_CHIP), { text: file.filename, id: file.id, icon: {
168
+ name: getFileIcon(file),
169
+ title: getFileExtensionTitle(file),
170
+ color: getFileColor(file),
171
+ backgroundColor: getFileBackgroundColor(file),
172
+ }, badge: this.getBadge(), href: file.href, menuItems: file.menuItems, loading: file.loading, progress: file.progress, invalid: file.invalid }),
113
173
  ];
114
174
  }
115
175
  getBadge() {
176
+ var _a;
116
177
  if (this.statusText) {
117
178
  return this.statusText;
118
179
  }
119
- if (typeof this.value.size === 'number') {
120
- return formatBytes(this.value.size);
180
+ if (typeof ((_a = this.displayedFile) === null || _a === void 0 ? void 0 : _a.size) === 'number') {
181
+ return formatBytes(this.displayedFile.size);
121
182
  }
122
183
  return undefined;
123
184
  }
124
185
  renderChipset() {
125
- const chipset = (h("limel-chip-set", { disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, helperText: this.helperText, leadingIcon: "upload_to_cloud", language: this.language, onChange: this.handleChipSetChange, onInteract: this.handleChipInteract, required: this.required, type: "input", value: this.getChipArray() }));
186
+ const chipset = (h("limel-chip-set", { disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, clearAllButton: false, label: this.label, helperText: this.helperText, leadingIcon: "upload_to_cloud", language: this.language, onChange: this.handleChipSetChange, onInteract: this.handleChipInteract, required: this.required, type: "input", value: this.getChipArray() }));
126
187
  if (this.value) {
127
188
  return chipset;
128
189
  }
@@ -135,6 +196,11 @@ const File = class {
135
196
  getTranslation(key) {
136
197
  return translate.get(key, this.language);
137
198
  }
199
+ static get watchers() { return {
200
+ "value": [{
201
+ "handleValueChange": 0
202
+ }]
203
+ }; }
138
204
  };
139
205
  File.style = fileCss();
140
206
 
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-EPnIW0K5.js';
2
+ import { t as translate } from './translations-Cb9R_zmF.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';
@@ -3,7 +3,7 @@ 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-EPnIW0K5.js';
6
+ import { t as translate } from './translations-Cb9R_zmF.js';
7
7
  import { I as ImageTemplate } from './image.template-BXDvrqGw.js';
8
8
 
9
9
  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{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:2rem;height:2rem;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)}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)}`;
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, a as getElement } from './index-BGxJfR2f.js';
2
- import { t as translate } from './translations-EPnIW0K5.js';
2
+ import { t as translate } from './translations-Cb9R_zmF.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-rI0IeKpx.js';
5
5
  import { c as createRandomString } from './random-string-JbKhhoXs.js';
@@ -1,9 +1,9 @@
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-CZAZotms.js';
3
3
  import { g as getIconName } from './get-icon-props-CgNJbSP4.js';
4
- import { t as translate } from './translations-EPnIW0K5.js';
4
+ import { t as translate } from './translations-Cb9R_zmF.js';
5
5
  import { c as createRandomString } from './random-string-JbKhhoXs.js';
6
- import { r as resizeImage } from './image-resize-DPcww8rE.js';
6
+ import { r as resizeImage } from './image-resize-65ma7B85.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';