@limetech/lime-elements 40.8.1 → 40.10.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 (293) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-3d-hover-effect-glow.cjs.entry.js +1 -1
  4. package/dist/cjs/limel-action-bar_3.cjs.entry.js +3 -3
  5. package/dist/cjs/limel-ai-avatar.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-badge.cjs.entry.js +2 -2
  7. package/dist/cjs/limel-banner.cjs.entry.js +1 -1
  8. package/dist/cjs/limel-breadcrumbs_6.cjs.entry.js +6 -6
  9. package/dist/cjs/limel-button-group.cjs.entry.js +1 -1
  10. package/dist/cjs/limel-button.cjs.entry.js +2 -2
  11. package/dist/cjs/limel-callout.cjs.entry.js +1 -1
  12. package/dist/cjs/limel-card.cjs.entry.js +1 -1
  13. package/dist/cjs/limel-checkbox.cjs.entry.js +1 -1
  14. package/dist/cjs/limel-chip-set.cjs.entry.js +1 -1
  15. package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
  16. package/dist/cjs/limel-circular-progress.cjs.entry.js +1 -1
  17. package/dist/cjs/limel-code-diff.cjs.entry.js +1 -1
  18. package/dist/cjs/limel-code-editor.cjs.entry.js +1 -1
  19. package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
  20. package/dist/cjs/limel-color-picker-palette.cjs.entry.js +2 -2
  21. package/dist/cjs/limel-color-picker.cjs.entry.js +1 -1
  22. package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
  23. package/dist/cjs/limel-dock-button.cjs.entry.js +1 -1
  24. package/dist/cjs/limel-dock.cjs.entry.js +23 -10
  25. package/dist/cjs/limel-drag-handle.cjs.entry.js +1 -1
  26. package/dist/cjs/limel-email-viewer.cjs.entry.js +1 -1
  27. package/dist/cjs/limel-file-dropzone_2.cjs.entry.js +2 -2
  28. package/dist/cjs/limel-file.cjs.entry.js +1 -1
  29. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
  30. package/dist/cjs/limel-flex-container.cjs.entry.js +1 -1
  31. package/dist/cjs/limel-form.cjs.entry.js +1 -1
  32. package/dist/cjs/limel-grid.cjs.entry.js +1 -1
  33. package/dist/cjs/limel-header.cjs.entry.js +1 -1
  34. package/dist/cjs/limel-help-content.cjs.entry.js +1 -1
  35. package/dist/cjs/limel-help.cjs.entry.js +2 -2
  36. package/dist/cjs/limel-helper-line_3.cjs.entry.js +4 -4
  37. package/dist/cjs/limel-hotkey_4.cjs.entry.js +5 -5
  38. package/dist/cjs/limel-icon-button.cjs.entry.js +1 -1
  39. package/dist/cjs/limel-icon.cjs.entry.js +1 -1
  40. package/dist/cjs/limel-info-tile.cjs.entry.js +2 -2
  41. package/dist/cjs/limel-list-item.cjs.entry.js +2 -2
  42. package/dist/cjs/limel-markdown.cjs.entry.js +1 -1
  43. package/dist/cjs/limel-masonry-layout.cjs.entry.js +1 -1
  44. package/dist/cjs/limel-menu-item-meta.cjs.entry.js +1 -1
  45. package/dist/cjs/limel-pagination.cjs.entry.js +1 -1
  46. package/dist/cjs/limel-picker.cjs.entry.js +1 -1
  47. package/dist/cjs/limel-popover_2.cjs.entry.js +2 -2
  48. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
  49. package/dist/cjs/limel-radio-button-group.cjs.entry.js +1 -1
  50. package/dist/cjs/limel-radio-button.cjs.entry.js +2 -2
  51. package/dist/cjs/limel-resize-handle.cjs.entry.js +240 -0
  52. package/dist/cjs/limel-scroller.cjs.entry.js +2 -2
  53. package/dist/cjs/limel-select.cjs.entry.js +1 -1
  54. package/dist/cjs/limel-shortcut.cjs.entry.js +1 -1
  55. package/dist/cjs/limel-side-panel.cjs.entry.js +283 -0
  56. package/dist/cjs/limel-slider.cjs.entry.js +3 -3
  57. package/dist/cjs/limel-snackbar.cjs.entry.js +2 -2
  58. package/dist/cjs/limel-split-button.cjs.entry.js +2 -2
  59. package/dist/cjs/limel-switch.cjs.entry.js +1 -1
  60. package/dist/cjs/limel-tab-bar.cjs.entry.js +1 -1
  61. package/dist/cjs/limel-tab-panel.cjs.entry.js +1 -1
  62. package/dist/cjs/limel-table.cjs.entry.js +2 -2
  63. package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +3 -3
  64. package/dist/cjs/limel-text-editor.cjs.entry.js +1 -1
  65. package/dist/cjs/loader.cjs.js +1 -1
  66. package/dist/collection/collection-manifest.json +2 -0
  67. package/dist/collection/components/3d-hover-effect-glow/3d-hover-effect-glow.js +1 -1
  68. package/dist/collection/components/action-bar/action-bar-item/action-bar-overflow-menu.js +1 -1
  69. package/dist/collection/components/action-bar/action-bar.js +2 -2
  70. package/dist/collection/components/ai-avatar/ai-avatar.js +1 -1
  71. package/dist/collection/components/badge/badge.js +2 -2
  72. package/dist/collection/components/banner/banner.js +1 -1
  73. package/dist/collection/components/breadcrumbs/breadcrumbs.js +1 -1
  74. package/dist/collection/components/button/button.js +2 -2
  75. package/dist/collection/components/button-group/button-group.js +1 -1
  76. package/dist/collection/components/callout/callout.js +1 -1
  77. package/dist/collection/components/card/card.js +1 -1
  78. package/dist/collection/components/checkbox/checkbox.js +1 -1
  79. package/dist/collection/components/chip/chip.js +1 -1
  80. package/dist/collection/components/chip-set/chip-set.js +1 -1
  81. package/dist/collection/components/circular-progress/circular-progress.js +1 -1
  82. package/dist/collection/components/code-diff/code-diff.js +1 -1
  83. package/dist/collection/components/code-editor/code-editor.js +1 -1
  84. package/dist/collection/components/collapsible-section/collapsible-section.js +1 -1
  85. package/dist/collection/components/color-picker/color-picker-palette.js +2 -2
  86. package/dist/collection/components/color-picker/color-picker.js +1 -1
  87. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js +1 -1
  88. package/dist/collection/components/dialog/dialog.js +2 -2
  89. package/dist/collection/components/dock/dock-button/dock-button.css +25 -0
  90. package/dist/collection/components/dock/dock.css +1 -1
  91. package/dist/collection/components/dock/dock.js +24 -10
  92. package/dist/collection/components/drag-handle/drag-handle.js +1 -1
  93. package/dist/collection/components/email-viewer/email-viewer.js +1 -1
  94. package/dist/collection/components/file/file.js +1 -1
  95. package/dist/collection/components/file-dropzone/file-dropzone.js +1 -1
  96. package/dist/collection/components/file-input/file-input.js +1 -1
  97. package/dist/collection/components/flex-container/flex-container.js +1 -1
  98. package/dist/collection/components/form/form.js +1 -1
  99. package/dist/collection/components/grid/grid.js +1 -1
  100. package/dist/collection/components/header/header.js +1 -1
  101. package/dist/collection/components/help/help-content.js +1 -1
  102. package/dist/collection/components/help/help.js +2 -2
  103. package/dist/collection/components/helper-line/helper-line.js +2 -2
  104. package/dist/collection/components/hotkey/hotkey.js +1 -1
  105. package/dist/collection/components/icon/icon.js +1 -1
  106. package/dist/collection/components/icon-button/icon-button.js +1 -1
  107. package/dist/collection/components/info-tile/info-tile.js +2 -2
  108. package/dist/collection/components/input-field/input-field.js +1 -1
  109. package/dist/collection/components/list/list.js +1 -1
  110. package/dist/collection/components/list-item/list-item.js +2 -2
  111. package/dist/collection/components/list-item/menu-item-meta/menu-item-meta.js +1 -1
  112. package/dist/collection/components/markdown/markdown.js +1 -1
  113. package/dist/collection/components/masonry-layout/masonry-layout.js +1 -1
  114. package/dist/collection/components/menu/menu.js +1 -1
  115. package/dist/collection/components/menu-list/menu-list.js +1 -1
  116. package/dist/collection/components/menu-surface/menu-surface.js +1 -1
  117. package/dist/collection/components/notched-outline/notched-outline.js +1 -1
  118. package/dist/collection/components/pagination/pagination.js +1 -1
  119. package/dist/collection/components/picker/picker.js +1 -1
  120. package/dist/collection/components/popover/popover.js +1 -1
  121. package/dist/collection/components/popover-surface/popover-surface.js +1 -1
  122. package/dist/collection/components/portal/portal.js +1 -1
  123. package/dist/collection/components/radio-button-group/radio-button-group.js +1 -1
  124. package/dist/collection/components/radio-button-group/radio-button.js +2 -2
  125. package/dist/collection/components/resize-handle/resize-handle.css +274 -0
  126. package/dist/collection/components/resize-handle/resize-handle.js +210 -0
  127. package/dist/collection/components/scroller/scroller.js +2 -2
  128. package/dist/collection/components/select/select.js +1 -1
  129. package/dist/collection/components/shortcut/shortcut.js +1 -1
  130. package/dist/collection/components/side-panel/side-panel.css +300 -0
  131. package/dist/collection/components/side-panel/side-panel.js +433 -0
  132. package/dist/collection/components/slider/slider.js +3 -3
  133. package/dist/collection/components/snackbar/snackbar.js +2 -2
  134. package/dist/collection/components/spinner/spinner.js +1 -1
  135. package/dist/collection/components/split-button/split-button.js +2 -2
  136. package/dist/collection/components/switch/switch.js +1 -1
  137. package/dist/collection/components/tab-bar/tab-bar.js +1 -1
  138. package/dist/collection/components/tab-panel/tab-panel.js +1 -1
  139. package/dist/collection/components/table/table.js +2 -2
  140. package/dist/collection/components/text-editor/link-menu/editor-link-menu.js +3 -3
  141. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
  142. package/dist/collection/components/text-editor/text-editor.js +1 -1
  143. package/dist/collection/components/tooltip/tooltip-content.js +1 -1
  144. package/dist/collection/components/tooltip/tooltip.js +2 -2
  145. package/dist/collection/util/drag-to-resize.js +108 -0
  146. package/dist/collection/util/get-deep-active-element.js +15 -0
  147. package/dist/collection/util/resize-location.js +76 -0
  148. package/dist/esm/{keycodes-DQ5DmW_Y.js → keycodes-Bu6-QXrA.js} +1 -1
  149. package/dist/esm/lime-elements.js +1 -1
  150. package/dist/esm/limel-3d-hover-effect-glow.entry.js +1 -1
  151. package/dist/esm/limel-action-bar_3.entry.js +3 -3
  152. package/dist/esm/limel-ai-avatar.entry.js +1 -1
  153. package/dist/esm/limel-badge.entry.js +2 -2
  154. package/dist/esm/limel-banner.entry.js +1 -1
  155. package/dist/esm/limel-breadcrumbs_6.entry.js +7 -7
  156. package/dist/esm/limel-button-group.entry.js +1 -1
  157. package/dist/esm/limel-button.entry.js +2 -2
  158. package/dist/esm/limel-callout.entry.js +1 -1
  159. package/dist/esm/limel-card.entry.js +1 -1
  160. package/dist/esm/limel-checkbox.entry.js +1 -1
  161. package/dist/esm/limel-chip-set.entry.js +2 -2
  162. package/dist/esm/limel-chip_2.entry.js +2 -2
  163. package/dist/esm/limel-circular-progress.entry.js +1 -1
  164. package/dist/esm/limel-code-diff.entry.js +1 -1
  165. package/dist/esm/limel-code-editor.entry.js +1 -1
  166. package/dist/esm/limel-collapsible-section.entry.js +1 -1
  167. package/dist/esm/limel-color-picker-palette.entry.js +2 -2
  168. package/dist/esm/limel-color-picker.entry.js +1 -1
  169. package/dist/esm/limel-dialog.entry.js +2 -2
  170. package/dist/esm/limel-dock-button.entry.js +1 -1
  171. package/dist/esm/limel-dock.entry.js +23 -10
  172. package/dist/esm/limel-drag-handle.entry.js +1 -1
  173. package/dist/esm/limel-email-viewer.entry.js +1 -1
  174. package/dist/esm/limel-file-dropzone_2.entry.js +2 -2
  175. package/dist/esm/limel-file.entry.js +1 -1
  176. package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
  177. package/dist/esm/limel-flex-container.entry.js +1 -1
  178. package/dist/esm/limel-form.entry.js +1 -1
  179. package/dist/esm/limel-grid.entry.js +1 -1
  180. package/dist/esm/limel-header.entry.js +1 -1
  181. package/dist/esm/limel-help-content.entry.js +1 -1
  182. package/dist/esm/limel-help.entry.js +2 -2
  183. package/dist/esm/limel-helper-line_3.entry.js +4 -4
  184. package/dist/esm/limel-hotkey_4.entry.js +5 -5
  185. package/dist/esm/limel-icon-button.entry.js +1 -1
  186. package/dist/esm/limel-icon.entry.js +1 -1
  187. package/dist/esm/limel-info-tile.entry.js +2 -2
  188. package/dist/esm/limel-list-item.entry.js +2 -2
  189. package/dist/esm/limel-markdown.entry.js +1 -1
  190. package/dist/esm/limel-masonry-layout.entry.js +1 -1
  191. package/dist/esm/limel-menu-item-meta.entry.js +1 -1
  192. package/dist/esm/limel-pagination-jump.entry.js +1 -1
  193. package/dist/esm/limel-pagination.entry.js +1 -1
  194. package/dist/esm/limel-picker.entry.js +2 -2
  195. package/dist/esm/limel-popover_2.entry.js +3 -3
  196. package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
  197. package/dist/esm/limel-radio-button-group.entry.js +1 -1
  198. package/dist/esm/limel-radio-button.entry.js +2 -2
  199. package/dist/esm/limel-resize-handle.entry.js +238 -0
  200. package/dist/esm/limel-scroller.entry.js +2 -2
  201. package/dist/esm/limel-select.entry.js +2 -2
  202. package/dist/esm/limel-shortcut.entry.js +1 -1
  203. package/dist/esm/limel-side-panel.entry.js +281 -0
  204. package/dist/esm/limel-slider.entry.js +3 -3
  205. package/dist/esm/limel-snackbar.entry.js +2 -2
  206. package/dist/esm/limel-split-button.entry.js +2 -2
  207. package/dist/esm/limel-switch.entry.js +1 -1
  208. package/dist/esm/limel-tab-bar.entry.js +2 -2
  209. package/dist/esm/limel-tab-panel.entry.js +1 -1
  210. package/dist/esm/limel-table.entry.js +2 -2
  211. package/dist/esm/limel-text-editor-link-menu.entry.js +4 -4
  212. package/dist/esm/limel-text-editor.entry.js +1 -1
  213. package/dist/esm/loader.js +1 -1
  214. package/dist/lime-elements/lime-elements.esm.js +1 -1
  215. package/dist/lime-elements/{p-5da47a8a.entry.js → p-065f1635.entry.js} +1 -1
  216. package/dist/lime-elements/{p-0e13ec91.entry.js → p-06cd9512.entry.js} +1 -1
  217. package/dist/lime-elements/{p-96246494.entry.js → p-07916acc.entry.js} +1 -1
  218. package/dist/lime-elements/{p-fdec09e9.entry.js → p-0c2ce99b.entry.js} +1 -1
  219. package/dist/lime-elements/{p-00c36c9e.entry.js → p-1020ca20.entry.js} +1 -1
  220. package/dist/lime-elements/{p-288ef79a.entry.js → p-14aff731.entry.js} +1 -1
  221. package/dist/lime-elements/{p-2b033dfa.entry.js → p-24e5d420.entry.js} +1 -1
  222. package/dist/lime-elements/{p-9afa4721.entry.js → p-262a3d66.entry.js} +1 -1
  223. package/dist/lime-elements/{p-45461ec5.entry.js → p-29b2a176.entry.js} +1 -1
  224. package/dist/lime-elements/{p-e752dc7f.entry.js → p-2ba9d62f.entry.js} +1 -1
  225. package/dist/lime-elements/{p-a1c69e0c.entry.js → p-33ed0c68.entry.js} +1 -1
  226. package/dist/lime-elements/{p-efaf2616.entry.js → p-35bc5ed2.entry.js} +1 -1
  227. package/dist/lime-elements/{p-d37fbbd2.entry.js → p-3ee121fa.entry.js} +1 -1
  228. package/dist/lime-elements/{p-d1b7cc55.entry.js → p-458c131f.entry.js} +3 -3
  229. package/dist/lime-elements/{p-c439b68b.entry.js → p-46bf8b22.entry.js} +1 -1
  230. package/dist/lime-elements/{p-303edb1a.entry.js → p-4882acaa.entry.js} +1 -1
  231. package/dist/lime-elements/{p-7b4351f6.entry.js → p-4a7df81a.entry.js} +1 -1
  232. package/dist/lime-elements/p-527e9c95.entry.js +1 -0
  233. package/dist/lime-elements/{p-5f5c6e7d.entry.js → p-54631dbf.entry.js} +1 -1
  234. package/dist/lime-elements/{p-d5800180.entry.js → p-5473eb74.entry.js} +1 -1
  235. package/dist/lime-elements/p-566750e5.entry.js +1 -0
  236. package/dist/lime-elements/{p-f4a0b1bc.entry.js → p-622660dd.entry.js} +1 -1
  237. package/dist/lime-elements/{p-d19c7a3a.entry.js → p-646731b6.entry.js} +1 -1
  238. package/dist/lime-elements/{p-7eab1341.entry.js → p-68542e00.entry.js} +1 -1
  239. package/dist/lime-elements/p-780dae0b.entry.js +1 -0
  240. package/dist/lime-elements/{p-8e9c927d.entry.js → p-783fd221.entry.js} +1 -1
  241. package/dist/lime-elements/{p-8ac79ef5.entry.js → p-7a290372.entry.js} +1 -1
  242. package/dist/lime-elements/{p-ff1a8b2e.entry.js → p-7a2e0e18.entry.js} +1 -1
  243. package/dist/lime-elements/{p-7fa85785.entry.js → p-7cdbbffe.entry.js} +2 -2
  244. package/dist/lime-elements/{p-b6d39581.entry.js → p-887eea11.entry.js} +1 -1
  245. package/dist/lime-elements/{p-9c8c2fb7.entry.js → p-8a59698f.entry.js} +1 -1
  246. package/dist/lime-elements/p-8d567e42.entry.js +1 -0
  247. package/dist/lime-elements/{p-b22b52a1.entry.js → p-910807cb.entry.js} +1 -1
  248. package/dist/lime-elements/p-9168793f.entry.js +1 -0
  249. package/dist/lime-elements/{p-58b7c634.entry.js → p-9461c6bb.entry.js} +1 -1
  250. package/dist/lime-elements/{p-a98cbd1f.entry.js → p-9b1934fb.entry.js} +1 -1
  251. package/dist/lime-elements/p-9b384d62.entry.js +1 -0
  252. package/dist/lime-elements/{p-ee719744.entry.js → p-9ca18ba5.entry.js} +1 -1
  253. package/dist/lime-elements/{p-DQ5DmW_Y.js → p-Bu6-QXrA.js} +1 -1
  254. package/dist/lime-elements/{p-ab91cfff.entry.js → p-a317f2fa.entry.js} +1 -1
  255. package/dist/lime-elements/{p-a1d1470c.entry.js → p-a373013f.entry.js} +1 -1
  256. package/dist/lime-elements/{p-32a050a3.entry.js → p-a449ca04.entry.js} +1 -1
  257. package/dist/lime-elements/p-a5246373.entry.js +1 -0
  258. package/dist/lime-elements/{p-9992b5f9.entry.js → p-a78aaf37.entry.js} +1 -1
  259. package/dist/lime-elements/p-abcc451a.entry.js +1 -0
  260. package/dist/lime-elements/{p-9e016212.entry.js → p-abed5afd.entry.js} +1 -1
  261. package/dist/lime-elements/{p-107654bb.entry.js → p-ae2e5e87.entry.js} +1 -1
  262. package/dist/lime-elements/{p-fdd674fc.entry.js → p-b69af611.entry.js} +1 -1
  263. package/dist/lime-elements/{p-74060535.entry.js → p-b9da0108.entry.js} +2 -2
  264. package/dist/lime-elements/{p-4cbcafae.entry.js → p-bf849dc9.entry.js} +1 -1
  265. package/dist/lime-elements/{p-0d6925f4.entry.js → p-c12fbc91.entry.js} +1 -1
  266. package/dist/lime-elements/{p-03cb609e.entry.js → p-cf6fab84.entry.js} +1 -1
  267. package/dist/lime-elements/{p-29c73bdf.entry.js → p-d3475514.entry.js} +1 -1
  268. package/dist/lime-elements/{p-006cfb3d.entry.js → p-d5144955.entry.js} +1 -1
  269. package/dist/lime-elements/{p-91a572c8.entry.js → p-d79d777e.entry.js} +1 -1
  270. package/dist/lime-elements/p-d7e5a4a7.entry.js +1 -0
  271. package/dist/lime-elements/{p-9415411e.entry.js → p-db1f9eba.entry.js} +1 -1
  272. package/dist/lime-elements/{p-a736ea08.entry.js → p-dd075353.entry.js} +1 -1
  273. package/dist/lime-elements/{p-526ede01.entry.js → p-de4d261a.entry.js} +1 -1
  274. package/dist/lime-elements/{p-e6a34047.entry.js → p-def7b38f.entry.js} +1 -1
  275. package/dist/lime-elements/{p-bc70090d.entry.js → p-e247e9fe.entry.js} +1 -1
  276. package/dist/lime-elements/{p-e2b074aa.entry.js → p-e25bfb2c.entry.js} +1 -1
  277. package/dist/lime-elements/{p-727b6c11.entry.js → p-ec74a07a.entry.js} +1 -1
  278. package/dist/lime-elements/{p-d1e5dd12.entry.js → p-ecded772.entry.js} +1 -1
  279. package/dist/types/components/dock/dock.d.ts +12 -6
  280. package/dist/types/components/resize-handle/resize-handle.d.ts +64 -0
  281. package/dist/types/components/side-panel/side-panel.d.ts +134 -0
  282. package/dist/types/components.d.ts +321 -2
  283. package/dist/types/util/drag-to-resize.d.ts +33 -0
  284. package/dist/types/util/get-deep-active-element.d.ts +9 -0
  285. package/dist/types/util/resize-location.d.ts +59 -0
  286. package/package.json +2 -2
  287. package/dist/lime-elements/p-14a28a08.entry.js +0 -1
  288. package/dist/lime-elements/p-3d05e21f.entry.js +0 -1
  289. package/dist/lime-elements/p-681cb6de.entry.js +0 -1
  290. package/dist/lime-elements/p-a2e6f16e.entry.js +0 -1
  291. package/dist/lime-elements/p-aa897903.entry.js +0 -1
  292. package/dist/lime-elements/p-cf982d06.entry.js +0 -1
  293. package/dist/lime-elements/p-de4719a6.entry.js +0 -1
