@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.
- package/CHANGELOG.md +25 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-3d-hover-effect-glow.cjs.entry.js +1 -1
- package/dist/cjs/limel-action-bar_3.cjs.entry.js +3 -3
- package/dist/cjs/limel-ai-avatar.cjs.entry.js +1 -1
- package/dist/cjs/limel-badge.cjs.entry.js +2 -2
- package/dist/cjs/limel-banner.cjs.entry.js +1 -1
- package/dist/cjs/limel-breadcrumbs_6.cjs.entry.js +6 -6
- package/dist/cjs/limel-button-group.cjs.entry.js +1 -1
- package/dist/cjs/limel-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-callout.cjs.entry.js +1 -1
- package/dist/cjs/limel-card.cjs.entry.js +1 -1
- package/dist/cjs/limel-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip-set.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-circular-progress.cjs.entry.js +1 -1
- package/dist/cjs/limel-code-diff.cjs.entry.js +1 -1
- package/dist/cjs/limel-code-editor.cjs.entry.js +1 -1
- package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
- package/dist/cjs/limel-color-picker-palette.cjs.entry.js +2 -2
- package/dist/cjs/limel-color-picker.cjs.entry.js +1 -1
- package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
- package/dist/cjs/limel-dock-button.cjs.entry.js +1 -1
- package/dist/cjs/limel-dock.cjs.entry.js +23 -10
- package/dist/cjs/limel-drag-handle.cjs.entry.js +1 -1
- package/dist/cjs/limel-email-viewer.cjs.entry.js +1 -1
- package/dist/cjs/limel-file-dropzone_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-file.cjs.entry.js +1 -1
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-flex-container.cjs.entry.js +1 -1
- package/dist/cjs/limel-form.cjs.entry.js +1 -1
- package/dist/cjs/limel-grid.cjs.entry.js +1 -1
- package/dist/cjs/limel-header.cjs.entry.js +1 -1
- package/dist/cjs/limel-help-content.cjs.entry.js +1 -1
- package/dist/cjs/limel-help.cjs.entry.js +2 -2
- package/dist/cjs/limel-helper-line_3.cjs.entry.js +4 -4
- package/dist/cjs/limel-hotkey_4.cjs.entry.js +5 -5
- package/dist/cjs/limel-icon-button.cjs.entry.js +1 -1
- package/dist/cjs/limel-icon.cjs.entry.js +1 -1
- package/dist/cjs/limel-info-tile.cjs.entry.js +2 -2
- package/dist/cjs/limel-list-item.cjs.entry.js +2 -2
- package/dist/cjs/limel-markdown.cjs.entry.js +1 -1
- package/dist/cjs/limel-masonry-layout.cjs.entry.js +1 -1
- package/dist/cjs/limel-menu-item-meta.cjs.entry.js +1 -1
- package/dist/cjs/limel-pagination.cjs.entry.js +1 -1
- package/dist/cjs/limel-picker.cjs.entry.js +1 -1
- package/dist/cjs/limel-popover_2.cjs.entry.js +2 -2
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-radio-button-group.cjs.entry.js +1 -1
- package/dist/cjs/limel-radio-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-resize-handle.cjs.entry.js +240 -0
- package/dist/cjs/limel-scroller.cjs.entry.js +2 -2
- package/dist/cjs/limel-select.cjs.entry.js +1 -1
- package/dist/cjs/limel-shortcut.cjs.entry.js +1 -1
- package/dist/cjs/limel-side-panel.cjs.entry.js +283 -0
- package/dist/cjs/limel-slider.cjs.entry.js +3 -3
- package/dist/cjs/limel-snackbar.cjs.entry.js +2 -2
- package/dist/cjs/limel-split-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-switch.cjs.entry.js +1 -1
- package/dist/cjs/limel-tab-bar.cjs.entry.js +1 -1
- package/dist/cjs/limel-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/limel-table.cjs.entry.js +2 -2
- package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +3 -3
- package/dist/cjs/limel-text-editor.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/3d-hover-effect-glow/3d-hover-effect-glow.js +1 -1
- package/dist/collection/components/action-bar/action-bar-item/action-bar-overflow-menu.js +1 -1
- package/dist/collection/components/action-bar/action-bar.js +2 -2
- package/dist/collection/components/ai-avatar/ai-avatar.js +1 -1
- package/dist/collection/components/badge/badge.js +2 -2
- package/dist/collection/components/banner/banner.js +1 -1
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +1 -1
- package/dist/collection/components/button/button.js +2 -2
- package/dist/collection/components/button-group/button-group.js +1 -1
- package/dist/collection/components/callout/callout.js +1 -1
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js +1 -1
- package/dist/collection/components/chip/chip.js +1 -1
- package/dist/collection/components/chip-set/chip-set.js +1 -1
- package/dist/collection/components/circular-progress/circular-progress.js +1 -1
- package/dist/collection/components/code-diff/code-diff.js +1 -1
- package/dist/collection/components/code-editor/code-editor.js +1 -1
- package/dist/collection/components/collapsible-section/collapsible-section.js +1 -1
- package/dist/collection/components/color-picker/color-picker-palette.js +2 -2
- package/dist/collection/components/color-picker/color-picker.js +1 -1
- package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js +1 -1
- package/dist/collection/components/dialog/dialog.js +2 -2
- package/dist/collection/components/dock/dock-button/dock-button.css +25 -0
- package/dist/collection/components/dock/dock.css +1 -1
- package/dist/collection/components/dock/dock.js +24 -10
- package/dist/collection/components/drag-handle/drag-handle.js +1 -1
- package/dist/collection/components/email-viewer/email-viewer.js +1 -1
- package/dist/collection/components/file/file.js +1 -1
- package/dist/collection/components/file-dropzone/file-dropzone.js +1 -1
- package/dist/collection/components/file-input/file-input.js +1 -1
- package/dist/collection/components/flex-container/flex-container.js +1 -1
- package/dist/collection/components/form/form.js +1 -1
- package/dist/collection/components/grid/grid.js +1 -1
- package/dist/collection/components/header/header.js +1 -1
- package/dist/collection/components/help/help-content.js +1 -1
- package/dist/collection/components/help/help.js +2 -2
- package/dist/collection/components/helper-line/helper-line.js +2 -2
- package/dist/collection/components/hotkey/hotkey.js +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/icon-button/icon-button.js +1 -1
- package/dist/collection/components/info-tile/info-tile.js +2 -2
- package/dist/collection/components/input-field/input-field.js +1 -1
- package/dist/collection/components/list/list.js +1 -1
- package/dist/collection/components/list-item/list-item.js +2 -2
- package/dist/collection/components/list-item/menu-item-meta/menu-item-meta.js +1 -1
- package/dist/collection/components/markdown/markdown.js +1 -1
- package/dist/collection/components/masonry-layout/masonry-layout.js +1 -1
- package/dist/collection/components/menu/menu.js +1 -1
- package/dist/collection/components/menu-list/menu-list.js +1 -1
- package/dist/collection/components/menu-surface/menu-surface.js +1 -1
- package/dist/collection/components/notched-outline/notched-outline.js +1 -1
- package/dist/collection/components/pagination/pagination.js +1 -1
- package/dist/collection/components/picker/picker.js +1 -1
- package/dist/collection/components/popover/popover.js +1 -1
- package/dist/collection/components/popover-surface/popover-surface.js +1 -1
- package/dist/collection/components/portal/portal.js +1 -1
- package/dist/collection/components/radio-button-group/radio-button-group.js +1 -1
- package/dist/collection/components/radio-button-group/radio-button.js +2 -2
- package/dist/collection/components/resize-handle/resize-handle.css +274 -0
- package/dist/collection/components/resize-handle/resize-handle.js +210 -0
- package/dist/collection/components/scroller/scroller.js +2 -2
- package/dist/collection/components/select/select.js +1 -1
- package/dist/collection/components/shortcut/shortcut.js +1 -1
- package/dist/collection/components/side-panel/side-panel.css +300 -0
- package/dist/collection/components/side-panel/side-panel.js +433 -0
- package/dist/collection/components/slider/slider.js +3 -3
- package/dist/collection/components/snackbar/snackbar.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-button/split-button.js +2 -2
- package/dist/collection/components/switch/switch.js +1 -1
- package/dist/collection/components/tab-bar/tab-bar.js +1 -1
- package/dist/collection/components/tab-panel/tab-panel.js +1 -1
- package/dist/collection/components/table/table.js +2 -2
- package/dist/collection/components/text-editor/link-menu/editor-link-menu.js +3 -3
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
- package/dist/collection/components/text-editor/text-editor.js +1 -1
- package/dist/collection/components/tooltip/tooltip-content.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +2 -2
- package/dist/collection/util/drag-to-resize.js +108 -0
- package/dist/collection/util/get-deep-active-element.js +15 -0
- package/dist/collection/util/resize-location.js +76 -0
- package/dist/esm/{keycodes-DQ5DmW_Y.js → keycodes-Bu6-QXrA.js} +1 -1
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-3d-hover-effect-glow.entry.js +1 -1
- package/dist/esm/limel-action-bar_3.entry.js +3 -3
- package/dist/esm/limel-ai-avatar.entry.js +1 -1
- package/dist/esm/limel-badge.entry.js +2 -2
- package/dist/esm/limel-banner.entry.js +1 -1
- package/dist/esm/limel-breadcrumbs_6.entry.js +7 -7
- package/dist/esm/limel-button-group.entry.js +1 -1
- package/dist/esm/limel-button.entry.js +2 -2
- package/dist/esm/limel-callout.entry.js +1 -1
- package/dist/esm/limel-card.entry.js +1 -1
- package/dist/esm/limel-checkbox.entry.js +1 -1
- package/dist/esm/limel-chip-set.entry.js +2 -2
- package/dist/esm/limel-chip_2.entry.js +2 -2
- package/dist/esm/limel-circular-progress.entry.js +1 -1
- package/dist/esm/limel-code-diff.entry.js +1 -1
- package/dist/esm/limel-code-editor.entry.js +1 -1
- package/dist/esm/limel-collapsible-section.entry.js +1 -1
- package/dist/esm/limel-color-picker-palette.entry.js +2 -2
- package/dist/esm/limel-color-picker.entry.js +1 -1
- package/dist/esm/limel-dialog.entry.js +2 -2
- package/dist/esm/limel-dock-button.entry.js +1 -1
- package/dist/esm/limel-dock.entry.js +23 -10
- package/dist/esm/limel-drag-handle.entry.js +1 -1
- package/dist/esm/limel-email-viewer.entry.js +1 -1
- package/dist/esm/limel-file-dropzone_2.entry.js +2 -2
- package/dist/esm/limel-file.entry.js +1 -1
- package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
- package/dist/esm/limel-flex-container.entry.js +1 -1
- package/dist/esm/limel-form.entry.js +1 -1
- package/dist/esm/limel-grid.entry.js +1 -1
- package/dist/esm/limel-header.entry.js +1 -1
- package/dist/esm/limel-help-content.entry.js +1 -1
- package/dist/esm/limel-help.entry.js +2 -2
- package/dist/esm/limel-helper-line_3.entry.js +4 -4
- package/dist/esm/limel-hotkey_4.entry.js +5 -5
- package/dist/esm/limel-icon-button.entry.js +1 -1
- package/dist/esm/limel-icon.entry.js +1 -1
- package/dist/esm/limel-info-tile.entry.js +2 -2
- package/dist/esm/limel-list-item.entry.js +2 -2
- package/dist/esm/limel-markdown.entry.js +1 -1
- package/dist/esm/limel-masonry-layout.entry.js +1 -1
- package/dist/esm/limel-menu-item-meta.entry.js +1 -1
- package/dist/esm/limel-pagination-jump.entry.js +1 -1
- package/dist/esm/limel-pagination.entry.js +1 -1
- package/dist/esm/limel-picker.entry.js +2 -2
- package/dist/esm/limel-popover_2.entry.js +3 -3
- package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
- package/dist/esm/limel-radio-button-group.entry.js +1 -1
- package/dist/esm/limel-radio-button.entry.js +2 -2
- package/dist/esm/limel-resize-handle.entry.js +238 -0
- package/dist/esm/limel-scroller.entry.js +2 -2
- package/dist/esm/limel-select.entry.js +2 -2
- package/dist/esm/limel-shortcut.entry.js +1 -1
- package/dist/esm/limel-side-panel.entry.js +281 -0
- package/dist/esm/limel-slider.entry.js +3 -3
- package/dist/esm/limel-snackbar.entry.js +2 -2
- package/dist/esm/limel-split-button.entry.js +2 -2
- package/dist/esm/limel-switch.entry.js +1 -1
- package/dist/esm/limel-tab-bar.entry.js +2 -2
- package/dist/esm/limel-tab-panel.entry.js +1 -1
- package/dist/esm/limel-table.entry.js +2 -2
- package/dist/esm/limel-text-editor-link-menu.entry.js +4 -4
- package/dist/esm/limel-text-editor.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-5da47a8a.entry.js → p-065f1635.entry.js} +1 -1
- package/dist/lime-elements/{p-0e13ec91.entry.js → p-06cd9512.entry.js} +1 -1
- package/dist/lime-elements/{p-96246494.entry.js → p-07916acc.entry.js} +1 -1
- package/dist/lime-elements/{p-fdec09e9.entry.js → p-0c2ce99b.entry.js} +1 -1
- package/dist/lime-elements/{p-00c36c9e.entry.js → p-1020ca20.entry.js} +1 -1
- package/dist/lime-elements/{p-288ef79a.entry.js → p-14aff731.entry.js} +1 -1
- package/dist/lime-elements/{p-2b033dfa.entry.js → p-24e5d420.entry.js} +1 -1
- package/dist/lime-elements/{p-9afa4721.entry.js → p-262a3d66.entry.js} +1 -1
- package/dist/lime-elements/{p-45461ec5.entry.js → p-29b2a176.entry.js} +1 -1
- package/dist/lime-elements/{p-e752dc7f.entry.js → p-2ba9d62f.entry.js} +1 -1
- package/dist/lime-elements/{p-a1c69e0c.entry.js → p-33ed0c68.entry.js} +1 -1
- package/dist/lime-elements/{p-efaf2616.entry.js → p-35bc5ed2.entry.js} +1 -1
- package/dist/lime-elements/{p-d37fbbd2.entry.js → p-3ee121fa.entry.js} +1 -1
- package/dist/lime-elements/{p-d1b7cc55.entry.js → p-458c131f.entry.js} +3 -3
- package/dist/lime-elements/{p-c439b68b.entry.js → p-46bf8b22.entry.js} +1 -1
- package/dist/lime-elements/{p-303edb1a.entry.js → p-4882acaa.entry.js} +1 -1
- package/dist/lime-elements/{p-7b4351f6.entry.js → p-4a7df81a.entry.js} +1 -1
- package/dist/lime-elements/p-527e9c95.entry.js +1 -0
- package/dist/lime-elements/{p-5f5c6e7d.entry.js → p-54631dbf.entry.js} +1 -1
- package/dist/lime-elements/{p-d5800180.entry.js → p-5473eb74.entry.js} +1 -1
- package/dist/lime-elements/p-566750e5.entry.js +1 -0
- package/dist/lime-elements/{p-f4a0b1bc.entry.js → p-622660dd.entry.js} +1 -1
- package/dist/lime-elements/{p-d19c7a3a.entry.js → p-646731b6.entry.js} +1 -1
- package/dist/lime-elements/{p-7eab1341.entry.js → p-68542e00.entry.js} +1 -1
- package/dist/lime-elements/p-780dae0b.entry.js +1 -0
- package/dist/lime-elements/{p-8e9c927d.entry.js → p-783fd221.entry.js} +1 -1
- package/dist/lime-elements/{p-8ac79ef5.entry.js → p-7a290372.entry.js} +1 -1
- package/dist/lime-elements/{p-ff1a8b2e.entry.js → p-7a2e0e18.entry.js} +1 -1
- package/dist/lime-elements/{p-7fa85785.entry.js → p-7cdbbffe.entry.js} +2 -2
- package/dist/lime-elements/{p-b6d39581.entry.js → p-887eea11.entry.js} +1 -1
- package/dist/lime-elements/{p-9c8c2fb7.entry.js → p-8a59698f.entry.js} +1 -1
- package/dist/lime-elements/p-8d567e42.entry.js +1 -0
- package/dist/lime-elements/{p-b22b52a1.entry.js → p-910807cb.entry.js} +1 -1
- package/dist/lime-elements/p-9168793f.entry.js +1 -0
- package/dist/lime-elements/{p-58b7c634.entry.js → p-9461c6bb.entry.js} +1 -1
- package/dist/lime-elements/{p-a98cbd1f.entry.js → p-9b1934fb.entry.js} +1 -1
- package/dist/lime-elements/p-9b384d62.entry.js +1 -0
- package/dist/lime-elements/{p-ee719744.entry.js → p-9ca18ba5.entry.js} +1 -1
- package/dist/lime-elements/{p-DQ5DmW_Y.js → p-Bu6-QXrA.js} +1 -1
- package/dist/lime-elements/{p-ab91cfff.entry.js → p-a317f2fa.entry.js} +1 -1
- package/dist/lime-elements/{p-a1d1470c.entry.js → p-a373013f.entry.js} +1 -1
- package/dist/lime-elements/{p-32a050a3.entry.js → p-a449ca04.entry.js} +1 -1
- package/dist/lime-elements/p-a5246373.entry.js +1 -0
- package/dist/lime-elements/{p-9992b5f9.entry.js → p-a78aaf37.entry.js} +1 -1
- package/dist/lime-elements/p-abcc451a.entry.js +1 -0
- package/dist/lime-elements/{p-9e016212.entry.js → p-abed5afd.entry.js} +1 -1
- package/dist/lime-elements/{p-107654bb.entry.js → p-ae2e5e87.entry.js} +1 -1
- package/dist/lime-elements/{p-fdd674fc.entry.js → p-b69af611.entry.js} +1 -1
- package/dist/lime-elements/{p-74060535.entry.js → p-b9da0108.entry.js} +2 -2
- package/dist/lime-elements/{p-4cbcafae.entry.js → p-bf849dc9.entry.js} +1 -1
- package/dist/lime-elements/{p-0d6925f4.entry.js → p-c12fbc91.entry.js} +1 -1
- package/dist/lime-elements/{p-03cb609e.entry.js → p-cf6fab84.entry.js} +1 -1
- package/dist/lime-elements/{p-29c73bdf.entry.js → p-d3475514.entry.js} +1 -1
- package/dist/lime-elements/{p-006cfb3d.entry.js → p-d5144955.entry.js} +1 -1
- package/dist/lime-elements/{p-91a572c8.entry.js → p-d79d777e.entry.js} +1 -1
- package/dist/lime-elements/p-d7e5a4a7.entry.js +1 -0
- package/dist/lime-elements/{p-9415411e.entry.js → p-db1f9eba.entry.js} +1 -1
- package/dist/lime-elements/{p-a736ea08.entry.js → p-dd075353.entry.js} +1 -1
- package/dist/lime-elements/{p-526ede01.entry.js → p-de4d261a.entry.js} +1 -1
- package/dist/lime-elements/{p-e6a34047.entry.js → p-def7b38f.entry.js} +1 -1
- package/dist/lime-elements/{p-bc70090d.entry.js → p-e247e9fe.entry.js} +1 -1
- package/dist/lime-elements/{p-e2b074aa.entry.js → p-e25bfb2c.entry.js} +1 -1
- package/dist/lime-elements/{p-727b6c11.entry.js → p-ec74a07a.entry.js} +1 -1
- package/dist/lime-elements/{p-d1e5dd12.entry.js → p-ecded772.entry.js} +1 -1
- package/dist/types/components/dock/dock.d.ts +12 -6
- package/dist/types/components/resize-handle/resize-handle.d.ts +64 -0
- package/dist/types/components/side-panel/side-panel.d.ts +134 -0
- package/dist/types/components.d.ts +321 -2
- package/dist/types/util/drag-to-resize.d.ts +33 -0
- package/dist/types/util/get-deep-active-element.d.ts +9 -0
- package/dist/types/util/resize-location.d.ts +59 -0
- package/package.json +2 -2
- package/dist/lime-elements/p-14a28a08.entry.js +0 -1
- package/dist/lime-elements/p-3d05e21f.entry.js +0 -1
- package/dist/lime-elements/p-681cb6de.entry.js +0 -1
- package/dist/lime-elements/p-a2e6f16e.entry.js +0 -1
- package/dist/lime-elements/p-aa897903.entry.js +0 -1
- package/dist/lime-elements/p-cf982d06.entry.js +0 -1
- 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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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);
|