@@ -0,0 +1,240 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-BlsqxTB1.js');
4
+ var keycodes = require('./keycodes-BQ_AERli.js');
5
+
6
+ const KEYBOARD_SIZE_STEP = 8;
7
+ const resizeLocations = {
8
+ left: {
9
+ axis: 'x',
10
+ cursor: 'col-resize',
11
+ direction: -1,
12
+ growKey: keycodes.ARROW_LEFT,
13
+ shrinkKey: keycodes.ARROW_RIGHT,
14
+ },
15
+ right: {
16
+ axis: 'x',
17
+ cursor: 'col-resize',
18
+ direction: 1,
19
+ growKey: keycodes.ARROW_RIGHT,
20
+ shrinkKey: keycodes.ARROW_LEFT,
21
+ },
22
+ top: {
23
+ axis: 'y',
24
+ cursor: 'row-resize',
25
+ direction: -1,
26
+ growKey: keycodes.ARROW_UP,
27
+ shrinkKey: keycodes.ARROW_DOWN,
28
+ },
29
+ bottom: {
30
+ axis: 'y',
31
+ cursor: 'row-resize',
32
+ direction: 1,
33
+ growKey: keycodes.ARROW_DOWN,
34
+ shrinkKey: keycodes.ARROW_UP,
35
+ },
36
+ };
37
+ /**
38
+ * Returns the orientation of a separator that is a handle at the given
39
+ * location.
40
+ *
41
+ * @param location - the location of the handle
42
+ * @returns the orientation
43
+ */
44
+ function getOrientation(location) {
45
+ return resizeLocations[location].axis === 'x' ? 'vertical' : 'horizontal';
46
+ }
47
+ /**
48
+ * Returns how many pixels the size of the element changes when the key is
49
+ * pressed while the handle has focus.
50
+ *
51
+ * @param location - the location of the handle
52
+ * @param key - the `key` of the keyboard event
53
+ * @returns the change in pixels, or `undefined` when the key does not resize
54
+ */
55
+ function getKeyboardSizeChange(location, key) {
56
+ const { growKey, shrinkKey } = resizeLocations[location];
57
+ if (key === growKey) {
58
+ return KEYBOARD_SIZE_STEP;
59
+ }
60
+ if (key === shrinkKey) {
61
+ return -KEYBOARD_SIZE_STEP;
62
+ }
63
+ }
64
+ /**
65
+ * Returns the size of the element along the axis that a handle at the given
66
+ * location resizes: the width for `left` and `right`, the height for `top` and
67
+ * `bottom`.
68
+ *
69
+ * `offsetWidth` and `offsetHeight` are used and not `getBoundingClientRect`,
70
+ * because an ancestor can be scaled with a transform.
71
+ *
72
+ * @param element - the element that the handle resizes
73
+ * @param location - the location of the handle
74
+ * @returns the size in pixels
75
+ */
76
+ function measureSize(element, location) {
77
+ return resizeLocations[location].axis === 'x'
78
+ ? element.offsetWidth
79
+ : element.offsetHeight;
80
+ }
81
+
82
+ // Several handles can be dragged at the same time, for example with two
83
+ // fingers. The styles from before the first drag come back when the last drag
84
+ // ends.
85
+ const dragStyles = {
86
+ activeDrags: 0,
87
+ };
88
+ /**
89
+ * The handle has captured the pointer, but the browser draws the cursor of the
90
+ * element under the pointer, which after the first pixel is the page, not the
91
+ * handle. Without these styles the cursor changes when the drag leaves the
92
+ * handle, and the drag selects the text that the pointer moves across.
93
+ *
94
+ * @param cursor - the cursor to show during the drag
95
+ */
96
+ function applyDragStylesToBody(cursor) {
97
+ if (dragStyles.activeDrags === 0) {
98
+ dragStyles.before = getBodyStyles();
99
+ }
100
+ dragStyles.activeDrags += 1;
101
+ setBodyStyles({ cursor: cursor, userSelect: 'none' });
102
+ }
103
+ function restoreBodyStyles() {
104
+ dragStyles.activeDrags -= 1;
105
+ if (dragStyles.activeDrags === 0) {
106
+ setBodyStyles(dragStyles.before);
107
+ }
108
+ }
109
+ function getBodyStyles() {
110
+ return {
111
+ cursor: document.body.style.cursor,
112
+ userSelect: document.body.style.userSelect,
113
+ };
114
+ }
115
+ function setBodyStyles(styles) {
116
+ document.body.style.cursor = styles.cursor;
117
+ document.body.style.userSelect = styles.userSelect;
118
+ }
119
+ /**
120
+ * Makes an element resizable with a drag handle on one of its edges.
121
+ *
122
+ * @param handle - the drag handle
123
+ * @param listener - gives the location and the size, and is told about the
124
+ * resize
125
+ * @returns a function that removes the event listeners
126
+ */
127
+ function dragToResize(handle, listener) {
128
+ let activePointerId;
129
+ let traits = resizeLocations.left;
130
+ let startedAt;
131
+ let startedSize;
132
+ let hasResized = false;
133
+ const pointerPosition = (event) => {
134
+ return traits.axis === 'x' ? event.clientX : event.clientY;
135
+ };
136
+ const start = (event) => {
137
+ if (activePointerId !== undefined) {
138
+ return;
139
+ }
140
+ event.preventDefault();
141
+ activePointerId = event.pointerId;
142
+ hasResized = false;
143
+ traits = resizeLocations[listener.getLocation()];
144
+ startedAt = pointerPosition(event);
145
+ startedSize = listener.getSize();
146
+ handle.setPointerCapture(event.pointerId);
147
+ applyDragStylesToBody(traits.cursor);
148
+ };
149
+ const drag = (event) => {
150
+ if (event.pointerId !== activePointerId) {
151
+ return;
152
+ }
153
+ hasResized = true;
154
+ listener.resize(startedSize +
155
+ traits.direction * (pointerPosition(event) - startedAt));
156
+ };
157
+ const end = (event) => {
158
+ if (event.pointerId !== activePointerId) {
159
+ return;
160
+ }
161
+ stop();
162
+ if (hasResized) {
163
+ listener.end();
164
+ }
165
+ };
166
+ // Cleanup also calls this, also between drags. The body styles can then
167
+ // belong to a different drag, so they are only reset for an active drag.
168
+ const stop = () => {
169
+ if (activePointerId === undefined) {
170
+ return;
171
+ }
172
+ activePointerId = undefined;
173
+ restoreBodyStyles();
174
+ };
175
+ handle.addEventListener('pointerdown', start);
176
+ handle.addEventListener('pointermove', drag);
177
+ handle.addEventListener('pointerup', end);
178
+ handle.addEventListener('pointercancel', end);
179
+ handle.addEventListener('lostpointercapture', end);
180
+ return () => {
181
+ stop();
182
+ handle.removeEventListener('pointerdown', start);
183
+ handle.removeEventListener('pointermove', drag);
184
+ handle.removeEventListener('pointerup', end);
185
+ handle.removeEventListener('pointercancel', end);
186
+ handle.removeEventListener('lostpointercapture', end);
187
+ };
188
+ }
189
+
190
+ const resizeHandleCss = () => `@charset "UTF-8";:host(limel-resize-handle){position:absolute;z-index:1;touch-action:none;display:flex;align-items:center;justify-content:center;border-radius:100vh}:host::before,:host::after{pointer-events:none;content:"";display:block;position:absolute;inset:0;border-radius:100vh;margin:auto}:host::before{transition:scale 0.3s ease, opacity 0.3s ease;transition-delay:0.2s;opacity:0}:host::after{transition:background-color 0.4s ease;transition-delay:0.2s;background-color:rgb(var(--contrast-600))}:host([location=top]),:host([location=bottom]){cursor:row-resize;height:var(--limel-resize-handle-thickness, 0.5rem) !important;right:0;left:0}:host([location=top])::before,:host([location=bottom])::before{scale:1 0.9;height:0.5rem;width:var(--limel-resize-handle-visual-length, auto)}:host([location=top])::after,:host([location=bottom])::after{height:0.125rem;width:var(--limel-resize-handle-visual-length, auto)}:host([location=top]){top:0}:host([location=top])::before{top:0;bottom:auto}:host([location=top])::after{top:calc((0.5rem - 0.125rem) / 2);bottom:auto}:host([location=bottom]){bottom:0}:host([location=bottom])::before{top:auto;bottom:0}:host([location=bottom])::after{top:auto;bottom:calc((0.5rem - 0.125rem) / 2)}:host([location=left]),:host([location=right]){cursor:col-resize;width:0.5rem;top:0;bottom:0}:host([location=left])::before,:host([location=right])::before{scale:0.9 1}:host([location=left])::after,:host([location=right])::after{width:0.125rem}:host([location=left]){left:0}:host([location=right]){right:0}:host(:focus-visible){outline:none}:host(:hover)::before,:host(:focus-visible)::before{transition-duration:0.46s;transition-timing-function:ease-in;opacity:1;scale:1 1;background-color:rgb(var(--color-sky-light), 0.4)}:host(:hover)::after,:host(:focus-visible)::after{transition-duration:0.2s;transition-timing-function:ease-in;background-color:rgb(var(--color-sky-default))}div{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);pointer-events:none;position:relative;z-index:1;display:flex;gap:0.25rem;align-items:center;justify-content:center;width:fit-content;padding:0.1875rem 0.25rem;border-radius:100vh;margin:auto;background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-pressed)}div span{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);border-radius:0.125rem;width:0.25rem;height:0.125rem;background-color:rgb(var(--contrast-700))}:host([location=top]) div{margin-top:0;margin-bottom:auto}:host([location=bottom]) div{margin-top:auto;margin-bottom:0}:host([aria-orientation=vertical]) div{rotate:90deg}:host(:hover),:host(:focus-visible){--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}:host(:hover) div,:host(:focus-visible) div{will-change:background-color, box-shadow, transform;transform:translate3d(0, -0.04rem, 0);box-shadow:var(--button-shadow-normal)}:host(:hover) span,:host(:focus-visible) span{will-change:background-color;background-color:var(--mdc-theme-primary)}`;
191
+
192
+ const ResizeHandle = class {
193
+ constructor(hostRef) {
194
+ index.registerInstance(this, hostRef);
195
+ this.changeSize = index.createEvent(this, "changeSize", 1);
196
+ this.endResize = index.createEvent(this, "endResize", 1);
197
+ /**
198
+ * The location of the handle relative to the resizable element.
199
+ */
200
+ this.location = 'left';
201
+ this.handleKeyDown = (event) => {
202
+ const change = getKeyboardSizeChange(this.location, event.key);
203
+ if (change === undefined) {
204
+ return;
205
+ }
206
+ event.preventDefault();
207
+ this.changeSize.emit(this.elementSize() + change);
208
+ this.endResize.emit();
209
+ };
210
+ this.elementSize = () => {
211
+ return measureSize(this.resizableElement(), this.location);
212
+ };
213
+ }
214
+ connectedCallback() {
215
+ this.stopResizing = dragToResize(this.host, {
216
+ getLocation: () => this.location,
217
+ getSize: this.elementSize,
218
+ resize: (size) => this.changeSize.emit(size),
219
+ end: () => this.endResize.emit(),
220
+ });
221
+ }
222
+ disconnectedCallback() {
223
+ var _a;
224
+ (_a = this.stopResizing) === null || _a === void 0 ? void 0 : _a.call(this);
225
+ this.stopResizing = undefined;
226
+ }
227
+ render() {
228
+ return (index.h(index.Host, { key: 'b4f84fff38ded8d6493be55685fbe1c8d27affdb', role: "separator", "aria-orientation": getOrientation(this.location), "aria-label": this.label, "aria-valuenow": this.value, "aria-valuemin": this.min, "aria-valuemax": this.max, tabindex: "0", onKeyDown: this.handleKeyDown }, index.h("div", { key: '02b4abbc61b0dd571ceda1d69de057605523e29a', role: "presentation" }, index.h("span", { key: 'ea5083fca722c11df72f4b0f647f087732a28033' }), index.h("span", { key: '81a176e0594f20572dbc94aea0e5dc7709a21d96' }), index.h("span", { key: '4c39fcd49f2ad087f16a032dfa085d3a8630c41e' }))));
229
+ }
230
+ resizableElement() {
231
+ if (this.host.parentElement) {
232
+ return this.host.parentElement;
233
+ }
234
+ return this.host.getRootNode().host;
235
+ }
236
+ get host() { return index.getElement(this); }
237
+ };
238
+ ResizeHandle.style = resizeHandleCss();
239
+
240
+ exports.limel_resize_handle = ResizeHandle;
@@ -65,12 +65,12 @@ const Scroller = class {
65
65
  (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
66
66
  }
67
67
  render() {
68
- return (index.h(index.Host, { key: 'e84ebfb819a65ec4b655155c88fae8d3163f81e5' }, index.h("div", { key: '5de2d4b4ea1f5f423d69195fb66e2a9e83bd5b3f', class: {
68
+ return (index.h(index.Host, { key: 'c208de7a73b1d3d040a0a76b2bdc7bad3d5ab739' }, index.h("div", { key: '5e69255f710a5f5f439553fa1f9b183e9dc5a9bd', class: {
69
69
  scroller: true,
70
70
  [this.orientation]: true,
71
71
  'can-scroll-to-start': this.canScrollToStart,
72
72
  'can-scroll-to-end': this.canScrollToEnd,
73
- } }, index.h("div", { key: 'e6b6d2832c6d8eecd18f5b653ee39d1f107d212a', class: "scroll-area", ref: (element) => (this.scrollArea = element), onScroll: this.updateScrollability, onFocusin: this.revealFocusedItem }, index.h("div", { key: '696a605e2478ea31b256631df195cb3e0e64d07a', class: "scroll-content", ref: (element) => (this.scrollContent = element) }, index.h("slot", { key: 'c32bfe0c61b93c794e2837563ea081ffccf33440', ref: (element) => (this.slotElement = element) }))), this.renderEdge('start'), this.renderEdge('end'))));
73
+ } }, index.h("div", { key: 'fc1b91baa65f317ae7bad667cba13813400ac546', class: "scroll-area", ref: (element) => (this.scrollArea = element), onScroll: this.updateScrollability, onFocusin: this.revealFocusedItem }, index.h("div", { key: '43c02c4acba2ba647aaf6a7516a0326ffc0f16b1', class: "scroll-content", ref: (element) => (this.scrollContent = element) }, index.h("slot", { key: '3d2e82f50748410b5370741c8e8b1f44117adc35', ref: (element) => (this.slotElement = element) }))), this.renderEdge('start'), this.renderEdge('end'))));
74
74
  }
75
75
  renderEdge(edge) {
76
76
  return [
@@ -800,7 +800,7 @@ const Select = class {
800
800
  }
801
801
  render() {
802
802
  const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
803
- return (index.h(SelectTemplate, { key: '0def26ad84ac6317b6f5fa0c18bd4b66f320dff1', id: this.portalId, disabled: this.disabled || this.readonly, readonly: this.readonly, required: this.required, invalid: this.invalid, label: this.label, helperText: this.helperText, value: this.value, options: this.options, onMenuChange: this.handleMenuChange, onNativeChange: this.handleNativeChange, onTriggerKeyDown: this.handleMenuTriggerKeyDown, listRef: this.setListElement, multiple: this.multiple, isOpen: this.menuOpen, open: this.openMenu, close: this.closeMenu, checkValid: this.checkValid, native: this.shouldRenderNative(), dropdownZIndex: dropdownZIndex, anchor: this.getAnchorElement() }));
803
+ return (index.h(SelectTemplate, { key: 'dd610ca15d4efd4ebc6bc52dae88625dcbca241f', id: this.portalId, disabled: this.disabled || this.readonly, readonly: this.readonly, required: this.required, invalid: this.invalid, label: this.label, helperText: this.helperText, value: this.value, options: this.options, onMenuChange: this.handleMenuChange, onNativeChange: this.handleNativeChange, onTriggerKeyDown: this.handleMenuTriggerKeyDown, listRef: this.setListElement, multiple: this.multiple, isOpen: this.menuOpen, open: this.openMenu, close: this.closeMenu, checkValid: this.checkValid, native: this.shouldRenderNative(), dropdownZIndex: dropdownZIndex, anchor: this.getAnchorElement() }));
804
804
  }
805
805
  watchOpen(newValue, oldValue) {
806
806
  if (this.checkValid) {
@@ -53,7 +53,7 @@ const Shortcut = class {
53
53
  render() {
54
54
  var _a, _b, _c, _d, _e;
55
55
  const rel = linkHelper.getRel((_a = this.link) === null || _a === void 0 ? void 0 : _a.target, (_b = this.link) === null || _b === void 0 ? void 0 : _b.rel);
56
- return (index.h(index.Host, { key: '69f27974df1fd3fea7b9822714c0a3d59b6a7fab', onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, index.h("a", { key: '9f8c7b9dc8e2f27007cb46687cb7bf10314e2a8a', "aria-disabled": this.disabled, href: (_c = this.link) === null || _c === void 0 ? void 0 : _c.href, target: (_d = this.link) === null || _d === void 0 ? void 0 : _d.target, rel: rel, tabindex: "0", "aria-label": this.getAriaLabel(), title: (_e = this.link) === null || _e === void 0 ? void 0 : _e.title }, index.h("limel-icon", { key: '3c10a0091ad0e1549b2765ad429ed2966220246e', name: this.icon }), index.h("limel-3d-hover-effect-glow", { key: '17011ca6b7d73130b73b85fd30d54921bd07ec54' })), this.renderLabel(), this.renderNotification()));
56
+ return (index.h(index.Host, { key: 'a5b5f21fa6c27511357c3fdf498384ad7b8c3f6e', onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, index.h("a", { key: '74496e167864c94b9169fe2d5ed1aea82c4e2d20', "aria-disabled": this.disabled, href: (_c = this.link) === null || _c === void 0 ? void 0 : _c.href, target: (_d = this.link) === null || _d === void 0 ? void 0 : _d.target, rel: rel, tabindex: "0", "aria-label": this.getAriaLabel(), title: (_e = this.link) === null || _e === void 0 ? void 0 : _e.title }, index.h("limel-icon", { key: '7ba30c4e1f4aae41ad2626228f238979bcce1405', name: this.icon }), index.h("limel-3d-hover-effect-glow", { key: 'f6dd1cedf07c7bce7eba7d8b8eb44f948ab4ce25' })), this.renderLabel(), this.renderNotification()));
57
57
  }
58
58
  get host() { return index.getElement(this); }
59
59
  };
@@ -0,0 +1,283 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-BlsqxTB1.js');
4
+ var keycodes = require('./keycodes-BQ_AERli.js');
5
+ var randomString = require('./random-string-CFCtFh5l.js');
6
+
7
+ /**
8
+ * Returns the element that has focus, also when it is inside shadow roots.
9
+ * `document.activeElement` returns the host of the outermost shadow root that
10
+ * contains the focused element.
11
+ *
12
+ * @returns the element that has focus, or `null` when no element has focus
13
+ */
14
+ function getDeepActiveElement() {
15
+ var _a;
16
+ let element = document.activeElement;
17
+ while ((_a = element === null || element === void 0 ? void 0 : element.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) {
18
+ element = element.shadowRoot.activeElement;
19
+ }
20
+ return element;
21
+ }
22
+
23
+ const sidePanelCss = () => `@charset "UTF-8";:host(limel-side-panel){--_side-panel-width:var(--side-panel-width, 37.5rem);--_side-panel-min-width:var(--side-panel-min-width, 25rem);--_side-panel-top-inset:var(--side-panel-top-inset, 0px);--_side-panel-right-inset:var(--side-panel-right-inset, 0px);--_side-panel-bottom-inset:var(--side-panel-bottom-inset, 0px);--_side-panel-z-index:var(--side-panel-z-index, 6)}@keyframes show-side-panel{0%{transform:translate3d(12.5rem, 0, 0) scale(0.95);opacity:0}60%{opacity:1}100%{transform:translate3d(0, 0, 0) scale(1)}}section{position:absolute;z-index:var(--_side-panel-z-index);top:var(--_side-panel-top-inset);right:var(--_side-panel-right-inset);bottom:var(--_side-panel-bottom-inset);margin:0.5rem;display:flex;flex-direction:column;isolation:isolate;width:var(--_side-panel-width);min-width:min(var(--_side-panel-min-width), 100% - 1rem);max-width:min(100% - 1rem - 3rem, 60%);max-height:100%;border-radius:1rem;box-shadow:var(--shadow-depth-64);transform-origin:left center;transition:background-color 0.5s ease, transform 0.3s ease, opacity 0.2s ease, right 0.2s ease;animation:show-side-panel 0.46s cubic-bezier(0.08, 0.54, 0.06, 1.11) forwards}section:focus{outline:none}@media (prefers-reduced-motion){section{animation:none;transition:none}}.content{display:flex;flex-direction:column;flex-grow:1;min-height:0;overflow:hidden;border-radius:1rem;background-color:rgb(var(--contrast-100))}.toolbar{flex-shrink:0;display:flex;align-items:center;gap:0.25rem;box-sizing:border-box;min-height:2.375rem;padding:0.25rem 0.125rem;background-color:rgb(var(--contrast-300))}.close{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;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}.close:hover,.close:focus,.close:focus-visible{will-change:color, background-color, box-shadow, transform}.close:hover,.close:focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}.close:hover{box-shadow:var(--button-shadow-hovered)}.close: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)}.close:hover,.close:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.close:focus{outline:none}.close:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.close{isolation:isolate;position:relative;display:flex;justify-content:center;align-items:center;width:1.875rem;height:1.875rem;border-radius:50%}.close limel-icon{width:1.25rem;transition:transform 0.2s ease, color 0.2s ease}.close:before,.close:after{content:"";position:absolute;z-index:-1;inset:0;border-radius:50%;opacity:0;transition-delay:0.1s}.close:before{transition:transform 0.3s ease, opacity 0.3s ease;background-color:rgb(var(--color-orange-dark))}.close:after{transition:transform 0.6s ease, opacity 0.6s ease;background-color:rgb(var(--color-orange-light))}.close:hover limel-icon{color:rgb(var(--color-white));transform:scale(0.7) rotate(90deg)}.close:hover:before{opacity:1;transform:scale(0.4)}.close:hover:after{opacity:0.4;transform:scale(0.6)}.body{flex-grow:1;min-height:0;display:flex;flex-direction:column;overflow:hidden auto}.handle{position:absolute;z-index:1;top:calc(2.375rem + 0.5rem);bottom:1rem;left:calc(0.5rem / -2);width:0.5rem}[data-limit]{position:absolute;visibility:hidden;pointer-events:none;height:0}[data-limit=min]{width:min(var(--_side-panel-min-width), 100% - 1rem)}[data-limit=max]{width:min(100% - 1rem - 3rem, 60%)}`;
24
+
25
+ /**
26
+ * Open panels, in the order they were connected. Only the last one handles
27
+ * Escape.
28
+ */
29
+ const openPanels = [];
30
+ function stopEvent(event) {
31
+ event.stopPropagation();
32
+ }
33
+ const SidePanel = class {
34
+ constructor(hostRef) {
35
+ index.registerInstance(this, hostRef);
36
+ this.close = index.createEvent(this, "close", 7);
37
+ this.changeWidth = index.createEvent(this, "changeWidth", 7);
38
+ /**
39
+ * Label of the close button. Shown as a tooltip and used as the accessible
40
+ * name.
41
+ */
42
+ this.closeLabel = 'Close';
43
+ /**
44
+ * Label of the resize handle. Used as the accessible name.
45
+ */
46
+ this.resizeLabel = 'Resize';
47
+ /**
48
+ * Whether pressing Escape emits `close`. Set to `false` to let only the
49
+ * close button emit `close`. The panel then does not prevent the Escape
50
+ * event either.
51
+ */
52
+ this.closeOnEscape = true;
53
+ this.closeButtonId = randomString.createRandomString();
54
+ this.setBody = (element) => {
55
+ this.body = element;
56
+ this.stopContentEventsInBody();
57
+ };
58
+ // Moving the panel in the DOM also disconnects it. It is then connected
59
+ // again before the microtask runs. Focus only returns when it was lost with
60
+ // the panel, and not when the user has moved it to another element.
61
+ this.restoreFocus = () => {
62
+ const hasLostFocus = !document.activeElement || document.activeElement === document.body;
63
+ if (this.host.isConnected || !hasLostFocus) {
64
+ return;
65
+ }
66
+ const element = this.focusedBefore;
67
+ this.focusedBefore = undefined;
68
+ if (element === null || element === void 0 ? void 0 : element.isConnected) {
69
+ element.focus();
70
+ }
71
+ };
72
+ this.setPanel = (element) => {
73
+ this.panel = element;
74
+ };
75
+ this.setMinLimit = (element) => {
76
+ this.minLimit = element;
77
+ };
78
+ this.setMaxLimit = (element) => {
79
+ this.maxLimit = element;
80
+ };
81
+ this.handleKeyDown = (event) => {
82
+ if (!this.closeOnEscape ||
83
+ event.key !== keycodes.ESCAPE ||
84
+ event.defaultPrevented ||
85
+ !this.isLastOpened()) {
86
+ return;
87
+ }
88
+ event.preventDefault();
89
+ this.close.emit();
90
+ };
91
+ this.handleChangeSize = (event) => {
92
+ this.rememberWidthBeforeResize();
93
+ this.setWidth(event.detail);
94
+ };
95
+ this.handleEndResize = () => {
96
+ if (!this.isResizing()) {
97
+ return;
98
+ }
99
+ const widthBefore = this.widthBeforeResize;
100
+ this.widthBeforeResize = undefined;
101
+ this.keepClampedWidth();
102
+ this.updateWidthRange();
103
+ this.emitWidthIfChanged(widthBefore);
104
+ };
105
+ // The height of the panel, and a width that `updateWidthRange` has already
106
+ // measured, for example after an arrow key press, need no new measurement.
107
+ this.handleSizeChange = (entries) => {
108
+ if (entries.every(this.isMeasured)) {
109
+ return;
110
+ }
111
+ this.updateWidthRange();
112
+ };
113
+ this.isMeasured = (entry) => {
114
+ var _a;
115
+ return (entry.target === this.panel &&
116
+ Math.round(entry.borderBoxSize[0].inlineSize) ===
117
+ ((_a = this.widthRange) === null || _a === void 0 ? void 0 : _a.now));
118
+ };
119
+ // Reading the current width forces a layout of the content, which is slow
120
+ // when the content is large. The range does not change during a resize, so it
121
+ // is measured when the resize ends.
122
+ this.updateWidthRange = () => {
123
+ if (this.isResizing()) {
124
+ return;
125
+ }
126
+ this.widthRange = this.measureWidthRange();
127
+ };
128
+ this.handleClickClose = () => {
129
+ this.close.emit();
130
+ };
131
+ }
132
+ connectedCallback() {
133
+ openPanels.push(this);
134
+ window.addEventListener('keydown', this.handleKeyDown);
135
+ this.rememberFocusedElement();
136
+ this.observeWidth();
137
+ }
138
+ componentDidLoad() {
139
+ this.observeWidth();
140
+ this.moveFocusIntoPanel();
141
+ }
142
+ disconnectedCallback() {
143
+ this.widthBeforeResize = undefined;
144
+ this.stopObservingWidth();
145
+ window.removeEventListener('keydown', this.handleKeyDown);
146
+ this.removeFromOpenPanels();
147
+ queueMicrotask(this.restoreFocus);
148
+ }
149
+ render() {
150
+ return (index.h(index.Host, { key: '1c18f40fb45731bdf157d651d4e649446de5230b' }, index.h("section", { key: 'e8b41bded39732750ae3db9b1daf14dc742e1cb7', ref: this.setPanel, role: "dialog", "aria-label": this.label, tabindex: "-1" }, this.renderHandle(), index.h("div", { key: '3cba5523e0cbe45fa328daaa40136c063a8c3ac3', class: "content" }, index.h("div", { key: 'b5cbc1260b4e6f31ac789179ab4b5a0281b9133b', class: "toolbar" }, this.renderCloseButton()), this.renderBody())), index.h("span", { key: '5fe872f05a6cc49027f84d71a765baa59a53adb9', "data-limit": "min", ref: this.setMinLimit }), index.h("span", { key: '5042e7437e61ae5308e13b1a30f5df24747e2cdf', "data-limit": "max", ref: this.setMaxLimit })));
151
+ }
152
+ // A native button and not `limel-icon-button`, because the hover animation
153
+ // styles the icon, which is inside the shadow root of `limel-icon-button`.
154
+ renderCloseButton() {
155
+ return (index.h("button", { class: "close", id: this.closeButtonId, "aria-label": this.closeLabel, onClick: this.handleClickClose }, index.h("limel-icon", { name: "multiply", "aria-hidden": "true" }), index.h("limel-tooltip", { elementId: this.closeButtonId, label: this.closeLabel })));
156
+ }
157
+ renderHandle() {
158
+ var _a, _b, _c;
159
+ return (index.h("limel-resize-handle", { class: "handle", label: this.resizeLabel, value: (_a = this.widthRange) === null || _a === void 0 ? void 0 : _a.now, min: (_b = this.widthRange) === null || _b === void 0 ? void 0 : _b.min, max: (_c = this.widthRange) === null || _c === void 0 ? void 0 : _c.max, onChangeSize: this.handleChangeSize, onEndResize: this.handleEndResize }));
160
+ }
161
+ renderBody() {
162
+ return (index.h("div", { class: "body", ref: this.setBody }, index.h("slot", null)));
163
+ }
164
+ /**
165
+ * Components in the content can emit events with the same names as the
166
+ * panel's events, for example `close` from `limel-dialog` or
167
+ * `limel-collapsible-section`. Events from slotted content pass through
168
+ * `.body` before they reach the host, so they are stopped there. The panel's
169
+ * own events are dispatched on the host, so they are not affected.
170
+ *
171
+ * Keep the event names in sync with {@link SidePanel.stopContentEventAtHost}.
172
+ */
173
+ stopContentEventsInBody() {
174
+ var _a, _b;
175
+ // Adding the same listener again has no effect, so re-renders are safe.
176
+ (_a = this.body) === null || _a === void 0 ? void 0 : _a.addEventListener('close', stopEvent);
177
+ (_b = this.body) === null || _b === void 0 ? void 0 : _b.addEventListener('changeWidth', stopEvent);
178
+ }
179
+ /**
180
+ * Fallback for {@link SidePanel.stopContentEventsInBody}.
181
+ * Stops `close` and `changeWidth` events that reach the host from any
182
+ * element other than the host.
183
+ *
184
+ * This does not replace the slot listener. A consumer listener that is added
185
+ * before the panel is connected runs before this one, and would still
186
+ * receive the event.
187
+ *
188
+ * @param event - the event
189
+ */
190
+ stopContentEventAtHost(event) {
191
+ if (event.target === this.host) {
192
+ return;
193
+ }
194
+ event.stopImmediatePropagation();
195
+ }
196
+ moveFocusIntoPanel() {
197
+ this.panel.focus({ preventScroll: true });
198
+ }
199
+ rememberFocusedElement() {
200
+ const element = getDeepActiveElement();
201
+ if (!element || element === document.body) {
202
+ return;
203
+ }
204
+ this.focusedBefore = element;
205
+ }
206
+ removeFromOpenPanels() {
207
+ const index = openPanels.indexOf(this);
208
+ if (index === -1) {
209
+ return;
210
+ }
211
+ openPanels.splice(index, 1);
212
+ }
213
+ isLastOpened() {
214
+ return openPanels.at(-1) === this;
215
+ }
216
+ // An inline width wins over `--side-panel-width`, and is still limited by
217
+ // `min-width` and `max-width`. The width is set on the element and not with
218
+ // a state, because a render and a measurement on each pointer move make
219
+ // the drag slow when the content is large.
220
+ setWidth(width) {
221
+ this.panel.style.width = `${width}px`;
222
+ }
223
+ rememberWidthBeforeResize() {
224
+ if (this.isResizing()) {
225
+ return;
226
+ }
227
+ this.widthBeforeResize = this.currentWidth();
228
+ }
229
+ isResizing() {
230
+ return this.widthBeforeResize !== undefined;
231
+ }
232
+ // A drag past a limit sets a width that CSS clamps. Without the clamped
233
+ // width, the panel grows when its container grows.
234
+ keepClampedWidth() {
235
+ this.setWidth(this.currentWidth());
236
+ }
237
+ emitWidthIfChanged(widthBefore) {
238
+ const width = this.currentWidth();
239
+ if (width === widthBefore) {
240
+ return;
241
+ }
242
+ this.changeWidth.emit(width);
243
+ }
244
+ // A focusable separator must always have its values. The width changes when
245
+ // the consumer sets `--side-panel-width`, and the limits change with the
246
+ // width of the positioned ancestor, so the range is measured when the panel
247
+ // or an element for the limits changes size.
248
+ observeWidth() {
249
+ this.stopObservingWidth();
250
+ if (!this.panel) {
251
+ return;
252
+ }
253
+ this.widthObserver = new ResizeObserver(this.handleSizeChange);
254
+ for (const element of [this.panel, this.minLimit, this.maxLimit]) {
255
+ if (element) {
256
+ this.widthObserver.observe(element);
257
+ }
258
+ }
259
+ }
260
+ stopObservingWidth() {
261
+ var _a;
262
+ (_a = this.widthObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
263
+ this.widthObserver = undefined;
264
+ }
265
+ measureWidthRange() {
266
+ const min = this.minLimit.offsetWidth;
267
+ const max = Math.max(min, this.maxLimit.offsetWidth);
268
+ return {
269
+ now: Math.round(this.currentWidth()),
270
+ min: Math.round(min),
271
+ max: Math.round(max),
272
+ };
273
+ }
274
+ // `offsetWidth` and not `getBoundingClientRect`, because the opening
275
+ // animation scales the panel with a transform.
276
+ currentWidth() {
277
+ return this.panel.offsetWidth;
278
+ }
279
+ get host() { return index.getElement(this); }
280
+ };
281
+ SidePanel.style = sidePanelCss();
282
+
283
+ exports.limel_side_panel = SidePanel;
@@ -307,15 +307,15 @@ const Slider = class {
307
307
  if (this.disabled || this.readonly) {
308
308
  inputProps.disabled = true;
309
309
  }
310
- return (index.h(index.Host, { key: '47fedc34458f09ec0a67a6fc81efcd0d5aaba74e', class: this.getContainerClassList() }, index.h("limel-notched-outline", { key: '89c319c35f59d8dbd72a40e894fb01a8b12dc88d', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, disabled: this.disabled, readonly: this.readonly, hasValue: !this.isUnset, hasFloatingLabel: true }, index.h("div", { key: 'f4c7c2475650c2c3be4b33271fc1f23aa8d40ee5', slot: "content" }, index.h("div", { key: 'c3c085ead113928e85bc9ab3cbadd7e8350b4a12', class: "slider", style: { '--slider-fraction': `${fraction}` } }, index.h("input", Object.assign({ key: 'c1e255d94086cc3c77cec32d34a52fc06ffe77b4', type: "range", min: min, max: max, value: this.displayValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperText
310
+ return (index.h(index.Host, { key: '6d910879894ffc7ff36df228e4252e4758622ab9', class: this.getContainerClassList() }, index.h("limel-notched-outline", { key: '56e3b4dbc963b6923c63a33acb21895f4e86c947', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, disabled: this.disabled, readonly: this.readonly, hasValue: !this.isUnset, hasFloatingLabel: true }, index.h("div", { key: 'f74ef31e0b7d67dcc8a231a05f9b00b84de50b33', slot: "content" }, index.h("div", { key: '4a4018ac095977f89cba99a0222603469d11ce30', class: "slider", style: { '--slider-fraction': `${fraction}` } }, index.h("input", Object.assign({ key: '8e45c543c4ba524e5257169f79d0e86b4cf95635', type: "range", min: min, max: max, value: this.displayValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperText
311
311
  ? this.helperTextId
312
312
  : undefined, "aria-valuetext": this.isUnset
313
313
  ? translations.translations.get('value-not-set', this.language)
314
314
  : undefined, ref: (el) => {
315
315
  this.inputElement = el;
316
- }, onInput: this.handleInput, onChange: this.handleChange, onClick: this.handleClick }, inputProps)), index.h("div", { key: 'c287ade5d57268fbf3d0a203f4f94363709dcb74', class: "track" }, index.h("div", { key: 'd65e20a0bd2da417a797be2501f70860cae04857', class: "active" }), this.renderStepDots(min, max)), index.h("div", { key: '72e6bf77fddaf64fcde86455bfddd1122a8f174c', class: "thumb" }, index.h("div", { key: '2066f97938cff1b20ffa0aad2e3c4803a5a2f6f9', class: "knob" }), index.h("div", { key: 'abd8845bf4d52faeffd1a4f25ca2068a8062bc09', class: "indicator", "aria-hidden": "true" }, this.isUnset
316
+ }, onInput: this.handleInput, onChange: this.handleChange, onClick: this.handleClick }, inputProps)), index.h("div", { key: '83a5600495635b0fd19cb93be94b59a333f574a5', class: "track" }, index.h("div", { key: '771452b79092adfea7aa82ab87d18910fe6bda8c', class: "active" }), this.renderStepDots(min, max)), index.h("div", { key: 'f3819b77285addfdd15b378943ca2ef16748f319', class: "thumb" }, index.h("div", { key: '46802964d1de2d5ee42faa6f02c1a51f6e35d37e', class: "knob" }), index.h("div", { key: '273328b017f98f7d581331b0ea1817d370b402f0', class: "indicator", "aria-hidden": "true" }, this.isUnset
317
317
  ? '\u{2194}\u{FE0E}'
318
- : this.displayValue))), index.h("div", { key: '231a0836f6487fd99fb2aa60d075ad8d21a4ce10', class: "range-labels" }, index.h("span", { key: '966e8f9241124e9c61da1558ccb04ccb1cf0c402', class: "min" }, this.multiplyByFactor(this.valuemin), this.unit), index.h("span", { key: '427e6ff5bd7d894da16a6b9b006fd0e1a44f9348', class: "max" }, this.multiplyByFactor(this.valuemax), this.unit)))), this.renderClearButton(), this.renderHelperLine()));
318
+ : this.displayValue))), index.h("div", { key: '92b16e21ce4cbf4e78136f5475581dc82c7aaac7', class: "range-labels" }, index.h("span", { key: 'be3be26585786ed002a4ad8678cc4f759b2ff510', class: "min" }, this.multiplyByFactor(this.valuemin), this.unit), index.h("span", { key: 'abe4058f7a055ec348971ebf5a5d26c3a5ccb0f5', class: "max" }, this.multiplyByFactor(this.valuemax), this.unit)))), this.renderClearButton(), this.renderHelperLine()));
319
319
  }
320
320
  watchValue() {
321
321
  this.syncStateFromValue();
@@ -148,14 +148,14 @@ const Snackbar = class {
148
148
  }
149
149
  }
150
150
  render() {
151
- return (index.h("aside", { key: '5612185e67dfea963fc9df340a288540f63db94e', popover: "manual", style: {
151
+ return (index.h("aside", { key: 'afddc11b55b4f3bdf05bc9ff50ed8c05851d53ac', popover: "manual", style: {
152
152
  '--snackbar-timeout': `${Math.max(this.timeout || 0, 0)}ms`,
153
153
  '--snackbar-distance-to-top-edge': `${this.offset}px`,
154
154
  }, class: {
155
155
  open: this.open,
156
156
  'is-closing': this.closing,
157
157
  'limel-portal--parent': true,
158
- }, id: this.snackbarId, role: this.setAriaRoles(), "aria-atomic": this.open ? 'true' : undefined, "aria-relevant": this.open ? 'additions' : undefined }, index.h("div", { key: 'a6221f26df374bac45ee3e5cd4a7f6c966340a06', class: "surface" }, index.h("limel-markdown", { key: '2da6a24cc92319fea7dde9a79a77f9719735a669', class: "label", value: this.message }), this.renderActions(this.actionText), this.renderDismissButton(this.dismissible))));
158
+ }, id: this.snackbarId, role: this.setAriaRoles(), "aria-atomic": this.open ? 'true' : undefined, "aria-relevant": this.open ? 'additions' : undefined }, index.h("div", { key: 'ea4aff6aba7f089e34e48aeb91a2a2d7382f3ca4', class: "surface" }, index.h("limel-markdown", { key: '3b2cc771e74d951a2dc2118e179c5a7670e2eab2', class: "label", value: this.message }), this.renderActions(this.actionText), this.renderDismissButton(this.dismissible))));
159
159
  }
160
160
  setAriaRoles() {
161
161
  if (!this.open) {
@@ -45,9 +45,9 @@ const SplitButton = class {
45
45
  };
46
46
  }
47
47
  render() {
48
- return (index.h(index.Host, { key: '2b103843490284b194de5dbf2c6030973889aa64', class: {
48
+ return (index.h(index.Host, { key: 'cb82f37e28c686da8dbdd1d5e0dafc00f5f47f4d', class: {
49
49
  'has-menu': this.items.length > 0,
50
- }, onClick: this.filterClickWhenDisabled }, index.h("limel-button", { key: '3badf574bf892cb26198166405739ef3a45fac49', label: this.label, primary: this.primary, icon: this.icon, disabled: this.disabled, loading: this.loading, loadingFailed: this.loadingFailed }), this.renderMenu()));
50
+ }, onClick: this.filterClickWhenDisabled }, index.h("limel-button", { key: '227c768350a7e822f766043c31f4d3ccb5d5181c', label: this.label, primary: this.primary, icon: this.icon, disabled: this.disabled, loading: this.loading, loadingFailed: this.loadingFailed }), this.renderMenu()));
51
51
  }
52
52
  static get delegatesFocus() { return true; }
53
53
  };
@@ -67,7 +67,7 @@ const Switch = class {
67
67
  makeEnterClickable.removeEnterClickable(this.host);
68
68
  }
69
69
  render() {
70
- return (index.h(index.Host, { key: 'ad0cfa0f9b495ba197ca27f8975d8499cfdace52' }, this.readonly
70
+ return (index.h(index.Host, { key: '5193987be5def9c42517ecbc1affc9cbb08d6ff6' }, this.readonly
71
71
  ? this.renderReadonly()
72
72
  : this.renderInteractive(), this.renderHelperLine()));
73
73
  }
@@ -298,7 +298,7 @@ const TabBar = class {
298
298
  }
299
299
  render() {
300
300
  const tabStop = findTabStop(this.tabs, this.tabs.findIndex((tab) => tab.active), this.getNavigationOptions());
301
- return (index.h("div", { key: 'd9f9e2659c8199ddd8202f04ed08535a91da2948', role: "tablist", "aria-orientation": this.getOrientation(), onKeyDown: this.handleKeyDown }, index.h("limel-scroller", { key: 'fdc0e8389ddc7ac8d0d63e5c777de6b6bf337697', orientation: this.getOrientation() }, this.tabs.map((tab, index) => this.renderTab(tab, index, index === tabStop)))));
301
+ return (index.h("div", { key: 'f4a760e69615d4d4d87ad3e176d109dbcdf2ea34', role: "tablist", "aria-orientation": this.getOrientation(), onKeyDown: this.handleKeyDown }, index.h("limel-scroller", { key: 'f3ff8810cf0a248c13aa2d9840c80c6f6270df68', orientation: this.getOrientation() }, this.tabs.map((tab, index) => this.renderTab(tab, index, index === tabStop)))));
302
302
  }
303
303
  tabsChanged(newTabs = [], oldTabs = []) {
304
304
  const newIds = newTabs.map((tab) => tab.id);