atomicuilibrary 0.0.1 → 0.1.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/dist/cjs/category-section.cjs.entry.js +1 -1
- package/dist/cjs/exploration-project-tailwind.cjs.js +1 -1
- package/dist/cjs/layout-manager.cjs.entry.js +1 -1
- package/dist/cjs/library-card.cjs.entry.js +1 -1
- package/dist/cjs/lm-container_2.cjs.entry.js +1 -1
- package/dist/cjs/lm-panel_3.cjs.entry.js +4 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/my-step.cjs.entry.js +1 -1
- package/dist/cjs/nav-bar.cjs.entry.js +2 -2
- package/dist/cjs/{security-E1JcwxGc.js → security-CNaNip8F.js} +88 -154
- package/dist/cjs/smart-step.cjs.entry.js +2 -2
- package/dist/cjs/timeline-item.cjs.entry.js +1 -1
- package/dist/cjs/{ui-accordion_10.cjs.entry.js → ui-accordion_11.cjs.entry.js} +613 -26
- package/dist/cjs/ui-advanced-data-table.cjs.entry.js +1 -1
- package/dist/cjs/ui-anchor.cjs.entry.js +1 -1
- package/dist/cjs/ui-aside-panel.cjs.entry.js +5 -5
- package/dist/cjs/ui-avatar-group_3.cjs.entry.js +5 -5
- package/dist/cjs/ui-callout-banner.cjs.entry.js +1 -1
- package/dist/cjs/ui-card.cjs.entry.js +26 -4
- package/dist/cjs/ui-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ui-code-editor.cjs.entry.js +2 -2
- package/dist/cjs/ui-code-preview.cjs.entry.js +1 -1
- package/dist/cjs/ui-color-controller.cjs.entry.js +1 -1
- package/dist/cjs/ui-dialog-box.cjs.entry.js +1 -1
- package/dist/cjs/ui-dock-host.cjs.entry.js +3 -3
- package/dist/cjs/ui-drag-drop.cjs.entry.js +1 -1
- package/dist/cjs/ui-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/ui-fab-item.cjs.entry.js +1 -1
- package/dist/cjs/ui-fab.cjs.entry.js +2 -2
- package/dist/cjs/ui-library.cjs.entry.js +1 -1
- package/dist/cjs/ui-list-group_2.cjs.entry.js +9 -5
- package/dist/cjs/ui-list.cjs.entry.js +4 -4
- package/dist/cjs/ui-navigation-item.cjs.entry.js +3 -3
- package/dist/cjs/ui-otp-input.cjs.entry.js +2 -2
- package/dist/cjs/{ui-pagination_3.cjs.entry.js → ui-pagination_4.cjs.entry.js} +202 -0
- package/dist/cjs/ui-pattern-input.cjs.entry.js +5 -5
- package/dist/cjs/ui-popover.cjs.entry.js +1 -1
- package/dist/cjs/ui-progress.cjs.entry.js +101 -17
- package/dist/cjs/ui-resizable-panel.cjs.entry.js +1 -1
- package/dist/cjs/ui-smart-location-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/ui-smart-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ui-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/ui-step.cjs.entry.js +1 -1
- package/dist/cjs/ui-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ui-switch.cjs.entry.js +9 -9
- package/dist/cjs/ui-tabs.cjs.entry.js +1 -1
- package/dist/cjs/ui-timeline.cjs.entry.js +1 -1
- package/dist/cjs/ui-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/ui-tooltip.cjs.entry.js +4 -4
- package/dist/cjs/ui-transfer-list.cjs.entry.js +1 -1
- package/dist/cjs/ui-workspace-manager.cjs.entry.js +1 -1
- package/dist/collection/assets/js/demo-loader.js +0 -1
- package/dist/collection/assets/js/demos/accordion-demo.js +189 -0
- package/dist/collection/assets/js/demos/advanced-data-table-demo.js +213 -214
- package/dist/collection/assets/js/demos/aside-panel-demo.js +6 -6
- package/dist/collection/assets/js/demos/button-demo.js +60 -1
- package/dist/collection/assets/js/demos/callout-banner-demo.js +324 -34
- package/dist/collection/assets/js/demos/card-demo.js +108 -61
- package/dist/collection/assets/js/demos/context-menu-demo.js +433 -12
- package/dist/collection/assets/js/demos/dock-demo.js +80 -60
- package/dist/collection/assets/js/demos/documentation-demo.js +227 -22
- package/dist/collection/assets/js/demos/empty-state-demo.js +10 -10
- package/dist/collection/assets/js/demos/list-demo.js +41 -18
- package/dist/collection/assets/js/demos/masonry-demo.js +164 -0
- package/dist/collection/assets/js/demos/progress-demo.js +701 -8
- package/dist/collection/assets/js/demos/radio-demo.js +1 -1
- package/dist/collection/assets/js/demos/splitter-demo.js +137 -0
- package/dist/collection/assets/js/demos/tag-demo.js +48 -18
- package/dist/collection/assets/js/demos/timeline-demo.js +20 -7
- package/dist/collection/assets/js/demos/tooltip-demo.js +26 -26
- package/dist/collection/assets/js/demos/tree-demo.js +28 -10
- package/dist/collection/collection-manifest.json +1 -4
- package/dist/collection/components/accordion/accordion.css +301 -0
- package/dist/collection/components/accordion/accordion.js +40 -8
- package/dist/collection/components/advanced-data-table/advanced-data-table.css +19 -5
- package/dist/collection/components/anchor/anchor.css +0 -2
- package/dist/collection/components/aside-panel/aside-panel.css +1 -3
- package/dist/collection/components/aside-panel/aside-panel.js +5 -5
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/badge/badge.css +1 -0
- package/dist/collection/components/badge/badge.js +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/collection/components/button/button.css +131 -0
- package/dist/collection/components/button/button.js +128 -9
- package/dist/collection/components/card/card.css +83 -31
- package/dist/collection/components/card/card.js +46 -3
- package/dist/collection/components/checkbox/checkbox.css +8 -10
- package/dist/collection/components/checkbox/checkbox.js +2 -2
- package/dist/collection/components/code-editor/code-editor.js +1 -1
- package/dist/collection/components/code-preview/ui-code-preview.js +1 -1
- package/dist/collection/components/color-controller/color-controller.js +1 -1
- package/dist/collection/components/context-menu/context-menu.css +3 -3
- package/dist/collection/components/dialog-box/dialog-box.js +1 -1
- package/dist/collection/components/dialog-header/dialog-header.js +1 -1
- package/dist/collection/components/dock-host/ui-dock-host.js +3 -3
- package/dist/collection/components/drag-drop/drag-drop.js +1 -1
- package/dist/collection/components/empty-state/empty-state.js +1 -1
- package/dist/collection/components/fab/fab.js +2 -2
- package/dist/collection/components/fab-item/fab-item.js +1 -1
- package/dist/collection/components/horizontal-nav/horizontal-nav.js +2 -2
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input.js +4 -4
- package/dist/collection/components/layout-manager/layout-manager.js +1 -1
- package/dist/collection/components/layout-manager/lm-floating-window/lm-floating-window.js +1 -1
- package/dist/collection/components/layout-manager/lm-panel/lm-panel.js +1 -1
- package/dist/collection/components/layout-manager/lm-splitter/lm-splitter.js +1 -1
- package/dist/collection/components/layout-manager/lm-tabs/lm-tabs.js +1 -1
- package/dist/collection/components/library/category-section.js +1 -1
- package/dist/collection/components/library/library-card.js +1 -1
- package/dist/collection/components/library/library.js +1 -1
- package/dist/collection/components/list/list.js +4 -4
- package/dist/collection/components/list-item/list-item.css +24 -0
- package/dist/collection/components/list-item/list-item.js +35 -4
- package/dist/collection/components/loader/loader.css +1635 -0
- package/dist/collection/components/loader/loader.js +1120 -0
- package/dist/collection/components/my-step/my-step.js +1 -1
- package/dist/collection/components/nav-bar/nav-bar.js +6 -6
- package/dist/collection/components/otp-input/otp-input.js +2 -2
- package/dist/collection/components/pattern-input/pattern-input.js +5 -5
- package/dist/collection/components/progress/progress.css +150 -15
- package/dist/collection/components/progress/progress.js +180 -18
- package/dist/collection/components/radio/radio.css +3 -3
- package/dist/collection/components/radio/radio.js +1 -1
- package/dist/collection/components/resizable-panel/resizable-panel.js +1 -1
- package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.js +2 -2
- package/dist/collection/components/smart-stepper/smart-step.js +2 -2
- package/dist/collection/components/smart-stepper/smart-stepper.js +1 -1
- package/dist/collection/components/snackbar/snackbar.js +1 -1
- package/dist/collection/components/speed-dial/speed-dial.js +1 -1
- package/dist/collection/components/stack/stack.js +2 -2
- package/dist/collection/components/step/step.js +1 -1
- package/dist/collection/components/switch/switch.js +10 -10
- package/dist/collection/components/tag-group/tag-group.js +2 -2
- package/dist/collection/components/timeline-item/timeline-item.js +1 -1
- package/dist/collection/components/toolbar/toolbar.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +3 -3
- package/dist/collection/components/top-bar/top-bar.js +2 -2
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.css +19 -4
- package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.js +6 -6
- package/dist/collection/components/ui-navigation-bar/navigation-item.js +3 -3
- package/dist/collection/components.js +1 -0
- package/dist/components/avatar-group.js +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/button-toggle.js +1 -1
- package/dist/components/category-section2.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/context-menu.js +1 -1
- package/dist/components/dialog-header.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/icon.js +2 -2
- package/dist/components/input.js +1 -1
- package/dist/components/layout-manager.js +1 -1
- package/dist/components/library-card2.js +1 -1
- package/dist/components/list-group.js +1 -1
- package/dist/components/list-item.js +1 -1
- package/dist/components/lm-container2.js +1 -1
- package/dist/components/lm-floating-window2.js +1 -1
- package/dist/components/lm-panel2.js +1 -1
- package/dist/components/lm-splitter2.js +1 -1
- package/dist/components/lm-tabs2.js +1 -1
- package/dist/components/loader.js +1 -0
- package/dist/components/my-step.js +1 -1
- package/dist/components/nav-bar.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/range-slider.js +1 -1
- package/dist/components/rating.js +1 -1
- package/dist/components/resizable-panel.js +1 -1
- package/dist/components/skeleton-loader.js +1 -1
- package/dist/components/smart-step.js +1 -1
- package/dist/components/stack.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag-group.js +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/timeline-item.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/ui-accordion.js +1 -1
- package/dist/components/ui-advanced-data-table.js +1 -1
- package/dist/components/ui-anchor.js +1 -1
- package/dist/components/ui-aside-panel.js +1 -1
- package/dist/components/ui-breadcrumb-item.js +1 -1
- package/dist/components/ui-breadcrumb.js +1 -1
- package/dist/components/ui-button-toggle-group.js +1 -1
- package/dist/components/ui-callout-banner.js +1 -1
- package/dist/components/ui-card.js +1 -1
- package/dist/components/ui-carousel.js +1 -1
- package/dist/components/ui-code-editor.js +1 -1
- package/dist/components/ui-code-preview.js +1 -1
- package/dist/components/ui-color-controller.js +1 -1
- package/dist/components/ui-color-picker.js +1 -1
- package/dist/components/ui-command-palette.js +1 -1
- package/dist/components/ui-dialog-box.js +1 -1
- package/dist/components/ui-divider.js +1 -1
- package/dist/components/ui-dock-host.js +1 -1
- package/dist/components/ui-dock.js +1 -1
- package/dist/components/ui-drag-drop.js +1 -1
- package/dist/components/ui-empty-state.js +1 -1
- package/dist/components/ui-fab-item.js +1 -1
- package/dist/components/ui-fab.js +1 -1
- package/dist/components/ui-file-upload.js +1 -1
- package/dist/components/ui-horizontal-nav.js +1 -1
- package/dist/components/ui-knob.js +1 -1
- package/dist/components/ui-library.js +1 -1
- package/dist/components/ui-list.js +1 -1
- package/dist/components/{ui-input-pair.d.ts → ui-loader.d.ts} +4 -4
- package/dist/components/ui-loader.js +1 -0
- package/dist/components/ui-masonry.js +1 -1
- package/dist/components/ui-meter-group.js +1 -1
- package/dist/components/ui-navigation-bar.js +1 -1
- package/dist/components/ui-navigation-item.js +1 -1
- package/dist/components/ui-number-input.js +1 -1
- package/dist/components/ui-otp-input.js +1 -1
- package/dist/components/ui-panel.js +1 -1
- package/dist/components/ui-pattern-input.js +1 -1
- package/dist/components/ui-popover.js +1 -1
- package/dist/components/ui-progress.js +1 -1
- package/dist/components/ui-scroll-top.js +1 -1
- package/dist/components/ui-smart-context-menu.js +1 -1
- package/dist/components/ui-smart-location-dropdown.js +1 -1
- package/dist/components/ui-smart-stepper.js +1 -1
- package/dist/components/ui-snackbar.js +1 -1
- package/dist/components/ui-speed-dial.js +1 -1
- package/dist/components/ui-splitter.js +1 -1
- package/dist/components/ui-step.js +1 -1
- package/dist/components/ui-stepper.js +1 -1
- package/dist/components/ui-tabs.js +1 -1
- package/dist/components/ui-timeline.js +1 -1
- package/dist/components/ui-timer.js +1 -1
- package/dist/components/ui-toolbar.js +1 -1
- package/dist/components/ui-top-bar.js +1 -1
- package/dist/components/ui-transfer-list.js +1 -1
- package/dist/components/ui-tree.js +1 -1
- package/dist/components/ui-workspace-manager.js +1 -1
- package/dist/esm/category-section.entry.js +1 -1
- package/dist/esm/exploration-project-tailwind.js +1 -1
- package/dist/esm/layout-manager.entry.js +1 -1
- package/dist/esm/library-card.entry.js +1 -1
- package/dist/esm/lm-container_2.entry.js +1 -1
- package/dist/esm/lm-panel_3.entry.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/my-step.entry.js +1 -1
- package/dist/esm/nav-bar.entry.js +2 -2
- package/dist/esm/{security-D2WzX6vR.js → security-Dyu3Nplq.js} +88 -154
- package/dist/esm/smart-step.entry.js +2 -2
- package/dist/esm/timeline-item.entry.js +1 -1
- package/dist/esm/{ui-accordion_10.entry.js → ui-accordion_11.entry.js} +613 -27
- package/dist/esm/ui-advanced-data-table.entry.js +1 -1
- package/dist/esm/ui-anchor.entry.js +1 -1
- package/dist/esm/ui-aside-panel.entry.js +5 -5
- package/dist/esm/ui-avatar-group_3.entry.js +5 -5
- package/dist/esm/ui-callout-banner.entry.js +1 -1
- package/dist/esm/ui-card.entry.js +26 -4
- package/dist/esm/ui-checkbox.entry.js +2 -2
- package/dist/esm/ui-code-editor.entry.js +2 -2
- package/dist/esm/ui-code-preview.entry.js +1 -1
- package/dist/esm/ui-color-controller.entry.js +1 -1
- package/dist/esm/ui-dialog-box.entry.js +1 -1
- package/dist/esm/ui-dock-host.entry.js +3 -3
- package/dist/esm/ui-drag-drop.entry.js +1 -1
- package/dist/esm/ui-empty-state.entry.js +1 -1
- package/dist/esm/ui-fab-item.entry.js +1 -1
- package/dist/esm/ui-fab.entry.js +2 -2
- package/dist/esm/ui-library.entry.js +1 -1
- package/dist/esm/ui-list-group_2.entry.js +9 -5
- package/dist/esm/ui-list.entry.js +4 -4
- package/dist/esm/ui-navigation-item.entry.js +3 -3
- package/dist/esm/ui-otp-input.entry.js +2 -2
- package/dist/esm/{ui-pagination_3.entry.js → ui-pagination_4.entry.js} +202 -1
- package/dist/esm/ui-pattern-input.entry.js +5 -5
- package/dist/esm/ui-popover.entry.js +1 -1
- package/dist/esm/ui-progress.entry.js +101 -17
- package/dist/esm/ui-resizable-panel.entry.js +1 -1
- package/dist/esm/ui-smart-location-dropdown.entry.js +2 -2
- package/dist/esm/ui-smart-stepper.entry.js +1 -1
- package/dist/esm/ui-snackbar.entry.js +1 -1
- package/dist/esm/ui-step.entry.js +1 -1
- package/dist/esm/ui-stepper.entry.js +1 -1
- package/dist/esm/ui-switch.entry.js +9 -9
- package/dist/esm/ui-tabs.entry.js +1 -1
- package/dist/esm/ui-timeline.entry.js +1 -1
- package/dist/esm/ui-toolbar.entry.js +1 -1
- package/dist/esm/ui-tooltip.entry.js +4 -4
- package/dist/esm/ui-transfer-list.entry.js +1 -1
- package/dist/esm/ui-workspace-manager.entry.js +1 -1
- package/dist/exploration-project-tailwind/exploration-project-tailwind.esm.js +1 -1
- package/dist/exploration-project-tailwind/{p-c7e87fbb.entry.js → p-036d2a44.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-62352ef2.entry.js → p-05a436d3.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-a4f52a76.entry.js → p-16bdd162.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-85bf89fd.entry.js → p-20ecc116.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-2347d21b.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-3d381f75.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-e5322e59.entry.js → p-4288c158.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-2f1aebb3.entry.js → p-4417a9d8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-049744f9.entry.js → p-44742ddd.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-73d29a4a.entry.js → p-4aaa8e40.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-6fa9dc15.entry.js → p-4bef8bed.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-64e3a484.entry.js → p-4efd63ce.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c5ddc817.entry.js → p-54965530.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-5c835d90.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-4de419d5.entry.js → p-6b838549.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-c174a372.entry.js → p-6ddbee42.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-7515b1e3.entry.js → p-70bacda8.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-9fa70359.entry.js → p-71d95bb1.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-2d273118.entry.js → p-7889bfc4.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-0b004861.entry.js → p-790556f0.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-f5719913.entry.js → p-7ba2258a.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-81961fb1.entry.js → p-81ebba11.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-5e3e80ae.entry.js → p-8578b616.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-3d3d48fd.entry.js → p-8b57fe4e.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-ffb1754a.entry.js → p-97af03cc.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-f0830120.entry.js → p-98e91da5.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d2308a00.entry.js → p-9bd14f69.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-Dyu3Nplq.js +2 -0
- package/dist/exploration-project-tailwind/{p-ba21fed3.entry.js → p-a27f59d2.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-70d82d79.entry.js → p-a7b07cf4.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-5508874f.entry.js → p-bd89d060.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-9d0c8760.entry.js → p-c02284ea.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d419eaf0.entry.js → p-c1c8ac28.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-c63c522e.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c90722ec.entry.js → p-cbee2607.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-287dbf09.entry.js → p-d114a347.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-8d951aef.entry.js → p-d2e45c5e.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-77cc333a.entry.js → p-d59da767.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-46596a28.entry.js → p-d6ce9721.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-875be805.entry.js → p-dc92a343.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-4f6bba75.entry.js → p-e22317c1.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-d16c9635.entry.js → p-e76318c7.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-e8c6d395.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-c2ca71ac.entry.js → p-eab5ad36.entry.js} +1 -1
- package/dist/exploration-project-tailwind/p-f0bc5d7e.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f1beee72.entry.js +1 -0
- package/dist/exploration-project-tailwind/p-f543392f.entry.js +1 -0
- package/dist/exploration-project-tailwind/{p-46efdea3.entry.js → p-f61cfb7c.entry.js} +1 -1
- package/dist/exploration-project-tailwind/{p-77124686.entry.js → p-fb4aca69.entry.js} +1 -1
- package/dist/types/components/accordion/accordion.d.ts +10 -2
- package/dist/types/components/button/button.d.ts +9 -0
- package/dist/types/components/card/card.d.ts +4 -0
- package/dist/types/components/list-item/list-item.d.ts +1 -0
- package/dist/types/components/loader/loader.d.ts +145 -0
- package/dist/types/components/progress/progress.d.ts +34 -2
- package/dist/types/components.d.ts +509 -993
- package/dist/types/types/common.d.ts +1 -1
- package/dist/types/types/common.type.d.ts +1 -1
- package/package.json +8 -7
- package/dist/cjs/ui-checkbox-group.cjs.entry.js +0 -330
- package/dist/cjs/ui-image-button.cjs.entry.js +0 -67
- package/dist/cjs/ui-input-pair.cjs.entry.js +0 -44
- package/dist/cjs/ui-radio-group.cjs.entry.js +0 -205
- package/dist/cjs/ui-radio.cjs.entry.js +0 -206
- package/dist/collection/components/checkbox-group/checkbox-group.css +0 -223
- package/dist/collection/components/checkbox-group/checkbox-group.js +0 -1001
- package/dist/collection/components/checkbox-group/types.js +0 -1
- package/dist/collection/components/image-button/image-button.css +0 -154
- package/dist/collection/components/image-button/image-button.js +0 -310
- package/dist/collection/components/image-button/types.js +0 -1
- package/dist/collection/components/input-pair/input-pair.css +0 -72
- package/dist/collection/components/input-pair/input-pair.js +0 -309
- package/dist/collection/components/radio-group/radio-group.css +0 -202
- package/dist/collection/components/radio-group/radio-group.js +0 -903
- package/dist/collection/components/radio-group/types.js +0 -1
- package/dist/components/ui-checkbox-group.d.ts +0 -11
- package/dist/components/ui-checkbox-group.js +0 -1
- package/dist/components/ui-image-button.d.ts +0 -11
- package/dist/components/ui-image-button.js +0 -1
- package/dist/components/ui-input-pair.js +0 -1
- package/dist/components/ui-radio-group.d.ts +0 -11
- package/dist/components/ui-radio-group.js +0 -1
- package/dist/esm/ui-checkbox-group.entry.js +0 -328
- package/dist/esm/ui-image-button.entry.js +0 -65
- package/dist/esm/ui-input-pair.entry.js +0 -42
- package/dist/esm/ui-radio-group.entry.js +0 -203
- package/dist/esm/ui-radio.entry.js +0 -204
- package/dist/exploration-project-tailwind/p-01c7db7a.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-5ce0dbd8.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-6ab80ead.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-6e9694f2.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-7376ac95.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-77a21491.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-7f91d949.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-807c6555.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-D2WzX6vR.js +0 -2
- package/dist/exploration-project-tailwind/p-ab752761.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-ce1222a1.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-e90d5307.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-ecda1cc3.entry.js +0 -1
- package/dist/exploration-project-tailwind/p-f11e5cae.entry.js +0 -1
- package/dist/types/components/checkbox-group/checkbox-group.d.ts +0 -87
- package/dist/types/components/checkbox-group/types.d.ts +0 -8
- package/dist/types/components/image-button/image-button.d.ts +0 -31
- package/dist/types/components/image-button/types.d.ts +0 -1
- package/dist/types/components/input-pair/input-pair.d.ts +0 -28
- package/dist/types/components/radio-group/radio-group.d.ts +0 -74
- package/dist/types/components/radio-group/types.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as e,HTMLElement as t,createEvent as r,h as o,Host as a,transformTag as i}from"@stencil/core/internal/client";import{d as n,a as s}from"./badge.js";import{d}from"./checkbox.js";import{d as c}from"./icon.js";import{d as l}from"./input.js";const h=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.nodeClick=r(this,"nodeClick",7),this.nodeExpand=r(this,"nodeExpand",7),this.nodeSelect=r(this,"nodeSelect",7),this.nodeCheck=r(this,"nodeCheck",7),this.nodeDragStart=r(this,"nodeDragStart",7),this.nodeDrop=r(this,"nodeDrop",7),this.treeChange=r(this,"treeChange",7),this.nodeAction=r(this,"nodeAction",7),this.nodeEdit=r(this,"nodeEdit",7),this.nodeContextMenu=r(this,"nodeContextMenu",7),this.nodeLazyLoad=r(this,"nodeLazyLoad",7),this.nodeAdd=r(this,"nodeAdd",7),this.nodeRemove=r(this,"nodeRemove",7),this.nodeMove=r(this,"nodeMove",7)}get el(){return this}nodes=[];orientation="vertical";showLines=!0;showIcons=!0;expandable=!0;selectable=!1;multiSelect=!1;checkboxes=!1;checkboxSync=!0;enableDrag=!1;searchable=!1;animated=!0;indent=24;nodeHeight=40;expandAll=!1;collapseAll=!1;layout="tree";variant="default";size="md";theme="light";showGlow=!1;connectorWidth=1;connectorColor="";connectorOpacity=1;connectorShape="rounded";iconLibrary="lucide";inlineEdit=!1;contextMenuEnabled=!1;undoRedoEnabled=!1;lazyLoad=!1;virtualScroll=!1;virtualScrollHeight=400;showNodeActions=!0;showAvatars=!0;expandIconType="chevron";expandedIcon="";collapsedIcon="";expandIconSize="14px";expandIconColor="";internalNodes=[];selectedNodes=[];searchTerm="";draggedNode=null;focusedNodeId=null;editingNodeId=null;editingValue="";contextMenuVisible=!1;contextMenuNode=null;contextMenuX=0;contextMenuY=0;undoStack=[];redoStack=[];dragOverNodeId=null;dragPosition="inside";_selectionPathIds=new Set;nodeClick;nodeExpand;nodeSelect;nodeCheck;nodeDragStart;nodeDrop;treeChange;nodeAction;nodeEdit;nodeContextMenu;nodeLazyLoad;nodeAdd;nodeRemove;nodeMove;componentWillLoad(){this.parseNodes(),document.addEventListener("click",this.handleDocumentClick)}disconnectedCallback(){document.removeEventListener("click",this.handleDocumentClick)}parseNodes(){let e="string"==typeof this.nodes?JSON.parse(this.nodes):this.nodes;this.expandAll?e=this._expandAllRecursive(e):this.collapseAll&&(e=this._collapseAllRecursive(e)),this.internalNodes=e}async expandAllNodes(){this._saveUndo(),this.internalNodes=this._expandAllRecursive(this.internalNodes)}async collapseAllNodes(){this._saveUndo(),this.internalNodes=this._collapseAllRecursive(this.internalNodes)}async selectNode(e){this.internalNodes=this._selectById(e,this.internalNodes)}async getNodePath(e){return this._findPath(e,this.internalNodes)??[]}async getBreadcrumb(e){return(await this.getNodePath(e)).map((e=>{const t=this._findNode(e,this.internalNodes);return{id:e,label:t?.label??e+""}}))}async updateNode(e,t){this._saveUndo(),this.internalNodes=this._updateData(e,t,this.internalNodes)}async scrollToNode(e){const t=await this.getNodePath(e);t.length>1&&(this.internalNodes=this._expandPath(t.slice(0,-1),this.internalNodes)),setTimeout((()=>{const t=this.el.querySelector(`[data-node-id="${e}"]`);t?.scrollIntoView({behavior:"smooth",block:"nearest"})}),60)}async expandByPath(e){this.internalNodes=this._expandPath(e,this.internalNodes)}async selectByPath(e){e.length&&(this.internalNodes=this._expandPath(e.slice(0,-1),this.internalNodes),this.internalNodes=this._selectById(e[e.length-1],this.internalNodes))}async getSelectedNodes(){return this._dfs(this.internalNodes).filter((e=>this.selectedNodes.includes(e.id)))}async dfsTraversal(e,t="pre"){const r=e?[this._findNode(e,this.internalNodes)].filter((e=>null!==e)):this.internalNodes;return"post"===t?this._dfsPost(r):this._dfs(r)}async bfsTraversal(e){const t=e?[this._findNode(e,this.internalNodes)].filter((e=>null!==e)):this.internalNodes;return this._bfs(t)}async flattenTree(e=this.internalNodes){const t=[],r=(e,o,a,i)=>{e.forEach(((e,n)=>{const{children:s,...d}=e,c=[...i,e.id];t.push({...d,parentId:o,depth:a,index:n,path:c,hasChildren:!!s?.length}),e.expanded&&s&&r(s,e.id,a+1,c)}))};return r(e,null,0,[]),t}async addNode(e,t){this._saveUndo(),this.internalNodes=null===e?[...this.internalNodes,t]:this._addToParent(e,t,this.internalNodes),this.nodeAdd.emit({parentId:e,node:t})}async removeNode(e){this._saveUndo();const t=this._findNode(e,this.internalNodes);this.internalNodes=this._removeNode(e,this.internalNodes),t&&this.nodeRemove.emit({node:t})}async moveNode(e,t,r){this._saveUndo(),this.internalNodes=this._moveNode(e,t,r,this.internalNodes),this.nodeMove.emit({nodeId:e,targetId:t,position:r})}async undo(){if(!this.undoStack.length)return;const e=this.undoStack[this.undoStack.length-1];this.redoStack=[...this.redoStack,JSON.stringify(this.internalNodes)],this.undoStack=this.undoStack.slice(0,-1),this.internalNodes=JSON.parse(e)}async redo(){if(!this.redoStack.length)return;const e=this.redoStack[this.redoStack.length-1];this.undoStack=[...this.undoStack,JSON.stringify(this.internalNodes)],this.redoStack=this.redoStack.slice(0,-1),this.internalNodes=JSON.parse(e)}async diffTrees(e,t){const r=new Map(this._dfs(e).map((e=>[e.id,e]))),o=new Map(this._dfs(t).map((e=>[e.id,e]))),a=[],i=[],n=[];return o.forEach(((e,t)=>{r.has(t)?JSON.stringify(r.get(t))!==JSON.stringify(e)&&n.push({id:t,oldNode:r.get(t),newNode:e}):a.push(e)})),r.forEach(((e,t)=>{o.has(t)||i.push(e)})),{added:a,removed:i,modified:n}}async getState(){const e=[];return this._dfs(this.internalNodes).forEach((t=>{t.expanded&&e.push(t.id)})),{nodes:this.internalNodes,selectedNodes:this.selectedNodes,expandedNodes:e}}async restoreState(e){this._saveUndo(),this.internalNodes=e.nodes,this.selectedNodes=e.selectedNodes}_saveUndo(){this.undoRedoEnabled&&(this.undoStack=[...this.undoStack.slice(-49),JSON.stringify(this.internalNodes)],this.redoStack=[])}_expandAllRecursive(e){return e.map((e=>({...e,expanded:!0,children:e.children?this._expandAllRecursive(e.children):void 0})))}_collapseAllRecursive(e){return e.map((e=>({...e,expanded:!1,children:e.children?this._collapseAllRecursive(e.children):void 0})))}_findNode(e,t){for(const r of t){if(r.id===e)return r;if(r.children){const t=this._findNode(e,r.children);if(t)return t}}return null}_findPath(e,t,r=[]){for(const o of t){const t=[...r,o.id];if(o.id===e)return t;if(o.children){const r=this._findPath(e,o.children,t);if(r)return r}}return null}_expandPath(e,t){return t.map((t=>e.includes(t.id)?{...t,expanded:!0,children:t.children?this._expandPath(e,t.children):void 0}:t.children?{...t,children:this._expandPath(e,t.children)}:t))}_selectById(e,t){return t.map((t=>{if(t.id===e){const r=!t.selected;return this.selectedNodes=this.multiSelect?r?[...this.selectedNodes,e]:this.selectedNodes.filter((t=>t!==e)):r?[e]:[],this.nodeSelect.emit({node:t,selected:r}),this.treeChange.emit({nodes:this.internalNodes,selectedNodes:this.selectedNodes}),{...t,selected:r}}return!this.multiSelect&&t.selected&&t.id!==e?{...t,selected:!1,children:t.children?this._selectById(e,t.children):void 0}:t.children?{...t,children:this._selectById(e,t.children)}:t}))}_updateData(e,t,r){return r.map((r=>r.id===e?{...r,...t}:r.children?{...r,children:this._updateData(e,t,r.children)}:r))}_addToParent(e,t,r){return r.map((r=>r.id===e?{...r,expanded:!0,isLeaf:!1,children:[...r.children||[],t]}:r.children?{...r,children:this._addToParent(e,t,r.children)}:r))}_removeNode(e,t){return t.filter((t=>t.id!==e)).map((t=>({...t,children:t.children?this._removeNode(e,t.children):void 0})))}_moveNode(e,t,r,o){const a=this._findNode(e,o);if(!a||e===t)return o;const i=this._removeNode(e,o);return"inside"===r?this._addToParent(t,a,i):this._insertRelative(a,t,r,i)}_insertRelative(e,t,r,o){const a=[];for(const i of o)i.id===t?"before"===r?(a.push(e),a.push(i)):(a.push(i),a.push(e)):a.push(i.children?{...i,children:this._insertRelative(e,t,r,i.children)}:i);return a}_dfs(e,t=[]){for(const r of e)t.push(r),r.children&&this._dfs(r.children,t);return t}_dfsPost(e,t=[]){for(const r of e)r.children&&this._dfsPost(r.children,t),t.push(r);return t}_bfs(e){const t=[],r=[...e];for(;r.length;){const e=r.shift();if(!e)break;t.push(e),e.children&&r.push(...e.children)}return t}_syncChildren(e,t){return{...e,checked:t,indeterminate:!1,children:e.children?.map((e=>this._syncChildren(e,t)))}}_syncParent(e){if(!e.children?.length)return e;const t=e.children.map((e=>this._syncParent(e))),r=t.filter((e=>e.checked&&!e.indeterminate)).length,o=t.filter((e=>e.indeterminate)).length,a=t.length;return{...e,children:t,checked:r===a,indeterminate:r>0&&r<a||o>0}}_applyCheckbox(e,t,r){return r.map((r=>{if(r.id===e)return{...this._syncChildren(r,t),checked:t,indeterminate:!1};if(r.children){const o=this._applyCheckbox(e,t,r.children),a={...r,children:o};return this.checkboxSync?this._syncParent(a):a}return r}))}_getSelectionPathIds(){const e=new Set,t=(r,o)=>{for(const a of r){const r=[...o,a.id];this.selectedNodes.includes(a.id)&&r.forEach((t=>e.add(t))),a.children&&t(a.children,r)}};return t(this.internalNodes,[]),e}_getVisibleNodes(e=this.internalNodes,t=[]){for(const r of e)t.push(r),r.expanded&&r.children&&this._getVisibleNodes(r.children,t);return t}_findParent(e,t=this.internalNodes,r=null){for(const o of t){if(o.id===e)return r;if(o.children){const t=this._findParent(e,o.children,o);if(t)return t}}return null}_selectRange(e,t){const r=this._getVisibleNodes(),o=r.findIndex((t=>t.id===e)),a=r.findIndex((e=>e.id===t));if(-1===o||-1===a)return this.internalNodes;const i=r.slice(Math.min(o,a),Math.max(o,a)+1).map((e=>e.id));return this.selectedNodes=Array.from(new Set([...this.selectedNodes,...i])),this._applySelection(this.internalNodes)}_applySelection(e){return e.map((e=>({...e,selected:this.selectedNodes.includes(e.id),children:e.children?this._applySelection(e.children):void 0})))}_toggleNode(e,t=this.internalNodes){return t.map((t=>{if(t.id===e){const e=!t.expanded;return this.nodeExpand.emit({node:t,expanded:e}),e&&this.lazyLoad&&!1===t.isLeaf&&!t.children?.length?(this.nodeLazyLoad.emit({node:t}),{...t,expanded:e,loading:!0}):{...t,expanded:e}}return t.children?{...t,children:this._toggleNode(e,t.children)}:t}))}handleNodeClick(e,t,r){e.disabled||(this.expandable&&(!!e.children?.length||this.lazyLoad&&!1===e.isLeaf)&&(this.internalNodes=this._toggleNode(e.id)),this.selectable&&(this.multiSelect&&r?r.shiftKey&&this.focusedNodeId?this.internalNodes=this._selectRange(this.focusedNodeId,e.id):r.ctrlKey||r.metaKey?this.internalNodes=this._selectById(e.id,this.internalNodes):(this.selectedNodes=[e.id],this.internalNodes=this._applySelection(this.internalNodes)):this.internalNodes=this._selectById(e.id,this.internalNodes)),this.focusedNodeId=e.id,this.nodeClick.emit({node:e,path:t}))}handleCheckboxChange(e,t){const r=t.detail.checked;this.internalNodes=this.checkboxSync?this._applyCheckbox(e.id,r,this.internalNodes):this._updateData(e.id,{checked:r},this.internalNodes);const o=this._findNode(e.id,this.internalNodes);this.nodeCheck.emit({node:o??e,checked:r,indeterminate:o?.indeterminate??!1}),this.treeChange.emit({nodes:this.internalNodes,selectedNodes:this.selectedNodes})}handleDragStart(e,t){this.enableDrag&&!e.disabled&&(this.draggedNode=e,t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.id+""),this.nodeDragStart.emit(e))}handleDragOver(e,t){if(!this.enableDrag)return;t.preventDefault(),t.dataTransfer.dropEffect="move",this.dragOverNodeId=e.id;const r=t.currentTarget.getBoundingClientRect(),o=(t.clientY-r.top)/r.height;this.dragPosition=o<.25?"before":o>.75?"after":"inside"}handleDragLeave(e){this.el.contains(e.relatedTarget)||(this.dragOverNodeId=null)}handleDrop(e,t){if(!this.enableDrag||!this.draggedNode)return;t.preventDefault();const r=this.dragPosition,o=this.draggedNode;this.nodeDrop.emit({draggedNode:o,targetNode:e,position:r}),o.id!==e.id&&(this._saveUndo(),this.internalNodes=this._moveNode(o.id,e.id,r,this.internalNodes)),this.draggedNode=null,this.dragOverNodeId=null}handleSearchInput(e){this.searchTerm=e.detail.toLowerCase()}handleDocumentClick=()=>{this.contextMenuVisible&&(this.contextMenuVisible=!1)};handleContextMenu(e,t){this.contextMenuEnabled&&(t.preventDefault(),t.stopPropagation(),this.contextMenuNode=e,this.contextMenuX=t.clientX,this.contextMenuY=t.clientY,this.contextMenuVisible=!0,this.nodeContextMenu.emit({node:e,x:t.clientX,y:t.clientY}))}startEditing(e){this.editingNodeId=e.id,this.editingValue=e.label??"",setTimeout((()=>{const e=this.el.querySelector(".tree-edit-input");e&&(e.focus(),e.select())}),40)}cancelEditing(){this.editingNodeId=null,this.editingValue=""}commitEditing(e){const t=this.editingValue.trim();if(!t)return void this.cancelEditing();const r=e.label;this._saveUndo(),this.internalNodes=this._updateData(e.id,{label:t},this.internalNodes),this.nodeEdit.emit({node:e,newLabel:t,oldLabel:r??""}),this.cancelEditing()}handleKeyDown=e=>{const t=this._getVisibleNodes(),r=t.findIndex((e=>e.id===this.focusedNodeId));switch(e.key){case"ArrowDown":e.preventDefault(),-1===r&&t.length?this.focusedNodeId=t[0].id:r<t.length-1&&(this.focusedNodeId=t[r+1].id);break;case"ArrowUp":e.preventDefault(),r>0&&(this.focusedNodeId=t[r-1].id);break;case"ArrowRight":{e.preventDefault();const o=t[r];o?.children?.length&&!o.expanded?this.internalNodes=this._toggleNode(o.id):o?.expanded&&r<t.length-1&&(this.focusedNodeId=t[r+1].id);break}case"ArrowLeft":{e.preventDefault();const o=t[r];if(o?.expanded&&o.children?.length)this.internalNodes=this._toggleNode(o.id);else{const e=this._findParent(o?.id);e&&(this.focusedNodeId=e.id)}break}case"Enter":case" ":e.preventDefault(),t[r]&&this.handleNodeClick(t[r],[]);break;case"F2":if(this.inlineEdit&&null!==this.focusedNodeId){const e=this._findNode(this.focusedNodeId,this.internalNodes);e&&!e.disabled&&this.startEditing(e)}break;case"Escape":this.cancelEditing(),this.contextMenuVisible=!1;break;case"Home":e.preventDefault(),t.length&&(this.focusedNodeId=t[0].id);break;case"End":e.preventDefault(),t.length&&(this.focusedNodeId=t[t.length-1].id);break;case"z":case"Z":(e.ctrlKey||e.metaKey)&&this.undoRedoEnabled&&(e.preventDefault(),e.shiftKey?this.redo():this.undo())}};filterNodes(e){return this.searchTerm?e.filter((e=>{const t=(e.label??"").toLowerCase().includes(this.searchTerm),r=e.children&&this.filterNodes(e.children).length>0;return t||r})).map((e=>({...e,expanded:!0,children:e.children?this.filterNodes(e.children):void 0}))):e}renderLabel(e){if(!this.searchTerm||!e.toLowerCase().includes(this.searchTerm))return e;const t=e.toLowerCase().indexOf(this.searchTerm);return[e.substring(0,t),o("mark",{class:"tree-highlight"},e.substring(t,t+this.searchTerm.length)),e.substring(t+this.searchTerm.length)]}_renderExpandIcon(e,t){let r="",a={};const i=t.iconLibrary??this.iconLibrary;if("custom"===this.expandIconType)r=e?this.expandedIcon||"chevron-down":this.collapsedIcon||"chevron-right";else switch(this.expandIconType){case"plus-minus":r=e?"minus":"plus";break;case"arrow":r=e?"arrow-down":"arrow-right";break;case"caret":r=e?"caret-down":"caret-right";break;default:r="chevron-right",a={transform:`rotate(${e?"90deg":"0deg"})`,transition:"transform 0.2s ease"}}return this.expandIconColor&&(a.color=this.expandIconColor),o("div",{class:"tree-expand-icon",onClick:e=>{e.stopPropagation(),this.internalNodes=this._toggleNode(t.id)}},o("ui-icon",{name:r,library:i,size:this.expandIconSize,style:a}))}renderNode(e,t=0,r=[],a=!1,i=[],n=0,s=!1){const d=!!e.children?.length,c=d||this.lazyLoad&&!1===e.isLeaf,l=!!e.expanded,h=e.selected||this.selectedNodes.includes(e.id),p=this.editingNodeId===e.id,b=this.dragOverNodeId===e.id,g=[...r,e.id],u=t,x=this.connectorWidth||1.8,v=this._selectionPathIds||new Set,m=[];if(this.showLines&&"tree"===this.layout&&u>0){const t=[],r=[];for(let n=0;n<u;n++){const s=Math.max(.6,x-.3*n),d=n*this.indent+12,c=v.has(g[n+1]??""),l=e.connectorColor||this.connectorColor||"var(--tree-line-color-default)",h=this.connectorOpacity;if((n<u-1?!i[n+1]:!a)&&t.push(o("line",{x1:d,y1:"0",x2:d,y2:"100%",stroke:l,"stroke-width":s,"stroke-opacity":c?1:h,class:c?"path-highlight":"","vector-effect":"non-scaling-stroke"})),n===u-1){const e="square"===this.connectorShape?0:8,t=this.nodeHeight/2,a=(n+1)*this.indent;r.push(o("path",{d:e>0?`M ${d} 0 L ${d} ${t-e} Q ${d} ${t} ${d+e} ${t} L ${a} ${t}`:`M ${d} 0 L ${d} ${t} L ${a} ${t}`,fill:"none",stroke:l,"stroke-width":s,"stroke-opacity":c?1:h,"stroke-linecap":"round",class:c?"path-highlight":"","vector-effect":"non-scaling-stroke"}),o("circle",{cx:a,cy:t,r:"2.5",fill:l,opacity:c?1:.8}))}}m.push(o("div",{class:"tree-connector-harness-group",style:{"--tree-indent-full":u*this.indent+"px"}},o("div",{class:"tree-v-line-container"},o("svg",{class:"tree-connectors-svg",width:"100%",height:"100%",preserveAspectRatio:"none"},t)),o("div",{class:"tree-hook-container",style:{height:this.nodeHeight+"px"}},o("svg",{class:"tree-connectors-svg",width:"100%",height:"100%",viewBox:`0 0 ${u*this.indent} ${this.nodeHeight}`,preserveAspectRatio:"xMinYMin meet"},r))))}const f=e.icon??(this.showIcons?c?l?"folder-open":"folder":"file-text":null),y={role:"treeitem","aria-expanded":c?l+"":void 0,"aria-selected":h+"","aria-level":t+1+"","aria-disabled":e.disabled?"true":void 0,tabindex:this.focusedNodeId===e.id||null===this.focusedNodeId&&0===t&&0===n?"0":"-1"},k=o("div",{class:{"tree-node":!0,"tree-node-expanded":l,"tree-node-collapsed":!l,"tree-node-selected":h,"tree-node-disabled":!!e.disabled,"tree-node-leaf":!c,"tree-node-branch":c,"tree-node-focused":this.focusedNodeId===e.id,"tree-node-editing":p,"tree-node-loading":!!e.loading,"tree-node-drag-over":b,["tree-drop-"+this.dragPosition]:b,["tree-node-"+(e.color??"default")]:!0,["tree-node-"+this.size]:!0,"has-checkbox":this.checkboxes,"group-has-icons":s},key:e.id,"data-node-id":e.id,"data-depth":u,style:{"--depth":u+""}},"tree"===this.layout&&m,b&&"before"===this.dragPosition&&o("div",{class:"tree-drop-indicator tree-drop-before-line"}),o("div",{class:"tree-node-content",style:"tree"===this.layout?{paddingLeft:(u+1)*this.indent+"px",minHeight:this.nodeHeight+"px"}:{minHeight:this.nodeHeight+"px"},onClick:t=>!p&&this.handleNodeClick(e,g,t),onDblClick:()=>this.inlineEdit&&!e.disabled&&this.startEditing(e),onContextMenu:t=>this.handleContextMenu(e,t),draggable:this.enableDrag&&!e.disabled,onDragStart:t=>this.handleDragStart(e,t),onDragOver:t=>this.handleDragOver(e,t),onDragLeave:e=>this.handleDragLeave(e),onDrop:t=>this.handleDrop(e,t),...y},this.expandable&&c?this._renderExpandIcon(l,e):o("div",{class:"tree-expand-spacer"}),this.checkboxes&&o("div",{class:"tree-checkbox"},o("ui-checkbox",{checked:!!e.checked,disabled:!!e.disabled,indeterminate:!!e.indeterminate,onCheckboxChange:t=>this.handleCheckboxChange(e,t),size:"sm"})),this.showAvatars&&(e.avatar||e.avatarInitials)&&o("div",{class:"tree-node-avatar"},e.avatar?o("img",{src:e.avatar,alt:e.label}):o("span",{class:"tree-node-avatar-initials tree-node-avatar-"+(e.color??"primary")},e.avatarInitials)),(f||s)&&o("div",{class:"tree-node-icon"+(f?"":" tree-node-icon-spacer")},f&&!e.loading&&o("ui-icon",{name:f,library:e.iconLibrary??this.iconLibrary,size:"16px",style:{color:e.color?`var(--tree-${e.color})`:void 0}}),e.loading&&o("ui-icon",{name:"loader-2",library:"lucide",spin:!0,size:"16px"})),o("div",{class:"tree-node-text-group"},p?o("ui-input",{class:"tree-edit-input",type:"text",value:this.editingValue,onInputChange:e=>{this.editingValue=e.detail},onInputKeydown:t=>{"Enter"===t.detail.key?this.commitEditing(e):"Escape"===t.detail.key&&this.cancelEditing(),t.detail.stopPropagation()},onInputBlur:()=>this.commitEditing(e),autoFocus:!0,size:"sm",fullWidth:!0}):o("div",{class:"tree-node-label"},this.renderLabel(e.label??"")),e.description&&!p&&o("div",{class:"tree-node-description"},e.description)),e.tag&&o("div",{class:"tree-node-tag"},e.tag),e.badge&&o("div",{class:"tree-node-badge tree-node-badge-"+(e.color??"primary")},e.badge),void 0!==e.counter&&o("div",{class:"tree-node-counter"},e.counter),e.locked&&o("div",{class:"tree-node-lock",title:e.lockTooltip??"Locked"},o("ui-icon",{name:"lock",library:"fontawesome",size:"12px"})),this.showNodeActions&&(e.actions?.length??0)>0&&o("div",{class:"tree-node-actions"},e.actions.map((t=>o("ui-button",{variant:"ghost",size:"sm",class:"tree-action-btn"+(t.color?" tree-action-"+t.color:""),icon:t.icon,iconLibrary:t.library??this.iconLibrary,iconSize:"13px",ariaLabel:t.tooltip,disabled:!!t.disabled,onClick:r=>{r.stopPropagation(),this.nodeAction.emit({node:e,action:(t.id??"")+""})}}))))),b&&"after"===this.dragPosition&&o("div",{class:"tree-drop-indicator tree-drop-after-line"}),c&&l&&"tree"===this.layout&&o("div",{class:"tree-children"+(b&&"inside"===this.dragPosition?" tree-children-drop-target":"")},d&&e.children.map(((r,o)=>{const n=e.children.some((e=>e.icon||this.showIcons));return this.renderNode(r,t+1,g,o===e.children.length-1,[...i,a],o,n)}))));return"org-chart"===this.layout?o("div",{class:"tree-node-wrapper"},k,c&&l&&o("div",{class:"tree-children"},d&&e.children.map(((r,o)=>{const n=e.children.some((e=>e.icon||this.showIcons));return this.renderNode(r,t+1,g,o===e.children.length-1,[...i,a],o,n)})))):k}renderContextMenu(){if(!this.contextMenuEnabled||!this.contextMenuVisible||!this.contextMenuNode)return null;const e=this.contextMenuNode;return o("div",{class:"tree-context-menu",style:{position:"fixed",left:this.contextMenuX+"px",top:this.contextMenuY+"px"},onClick:e=>e.stopPropagation()},this.selectable&&o("div",{class:"tree-context-item",onClick:()=>{this.handleNodeClick(e,[]),this.contextMenuVisible=!1}},o("ui-icon",{name:"check",library:"fontawesome",size:"13px"})," Select"),this.expandable&&(e.children?.length??0)>0&&o("div",{class:"tree-context-item",onClick:()=>{this.internalNodes=this._toggleNode(e.id),this.contextMenuVisible=!1}},o("ui-icon",{name:e.expanded?"chevron-up":"chevron-down",library:"lucide",size:"13px"}),e.expanded?"Collapse":"Expand"),this.inlineEdit&&!e.disabled&&o("div",{class:"tree-context-item",onClick:()=>{this.startEditing(e),this.contextMenuVisible=!1}},o("ui-icon",{name:"pen",library:"lucide",size:"13px"})," Rename"),o("div",{class:"tree-context-separator"}),o("div",{class:"tree-context-item",onClick:()=>{this.expandAllNodes(),this.contextMenuVisible=!1}},"Expand All"),o("div",{class:"tree-context-item",onClick:()=>{this.collapseAllNodes(),this.contextMenuVisible=!1}},"Collapse All"),this.undoRedoEnabled&&[o("div",{class:"tree-context-separator"}),o("div",{class:"tree-context-item"+(this.undoStack.length?"":" disabled"),onClick:()=>{this.undo(),this.contextMenuVisible=!1}},"Undo"),o("div",{class:"tree-context-item tree-context-item-danger",onClick:()=>{this._saveUndo();const t=this._findNode(e.id,this.internalNodes);this.internalNodes=this._removeNode(e.id,this.internalNodes),t&&this.nodeRemove.emit({node:t}),this.contextMenuVisible=!1}},"Delete")])}render(){this._selectionPathIds=this._getSelectionPathIds();const e=this.searchable?this.filterNodes(this.internalNodes):this.internalNodes,t=e.some((e=>e.icon||this.showIcons));return o(a,{key:"dae18b9d9751a023555e848bb0b5aaebdd235770",class:{"tree-container":!0,["tree-orientation-"+this.orientation]:!0,["tree-layout-"+this.layout]:!0,["tree-variant-"+this.variant]:!0,["tree-theme-"+this.theme]:!0,"tree-animated":this.animated,"tree-show-lines":this.showLines,"tree-hide-lines":!this.showLines,"tree-selectable":this.selectable,"tree-glow":this.showGlow},style:{"--tree-indent":this.indent+"px","--tree-node-height":this.nodeHeight+"px"},onKeyDown:this.handleKeyDown,tabIndex:0},o("div",{key:"9b15d92f21722bcd345733cfa44206e3c83a2fa9",class:"tree-inner",role:"tree","aria-multiselectable":this.multiSelect?"true":"false"},this.searchable&&o("div",{key:"be71bda4e65cfcf704616ef2ae563630bffde2fa",class:"tree-search"},o("ui-icon",{key:"53d76e4229942408bf50ab0c72d3ce6d1811fbd2",name:"search",library:"fontawesome",size:"13px",class:"tree-search-icon"}),o("ui-input",{key:"b8edf92c3dda73600fd0a653739aa1206be64698",type:"text",placeholder:"Search tree...",value:this.searchTerm,onInputChange:e=>this.handleSearchInput(e),ariaLabel:"Search tree",size:"sm",fullWidth:!0}),this.searchTerm&&o("ui-button",{key:"66800256ed8fc8139dab93bd920d25a2a6219cdf",variant:"ghost",size:"sm",class:"tree-search-clear",icon:"times",iconLibrary:"fontawesome",iconSize:"11px",ariaLabel:"Clear search",onClick:()=>{this.searchTerm=""}})),this.undoRedoEnabled&&o("div",{key:"a391e1e016e422fbdd2781a09daf176bf8fe58df",class:"tree-toolbar"},o("ui-button",{key:"73de8c1affc18220f94912f546c7e992d81850ed",variant:"ghost",size:"sm",icon:"undo",iconLibrary:"fontawesome",iconSize:"13px",label:"Undo",ariaLabel:"Undo (Ctrl+Z)",disabled:!this.undoStack.length,onClick:()=>this.undo()}),o("ui-button",{key:"0aebc8cafd66fb273eb7e39b682a29a24f73bfcc",variant:"ghost",size:"sm",icon:"redo",iconLibrary:"fontawesome",iconSize:"13px",label:"Redo",ariaLabel:"Redo (Ctrl+Shift+Z)",disabled:!this.redoStack.length,onClick:()=>this.redo()}),o("div",{key:"5bf0083e6ccd220d480a29f0fce27e220dba4231",class:"tree-toolbar-sep"}),o("ui-button",{key:"4aee1b4dfa0e8a99770e2ea55670cf17a3491bfb",variant:"ghost",size:"sm",icon:"expand",iconLibrary:"fontawesome",iconSize:"13px",ariaLabel:"Expand all",onClick:()=>this.expandAllNodes()}),o("ui-button",{key:"31c8f23735e0aabb53bee60f63f823f0facbf4c2",variant:"ghost",size:"sm",icon:"compress",iconLibrary:"fontawesome",iconSize:"13px",ariaLabel:"Collapse all",onClick:()=>this.collapseAllNodes()})),o("div",{key:"c635c7a4205a04d0fbb29bbbf666d82e3799e76e",class:"tree-content",style:this.virtualScroll?{height:this.virtualScrollHeight+"px",overflowY:"auto"}:{},onScroll:()=>this.virtualScroll&&this.el.forceUpdate()},this.virtualScroll&&"tree"===this.layout?(()=>{const t=this._getVisibleNodes(e),r=this.el.shadowRoot?.querySelector(".tree-content")?.scrollTop||0,a=Math.max(0,Math.floor(r/this.nodeHeight)-2);return o("div",{class:"tree-virtual-scroller",style:{height:t.length*this.nodeHeight+"px",position:"relative"}},o("div",{class:"tree-virtual-offset",style:{transform:`translateY(${a*this.nodeHeight}px)`}},t.slice(a,Math.min(t.length,a+Math.ceil(this.virtualScrollHeight/this.nodeHeight)+4)).map((e=>{const t=this._findPath(e.id,this.internalNodes)||[];return this.renderNode(e,t.length-1,t.slice(0,-1),!1,[],0,!1)}))))})():e.length>0?e.map(((r,o)=>this.renderNode(r,0,[],o===e.length-1,[],o,t))):o("div",{class:"tree-empty"},o("ui-icon",{name:"folder-open",library:"fontawesome",size:"40px"}),o("p",null,this.searchTerm?"No results found":"No items")))),this.renderContextMenu())}static get watchers(){return{nodes:[{parseNodes:0}],expandAll:[{parseNodes:0}],collapseAll:[{parseNodes:0}]}}static get style(){return'@charset "UTF-8";.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;width:100%;--tree-bg:var(--bg-primary, #ffffff);--tree-text:var(--text-primary, #1f2937);--tree-text-muted:var(--color-primary, #6b7280);--tree-border-color:var(--border-default, #e5e7eb);--tree-primary:var(--color-success, #3dcd58);--tree-primary-50:rgba(var(--color-success-rgb, 61, 205, 88), 0.08);--tree-primary-100:rgba(var(--color-success-rgb, 61, 205, 88), 0.15);--tree-primary-200:rgba(var(--color-success-rgb, 61, 205, 88), 0.25);--tree-muted:var(--color-primary, #9ca3af);--tree-node-hover-bg:rgba(0, 0, 0, 0.02);--tree-line-color-default:rgba(0, 0, 0, 0.15);--tree-error:var(--color-danger, #ef4444);--tree-info:var(--color-primary, #10b981);--tree-success:var(--color-success, #10b981);--tree-warning:var(--color-warning, #f59e0b)}.tree-container{width:100%;background:var(--tree-bg);border-radius:8px;overflow:visible;}.tree-container.tree-theme-dark{--tree-bg:var(--bg-primary, #1f2937);--tree-text:var(--bg-primary, #f3f4f6);--tree-text-muted:var(--color-primary, #9ca3af);--tree-border-color:var(--border-default, #374151);--tree-node-hover-bg:rgba(255, 255, 255, 0.05);--tree-line-color-default:rgba(255, 255, 255, 0.1);background:var(--tree-bg);color:var(--tree-text)}.tree-container.tree-variant-bordered{border:1px solid var(--tree-border-color)}.tree-container.tree-variant-rounded{border-radius:12px}.tree-container.tree-variant-rounded .tree-node{border-radius:8px}.tree-container.tree-variant-minimal{background:transparent}.tree-container.tree-variant-minimal .tree-node{background:transparent}.tree-container.tree-variant-minimal .tree-node:hover{background:rgba(0, 0, 0, 0.02)}.tree-container.tree-variant-glass{--tree-glass-bg:rgba(255, 255, 255, 0.1);--tree-glass-border:rgba(255, 255, 255, 0.2);--tree-glass-text:var(--text-primary, #111827);background:var(--tree-glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--tree-glass-border);box-shadow:0 8px 32px 0 rgba(31, 38, 135, 0.1)}.tree-container.tree-variant-glass .tree-node{color:var(--tree-glass-text)}.tree-container.tree-variant-glass .tree-node:hover{background:rgba(255, 255, 255, 0.2)}.tree-container.tree-variant-glass .tree-node.tree-node-selected{background:var(--tree-primary-200)}.tree-container.tree-variant-glass .tree-search input{background:rgba(255, 255, 255, 0.2);border-color:rgba(255, 255, 255, 0.3);color:var(--tree-text)}.tree-container.tree-variant-glass .tree-search input::placeholder{color:var(--tree-text-muted)}.tree-container.tree-variant-glass .tree-line{background:var(--tree-line-color-default)}.tree-container.tree-glow{box-shadow:0 0 20px var(--tree-primary-200);border-color:var(--tree-primary-100)}.tree-theme-dark.tree-variant-glass{--tree-glass-bg:rgba(17, 24, 39, 0.4);--tree-glass-border:rgba(255, 255, 255, 0.1);--tree-glass-text:var(--tree-text);background:var(--tree-glass-bg);border:1px solid var(--tree-glass-border)}.tree-theme-dark.tree-variant-glass .tree-node{color:var(--tree-glass-text)}.tree-theme-dark.tree-variant-glass .tree-node:hover{background:rgba(255, 255, 255, 0.1)}.tree-theme-dark.tree-variant-glass .tree-search input{background:rgba(0, 0, 0, 0.2);border-color:var(--tree-glass-border)}.tree-theme-dark.tree-variant-glass .tree-line{background:var(--tree-glass-border)}.tree-search{position:relative;padding:16px;border-bottom:1px solid var(--tree-border-color)}.tree-search ui-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);color:var(--tree-muted);font-size:14px}.tree-search input{width:100%;padding:10px 12px 10px 36px;border:1px solid var(--tree-border-color);background:transparent;color:inherit;border-radius:6px;font-size:14px;outline:none;transition:all 0.2s}.tree-search input:focus{border-color:var(--tree-primary);box-shadow:0 0 0 3px var(--tree-primary-50)}.tree-search input::placeholder{color:var(--tree-muted)}.tree-theme-dark .tree-search input:focus{border-color:var(--tree-primary)}.tree-inner{position:relative}.tree-node{position:relative;display:block;width:100%}.tree-connector-harness-group{position:absolute;left:24px;top:0;width:var(--tree-indent-full, 100%);height:100%;pointer-events:none;z-index:1}.tree-v-line-container{position:absolute;left:0;top:0;width:100%;height:100%}.tree-hook-container{position:absolute;left:0;top:0;width:100%}.tree-connectors-svg{display:block;width:100%;height:100%;overflow:visible}.tree-connectors-svg path,.tree-connectors-svg line{transition:stroke 0.3s ease, stroke-width 0.3s ease, stroke-opacity 0.4s ease}.tree-connectors-svg .path-highlight{--line-color-final:var(--tree-primary) !important;stroke:var(--line-color-final) !important;stroke-opacity:1 !important;filter:drop-shadow(0 0 5px var(--tree-primary-400))}.tree-theme-dark .tree-line{--default-line-color:rgba(255, 255, 255, 0.1)}.tree-expand-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;color:var(--tree-text-muted);font-size:11px;cursor:pointer;z-index:2}.tree-expand-icon:hover{color:var(--tree-primary)}.tree-expand-icon{margin-right:8px}.tree-animated .tree-node-expanded .tree-expand-icon ui-icon{transform:rotate(0deg)}.tree-animated .tree-node-collapsed .tree-expand-icon ui-icon{transform:rotate(-90deg)}.tree-expand-spacer{width:24px;height:24px;flex-shrink:0;margin-right:8px}.tree-checkbox{display:flex;align-items:center;justify-content:center}.tree-checkbox input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--tree-primary)}.tree-node-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;font-size:16px;color:var(--tree-primary)}.tree-node-icon.tree-node-icon-spacer{visibility:hidden}.tree-node-icon.tree-node-icon-default{color:var(--tree-text-muted)}.tree-theme-dark .tree-node-icon.tree-node-icon-default{color:var(--tree-text-muted)}.tree-node-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0;position:relative;z-index:2;cursor:pointer;transition:background-color 0.2s ease}.tree-node-content:hover{background-color:var(--tree-node-hover-bg)}.tree-node-content .tree-node-text-group{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.tree-node-content .tree-node-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:var(--tree-text)}.tree-theme-dark .tree-node-label{color:var(--tree-text)}.tree-node-spinner{display:flex;align-items:center;color:var(--tree-primary)}.tree-node-actions{display:flex;align-items:center;gap:4px;opacity:0;transition:opacity 0.2s;pointer-events:none;margin-left:8px}.tree-node:hover .tree-node-actions{opacity:1;pointer-events:auto}.tree-action-btn{background:transparent;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tree-text-muted);transition:all 0.2s cubic-bezier(0.4, 0, 0.2, 1);padding:0;margin-left:2px}.tree-action-btn:hover{background:var(--tree-primary-100);color:var(--tree-primary);transform:scale(1.1);box-shadow:0 0 10px var(--tree-primary-50)}.tree-action-btn:active{transform:scale(0.95)}.tree-theme-dark .tree-action-btn{color:var(--tree-text-muted)}.tree-theme-dark .tree-action-btn:hover{background:var(--tree-node-hover-bg)}.tree-node-badge{padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;flex-shrink:0}.tree-node-badge.tree-node-badge-default{background:var(--tree-border-color);color:var(--tree-text-muted)}.tree-node-badge.tree-node-badge-primary{background:var(--tree-primary-100);color:var(--tree-primary)}.tree-node-badge.tree-node-badge-secondary{background:var(--tree-border-color);color:var(--tree-text-muted)}.tree-node-badge.tree-node-badge-success{background:var(--tree-primary-100);color:var(--tree-success)}.tree-node-badge.tree-node-badge-danger{background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.1);color:var(--tree-error)}.tree-node-badge.tree-node-badge-warning{background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.1);color:var(--color-warning, #f59e0b)}.tree-node-badge.tree-node-badge-info{background:rgba(var(--color-primary-rgb, 59, 130, 246), 0.1);color:var(--tree-info)}.tree-node-counter{display:flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;background:var(--tree-primary);color:var(--tree-bg);border-radius:11px;font-size:11px;font-weight:600;flex-shrink:0}.tree-children{overflow:hidden}.tree-animated .tree-children{animation:slideDown 0.2s ease-out}@keyframes slideDown{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.tree-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--tree-text-muted)}.tree-empty i{font-size:48px;margin-bottom:12px;opacity:0.5}.tree-empty p{margin:0;font-size:14px}.tree-orientation-horizontal .tree-content{overflow-x:auto}.tree-orientation-horizontal .tree-node-wrapper{display:flex}.tree-orientation-horizontal .tree-children{display:flex;flex-direction:column;margin-left:24px;padding-left:24px;border-left:1px solid var(--tree-border-color)}.tree-orientation-horizontal .tree-node{padding-left:0}.tree-layout-org-chart .tree-content{display:flex;justify-content:center;padding:60px 40px;overflow:auto;min-height:400px}.tree-layout-org-chart .tree-node-wrapper{display:flex;flex-direction:column;align-items:center;position:relative;padding:20px 0 0 0;transition:all 0.3s ease}.tree-layout-org-chart .tree-node-wrapper::before,.tree-layout-org-chart .tree-node-wrapper::after{content:"";position:absolute;top:0;right:50%;width:50%;height:20px;border-top:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1))}.tree-layout-org-chart .tree-node-wrapper::after{right:auto;left:50%;border-left:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1))}.tree-layout-org-chart{}.tree-layout-org-chart .tree-content>.tree-node-wrapper::before,.tree-layout-org-chart .tree-content>.tree-node-wrapper::after{display:none !important}.tree-layout-org-chart .tree-content>.tree-node-wrapper{padding-top:0}.tree-layout-org-chart{}.tree-layout-org-chart .tree-node-wrapper:first-child::before{border:0 none}.tree-layout-org-chart .tree-node-wrapper:last-child::after{border:0 none}.tree-layout-org-chart .tree-node-wrapper:first-child:not(:only-child)::after{border-radius:12px 0 0 0}.tree-layout-org-chart .tree-node-wrapper:last-child:not(:only-child)::before{border-right:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1));border-radius:0 12px 0 0}.tree-layout-org-chart{}.tree-layout-org-chart .tree-node-wrapper:only-child::after{border-radius:0;border-left:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1))}.tree-layout-org-chart .tree-node-wrapper:only-child::before{display:none}.tree-layout-org-chart{}.tree-layout-org-chart .tree-node-branch>.tree-node::after{content:"";position:absolute;bottom:-20px;left:50%;width:1px;height:20px;background:var(--tree-line-color-default)}.tree-layout-org-chart .tree-node{border:1px solid var(--tree-border-color);background:var(--tree-bg);box-shadow:0 4px 12px var(--tree-primary-50);padding:12px 24px;min-width:160px;max-width:300px;justify-content:center;margin:0 15px;z-index:2;transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);border-radius:10px}.tree-layout-org-chart .tree-node:hover{border-color:var(--tree-primary);box-shadow:0 12px 24px var(--tree-primary-100);transform:translateY(-4px)}.tree-layout-org-chart .tree-node.tree-node-selected{border-color:var(--tree-primary);background:var(--tree-primary-50)}.tree-layout-org-chart .tree-children{display:flex;flex-direction:row;justify-content:center;position:relative;padding-top:20px}.tree-layout-org-chart{}.tree-layout-org-chart.tree-theme-dark .tree-node{background:var(--tree-bg);border-color:var(--tree-border-color);box-shadow:0 4px 12px rgba(0, 0, 0, 0.2)}.tree-layout-org-chart.tree-theme-dark .tree-node-wrapper::before,.tree-layout-org-chart.tree-theme-dark .tree-node-wrapper::after{border-color:var(--tree-line-color-default)}.tree-layout-org-chart.tree-theme-dark .tree-node-branch>.tree-node::after{background:var(--tree-line-color-default)}.tree-hide-lines .tree-lines,.tree-hide-lines .tree-node-wrapper::before,.tree-hide-lines .tree-node-wrapper::after,.tree-hide-lines .tree-line-vertical::after,.tree-hide-lines .tree-node::after{display:none !important}.tree-variant-modern-green{--tree-bg:var(--bg-secondary, #0f172a);--tree-text:var(--bg-primary, #f8fafc);--tree-text-muted:var(--color-primary, #94a3b8);--tree-primary:var(--color-success, #10b981);--tree-line-color-default:var(--color-success, #10b981);background:var(--tree-bg);color:var(--tree-text);border:1px solid rgba(var(--color-success-rgb, 16, 185, 129), 0.2);box-shadow:0 4px 20px rgba(0, 0, 0, 0.4)}.tree-variant-modern-green .tree-node{color:var(--tree-text-muted);font-weight:500;letter-spacing:0.02em}.tree-variant-modern-green .tree-node:hover{background:var(--tree-primary-50);color:var(--tree-primary)}.tree-variant-modern-green .tree-node.tree-node-selected{background:var(--tree-primary-100);color:var(--tree-primary);border-left:2px solid var(--tree-primary)}.tree-variant-modern-green .tree-line{--default-line-color:var(--tree-primary);--line-width:2px;opacity:0.6}.tree-variant-modern-green .tree-line-curved{border-bottom-left-radius:14px}.tree-variant-modern-green .tree-search input{background:rgba(0, 0, 0, 0.3);border-color:var(--tree-primary-100);color:var(--tree-text)}.tree-variant-modern-green .tree-search input:focus{border-color:var(--tree-primary);box-shadow:0 0 0 3px var(--tree-primary-100)}.tree-variant-modern-green .tree-node-icon{color:var(--tree-primary)}.tree-variant-modern-green .tree-expand-icon{color:var(--tree-primary)}.tree-variant-modern-green .tree-expand-icon:hover{color:var(--tree-primary)}.tree-node-selected{border-top:0 none !important}.tree-node-selected::before,.tree-node-selected::after{border-top:0 none !important}.tree-node[draggable=true]{cursor:move}.tree-node:active{opacity:0.6}.tree-drop-indicator{height:2px;background:var(--tree-primary);border-radius:2px;margin:0 8px;box-shadow:0 0 6px var(--tree-primary-200);animation:pulseIndicator 0.5s ease infinite alternate}@keyframes pulseIndicator{from{opacity:0.7}to{opacity:1}}.tree-node.tree-drop-inside>.tree-node-content{outline:2px dashed var(--tree-primary);outline-offset:-2px;border-radius:6px;background:var(--tree-primary-50)}.tree-children-drop-target{background:var(--tree-primary-50);border-radius:6px}.tree-edit-input{flex:1;min-width:80px;padding:2px 8px;border:1.5px solid var(--tree-primary);border-radius:4px;font-size:13px;font-family:inherit;color:var(--tree-text);background:var(--tree-bg);outline:none;box-shadow:0 0 0 3px var(--tree-primary-50)}.tree-edit-input:focus{box-shadow:0 0 0 3px var(--tree-primary-100)}.tree-theme-dark .tree-edit-input{background:rgba(255, 255, 255, 0.05);color:var(--tree-text)}.tree-search-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);color:var(--tree-muted);pointer-events:none}.tree-search-clear{position:absolute;right:26px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--tree-text-muted);padding:4px;display:flex;align-items:center;border-radius:4px;transition:color 0.2s, background 0.2s}.tree-search-clear:hover{color:var(--tree-error);background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.08)}.tree-toolbar{display:flex;align-items:center;gap:4px;padding:6px 12px;border-bottom:1px solid var(--tree-border-color);background:rgba(0, 0, 0, 0.01)}.tree-theme-dark .tree-toolbar{background:rgba(255, 255, 255, 0.02)}.tree-toolbar-sep{width:1px;height:18px;background:var(--tree-border-color);margin:0 4px}.tree-toolbar-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--tree-border-color);border-radius:6px;background:var(--tree-bg);color:var(--tree-text-muted);font-size:12px;cursor:pointer;transition:all 0.15s;white-space:nowrap}.tree-toolbar-btn:hover:not(:disabled){background:var(--tree-primary-50);color:var(--tree-primary);border-color:var(--tree-primary)}.tree-toolbar-btn:disabled{opacity:0.4;cursor:not-allowed}.tree-context-menu{min-width:170px;background:var(--tree-bg);border:1px solid var(--tree-border-color);border-radius:10px;box-shadow:0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);padding:6px;z-index:9999;animation:contextMenuIn 0.12s cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}@keyframes contextMenuIn{from{opacity:0;transform:scale(0.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.tree-context-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:6px;font-size:13px;color:var(--tree-text);cursor:pointer;transition:background 0.12s}.tree-context-item:hover{background:var(--tree-primary-50);color:var(--tree-primary)}.tree-context-item.disabled{opacity:0.4;pointer-events:none}.tree-context-item.tree-context-item-danger{color:var(--tree-error)}.tree-context-item.tree-context-item-danger:hover{background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.08);color:var(--tree-error)}.tree-context-separator{height:1px;background:var(--tree-border-color);margin:4px 6px}.tree-theme-dark .tree-context-menu{background:var(--bg-primary, #1f2937);border-color:var(--border-default, #374151);box-shadow:0 8px 32px rgba(0, 0, 0, 0.4)}.tree-node-avatar{width:24px;height:24px;flex-shrink:0;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center}.tree-node-avatar img{width:100%;height:100%;object-fit:cover}.tree-node-avatar-initials{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;flex-shrink:0}.tree-node-avatar-initials.tree-node-avatar-primary{background:var(--tree-primary-100);color:var(--tree-primary)}.tree-node-avatar-initials.tree-node-avatar-success{background:rgba(var(--color-success-rgb, 16, 185, 129), 0.1);color:var(--tree-success)}.tree-node-avatar-initials.tree-node-avatar-danger{background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.1);color:var(--tree-error)}.tree-node-avatar-initials.tree-node-avatar-warning{background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.1);color:var(--tree-warning)}.tree-node-avatar-initials.tree-node-avatar-info{background:rgba(var(--color-primary-rgb, 59, 130, 246), 0.1);color:var(--tree-info)}.tree-node-avatar-initials.tree-node-avatar-default{background:var(--tree-border-color);color:var(--tree-text-muted)}.tree-node-description{font-size:11px;color:var(--tree-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node-tag{padding:1px 7px;border-radius:12px;font-size:10px;font-weight:600;background:var(--tree-border-color);color:var(--tree-text-muted);white-space:nowrap;flex-shrink:0}.tree-node-lock{display:flex;align-items:center;color:var(--tree-text-muted);flex-shrink:0;margin-left:4px}.tree-action-danger:hover{color:var(--tree-error) !important;background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.1) !important}.tree-action-warning:hover{color:var(--tree-warning) !important;background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.1) !important}.tree-action-success:hover{color:var(--tree-success) !important;background:rgba(var(--color-success-rgb, 16, 185, 129), 0.1) !important}.tree-highlight{background:rgba(245, 200, 10, 0.35);color:inherit;border-radius:2px;padding:0 1px}.tree-variant-compact .tree-node-content{min-height:28px !important;font-size:12px}.tree-variant-compact .tree-expand-icon,.tree-variant-compact .tree-expand-spacer{width:18px;height:18px}.tree-variant-compact .tree-node-icon{width:16px;height:16px;font-size:13px}.tree-variant-directory{--tree-primary:var(--color-warning, #f59e0b)}.tree-variant-directory .tree-node-branch>.tree-node-content .tree-node-icon ui-icon{color:var(--color-warning, #f59e0b)}.tree-variant-directory .tree-node-leaf>.tree-node-content .tree-node-icon ui-icon{color:var(--color-primary, #60a5fa)}.tree-variant-directory .tree-node-selected>.tree-node-content{background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.08)}.tree-variant-cards .tree-node-content{border:1px solid var(--tree-border-color);border-radius:10px;margin:3px 8px 3px 0;padding-right:12px !important;background:var(--tree-bg);box-shadow:0 1px 3px rgba(0, 0, 0, 0.04);transition:box-shadow 0.2s, border-color 0.2s}.tree-variant-cards .tree-node-content:hover{border-color:var(--tree-primary);box-shadow:0 4px 12px var(--tree-primary-50)}.tree-variant-cards .tree-node-selected>.tree-node-content{border-color:var(--tree-primary);background:var(--tree-primary-50);box-shadow:0 4px 12px var(--tree-primary-100)}.tree-variant-cards.tree-theme-dark .tree-node-content{background:rgba(255, 255, 255, 0.04);border-color:var(--tree-border-color);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.tree-variant-git-graph{--tree-git-lane-color:rgba(100, 116, 139, 0.45);--tree-git-commit-color:var(--tree-primary);--tree-git-commit-leaf-color:rgba(148, 163, 184, 0.85)}.tree-variant-git-graph .tree-connector-harness-group{display:none}.tree-variant-git-graph .tree-node-content{position:relative}.tree-variant-git-graph .tree-node-content::before,.tree-variant-git-graph .tree-node-content::after{content:"";position:absolute;pointer-events:none;z-index:1}.tree-variant-git-graph{}.tree-variant-git-graph .tree-node-content::before{left:calc(var(--depth, 0) * var(--tree-indent, 24px) + 12px);top:0;bottom:0;width:1.5px;background:var(--tree-git-lane-color)}.tree-variant-git-graph{}.tree-variant-git-graph .tree-node-content::after{left:calc(var(--depth, 0) * var(--tree-indent, 24px) + 8px);top:50%;width:9px;height:9px;transform:translateY(-50%);border-radius:50%;background:var(--tree-git-commit-color);box-shadow:0 0 0 2px var(--tree-bg)}.tree-variant-git-graph .tree-node-leaf>.tree-node-content::after{background:var(--tree-git-commit-leaf-color)}.tree-variant-git-graph .tree-node-selected>.tree-node-content::after{width:10px;height:10px;background:var(--tree-primary);box-shadow:0 0 0 2px var(--tree-bg), 0 0 0 6px var(--tree-primary-50)}.tree-variant-git-graph .tree-node:hover>.tree-node-content::before{background:color-mix(in srgb, var(--tree-primary) 35%, var(--tree-git-lane-color))}.tree-theme-dark.tree-variant-git-graph{--tree-git-lane-color:rgba(148, 163, 184, 0.35);--tree-git-commit-leaf-color:rgba(203, 213, 225, 0.85)}.tree-node-focused>.tree-node-content{outline:2px solid var(--tree-primary);outline-offset:-1px;border-radius:4px}.tree-content::-webkit-scrollbar{width:4px}.tree-content::-webkit-scrollbar-track{background:transparent}.tree-content::-webkit-scrollbar-thumb{background:var(--tree-border-color);border-radius:4px}.tree-theme-dark.tree-layout-org-chart .tree-node{background:var(--bg-primary, #1f2937);border-color:var(--border-default, #374151);color:var(--tree-text)}.tree-theme-dark.tree-layout-org-chart .tree-node:hover{border-color:var(--tree-primary)}.tree-node-sm>.tree-node-content{min-height:32px !important;font-size:12px}.tree-node-md>.tree-node-content{min-height:40px !important;font-size:14px}.tree-node-lg>.tree-node-content{min-height:48px !important;font-size:16px}.tree-node-primary>.tree-node-content .tree-node-label{color:var(--tree-primary)}.tree-node-success>.tree-node-content .tree-node-label{color:var(--tree-success)}.tree-node-danger>.tree-node-content .tree-node-label{color:var(--tree-error)}.tree-node-warning>.tree-node-content .tree-node-label{color:var(--tree-warning)}.tree-node-info>.tree-node-content .tree-node-label{color:var(--tree-info)}.tree-animated .tree-children{animation:treeSlideIn 0.18s cubic-bezier(0.4, 0, 0.2, 1)}@keyframes treeSlideIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}'}},[513,"ui-tree",{nodes:[1],orientation:[1],showLines:[4,"show-lines"],showIcons:[4,"show-icons"],expandable:[4],selectable:[4],multiSelect:[4,"multi-select"],checkboxes:[4],checkboxSync:[4,"checkbox-sync"],enableDrag:[4,"enable-drag"],searchable:[4],animated:[4],indent:[2],nodeHeight:[2,"node-height"],expandAll:[4,"expand-all"],collapseAll:[4,"collapse-all"],layout:[1],variant:[1],size:[1],theme:[1],showGlow:[4,"show-glow"],connectorWidth:[2,"connector-width"],connectorColor:[1,"connector-color"],connectorOpacity:[2,"connector-opacity"],connectorShape:[1,"connector-shape"],iconLibrary:[1,"icon-library"],inlineEdit:[4,"inline-edit"],contextMenuEnabled:[4,"context-menu-enabled"],undoRedoEnabled:[4,"undo-redo-enabled"],lazyLoad:[4,"lazy-load"],virtualScroll:[4,"virtual-scroll"],virtualScrollHeight:[2,"virtual-scroll-height"],showNodeActions:[4,"show-node-actions"],showAvatars:[4,"show-avatars"],expandIconType:[1,"expand-icon-type"],expandedIcon:[1,"expanded-icon"],collapsedIcon:[1,"collapsed-icon"],expandIconSize:[1,"expand-icon-size"],expandIconColor:[1,"expand-icon-color"],internalNodes:[32],selectedNodes:[32],searchTerm:[32],draggedNode:[32],focusedNodeId:[32],editingNodeId:[32],editingValue:[32],contextMenuVisible:[32],contextMenuNode:[32],contextMenuX:[32],contextMenuY:[32],undoStack:[32],redoStack:[32],dragOverNodeId:[32],dragPosition:[32],expandAllNodes:[64],collapseAllNodes:[64],selectNode:[64],getNodePath:[64],getBreadcrumb:[64],updateNode:[64],scrollToNode:[64],expandByPath:[64],selectByPath:[64],getSelectedNodes:[64],dfsTraversal:[64],bfsTraversal:[64],flattenTree:[64],addNode:[64],removeNode:[64],moveNode:[64],undo:[64],redo:[64],diffTrees:[64],getState:[64],restoreState:[64]},void 0,{nodes:[{parseNodes:0}],expandAll:[{parseNodes:0}],collapseAll:[{parseNodes:0}]}]),p=h,b=function(){"undefined"!=typeof customElements&&["ui-tree","ui-badge","ui-button","ui-checkbox","ui-icon","ui-input"].forEach((e=>{switch(e){case"ui-tree":customElements.get(i(e))||customElements.define(i(e),h);break;case"ui-badge":customElements.get(i(e))||s();break;case"ui-button":customElements.get(i(e))||n();break;case"ui-checkbox":customElements.get(i(e))||d();break;case"ui-icon":customElements.get(i(e))||c();break;case"ui-input":customElements.get(i(e))||l()}}))};export{p as UiTree,b as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as e,HTMLElement as t,createEvent as r,h as o,Host as a,transformTag as i}from"@stencil/core/internal/client";import{d as n,a as s}from"./badge.js";import{d}from"./checkbox.js";import{d as c}from"./icon.js";import{d as l}from"./input.js";import{d as h}from"./loader.js";const p=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.nodeClick=r(this,"nodeClick",7),this.nodeExpand=r(this,"nodeExpand",7),this.nodeSelect=r(this,"nodeSelect",7),this.nodeCheck=r(this,"nodeCheck",7),this.nodeDragStart=r(this,"nodeDragStart",7),this.nodeDrop=r(this,"nodeDrop",7),this.treeChange=r(this,"treeChange",7),this.nodeAction=r(this,"nodeAction",7),this.nodeEdit=r(this,"nodeEdit",7),this.nodeContextMenu=r(this,"nodeContextMenu",7),this.nodeLazyLoad=r(this,"nodeLazyLoad",7),this.nodeAdd=r(this,"nodeAdd",7),this.nodeRemove=r(this,"nodeRemove",7),this.nodeMove=r(this,"nodeMove",7)}get el(){return this}nodes=[];orientation="vertical";showLines=!0;showIcons=!0;expandable=!0;selectable=!1;multiSelect=!1;checkboxes=!1;checkboxSync=!0;enableDrag=!1;searchable=!1;animated=!0;indent=24;nodeHeight=40;expandAll=!1;collapseAll=!1;layout="tree";variant="default";size="md";theme="light";showGlow=!1;connectorWidth=1;connectorColor="";connectorOpacity=1;connectorShape="rounded";iconLibrary="lucide";inlineEdit=!1;contextMenuEnabled=!1;undoRedoEnabled=!1;lazyLoad=!1;virtualScroll=!1;virtualScrollHeight=400;showNodeActions=!0;showAvatars=!0;expandIconType="chevron";expandedIcon="";collapsedIcon="";expandIconSize="14px";expandIconColor="";internalNodes=[];selectedNodes=[];searchTerm="";draggedNode=null;focusedNodeId=null;editingNodeId=null;editingValue="";contextMenuVisible=!1;contextMenuNode=null;contextMenuX=0;contextMenuY=0;undoStack=[];redoStack=[];dragOverNodeId=null;dragPosition="inside";_selectionPathIds=new Set;nodeClick;nodeExpand;nodeSelect;nodeCheck;nodeDragStart;nodeDrop;treeChange;nodeAction;nodeEdit;nodeContextMenu;nodeLazyLoad;nodeAdd;nodeRemove;nodeMove;componentWillLoad(){this.parseNodes(),document.addEventListener("click",this.handleDocumentClick)}disconnectedCallback(){document.removeEventListener("click",this.handleDocumentClick)}parseNodes(){let e="string"==typeof this.nodes?JSON.parse(this.nodes):this.nodes;this.expandAll?e=this._expandAllRecursive(e):this.collapseAll&&(e=this._collapseAllRecursive(e)),this.internalNodes=e}async expandAllNodes(){this._saveUndo(),this.internalNodes=this._expandAllRecursive(this.internalNodes)}async collapseAllNodes(){this._saveUndo(),this.internalNodes=this._collapseAllRecursive(this.internalNodes)}async selectNode(e){this.internalNodes=this._selectById(e,this.internalNodes)}async getNodePath(e){return this._findPath(e,this.internalNodes)??[]}async getBreadcrumb(e){return(await this.getNodePath(e)).map((e=>{const t=this._findNode(e,this.internalNodes);return{id:e,label:t?.label??e+""}}))}async updateNode(e,t){this._saveUndo(),this.internalNodes=this._updateData(e,t,this.internalNodes)}async scrollToNode(e){const t=await this.getNodePath(e);t.length>1&&(this.internalNodes=this._expandPath(t.slice(0,-1),this.internalNodes)),setTimeout((()=>{const t=this.el.querySelector(`[data-node-id="${e}"]`);t?.scrollIntoView({behavior:"smooth",block:"nearest"})}),60)}async expandByPath(e){this.internalNodes=this._expandPath(e,this.internalNodes)}async selectByPath(e){e.length&&(this.internalNodes=this._expandPath(e.slice(0,-1),this.internalNodes),this.internalNodes=this._selectById(e[e.length-1],this.internalNodes))}async getSelectedNodes(){return this._dfs(this.internalNodes).filter((e=>this.selectedNodes.includes(e.id)))}async dfsTraversal(e,t="pre"){const r=e?[this._findNode(e,this.internalNodes)].filter((e=>null!==e)):this.internalNodes;return"post"===t?this._dfsPost(r):this._dfs(r)}async bfsTraversal(e){const t=e?[this._findNode(e,this.internalNodes)].filter((e=>null!==e)):this.internalNodes;return this._bfs(t)}async flattenTree(e=this.internalNodes){const t=[],r=(e,o,a,i)=>{e.forEach(((e,n)=>{const{children:s,...d}=e,c=[...i,e.id];t.push({...d,parentId:o,depth:a,index:n,path:c,hasChildren:!!s?.length}),e.expanded&&s&&r(s,e.id,a+1,c)}))};return r(e,null,0,[]),t}async addNode(e,t){this._saveUndo(),this.internalNodes=null===e?[...this.internalNodes,t]:this._addToParent(e,t,this.internalNodes),this.nodeAdd.emit({parentId:e,node:t})}async removeNode(e){this._saveUndo();const t=this._findNode(e,this.internalNodes);this.internalNodes=this._removeNode(e,this.internalNodes),t&&this.nodeRemove.emit({node:t})}async moveNode(e,t,r){this._saveUndo(),this.internalNodes=this._moveNode(e,t,r,this.internalNodes),this.nodeMove.emit({nodeId:e,targetId:t,position:r})}async undo(){if(!this.undoStack.length)return;const e=this.undoStack[this.undoStack.length-1];this.redoStack=[...this.redoStack,JSON.stringify(this.internalNodes)],this.undoStack=this.undoStack.slice(0,-1),this.internalNodes=JSON.parse(e)}async redo(){if(!this.redoStack.length)return;const e=this.redoStack[this.redoStack.length-1];this.undoStack=[...this.undoStack,JSON.stringify(this.internalNodes)],this.redoStack=this.redoStack.slice(0,-1),this.internalNodes=JSON.parse(e)}async diffTrees(e,t){const r=new Map(this._dfs(e).map((e=>[e.id,e]))),o=new Map(this._dfs(t).map((e=>[e.id,e]))),a=[],i=[],n=[];return o.forEach(((e,t)=>{r.has(t)?JSON.stringify(r.get(t))!==JSON.stringify(e)&&n.push({id:t,oldNode:r.get(t),newNode:e}):a.push(e)})),r.forEach(((e,t)=>{o.has(t)||i.push(e)})),{added:a,removed:i,modified:n}}async getState(){const e=[];return this._dfs(this.internalNodes).forEach((t=>{t.expanded&&e.push(t.id)})),{nodes:this.internalNodes,selectedNodes:this.selectedNodes,expandedNodes:e}}async restoreState(e){this._saveUndo(),this.internalNodes=e.nodes,this.selectedNodes=e.selectedNodes}_saveUndo(){this.undoRedoEnabled&&(this.undoStack=[...this.undoStack.slice(-49),JSON.stringify(this.internalNodes)],this.redoStack=[])}_expandAllRecursive(e){return e.map((e=>({...e,expanded:!0,children:e.children?this._expandAllRecursive(e.children):void 0})))}_collapseAllRecursive(e){return e.map((e=>({...e,expanded:!1,children:e.children?this._collapseAllRecursive(e.children):void 0})))}_findNode(e,t){for(const r of t){if(r.id===e)return r;if(r.children){const t=this._findNode(e,r.children);if(t)return t}}return null}_findPath(e,t,r=[]){for(const o of t){const t=[...r,o.id];if(o.id===e)return t;if(o.children){const r=this._findPath(e,o.children,t);if(r)return r}}return null}_expandPath(e,t){return t.map((t=>e.includes(t.id)?{...t,expanded:!0,children:t.children?this._expandPath(e,t.children):void 0}:t.children?{...t,children:this._expandPath(e,t.children)}:t))}_selectById(e,t){return t.map((t=>{if(t.id===e){const r=!t.selected;return this.selectedNodes=this.multiSelect?r?[...this.selectedNodes,e]:this.selectedNodes.filter((t=>t!==e)):r?[e]:[],this.nodeSelect.emit({node:t,selected:r}),this.treeChange.emit({nodes:this.internalNodes,selectedNodes:this.selectedNodes}),{...t,selected:r}}return!this.multiSelect&&t.selected&&t.id!==e?{...t,selected:!1,children:t.children?this._selectById(e,t.children):void 0}:t.children?{...t,children:this._selectById(e,t.children)}:t}))}_updateData(e,t,r){return r.map((r=>r.id===e?{...r,...t}:r.children?{...r,children:this._updateData(e,t,r.children)}:r))}_addToParent(e,t,r){return r.map((r=>r.id===e?{...r,expanded:!0,isLeaf:!1,children:[...r.children||[],t]}:r.children?{...r,children:this._addToParent(e,t,r.children)}:r))}_removeNode(e,t){return t.filter((t=>t.id!==e)).map((t=>({...t,children:t.children?this._removeNode(e,t.children):void 0})))}_moveNode(e,t,r,o){const a=this._findNode(e,o);if(!a||e===t)return o;const i=this._removeNode(e,o);return"inside"===r?this._addToParent(t,a,i):this._insertRelative(a,t,r,i)}_insertRelative(e,t,r,o){const a=[];for(const i of o)i.id===t?"before"===r?(a.push(e),a.push(i)):(a.push(i),a.push(e)):a.push(i.children?{...i,children:this._insertRelative(e,t,r,i.children)}:i);return a}_dfs(e,t=[]){for(const r of e)t.push(r),r.children&&this._dfs(r.children,t);return t}_dfsPost(e,t=[]){for(const r of e)r.children&&this._dfsPost(r.children,t),t.push(r);return t}_bfs(e){const t=[],r=[...e];for(;r.length;){const e=r.shift();if(!e)break;t.push(e),e.children&&r.push(...e.children)}return t}_syncChildren(e,t){return{...e,checked:t,indeterminate:!1,children:e.children?.map((e=>this._syncChildren(e,t)))}}_syncParent(e){if(!e.children?.length)return e;const t=e.children.map((e=>this._syncParent(e))),r=t.filter((e=>e.checked&&!e.indeterminate)).length,o=t.filter((e=>e.indeterminate)).length,a=t.length;return{...e,children:t,checked:r===a,indeterminate:r>0&&r<a||o>0}}_applyCheckbox(e,t,r){return r.map((r=>{if(r.id===e)return{...this._syncChildren(r,t),checked:t,indeterminate:!1};if(r.children){const o=this._applyCheckbox(e,t,r.children),a={...r,children:o};return this.checkboxSync?this._syncParent(a):a}return r}))}_getSelectionPathIds(){const e=new Set,t=(r,o)=>{for(const a of r){const r=[...o,a.id];this.selectedNodes.includes(a.id)&&r.forEach((t=>e.add(t))),a.children&&t(a.children,r)}};return t(this.internalNodes,[]),e}_getVisibleNodes(e=this.internalNodes,t=[]){for(const r of e)t.push(r),r.expanded&&r.children&&this._getVisibleNodes(r.children,t);return t}_findParent(e,t=this.internalNodes,r=null){for(const o of t){if(o.id===e)return r;if(o.children){const t=this._findParent(e,o.children,o);if(t)return t}}return null}_selectRange(e,t){const r=this._getVisibleNodes(),o=r.findIndex((t=>t.id===e)),a=r.findIndex((e=>e.id===t));if(-1===o||-1===a)return this.internalNodes;const i=r.slice(Math.min(o,a),Math.max(o,a)+1).map((e=>e.id));return this.selectedNodes=Array.from(new Set([...this.selectedNodes,...i])),this._applySelection(this.internalNodes)}_applySelection(e){return e.map((e=>({...e,selected:this.selectedNodes.includes(e.id),children:e.children?this._applySelection(e.children):void 0})))}_toggleNode(e,t=this.internalNodes){return t.map((t=>{if(t.id===e){const e=!t.expanded;return this.nodeExpand.emit({node:t,expanded:e}),e&&this.lazyLoad&&!1===t.isLeaf&&!t.children?.length?(this.nodeLazyLoad.emit({node:t}),{...t,expanded:e,loading:!0}):{...t,expanded:e}}return t.children?{...t,children:this._toggleNode(e,t.children)}:t}))}handleNodeClick(e,t,r){e.disabled||(this.expandable&&(!!e.children?.length||this.lazyLoad&&!1===e.isLeaf)&&(this.internalNodes=this._toggleNode(e.id)),this.selectable&&(this.multiSelect&&r?r.shiftKey&&this.focusedNodeId?this.internalNodes=this._selectRange(this.focusedNodeId,e.id):r.ctrlKey||r.metaKey?this.internalNodes=this._selectById(e.id,this.internalNodes):(this.selectedNodes=[e.id],this.internalNodes=this._applySelection(this.internalNodes)):this.internalNodes=this._selectById(e.id,this.internalNodes)),this.focusedNodeId=e.id,this.nodeClick.emit({node:e,path:t}))}handleCheckboxChange(e,t){const r=t.detail.checked;this.internalNodes=this.checkboxSync?this._applyCheckbox(e.id,r,this.internalNodes):this._updateData(e.id,{checked:r},this.internalNodes);const o=this._findNode(e.id,this.internalNodes);this.nodeCheck.emit({node:o??e,checked:r,indeterminate:o?.indeterminate??!1}),this.treeChange.emit({nodes:this.internalNodes,selectedNodes:this.selectedNodes})}handleDragStart(e,t){this.enableDrag&&!e.disabled&&(this.draggedNode=e,t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.id+""),this.nodeDragStart.emit(e))}handleDragOver(e,t){if(!this.enableDrag)return;t.preventDefault(),t.dataTransfer.dropEffect="move",this.dragOverNodeId=e.id;const r=t.currentTarget.getBoundingClientRect(),o=(t.clientY-r.top)/r.height;this.dragPosition=o<.25?"before":o>.75?"after":"inside"}handleDragLeave(e){this.el.contains(e.relatedTarget)||(this.dragOverNodeId=null)}handleDrop(e,t){if(!this.enableDrag||!this.draggedNode)return;t.preventDefault();const r=this.dragPosition,o=this.draggedNode;this.nodeDrop.emit({draggedNode:o,targetNode:e,position:r}),o.id!==e.id&&(this._saveUndo(),this.internalNodes=this._moveNode(o.id,e.id,r,this.internalNodes)),this.draggedNode=null,this.dragOverNodeId=null}handleSearchInput(e){this.searchTerm=e.detail.toLowerCase()}handleDocumentClick=()=>{this.contextMenuVisible&&(this.contextMenuVisible=!1)};handleContextMenu(e,t){this.contextMenuEnabled&&(t.preventDefault(),t.stopPropagation(),this.contextMenuNode=e,this.contextMenuX=t.clientX,this.contextMenuY=t.clientY,this.contextMenuVisible=!0,this.nodeContextMenu.emit({node:e,x:t.clientX,y:t.clientY}))}startEditing(e){this.editingNodeId=e.id,this.editingValue=e.label??"",setTimeout((()=>{const e=this.el.querySelector(".tree-edit-input");e&&(e.focus(),e.select())}),40)}cancelEditing(){this.editingNodeId=null,this.editingValue=""}commitEditing(e){const t=this.editingValue.trim();if(!t)return void this.cancelEditing();const r=e.label;this._saveUndo(),this.internalNodes=this._updateData(e.id,{label:t},this.internalNodes),this.nodeEdit.emit({node:e,newLabel:t,oldLabel:r??""}),this.cancelEditing()}handleKeyDown=e=>{const t=this._getVisibleNodes(),r=t.findIndex((e=>e.id===this.focusedNodeId));switch(e.key){case"ArrowDown":e.preventDefault(),-1===r&&t.length?this.focusedNodeId=t[0].id:r<t.length-1&&(this.focusedNodeId=t[r+1].id);break;case"ArrowUp":e.preventDefault(),r>0&&(this.focusedNodeId=t[r-1].id);break;case"ArrowRight":{e.preventDefault();const o=t[r];o?.children?.length&&!o.expanded?this.internalNodes=this._toggleNode(o.id):o?.expanded&&r<t.length-1&&(this.focusedNodeId=t[r+1].id);break}case"ArrowLeft":{e.preventDefault();const o=t[r];if(o?.expanded&&o.children?.length)this.internalNodes=this._toggleNode(o.id);else{const e=this._findParent(o?.id);e&&(this.focusedNodeId=e.id)}break}case"Enter":case" ":e.preventDefault(),t[r]&&this.handleNodeClick(t[r],[]);break;case"F2":if(this.inlineEdit&&null!==this.focusedNodeId){const e=this._findNode(this.focusedNodeId,this.internalNodes);e&&!e.disabled&&this.startEditing(e)}break;case"Escape":this.cancelEditing(),this.contextMenuVisible=!1;break;case"Home":e.preventDefault(),t.length&&(this.focusedNodeId=t[0].id);break;case"End":e.preventDefault(),t.length&&(this.focusedNodeId=t[t.length-1].id);break;case"z":case"Z":(e.ctrlKey||e.metaKey)&&this.undoRedoEnabled&&(e.preventDefault(),e.shiftKey?this.redo():this.undo())}};filterNodes(e){return this.searchTerm?e.filter((e=>{const t=(e.label??"").toLowerCase().includes(this.searchTerm),r=e.children&&this.filterNodes(e.children).length>0;return t||r})).map((e=>({...e,expanded:!0,children:e.children?this.filterNodes(e.children):void 0}))):e}renderLabel(e){if(!this.searchTerm||!e.toLowerCase().includes(this.searchTerm))return e;const t=e.toLowerCase().indexOf(this.searchTerm);return[e.substring(0,t),o("mark",{class:"tree-highlight"},e.substring(t,t+this.searchTerm.length)),e.substring(t+this.searchTerm.length)]}_renderExpandIcon(e,t){let r="",a={};const i=t.iconLibrary??this.iconLibrary;if("custom"===this.expandIconType)r=e?this.expandedIcon||"chevron-down":this.collapsedIcon||"chevron-right";else switch(this.expandIconType){case"plus-minus":r=e?"minus":"plus";break;case"arrow":r=e?"arrow-down":"arrow-right";break;case"caret":r=e?"caret-down":"caret-right";break;default:r="chevron-right",a={transform:`rotate(${e?"90deg":"0deg"})`,transition:"transform 0.2s ease"}}return this.expandIconColor&&(a.color=this.expandIconColor),o("div",{class:"tree-expand-icon",onClick:e=>{e.stopPropagation(),this.internalNodes=this._toggleNode(t.id)}},o("ui-icon",{name:r,library:i,size:this.expandIconSize,style:a}))}renderNode(e,t=0,r=[],a=!1,i=[],n=0,s=!1){const d=!!e.children?.length,c=d||this.lazyLoad&&!1===e.isLeaf,l=!!e.expanded,h=e.selected||this.selectedNodes.includes(e.id),p=this.editingNodeId===e.id,b=this.dragOverNodeId===e.id,g=[...r,e.id],u=t,x=this.connectorWidth||1.8,v=this._selectionPathIds||new Set,m=[];if(this.showLines&&"tree"===this.layout&&u>0){const t=[],r=[];for(let n=0;n<u;n++){const s=Math.max(.6,x-.3*n),d=n*this.indent+12,c=v.has(g[n+1]??""),l=e.connectorColor||this.connectorColor||"var(--tree-line-color-default)",h=this.connectorOpacity;if((n<u-1?!i[n+1]:!a)&&t.push(o("line",{x1:d,y1:"0",x2:d,y2:"100%",stroke:l,"stroke-width":s,"stroke-opacity":c?1:h,class:c?"path-highlight":"","vector-effect":"non-scaling-stroke"})),n===u-1){const e="square"===this.connectorShape?0:8,t=this.nodeHeight/2,a=(n+1)*this.indent;r.push(o("path",{d:e>0?`M ${d} 0 L ${d} ${t-e} Q ${d} ${t} ${d+e} ${t} L ${a} ${t}`:`M ${d} 0 L ${d} ${t} L ${a} ${t}`,fill:"none",stroke:l,"stroke-width":s,"stroke-opacity":c?1:h,"stroke-linecap":"round",class:c?"path-highlight":"","vector-effect":"non-scaling-stroke"}),o("circle",{cx:a,cy:t,r:"2.5",fill:l,opacity:c?1:.8}))}}m.push(o("div",{class:"tree-connector-harness-group",style:{"--tree-indent-full":u*this.indent+"px"}},o("div",{class:"tree-v-line-container"},o("svg",{class:"tree-connectors-svg",width:"100%",height:"100%",preserveAspectRatio:"none"},t)),o("div",{class:"tree-hook-container",style:{height:this.nodeHeight+"px"}},o("svg",{class:"tree-connectors-svg",width:"100%",height:"100%",viewBox:`0 0 ${u*this.indent} ${this.nodeHeight}`,preserveAspectRatio:"xMinYMin meet"},r))))}const f=e.icon??(this.showIcons?c?l?"folder-open":"folder":"file-text":null),y={role:"treeitem","aria-expanded":c?l+"":void 0,"aria-selected":h+"","aria-level":t+1+"","aria-disabled":e.disabled?"true":void 0,tabindex:this.focusedNodeId===e.id||null===this.focusedNodeId&&0===t&&0===n?"0":"-1"},k=o("div",{class:{"tree-node":!0,"tree-node-expanded":l,"tree-node-collapsed":!l,"tree-node-selected":h,"tree-node-disabled":!!e.disabled,"tree-node-leaf":!c,"tree-node-branch":c,"tree-node-focused":this.focusedNodeId===e.id,"tree-node-editing":p,"tree-node-loading":!!e.loading,"tree-node-drag-over":b,["tree-drop-"+this.dragPosition]:b,["tree-node-"+(e.color??"default")]:!0,["tree-node-"+this.size]:!0,"has-checkbox":this.checkboxes,"group-has-icons":s},key:e.id,"data-node-id":e.id,"data-depth":u,style:{"--depth":u+""}},"tree"===this.layout&&m,b&&"before"===this.dragPosition&&o("div",{class:"tree-drop-indicator tree-drop-before-line"}),o("div",{class:"tree-node-content",style:"tree"===this.layout?{paddingLeft:(u+1)*this.indent+"px",minHeight:this.nodeHeight+"px"}:{minHeight:this.nodeHeight+"px"},onClick:t=>!p&&this.handleNodeClick(e,g,t),onDblClick:()=>this.inlineEdit&&!e.disabled&&this.startEditing(e),onContextMenu:t=>this.handleContextMenu(e,t),draggable:this.enableDrag&&!e.disabled,onDragStart:t=>this.handleDragStart(e,t),onDragOver:t=>this.handleDragOver(e,t),onDragLeave:e=>this.handleDragLeave(e),onDrop:t=>this.handleDrop(e,t),...y},this.expandable&&c?this._renderExpandIcon(l,e):o("div",{class:"tree-expand-spacer"}),this.checkboxes&&o("div",{class:"tree-checkbox"},o("ui-checkbox",{checked:!!e.checked,disabled:!!e.disabled,indeterminate:!!e.indeterminate,onCheckboxChange:t=>this.handleCheckboxChange(e,t),size:"sm"})),this.showAvatars&&(e.avatar||e.avatarInitials)&&o("div",{class:"tree-node-avatar"},e.avatar?o("img",{src:e.avatar,alt:e.label}):o("span",{class:"tree-node-avatar-initials tree-node-avatar-"+(e.color??"primary")},e.avatarInitials)),(f||s)&&o("div",{class:"tree-node-icon"+(f?"":" tree-node-icon-spacer")},f&&!e.loading&&o("ui-icon",{name:f,library:e.iconLibrary??this.iconLibrary,size:"16px",style:{color:e.color?`var(--tree-${e.color})`:void 0}}),e.loading&&o("ui-icon",{name:"loader-2",library:"lucide",spin:!0,size:"16px"})),o("div",{class:"tree-node-text-group"},p?o("ui-input",{class:"tree-edit-input",type:"text",value:this.editingValue,onInputChange:e=>{this.editingValue=e.detail},onInputKeydown:t=>{"Enter"===t.detail.key?this.commitEditing(e):"Escape"===t.detail.key&&this.cancelEditing(),t.detail.stopPropagation()},onInputBlur:()=>this.commitEditing(e),autoFocus:!0,size:"sm",fullWidth:!0}):o("div",{class:"tree-node-label"},this.renderLabel(e.label??"")),e.description&&!p&&o("div",{class:"tree-node-description"},e.description)),e.tag&&o("div",{class:"tree-node-tag"},e.tag),e.badge&&o("div",{class:"tree-node-badge tree-node-badge-"+(e.color??"primary")},e.badge),void 0!==e.counter&&o("div",{class:"tree-node-counter"},e.counter),e.locked&&o("div",{class:"tree-node-lock",title:e.lockTooltip??"Locked"},o("ui-icon",{name:"lock",library:"fontawesome",size:"12px"})),this.showNodeActions&&(e.actions?.length??0)>0&&o("div",{class:"tree-node-actions"},e.actions.map((t=>o("ui-button",{variant:"ghost",size:"sm",class:"tree-action-btn"+(t.color?" tree-action-"+t.color:""),icon:t.icon,iconLibrary:t.library??this.iconLibrary,iconSize:"13px",ariaLabel:t.tooltip,disabled:!!t.disabled,onClick:r=>{r.stopPropagation(),this.nodeAction.emit({node:e,action:(t.id??"")+""})}}))))),b&&"after"===this.dragPosition&&o("div",{class:"tree-drop-indicator tree-drop-after-line"}),c&&l&&"tree"===this.layout&&o("div",{class:"tree-children"+(b&&"inside"===this.dragPosition?" tree-children-drop-target":"")},d&&e.children.map(((r,o)=>{const n=e.children.some((e=>e.icon||this.showIcons));return this.renderNode(r,t+1,g,o===e.children.length-1,[...i,a],o,n)}))));return"org-chart"===this.layout?o("div",{class:"tree-node-wrapper"},k,c&&l&&o("div",{class:"tree-children"},d&&e.children.map(((r,o)=>{const n=e.children.some((e=>e.icon||this.showIcons));return this.renderNode(r,t+1,g,o===e.children.length-1,[...i,a],o,n)})))):k}renderContextMenu(){if(!this.contextMenuEnabled||!this.contextMenuVisible||!this.contextMenuNode)return null;const e=this.contextMenuNode;return o("div",{class:"tree-context-menu",style:{position:"fixed",left:this.contextMenuX+"px",top:this.contextMenuY+"px"},onClick:e=>e.stopPropagation()},this.selectable&&o("div",{class:"tree-context-item",onClick:()=>{this.handleNodeClick(e,[]),this.contextMenuVisible=!1}},o("ui-icon",{name:"check",library:"fontawesome",size:"13px"})," Select"),this.expandable&&(e.children?.length??0)>0&&o("div",{class:"tree-context-item",onClick:()=>{this.internalNodes=this._toggleNode(e.id),this.contextMenuVisible=!1}},o("ui-icon",{name:e.expanded?"chevron-up":"chevron-down",library:"lucide",size:"13px"}),e.expanded?"Collapse":"Expand"),this.inlineEdit&&!e.disabled&&o("div",{class:"tree-context-item",onClick:()=>{this.startEditing(e),this.contextMenuVisible=!1}},o("ui-icon",{name:"pen",library:"lucide",size:"13px"})," Rename"),o("div",{class:"tree-context-separator"}),o("div",{class:"tree-context-item",onClick:()=>{this.expandAllNodes(),this.contextMenuVisible=!1}},"Expand All"),o("div",{class:"tree-context-item",onClick:()=>{this.collapseAllNodes(),this.contextMenuVisible=!1}},"Collapse All"),this.undoRedoEnabled&&[o("div",{class:"tree-context-separator"}),o("div",{class:"tree-context-item"+(this.undoStack.length?"":" disabled"),onClick:()=>{this.undo(),this.contextMenuVisible=!1}},"Undo"),o("div",{class:"tree-context-item tree-context-item-danger",onClick:()=>{this._saveUndo();const t=this._findNode(e.id,this.internalNodes);this.internalNodes=this._removeNode(e.id,this.internalNodes),t&&this.nodeRemove.emit({node:t}),this.contextMenuVisible=!1}},"Delete")])}render(){this._selectionPathIds=this._getSelectionPathIds();const e=this.searchable?this.filterNodes(this.internalNodes):this.internalNodes,t=e.some((e=>e.icon||this.showIcons));return o(a,{key:"dae18b9d9751a023555e848bb0b5aaebdd235770",class:{"tree-container":!0,["tree-orientation-"+this.orientation]:!0,["tree-layout-"+this.layout]:!0,["tree-variant-"+this.variant]:!0,["tree-theme-"+this.theme]:!0,"tree-animated":this.animated,"tree-show-lines":this.showLines,"tree-hide-lines":!this.showLines,"tree-selectable":this.selectable,"tree-glow":this.showGlow},style:{"--tree-indent":this.indent+"px","--tree-node-height":this.nodeHeight+"px"},onKeyDown:this.handleKeyDown,tabIndex:0},o("div",{key:"9b15d92f21722bcd345733cfa44206e3c83a2fa9",class:"tree-inner",role:"tree","aria-multiselectable":this.multiSelect?"true":"false"},this.searchable&&o("div",{key:"be71bda4e65cfcf704616ef2ae563630bffde2fa",class:"tree-search"},o("ui-icon",{key:"53d76e4229942408bf50ab0c72d3ce6d1811fbd2",name:"search",library:"fontawesome",size:"13px",class:"tree-search-icon"}),o("ui-input",{key:"b8edf92c3dda73600fd0a653739aa1206be64698",type:"text",placeholder:"Search tree...",value:this.searchTerm,onInputChange:e=>this.handleSearchInput(e),ariaLabel:"Search tree",size:"sm",fullWidth:!0}),this.searchTerm&&o("ui-button",{key:"66800256ed8fc8139dab93bd920d25a2a6219cdf",variant:"ghost",size:"sm",class:"tree-search-clear",icon:"times",iconLibrary:"fontawesome",iconSize:"11px",ariaLabel:"Clear search",onClick:()=>{this.searchTerm=""}})),this.undoRedoEnabled&&o("div",{key:"a391e1e016e422fbdd2781a09daf176bf8fe58df",class:"tree-toolbar"},o("ui-button",{key:"73de8c1affc18220f94912f546c7e992d81850ed",variant:"ghost",size:"sm",icon:"undo",iconLibrary:"fontawesome",iconSize:"13px",label:"Undo",ariaLabel:"Undo (Ctrl+Z)",disabled:!this.undoStack.length,onClick:()=>this.undo()}),o("ui-button",{key:"0aebc8cafd66fb273eb7e39b682a29a24f73bfcc",variant:"ghost",size:"sm",icon:"redo",iconLibrary:"fontawesome",iconSize:"13px",label:"Redo",ariaLabel:"Redo (Ctrl+Shift+Z)",disabled:!this.redoStack.length,onClick:()=>this.redo()}),o("div",{key:"5bf0083e6ccd220d480a29f0fce27e220dba4231",class:"tree-toolbar-sep"}),o("ui-button",{key:"4aee1b4dfa0e8a99770e2ea55670cf17a3491bfb",variant:"ghost",size:"sm",icon:"expand",iconLibrary:"fontawesome",iconSize:"13px",ariaLabel:"Expand all",onClick:()=>this.expandAllNodes()}),o("ui-button",{key:"31c8f23735e0aabb53bee60f63f823f0facbf4c2",variant:"ghost",size:"sm",icon:"compress",iconLibrary:"fontawesome",iconSize:"13px",ariaLabel:"Collapse all",onClick:()=>this.collapseAllNodes()})),o("div",{key:"c635c7a4205a04d0fbb29bbbf666d82e3799e76e",class:"tree-content",style:this.virtualScroll?{height:this.virtualScrollHeight+"px",overflowY:"auto"}:{},onScroll:()=>this.virtualScroll&&this.el.forceUpdate()},this.virtualScroll&&"tree"===this.layout?(()=>{const t=this._getVisibleNodes(e),r=this.el.shadowRoot?.querySelector(".tree-content")?.scrollTop||0,a=Math.max(0,Math.floor(r/this.nodeHeight)-2);return o("div",{class:"tree-virtual-scroller",style:{height:t.length*this.nodeHeight+"px",position:"relative"}},o("div",{class:"tree-virtual-offset",style:{transform:`translateY(${a*this.nodeHeight}px)`}},t.slice(a,Math.min(t.length,a+Math.ceil(this.virtualScrollHeight/this.nodeHeight)+4)).map((e=>{const t=this._findPath(e.id,this.internalNodes)||[];return this.renderNode(e,t.length-1,t.slice(0,-1),!1,[],0,!1)}))))})():e.length>0?e.map(((r,o)=>this.renderNode(r,0,[],o===e.length-1,[],o,t))):o("div",{class:"tree-empty"},o("ui-icon",{name:"folder-open",library:"fontawesome",size:"40px"}),o("p",null,this.searchTerm?"No results found":"No items")))),this.renderContextMenu())}static get watchers(){return{nodes:[{parseNodes:0}],expandAll:[{parseNodes:0}],collapseAll:[{parseNodes:0}]}}static get style(){return'@charset "UTF-8";.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;width:100%;--tree-bg:var(--bg-primary, #ffffff);--tree-text:var(--text-primary, #1f2937);--tree-text-muted:var(--color-primary, #6b7280);--tree-border-color:var(--border-default, #e5e7eb);--tree-primary:var(--color-success, #3dcd58);--tree-primary-50:rgba(var(--color-success-rgb, 61, 205, 88), 0.08);--tree-primary-100:rgba(var(--color-success-rgb, 61, 205, 88), 0.15);--tree-primary-200:rgba(var(--color-success-rgb, 61, 205, 88), 0.25);--tree-muted:var(--color-primary, #9ca3af);--tree-node-hover-bg:rgba(0, 0, 0, 0.02);--tree-line-color-default:rgba(0, 0, 0, 0.15);--tree-error:var(--color-danger, #ef4444);--tree-info:var(--color-primary, #10b981);--tree-success:var(--color-success, #10b981);--tree-warning:var(--color-warning, #f59e0b)}.tree-container{width:100%;background:var(--tree-bg);border-radius:8px;overflow:visible;}.tree-container.tree-theme-dark{--tree-bg:var(--bg-primary, #1f2937);--tree-text:var(--bg-primary, #f3f4f6);--tree-text-muted:var(--color-primary, #9ca3af);--tree-border-color:var(--border-default, #374151);--tree-node-hover-bg:rgba(255, 255, 255, 0.05);--tree-line-color-default:rgba(255, 255, 255, 0.1);background:var(--tree-bg);color:var(--tree-text)}.tree-container.tree-variant-bordered{border:1px solid var(--tree-border-color)}.tree-container.tree-variant-rounded{border-radius:12px}.tree-container.tree-variant-rounded .tree-node{border-radius:8px}.tree-container.tree-variant-minimal{background:transparent}.tree-container.tree-variant-minimal .tree-node{background:transparent}.tree-container.tree-variant-minimal .tree-node:hover{background:rgba(0, 0, 0, 0.02)}.tree-container.tree-variant-glass{--tree-glass-bg:rgba(255, 255, 255, 0.1);--tree-glass-border:rgba(255, 255, 255, 0.2);--tree-glass-text:var(--text-primary, #111827);background:var(--tree-glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--tree-glass-border);box-shadow:0 8px 32px 0 rgba(31, 38, 135, 0.1)}.tree-container.tree-variant-glass .tree-node{color:var(--tree-glass-text)}.tree-container.tree-variant-glass .tree-node:hover{background:rgba(255, 255, 255, 0.2)}.tree-container.tree-variant-glass .tree-node.tree-node-selected{background:var(--tree-primary-200)}.tree-container.tree-variant-glass .tree-search input{background:rgba(255, 255, 255, 0.2);border-color:rgba(255, 255, 255, 0.3);color:var(--tree-text)}.tree-container.tree-variant-glass .tree-search input::placeholder{color:var(--tree-text-muted)}.tree-container.tree-variant-glass .tree-line{background:var(--tree-line-color-default)}.tree-container.tree-glow{box-shadow:0 0 20px var(--tree-primary-200);border-color:var(--tree-primary-100)}.tree-theme-dark.tree-variant-glass{--tree-glass-bg:rgba(17, 24, 39, 0.4);--tree-glass-border:rgba(255, 255, 255, 0.1);--tree-glass-text:var(--tree-text);background:var(--tree-glass-bg);border:1px solid var(--tree-glass-border)}.tree-theme-dark.tree-variant-glass .tree-node{color:var(--tree-glass-text)}.tree-theme-dark.tree-variant-glass .tree-node:hover{background:rgba(255, 255, 255, 0.1)}.tree-theme-dark.tree-variant-glass .tree-search input{background:rgba(0, 0, 0, 0.2);border-color:var(--tree-glass-border)}.tree-theme-dark.tree-variant-glass .tree-line{background:var(--tree-glass-border)}.tree-search{position:relative;padding:16px;border-bottom:1px solid var(--tree-border-color)}.tree-search ui-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);color:var(--tree-muted);font-size:14px}.tree-search input{width:100%;padding:10px 12px 10px 36px;border:1px solid var(--tree-border-color);background:transparent;color:inherit;border-radius:6px;font-size:14px;outline:none;transition:all 0.2s}.tree-search input:focus{border-color:var(--tree-primary);box-shadow:0 0 0 3px var(--tree-primary-50)}.tree-search input::placeholder{color:var(--tree-muted)}.tree-theme-dark .tree-search input:focus{border-color:var(--tree-primary)}.tree-inner{position:relative}.tree-node{position:relative;display:block;width:100%}.tree-connector-harness-group{position:absolute;left:24px;top:0;width:var(--tree-indent-full, 100%);height:100%;pointer-events:none;z-index:1}.tree-v-line-container{position:absolute;left:0;top:0;width:100%;height:100%}.tree-hook-container{position:absolute;left:0;top:0;width:100%}.tree-connectors-svg{display:block;width:100%;height:100%;overflow:visible}.tree-connectors-svg path,.tree-connectors-svg line{transition:stroke 0.3s ease, stroke-width 0.3s ease, stroke-opacity 0.4s ease}.tree-connectors-svg .path-highlight{--line-color-final:var(--tree-primary) !important;stroke:var(--line-color-final) !important;stroke-opacity:1 !important;filter:drop-shadow(0 0 5px var(--tree-primary-400))}.tree-theme-dark .tree-line{--default-line-color:rgba(255, 255, 255, 0.1)}.tree-expand-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;color:var(--tree-text-muted);font-size:11px;cursor:pointer;z-index:2}.tree-expand-icon:hover{color:var(--tree-primary)}.tree-expand-icon{margin-right:8px}.tree-animated .tree-node-expanded .tree-expand-icon ui-icon{transform:rotate(0deg)}.tree-animated .tree-node-collapsed .tree-expand-icon ui-icon{transform:rotate(-90deg)}.tree-expand-spacer{width:24px;height:24px;flex-shrink:0;margin-right:8px}.tree-checkbox{display:flex;align-items:center;justify-content:center}.tree-checkbox input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--tree-primary)}.tree-node-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;font-size:16px;color:var(--tree-primary)}.tree-node-icon.tree-node-icon-spacer{visibility:hidden}.tree-node-icon.tree-node-icon-default{color:var(--tree-text-muted)}.tree-theme-dark .tree-node-icon.tree-node-icon-default{color:var(--tree-text-muted)}.tree-node-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0;position:relative;z-index:2;cursor:pointer;transition:background-color 0.2s ease}.tree-node-content:hover{background-color:var(--tree-node-hover-bg)}.tree-node-content .tree-node-text-group{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.tree-node-content .tree-node-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:var(--tree-text)}.tree-theme-dark .tree-node-label{color:var(--tree-text)}.tree-node-spinner{display:flex;align-items:center;color:var(--tree-primary)}.tree-node-actions{display:flex;align-items:center;gap:4px;opacity:0;transition:opacity 0.2s;pointer-events:none;margin-left:8px}.tree-node:hover .tree-node-actions{opacity:1;pointer-events:auto}.tree-action-btn{background:transparent;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tree-text-muted);transition:all 0.2s cubic-bezier(0.4, 0, 0.2, 1);padding:0;margin-left:2px}.tree-action-btn:hover{background:var(--tree-primary-100);color:var(--tree-primary);transform:scale(1.1);box-shadow:0 0 10px var(--tree-primary-50)}.tree-action-btn:active{transform:scale(0.95)}.tree-theme-dark .tree-action-btn{color:var(--tree-text-muted)}.tree-theme-dark .tree-action-btn:hover{background:var(--tree-node-hover-bg)}.tree-node-badge{padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;flex-shrink:0}.tree-node-badge.tree-node-badge-default{background:var(--tree-border-color);color:var(--tree-text-muted)}.tree-node-badge.tree-node-badge-primary{background:var(--tree-primary-100);color:var(--tree-primary)}.tree-node-badge.tree-node-badge-secondary{background:var(--tree-border-color);color:var(--tree-text-muted)}.tree-node-badge.tree-node-badge-success{background:var(--tree-primary-100);color:var(--tree-success)}.tree-node-badge.tree-node-badge-danger{background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.1);color:var(--tree-error)}.tree-node-badge.tree-node-badge-warning{background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.1);color:var(--color-warning, #f59e0b)}.tree-node-badge.tree-node-badge-info{background:rgba(var(--color-primary-rgb, 59, 130, 246), 0.1);color:var(--tree-info)}.tree-node-counter{display:flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;background:var(--tree-primary);color:var(--tree-bg);border-radius:11px;font-size:11px;font-weight:600;flex-shrink:0}.tree-children{overflow:hidden}.tree-animated .tree-children{animation:slideDown 0.2s ease-out}@keyframes slideDown{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.tree-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--tree-text-muted)}.tree-empty i{font-size:48px;margin-bottom:12px;opacity:0.5}.tree-empty p{margin:0;font-size:14px}.tree-orientation-horizontal .tree-content{overflow-x:auto}.tree-orientation-horizontal .tree-node-wrapper{display:flex}.tree-orientation-horizontal .tree-children{display:flex;flex-direction:column;margin-left:24px;padding-left:24px;border-left:1px solid var(--tree-border-color)}.tree-orientation-horizontal .tree-node{padding-left:0}.tree-layout-org-chart .tree-content{display:flex;justify-content:center;padding:60px 40px;overflow:auto;min-height:400px}.tree-layout-org-chart .tree-node-wrapper{display:flex;flex-direction:column;align-items:center;position:relative;padding:20px 0 0 0;transition:all 0.3s ease}.tree-layout-org-chart .tree-node-wrapper::before,.tree-layout-org-chart .tree-node-wrapper::after{content:"";position:absolute;top:0;right:50%;width:50%;height:20px;border-top:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1))}.tree-layout-org-chart .tree-node-wrapper::after{right:auto;left:50%;border-left:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1))}.tree-layout-org-chart{}.tree-layout-org-chart .tree-content>.tree-node-wrapper::before,.tree-layout-org-chart .tree-content>.tree-node-wrapper::after{display:none !important}.tree-layout-org-chart .tree-content>.tree-node-wrapper{padding-top:0}.tree-layout-org-chart{}.tree-layout-org-chart .tree-node-wrapper:first-child::before{border:0 none}.tree-layout-org-chart .tree-node-wrapper:last-child::after{border:0 none}.tree-layout-org-chart .tree-node-wrapper:first-child:not(:only-child)::after{border-radius:12px 0 0 0}.tree-layout-org-chart .tree-node-wrapper:last-child:not(:only-child)::before{border-right:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1));border-radius:0 12px 0 0}.tree-layout-org-chart{}.tree-layout-org-chart .tree-node-wrapper:only-child::after{border-radius:0;border-left:var(--tree-line-width, 1px) solid var(--tree-line-color, rgba(0, 0, 0, 0.1))}.tree-layout-org-chart .tree-node-wrapper:only-child::before{display:none}.tree-layout-org-chart{}.tree-layout-org-chart .tree-node-branch>.tree-node::after{content:"";position:absolute;bottom:-20px;left:50%;width:1px;height:20px;background:var(--tree-line-color-default)}.tree-layout-org-chart .tree-node{border:1px solid var(--tree-border-color);background:var(--tree-bg);box-shadow:0 4px 12px var(--tree-primary-50);padding:12px 24px;min-width:160px;max-width:300px;justify-content:center;margin:0 15px;z-index:2;transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);border-radius:10px}.tree-layout-org-chart .tree-node:hover{border-color:var(--tree-primary);box-shadow:0 12px 24px var(--tree-primary-100);transform:translateY(-4px)}.tree-layout-org-chart .tree-node.tree-node-selected{border-color:var(--tree-primary);background:var(--tree-primary-50)}.tree-layout-org-chart .tree-children{display:flex;flex-direction:row;justify-content:center;position:relative;padding-top:20px}.tree-layout-org-chart{}.tree-layout-org-chart.tree-theme-dark .tree-node{background:var(--tree-bg);border-color:var(--tree-border-color);box-shadow:0 4px 12px rgba(0, 0, 0, 0.2)}.tree-layout-org-chart.tree-theme-dark .tree-node-wrapper::before,.tree-layout-org-chart.tree-theme-dark .tree-node-wrapper::after{border-color:var(--tree-line-color-default)}.tree-layout-org-chart.tree-theme-dark .tree-node-branch>.tree-node::after{background:var(--tree-line-color-default)}.tree-hide-lines .tree-lines,.tree-hide-lines .tree-node-wrapper::before,.tree-hide-lines .tree-node-wrapper::after,.tree-hide-lines .tree-line-vertical::after,.tree-hide-lines .tree-node::after{display:none !important}.tree-variant-modern-green{--tree-bg:var(--bg-secondary, #0f172a);--tree-text:var(--bg-primary, #f8fafc);--tree-text-muted:var(--color-primary, #94a3b8);--tree-primary:var(--color-success, #10b981);--tree-line-color-default:var(--color-success, #10b981);background:var(--tree-bg);color:var(--tree-text);border:1px solid rgba(var(--color-success-rgb, 16, 185, 129), 0.2);box-shadow:0 4px 20px rgba(0, 0, 0, 0.4)}.tree-variant-modern-green .tree-node{color:var(--tree-text-muted);font-weight:500;letter-spacing:0.02em}.tree-variant-modern-green .tree-node:hover{background:var(--tree-primary-50);color:var(--tree-primary)}.tree-variant-modern-green .tree-node.tree-node-selected{background:var(--tree-primary-100);color:var(--tree-primary);border-left:2px solid var(--tree-primary)}.tree-variant-modern-green .tree-line{--default-line-color:var(--tree-primary);--line-width:2px;opacity:0.6}.tree-variant-modern-green .tree-line-curved{border-bottom-left-radius:14px}.tree-variant-modern-green .tree-search input{background:rgba(0, 0, 0, 0.3);border-color:var(--tree-primary-100);color:var(--tree-text)}.tree-variant-modern-green .tree-search input:focus{border-color:var(--tree-primary);box-shadow:0 0 0 3px var(--tree-primary-100)}.tree-variant-modern-green .tree-node-icon{color:var(--tree-primary)}.tree-variant-modern-green .tree-expand-icon{color:var(--tree-primary)}.tree-variant-modern-green .tree-expand-icon:hover{color:var(--tree-primary)}.tree-node-selected{border-top:0 none !important}.tree-node-selected::before,.tree-node-selected::after{border-top:0 none !important}.tree-node[draggable=true]{cursor:move}.tree-node:active{opacity:0.6}.tree-drop-indicator{height:2px;background:var(--tree-primary);border-radius:2px;margin:0 8px;box-shadow:0 0 6px var(--tree-primary-200);animation:pulseIndicator 0.5s ease infinite alternate}@keyframes pulseIndicator{from{opacity:0.7}to{opacity:1}}.tree-node.tree-drop-inside>.tree-node-content{outline:2px dashed var(--tree-primary);outline-offset:-2px;border-radius:6px;background:var(--tree-primary-50)}.tree-children-drop-target{background:var(--tree-primary-50);border-radius:6px}.tree-edit-input{flex:1;min-width:80px;padding:2px 8px;border:1.5px solid var(--tree-primary);border-radius:4px;font-size:13px;font-family:inherit;color:var(--tree-text);background:var(--tree-bg);outline:none;box-shadow:0 0 0 3px var(--tree-primary-50)}.tree-edit-input:focus{box-shadow:0 0 0 3px var(--tree-primary-100)}.tree-theme-dark .tree-edit-input{background:rgba(255, 255, 255, 0.05);color:var(--tree-text)}.tree-search-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);color:var(--tree-muted);pointer-events:none}.tree-search-clear{position:absolute;right:26px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--tree-text-muted);padding:4px;display:flex;align-items:center;border-radius:4px;transition:color 0.2s, background 0.2s}.tree-search-clear:hover{color:var(--tree-error);background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.08)}.tree-toolbar{display:flex;align-items:center;gap:4px;padding:6px 12px;border-bottom:1px solid var(--tree-border-color);background:rgba(0, 0, 0, 0.01)}.tree-theme-dark .tree-toolbar{background:rgba(255, 255, 255, 0.02)}.tree-toolbar-sep{width:1px;height:18px;background:var(--tree-border-color);margin:0 4px}.tree-toolbar-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--tree-border-color);border-radius:6px;background:var(--tree-bg);color:var(--tree-text-muted);font-size:12px;cursor:pointer;transition:all 0.15s;white-space:nowrap}.tree-toolbar-btn:hover:not(:disabled){background:var(--tree-primary-50);color:var(--tree-primary);border-color:var(--tree-primary)}.tree-toolbar-btn:disabled{opacity:0.4;cursor:not-allowed}.tree-context-menu{min-width:170px;background:var(--tree-bg);border:1px solid var(--tree-border-color);border-radius:10px;box-shadow:0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);padding:6px;z-index:9999;animation:contextMenuIn 0.12s cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}@keyframes contextMenuIn{from{opacity:0;transform:scale(0.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.tree-context-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:6px;font-size:13px;color:var(--tree-text);cursor:pointer;transition:background 0.12s}.tree-context-item:hover{background:var(--tree-primary-50);color:var(--tree-primary)}.tree-context-item.disabled{opacity:0.4;pointer-events:none}.tree-context-item.tree-context-item-danger{color:var(--tree-error)}.tree-context-item.tree-context-item-danger:hover{background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.08);color:var(--tree-error)}.tree-context-separator{height:1px;background:var(--tree-border-color);margin:4px 6px}.tree-theme-dark .tree-context-menu{background:var(--bg-primary, #1f2937);border-color:var(--border-default, #374151);box-shadow:0 8px 32px rgba(0, 0, 0, 0.4)}.tree-node-avatar{width:24px;height:24px;flex-shrink:0;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center}.tree-node-avatar img{width:100%;height:100%;object-fit:cover}.tree-node-avatar-initials{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;flex-shrink:0}.tree-node-avatar-initials.tree-node-avatar-primary{background:var(--tree-primary-100);color:var(--tree-primary)}.tree-node-avatar-initials.tree-node-avatar-success{background:rgba(var(--color-success-rgb, 16, 185, 129), 0.1);color:var(--tree-success)}.tree-node-avatar-initials.tree-node-avatar-danger{background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.1);color:var(--tree-error)}.tree-node-avatar-initials.tree-node-avatar-warning{background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.1);color:var(--tree-warning)}.tree-node-avatar-initials.tree-node-avatar-info{background:rgba(var(--color-primary-rgb, 59, 130, 246), 0.1);color:var(--tree-info)}.tree-node-avatar-initials.tree-node-avatar-default{background:var(--tree-border-color);color:var(--tree-text-muted)}.tree-node-description{font-size:11px;color:var(--tree-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node-tag{padding:1px 7px;border-radius:12px;font-size:10px;font-weight:600;background:var(--tree-border-color);color:var(--tree-text-muted);white-space:nowrap;flex-shrink:0}.tree-node-lock{display:flex;align-items:center;color:var(--tree-text-muted);flex-shrink:0;margin-left:4px}.tree-action-danger:hover{color:var(--tree-error) !important;background:rgba(var(--color-danger-rgb, 239, 68, 68), 0.1) !important}.tree-action-warning:hover{color:var(--tree-warning) !important;background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.1) !important}.tree-action-success:hover{color:var(--tree-success) !important;background:rgba(var(--color-success-rgb, 16, 185, 129), 0.1) !important}.tree-highlight{background:rgba(245, 200, 10, 0.35);color:inherit;border-radius:2px;padding:0 1px}.tree-variant-compact .tree-node-content{min-height:28px !important;font-size:12px}.tree-variant-compact .tree-expand-icon,.tree-variant-compact .tree-expand-spacer{width:18px;height:18px}.tree-variant-compact .tree-node-icon{width:16px;height:16px;font-size:13px}.tree-variant-directory{--tree-primary:var(--color-warning, #f59e0b)}.tree-variant-directory .tree-node-branch>.tree-node-content .tree-node-icon ui-icon{color:var(--color-warning, #f59e0b)}.tree-variant-directory .tree-node-leaf>.tree-node-content .tree-node-icon ui-icon{color:var(--color-primary, #60a5fa)}.tree-variant-directory .tree-node-selected>.tree-node-content{background:rgba(var(--color-warning-rgb, 245, 158, 11), 0.08)}.tree-variant-cards .tree-node-content{border:1px solid var(--tree-border-color);border-radius:10px;margin:3px 8px 3px 0;padding-right:12px !important;background:var(--tree-bg);box-shadow:0 1px 3px rgba(0, 0, 0, 0.04);transition:box-shadow 0.2s, border-color 0.2s}.tree-variant-cards .tree-node-content:hover{border-color:var(--tree-primary);box-shadow:0 4px 12px var(--tree-primary-50)}.tree-variant-cards .tree-node-selected>.tree-node-content{border-color:var(--tree-primary);background:var(--tree-primary-50);box-shadow:0 4px 12px var(--tree-primary-100)}.tree-variant-cards.tree-theme-dark .tree-node-content{background:rgba(255, 255, 255, 0.04);border-color:var(--tree-border-color);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.tree-variant-git-graph{--tree-git-lane-color:rgba(100, 116, 139, 0.45);--tree-git-commit-color:var(--tree-primary);--tree-git-commit-leaf-color:rgba(148, 163, 184, 0.85)}.tree-variant-git-graph .tree-connector-harness-group{display:none}.tree-variant-git-graph .tree-node-content{position:relative}.tree-variant-git-graph .tree-node-content::before,.tree-variant-git-graph .tree-node-content::after{content:"";position:absolute;pointer-events:none;z-index:1}.tree-variant-git-graph{}.tree-variant-git-graph .tree-node-content::before{left:calc(var(--depth, 0) * var(--tree-indent, 24px) + 12px);top:0;bottom:0;width:1.5px;background:var(--tree-git-lane-color)}.tree-variant-git-graph{}.tree-variant-git-graph .tree-node-content::after{left:calc(var(--depth, 0) * var(--tree-indent, 24px) + 8px);top:50%;width:9px;height:9px;transform:translateY(-50%);border-radius:50%;background:var(--tree-git-commit-color);box-shadow:0 0 0 2px var(--tree-bg)}.tree-variant-git-graph .tree-node-leaf>.tree-node-content::after{background:var(--tree-git-commit-leaf-color)}.tree-variant-git-graph .tree-node-selected>.tree-node-content::after{width:10px;height:10px;background:var(--tree-primary);box-shadow:0 0 0 2px var(--tree-bg), 0 0 0 6px var(--tree-primary-50)}.tree-variant-git-graph .tree-node:hover>.tree-node-content::before{background:color-mix(in srgb, var(--tree-primary) 35%, var(--tree-git-lane-color))}.tree-theme-dark.tree-variant-git-graph{--tree-git-lane-color:rgba(148, 163, 184, 0.35);--tree-git-commit-leaf-color:rgba(203, 213, 225, 0.85)}.tree-node-focused>.tree-node-content{outline:2px solid var(--tree-primary);outline-offset:-1px;border-radius:4px}.tree-content::-webkit-scrollbar{width:4px}.tree-content::-webkit-scrollbar-track{background:transparent}.tree-content::-webkit-scrollbar-thumb{background:var(--tree-border-color);border-radius:4px}.tree-theme-dark.tree-layout-org-chart .tree-node{background:var(--bg-primary, #1f2937);border-color:var(--border-default, #374151);color:var(--tree-text)}.tree-theme-dark.tree-layout-org-chart .tree-node:hover{border-color:var(--tree-primary)}.tree-node-sm>.tree-node-content{min-height:32px !important;font-size:12px}.tree-node-md>.tree-node-content{min-height:40px !important;font-size:14px}.tree-node-lg>.tree-node-content{min-height:48px !important;font-size:16px}.tree-node-primary>.tree-node-content .tree-node-label{color:var(--tree-primary)}.tree-node-success>.tree-node-content .tree-node-label{color:var(--tree-success)}.tree-node-danger>.tree-node-content .tree-node-label{color:var(--tree-error)}.tree-node-warning>.tree-node-content .tree-node-label{color:var(--tree-warning)}.tree-node-info>.tree-node-content .tree-node-label{color:var(--tree-info)}.tree-animated .tree-children{animation:treeSlideIn 0.18s cubic-bezier(0.4, 0, 0.2, 1)}@keyframes treeSlideIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}'}},[513,"ui-tree",{nodes:[1],orientation:[1],showLines:[4,"show-lines"],showIcons:[4,"show-icons"],expandable:[4],selectable:[4],multiSelect:[4,"multi-select"],checkboxes:[4],checkboxSync:[4,"checkbox-sync"],enableDrag:[4,"enable-drag"],searchable:[4],animated:[4],indent:[2],nodeHeight:[2,"node-height"],expandAll:[4,"expand-all"],collapseAll:[4,"collapse-all"],layout:[1],variant:[1],size:[1],theme:[1],showGlow:[4,"show-glow"],connectorWidth:[2,"connector-width"],connectorColor:[1,"connector-color"],connectorOpacity:[2,"connector-opacity"],connectorShape:[1,"connector-shape"],iconLibrary:[1,"icon-library"],inlineEdit:[4,"inline-edit"],contextMenuEnabled:[4,"context-menu-enabled"],undoRedoEnabled:[4,"undo-redo-enabled"],lazyLoad:[4,"lazy-load"],virtualScroll:[4,"virtual-scroll"],virtualScrollHeight:[2,"virtual-scroll-height"],showNodeActions:[4,"show-node-actions"],showAvatars:[4,"show-avatars"],expandIconType:[1,"expand-icon-type"],expandedIcon:[1,"expanded-icon"],collapsedIcon:[1,"collapsed-icon"],expandIconSize:[1,"expand-icon-size"],expandIconColor:[1,"expand-icon-color"],internalNodes:[32],selectedNodes:[32],searchTerm:[32],draggedNode:[32],focusedNodeId:[32],editingNodeId:[32],editingValue:[32],contextMenuVisible:[32],contextMenuNode:[32],contextMenuX:[32],contextMenuY:[32],undoStack:[32],redoStack:[32],dragOverNodeId:[32],dragPosition:[32],expandAllNodes:[64],collapseAllNodes:[64],selectNode:[64],getNodePath:[64],getBreadcrumb:[64],updateNode:[64],scrollToNode:[64],expandByPath:[64],selectByPath:[64],getSelectedNodes:[64],dfsTraversal:[64],bfsTraversal:[64],flattenTree:[64],addNode:[64],removeNode:[64],moveNode:[64],undo:[64],redo:[64],diffTrees:[64],getState:[64],restoreState:[64]},void 0,{nodes:[{parseNodes:0}],expandAll:[{parseNodes:0}],collapseAll:[{parseNodes:0}]}]),b=p,g=function(){"undefined"!=typeof customElements&&["ui-tree","ui-badge","ui-button","ui-checkbox","ui-icon","ui-input","ui-loader"].forEach((e=>{switch(e){case"ui-tree":customElements.get(i(e))||customElements.define(i(e),p);break;case"ui-badge":customElements.get(i(e))||s();break;case"ui-button":customElements.get(i(e))||n();break;case"ui-checkbox":customElements.get(i(e))||d();break;case"ui-icon":customElements.get(i(e))||c();break;case"ui-input":customElements.get(i(e))||l();break;case"ui-loader":customElements.get(i(e))||h()}}))};export{b as UiTree,g as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as a,HTMLElement as e,createEvent as i,h as r,Host as t,transformTag as o}from"@stencil/core/internal/client";import{s as n,d as s}from"./icon.js";import{c,g as l,b as m}from"./dom.js";import{d,a as p}from"./badge.js";import{d as h}from"./resizable-panel.js";const g=a(class extends e{constructor(a){super(),!1!==a&&this.__registerHost(),this.layoutChange=i(this,"layoutChange",7),this.panelAdded=i(this,"panelAdded",7),this.panelRemoved=i(this,"panelRemoved",7),this.panelMoved=i(this,"panelMoved",7),this.panelPoppedOut=i(this,"panelPoppedOut",7),this.panelDocked=i(this,"panelDocked",7),this.panelMaximized=i(this,"panelMaximized",7),this.panelRestored=i(this,"panelRestored",7),this.regionAdded=i(this,"regionAdded",7),this.regionRemoved=i(this,"regionRemoved",7)}get el(){return this}regions=[];handleRegionsChange(){this.initRegions(),this.root={...this.root},this.layoutVersion++}direction="horizontal";saveState=!0;stateKey="layout-manager-state";root;panelsById={};popouts={};maximizedPanel;preMaximizeState;draggingPanel;draggingPopout;layoutVersion=0;contextMenu;tabActionsMenu;floatingDropdown;openDropdowns={};openActionsMenu={};regionsNeedingScroll={};minimizedRegions={};dragOverTarget;floatingDropdownTrigger;tabActionsMenuTrigger;layoutChange;panelAdded;panelRemoved;panelMoved;panelPoppedOut;panelDocked;panelMaximized;panelRestored;regionAdded;regionRemoved;async getLayoutState(){return{root:this.root,panels:this.panelsById}}async clearAllRegions(){await this.closeAllPanels(),this.panelsById={},this.popouts={},this.maximizedPanel=void 0,this.draggingPanel=void 0,this.draggingPopout=void 0,this.contextMenu=void 0,this.tabActionsMenu=void 0,this.openDropdowns={},this.openActionsMenu={},this.root={id:"__root__",title:"Root",direction:this.direction,children:[],panels:[]},this.floatingDropdownTrigger=void 0,this.tabActionsMenuTrigger=void 0,this.emitLayoutChange()}handleScroll(){(this.floatingDropdown||this.tabActionsMenu)&&this.recalculateMenuPositions()}recalculateMenuPositions(){requestAnimationFrame((()=>{if(this.floatingDropdown&&this.floatingDropdownTrigger){const a=c(this.floatingDropdownTrigger,{menuWidth:200,menuHeight:300,gap:4,align:"end"});this.floatingDropdown={...this.floatingDropdown,x:a.left??0,y:a.top??0}}if(this.tabActionsMenu&&this.tabActionsMenuTrigger){const a=c(this.tabActionsMenuTrigger,{menuWidth:180,menuHeight:200,gap:4,align:"end"});this.tabActionsMenu={...this.tabActionsMenu,x:a.left??0,y:a.top??0}}}))}componentWillLoad(){this.saveState&&this.loadState(),(!this.root||0===this.root.children?.length&&0===this.root.panels?.length)&&this.initRegions(),document.addEventListener("click",this.handleDocumentClick)}disconnectedCallback(){document.removeEventListener("click",this.handleDocumentClick)}handleDocumentClick=a=>{const e=a.target;e.closest(".lm-panel-dropdown-wrapper")||Object.values(this.openDropdowns).some((a=>a))&&(this.openDropdowns={}),e.closest(".lm-actions-menu-wrapper")||Object.values(this.openActionsMenu).some((a=>a))&&(this.openActionsMenu={})};parseRegions(){return(("string"==typeof this.regions?JSON.parse(this.regions):this.regions)||[]).map((a=>({id:a.id,title:a.title,size:a.size??25,minSize:a.minSize,maxSize:a.maxSize,collapsible:a.collapsible??!1})))}initRegions(){const a=this.parseRegions(),e=a.reduce(((a,e)=>a+(e.size||0)),0)||100,i=a.map((i=>({...i,size:(i.size||100/a.length)/e*100,panels:[],activePanelId:void 0})));this.root={id:"__root__",title:"Root",size:100,panels:[],children:i,direction:this.direction}}async addPanel(a){const e=a.id||`panel-${Date.now()}-${Math.floor(1e3*Math.random())}`,i=this.findRegionNode(a.regionId)?.node;if(!i)throw Error("Region not found: "+a.regionId);if("content-only"===i.type&&i.panels&&i.panels.length>0)return i.panels[0];const r={id:e,title:a.title,regionId:i.id,closable:!1!==a.closable,icon:a.icon,iconLibrary:a.iconLibrary,allowPopout:!1!==a.allowPopout,element:a.element,html:a.html};return this.panelsById={...this.panelsById,[e]:r},i.panels=[...i.panels||[],e],i.activePanelId=e,this.root={...this.root},this.panelAdded.emit(r),this.emitLayoutChange(),e}async removePanel(a){const e=this.panelsById[a];if(!e)return;if(e.pinned)return;this.maximizedPanel===a&&(this.maximizedPanel=void 0,this.preMaximizeState=void 0);const i=this.findRegionNode(e.regionId)?.node;i&&(i.panels=(i.panels||[]).filter((e=>e!==a)),i.activePanelId===a&&(i.activePanelId=i.panels[(i.panels||[]).length-1]||void 0));const{[a]:r,...t}=this.panelsById;this.panelsById=t;const{[a]:o,...n}=this.popouts;this.popouts=n,this.root={...this.root},this.panelRemoved.emit({panelId:a,regionId:i?.id||""}),this.emitLayoutChange()}async movePanel(a,e,i){const r=this.panelsById[a];if(!r)throw Error("Panel not found: "+a);const t=this.findRegionNode(r.regionId)?.node,o=this.findRegionNode(e)?.node;if(!o)throw Error("Target region not found: "+e);t&&(t.panels=(t.panels||[]).filter((e=>e!==a)),t.activePanelId===a&&(t.activePanelId=t.panels[(t.panels||[]).length-1]||void 0)),r.regionId=o.id;const n=[...o.panels||[]];void 0===i||i<0||i>n.length?n.push(a):n.splice(i,0,a),o.panels=n,o.activePanelId=a,this.panelsById={...this.panelsById},this.root={...this.root},this.panelMoved.emit({panelId:a,from:t?.id||"",to:o.id}),this.emitLayoutChange()}async popoutPanel(a,e){const i=this.panelsById[a];if(!i)throw Error("Panel not found: "+a);const r=this.findRegionNode(i.regionId)?.node;r&&(r.panels=(r.panels||[]).filter((e=>e!==a)),r.activePanelId===a&&(r.activePanelId=r.panels[(r.panels||[]).length-1]||void 0)),this.popouts={...this.popouts,[a]:{x:e?.x??100,y:e?.y??100,width:e?.width??400,height:e?.height??300}},this.root={...this.root},this.panelPoppedOut.emit({panelId:a}),this.emitLayoutChange()}async dockPanel(a,e,i){if(!this.popouts[a])return;const{[a]:r,...t}=this.popouts;this.popouts=t,await this.movePanel(a,e,i),this.panelDocked.emit({panelId:a,regionId:e})}async splitRegion(a,e="horizontal"){const i=this.findRegionNode(a);if(!i)throw Error("Region not found: "+a);const{node:r}=i;if(r.children&&r.children.length)return;const t={id:a+"-a",title:r.title,size:50,panels:[],activePanelId:void 0},o={id:a+"-b",title:r.title,size:50,panels:[],activePanelId:void 0};r.panels?.length&&(t.panels=[...r.panels],t.activePanelId=r.activePanelId,r.panels=[],r.activePanelId=void 0),r.children=[t,o],r.direction=e,this.root={...this.root},this.emitLayoutChange()}async maximizePanel(a){if(!this.panelsById[a])throw Error("Panel not found: "+a);this.preMaximizeState={root:JSON.parse(JSON.stringify(this.root)),panelsById:JSON.parse(JSON.stringify(this.panelsById))},this.maximizedPanel=a,this.panelMaximized.emit({panelId:a})}async restorePanel(){if(!this.maximizedPanel)return;const a=this.maximizedPanel;this.preMaximizeState&&(this.preMaximizeState.root&&this.preMaximizeState.panelsById&&(this.root=this.preMaximizeState.root,this.panelsById=this.preMaximizeState.panelsById,this.root={...this.root},this.panelsById={...this.panelsById},this.layoutVersion++),this.preMaximizeState=void 0),this.maximizedPanel=void 0,this.panelRestored.emit({panelId:a}),this.emitLayoutChange()}async closeAllPanels(a){if(a){const e=this.findRegionNode(a);if(!e||!e.node.panels)return;const i=[...e.node.panels];for(const a of i)await this.removePanel(a)}else{const a=Object.keys(this.panelsById);for(const e of a)await this.removePanel(e)}}async mergeRegion(a){const e=this.findRegionNode(a);if(!e)return;const{node:i}=e;if(!i.children||!i.children.length)return;const r=i.children[0];i.panels=[...r.panels||[]],i.activePanelId=r.activePanelId,i.children=void 0,i.direction=void 0,this.root={...this.root},this.emitLayoutChange()}async createRegion(a){if(this.findRegionNode(a.id))return;const e=this.root.children||[],i=e.reduce(((a,e)=>a+(e.size||0)),0)||100,r=a.size??100/(e.length+1),t=r/(i+r)*100,o=e.map((a=>({...a,size:(a.size||0)*(i/(i+r))})));this.root.children=[...o,{id:a.id,title:a.title,size:t,minSize:a.minSize,maxSize:a.maxSize,collapsible:a.collapsible??!1,panels:[],activePanelId:void 0}],this.emitLayoutChange()}async addRegion(a){this.root&&this.root.children||(this.root={id:"__root__",title:"Root",direction:this.direction,children:[],panels:[]});const e=a.id||"region-"+Date.now(),i=a.title||"Region "+(this.root.children.length+1),r=a.position||"end",t=a.type||"default";if(this.findRegionNode(e))throw Error(`Region with id '${e}' already exists`);const o={id:e,title:i,size:a.size||100/(this.root.children.length+1),panels:[],activePanelId:void 0,type:t};if(this.root.children="start"===r?[o,...this.root.children]:[...this.root.children,o],!a.skipNormalization){const a=this.root.children.reduce(((a,e)=>a+(e.size||0)),0);this.root.children=this.root.children.map((e=>({...e,size:(e.size||0)/a*100})))}return this.root={...this.root},this.emitLayoutChange(),this.regionAdded.emit({regionId:e,title:i}),e}async normalizeRegionSizes(){if(!this.root||!this.root.children)return;const a=this.root.children.reduce(((a,e)=>a+(e.size||0)),0);0!==a&&(this.root.children=this.root.children.map((e=>({...e,size:(e.size||0)/a*100}))),this.root={...this.root},this.emitLayoutChange())}async removeRegion(a){const e=this.findRegionNode(a);if(!e)return;const{parent:i}=e;if(!i||!i.children)return;const r=i.children.findIndex((e=>e.id===a)),t=i.children[r],o=i.children[r-1]||i.children[r+1];i.children=i.children.filter((e=>e.id!==a)),o&&t&&t.panels?.length&&(o.panels=[...o.panels||[],...t.panels],o.activePanelId=o.activePanelId||t.activePanelId||(o.panels||[])[(o.panels||[]).length-1]);const n=i.children,s=n.reduce(((a,e)=>a+(e.size||0)),0)||100;i.children=n.map((a=>({...a,size:(a.size||0)/s*100}))),this.root={...this.root},this.emitLayoutChange(),this.regionRemoved.emit({regionId:a})}onPanelPopout(a){this.popoutPanel(a.detail.panelId)}onPanelSelect(a){const e=this.findRegionNode(a.detail.regionId)?.node;e&&(e.activePanelId=a.detail.panelId,this.root={...this.root},this.emitLayoutChange())}emitLayoutChange(){const a=[],e=i=>{i.children&&i.children.length?i.children.forEach(e):a.push(i)};e(this.root),this.layoutChange.emit({regions:a}),this.saveState&&this.saveStateToStorage()}saveStateToStorage(){try{const a=Object.fromEntries(Object.entries(this.panelsById).map((([a,e])=>{const{element:i,...r}=e;return[a,r]})));localStorage.setItem(this.stateKey,JSON.stringify({root:this.root,panelsById:a,minimizedRegions:this.minimizedRegions}))}catch(a){console.error("[WorkspaceManager] Failed to save state",a)}}loadState(){try{const a=localStorage.getItem(this.stateKey);if(a){const e=JSON.parse(a);this.root=e.root,this.panelsById=e.panelsById,this.minimizedRegions=e.minimizedRegions||{}}}catch(a){console.error("[WorkspaceManager] Failed to load state",a)}}findRegionNode(a){let e;const i=(r,t)=>{r.id!==a?r.children&&r.children.forEach((a=>i(a,r))):e={node:r,parent:t}};return i(this.root),e}scrollTabs(a,e){const i=document.querySelector(`[data-region-id="${a}"] .lm-tabs`);i&&i.scrollBy({left:"left"===e?-200:200,behavior:"smooth"})}togglePanelDropdown(a,e){e?.stopPropagation();const i=!this.openDropdowns[a];if(this.openDropdowns={...this.openDropdowns,[a]:i},i&&e){this.floatingDropdownTrigger=e.currentTarget;const i=c(this.floatingDropdownTrigger,{menuWidth:200,menuHeight:300,gap:4,align:"end"});this.floatingDropdown={x:i.left??0,y:i.top??0,regionId:a,type:"panel"}}else this.floatingDropdown=void 0,this.floatingDropdownTrigger=void 0}selectPanelFromDropdown(a,e){this.selectPanel(a,e),this.openDropdowns={...this.openDropdowns,[a]:!1},this.floatingDropdown=void 0}toggleActionsMenu(a,e){e?.stopPropagation();const i=!this.openActionsMenu[a];if(this.openActionsMenu={...this.openActionsMenu,[a]:i},i&&e){this.floatingDropdownTrigger=e.currentTarget;const i=c(this.floatingDropdownTrigger,{menuWidth:200,menuHeight:300,gap:4,align:"end"});this.floatingDropdown={x:i.left??0,y:i.top??0,regionId:a,type:"actions"}}else this.floatingDropdown=void 0,this.floatingDropdownTrigger=void 0}minimizeRegion(a){if(this.maximizedPanel)return;const e=this.findRegionNode(a);if(!e)return;const i=e.node,r=e.parent;if(this.maximizedPanel){const e=this.panelsById[this.maximizedPanel];if(e&&e.regionId===a)return}const t=i.panels?.[0]?this.panelsById[i.panels[0]]:null,o=t?.icon||"fas fa-window-minimize";let n,s=-1,c="left";if(r&&r.children){s=r.children.findIndex((e=>e.id===a)),n=r.id,c=s<Math.floor(r.children.length/2)?"left":"right";const e=r.children.filter((e=>e.id!==a));if(e.length>0){const a=e.reduce(((a,e)=>a+(e.size||0)),0);if(a>0)e.forEach((e=>{e.size=(e.size||0)/a*100}));else{const a=100/e.length;e.forEach((e=>{e.size=a}))}}r.children=e}else if(this.root.id===a)return;this.minimizedRegions={...this.minimizedRegions,[a]:{title:i.title||a,icon:o,iconLibrary:t?.iconLibrary,region:{...i},parentId:n,index:s,side:c}},this.layoutVersion++,this.root={...this.root},this.emitLayoutChange()}restoreRegion(a){const e=this.minimizedRegions[a];if(!e)return;const{region:i,parentId:r,index:t}=e;if(r){const a=this.findRegionNode(r);if(a&&a.node&&a.node.children){const e=a.node,r=JSON.parse(JSON.stringify(i)),o=[...e.children??[]];o.splice(t,0,r);const n=o.reduce(((a,e)=>a+(e.size||0)),0);n>0&&o.forEach((a=>{a.size=(a.size||0)/n*100})),e.children=o,this.layoutVersion++}}const{[a]:o,...n}=this.minimizedRegions;this.minimizedRegions=n,this.root={...this.root},this.emitLayoutChange()}closeAllAndRemoveRegion(a){const e=this.findRegionNode(a)?.node;e&&([...e.panels].forEach((a=>{this.removePanel(a)})),this.removeRegion(a))}renderTabs(a){const e=a.panels.map((a=>this.panelsById[a])).filter(Boolean),i=e.filter((a=>a.pinned)),t=e.filter((a=>!a.pinned)),o=i.length>0&&t.length>0,n=this.regionsNeedingScroll[a.id]||!1;return r("div",{class:"lm-tabs-container","data-region-id":a.id},n&&r("ui-button",{variant:"ghost",size:"sm",icon:"chevron-left",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Scroll left",onClick:()=>this.scrollTabs(a.id,"left")}),r("div",{class:"lm-tabs",onDragOver:e=>{e.preventDefault(),this.handleDragOver(e,a.id)},onDragLeave:()=>this.dragOverTarget=void 0,onDrop:e=>this.handleTabDrop(e,a)},e.map(((i,t)=>{const n=i.pinned;return r("div",{key:i.id},!n&&t>0&&e[t-1]?.pinned&&o&&r("div",{class:"lm-tab-separator",title:"Pinned / Unpinned divider"}),r("div",{class:{"lm-tab":!0,active:a.activePanelId===i.id,pinned:!!n},draggable:!0,onDragStart:e=>this.handleTabDragStart(e,i,a),onContextMenu:e=>this.openContextMenu(e,a.id,i.id),onClick:()=>this.selectPanel(a.id,i.id)},i.icon&&r("ui-icon",{name:i.icon,library:i.iconLibrary||"lucide"}),r("span",{class:"lm-tab-title"},i.title),n&&r("ui-icon",{name:"thumbtack",library:"fontawesome",class:"lm-tab-btn",title:"Unpin",onClick:a=>{a.stopPropagation(),this.togglePin(i.id)}}),i.dirty&&r("span",{class:"lm-dot",title:"Unsaved changes"}),r("ui-button",{variant:"ghost",size:"sm",icon:"ellipsis-v",iconLibrary:"fontawesome",ariaLabel:"More actions",onClick:a=>{a.stopPropagation();const e=!this.openDropdowns["tab-"+i.id];if(this.openDropdowns={...this.openDropdowns,["tab-"+i.id]:e},e){this.tabActionsMenuTrigger=a.currentTarget;const e=this.tabActionsMenuTrigger.getBoundingClientRect(),r=l(this.el);this.tabActionsMenu={x:e.right-r.x,y:e.bottom-r.y+4,panelId:i.id}}else this.tabActionsMenu=void 0,this.tabActionsMenuTrigger=void 0}}),i.closable&&!n&&r("ui-button",{variant:"ghost",size:"sm",icon:"times",iconLibrary:"fontawesome",ariaLabel:"Close",onClick:a=>{a.stopPropagation(),this.removePanel(i.id)}})))}))),n&&r("ui-button",{variant:"ghost",size:"sm",icon:"chevron-right",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Scroll right",onClick:()=>this.scrollTabs(a.id,"right")}))}handleTabDragStart(a,e,i){this.draggingPanel={panelId:e.id,fromRegionId:i.id},a.dataTransfer?.setData("text/plain",e.id),a.dataTransfer?.setDragImage(a.target,0,0)}handleTabDrop(a,e){a.preventDefault();const i=a.dataTransfer?.getData("text/plain")||this.draggingPanel?.panelId;if(!i)return;let r;const t=a.target.closest(".lm-tab");t&&(r=Array.from(t.parentElement.querySelectorAll(".lm-tab")).indexOf(t)),this.movePanel(i,e.id,r),this.draggingPanel=void 0}selectPanel(a,e){const i=this.findRegionNode(a)?.node;i&&(i.activePanelId=e,this.root={...this.root},this.emitLayoutChange())}switchToPanel(a,e){const i=this.findRegionNode(a)?.node;i&&i.panels.includes(e)&&(i.activePanelId=e,this.root={...this.root})}renderNavigationRegion(a){const e=a.panels.map((a=>this.panelsById[a])).filter(Boolean);return r("div",{class:"lm-region lm-region-navigation","data-region-id":a.id},r("div",{class:"lm-region-header"},r("div",{class:"lm-navigation-header"},r("span",{class:"lm-navigation-title"},a.title||"Navigation")),r("ui-button",{variant:"ghost",size:"sm",icon:"times-circle",iconLibrary:"fontawesome",ariaLabel:"Close all panels and remove region",onClick:()=>this.closeAllAndRemoveRegion(a.id)})),r("div",{class:"lm-navigation-content"},e.map((e=>r("div",{class:"lm-navigation-section","data-panel-id":e.id},r("div",{class:{"lm-navigation-section-header":!0,active:a.activePanelId===e.id},onClick:()=>this.switchToPanel(a.id,e.id)},e.icon&&r("ui-icon",{name:e.icon,library:e.iconLibrary||"default"}),r("span",{class:"lm-navigation-section-title"},e.title),r("ui-button",{variant:"ghost",size:"sm",class:"lm-navigation-section-close",icon:"times",iconLibrary:"fontawesome",ariaLabel:"Close panel",onClick:a=>{a.stopPropagation(),this.removePanel(e.id)}})),a.activePanelId===e.id&&r("div",{class:"lm-navigation-section-content",ref:a=>this.attachContent(a,e)})))),0===e.length&&r("div",{class:"lm-empty"},"No panels open")))}renderHeaderOnlyRegion(a){const e=a.activePanelId?this.panelsById[a.activePanelId]:void 0;return r("div",{class:"lm-region lm-region-header-only","data-region-id":a.id},r("div",{class:"lm-region-header"},r("div",{class:"lm-header-only-title"},e?.icon&&r("ui-icon",{name:e.icon,library:e.iconLibrary||"default"}),r("span",null,e?.title||a.title||"Content")),r("div",{class:"lm-header-only-actions"},r("div",{class:"lm-panel-dropdown-wrapper"},r("ui-button",{variant:"ghost",size:"sm",icon:"list",iconLibrary:"fontawesome",ariaLabel:"Show all panels",onClick:e=>this.togglePanelDropdown(a.id,e)})),e&&r("ui-button",{variant:"ghost",size:"sm",icon:"expand",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Maximize",onClick:()=>this.maximizePanel(e.id)}),e&&r("ui-button",{variant:"ghost",size:"sm",icon:"external-link-alt",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Pop out",onClick:()=>this.popoutPanel(e.id)}),r("ui-button",{variant:"ghost",size:"sm",icon:"times-circle",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close all panels and remove region",onClick:()=>this.closeAllAndRemoveRegion(a.id)}))),r("div",{class:"lm-region-content"},e&&r("div",{class:"lm-panel-host","data-panel-id":e.id,ref:a=>this.attachContent(a,e)}),!e&&r("div",{class:"lm-empty"},"No content available")))}renderLeafRegion(a){const e=a.activePanelId?this.panelsById[a.activePanelId]:void 0,i=a.type||"default",t="no-header"!==i&&"content-only"!==i,o="title-only"!==i&&"no-header"!==i&&"content-only"!==i&&"navigation"!==i&&"header-only"!==i,n="default"===i,s=this.regionsNeedingScroll[a.id]||!1;return"content-only"===i?r("div",{class:"lm-region lm-region-content-only","data-region-id":a.id},e&&r("div",{class:"lm-panel-host","data-panel-id":e.id,ref:a=>this.attachContent(a,e)})):"navigation"===i?this.renderNavigationRegion(a):"header-only"===i?this.renderHeaderOnlyRegion(a):r("div",{class:{"lm-region":!0,["lm-region-"+i]:!0},"data-region-id":a.id},t&&r("div",{class:"lm-region-header"},"title-only"===i&&r("div",{class:"lm-region-title"},r("span",null,a.title)),o&&this.renderTabs(a),n&&r("div",{class:"lm-region-actions"},s&&r("div",{class:"lm-panel-dropdown-wrapper"},r("ui-button",{variant:"ghost",size:"sm",icon:"list",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Show all panels",onClick:e=>this.togglePanelDropdown(a.id,e)})),r("div",{class:"lm-actions-menu-wrapper"},r("ui-button",{variant:"ghost",size:"sm",icon:"ellipsis-v",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Actions",onClick:e=>this.toggleActionsMenu(a.id,e)})),r("ui-button",{variant:"ghost",size:"sm",icon:"window-minimize",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Minimize region",onClick:()=>this.minimizeRegion(a.id)}),(a.panels?.length||0)>0&&r("ui-button",{variant:"ghost",size:"sm",icon:"times-circle",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close all panels and remove region",onClick:()=>this.closeAllAndRemoveRegion(a.id)}))),r("div",{class:"lm-region-content",onDragOver:e=>{e.preventDefault(),this.handleDragOver(e,a.id)},onDragLeave:()=>this.dragOverTarget=void 0,onDrop:e=>this.handleTabDrop(e,a)},e&&r("div",{class:"lm-panel-host","data-panel-id":e.id,ref:a=>this.attachContent(a,e)}),!e&&r("div",{class:"lm-empty"},"No tabs open"),this.dragOverTarget?.regionId===a.id&&r("div",{class:"lm-drop-highlighter lm-drop-"+this.dragOverTarget.position})))}renderRegionNode(a){if(a.children&&a.children.length){const e=a.children.map((a=>({id:a.id,size:a.size,minSize:a.minSize,maxSize:a.maxSize,collapsible:a.collapsible})));return r("ui-resizable-panel",{key:`resizable-${a.id}-v${this.layoutVersion}`,direction:a.direction||"horizontal",panels:JSON.stringify(e),saveState:!1,stateKey:`${this.stateKey}-${a.id}`,showHandleIcon:!0},a.children.map((a=>r("div",{slot:a.id,class:"lm-slot"},this.renderRegionNode(a)))))}return this.renderLeafRegion(a)}attachContent(a,e){if(a){for(;a.firstChild;)a.removeChild(a.firstChild);e.element?a.appendChild(e.element):e.html&&(a.innerHTML=n(e.html))}}renderVerticalNav(a){const e=Object.entries(this.minimizedRegions).filter((([e,i])=>i.side===a));return 0===e.length?null:r("div",{class:"lm-vertical-nav lm-vertical-nav-"+a},e.map((([a,e])=>r("div",{key:a,class:"lm-nav-item",title:e.title,onClick:()=>this.restoreRegion(a)},r("ui-icon",{name:e.icon,library:e.iconLibrary||"default"}),r("span",{class:"lm-nav-label"},e.title)))))}render(){if(this.maximizedPanel){const a=this.panelsById[this.maximizedPanel];if(a)return r(t,null,r("div",{class:"lm-container lm-maximized"},r("div",{class:"lm-maximized-panel"},r("div",{class:"lm-maximized-header"},r("span",{class:"lm-maximized-title"},a.title),r("div",{class:"lm-maximized-actions"},r("ui-button",{variant:"ghost",size:"sm",icon:"compress",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Restore",onClick:()=>this.restorePanel()}),r("ui-button",{variant:"ghost",size:"sm",icon:"times",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close",onClick:()=>this.removePanel(this.maximizedPanel)}))),r("div",{class:"lm-maximized-content",ref:e=>this.attachContent(e,a)}))))}return r(t,null,this.renderVerticalNav("left"),r("div",{class:"lm-container"},this.root&&this.renderRegionNode(this.root),r("div",{class:"lm-popout-layer"},Object.keys(this.popouts).map((a=>{const e=this.popouts[a],i=this.panelsById[a];return i?r("div",{class:"lm-popout-window",style:{left:e.x+"px",top:e.y+"px",width:e.width+"px",height:e.height+"px"},"data-panel-id":a},r("div",{class:"lm-popout-header",onMouseDown:e=>this.startPopoutDrag(e,a)},r("span",{class:"lm-popout-title"},i.title),r("div",{class:"lm-popout-actions"},r("ui-button",{variant:"ghost",size:"sm",icon:"download",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Dock",onClick:()=>this.dockPanel(a,i.regionId)}),r("ui-button",{variant:"ghost",size:"sm",icon:"times",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close",onClick:()=>this.removePanel(a)}))),r("div",{class:"lm-popout-content",ref:a=>this.attachContent(a,i)})):null}))),this.contextMenu&&this.renderContextMenu(),this.tabActionsMenu&&this.renderTabActionsMenu(),this.floatingDropdown&&this.renderFloatingDropdown()),this.renderVerticalNav("right"))}startPopoutDrag(a,e){const i=this.popouts[e];if(!i)return;const r=a.currentTarget.parentElement.getBoundingClientRect();this.draggingPopout={panelId:e,offsetX:a.clientX-r.left,offsetY:a.clientY-r.top};const t=a=>{let r=a.clientX-this.draggingPopout.offsetX,t=a.clientY-this.draggingPopout.offsetY;const o=window.innerWidth,n=window.innerHeight;Math.abs(r)<20&&(r=0),Math.abs(t)<20&&(t=0),Math.abs(r+i.width-o)<20&&(r=o-i.width),Math.abs(t+i.height-n)<20&&(t=n-i.height),this.popouts[e]={...this.popouts[e],x:r,y:t},this.popouts={...this.popouts}},o=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",o),this.draggingPopout=void 0};document.addEventListener("mousemove",t),document.addEventListener("mouseup",o)}openContextMenu(a,e,i){a.preventDefault();const r=m(a.clientX,a.clientY,this.el);this.contextMenu={x:r.x,y:r.y,regionId:e,panelId:i};const t=()=>{this.contextMenu=void 0,document.removeEventListener("click",t)};document.addEventListener("click",t,{once:!0})}renderContextMenu(){const{x:a,y:e,regionId:i,panelId:t}=this.contextMenu,o=this.panelsById[t];return r("div",{class:"lm-context-menu",style:{left:a+"px",top:e+"px"}},r("ui-button",{variant:"ghost",fullWidth:!0,icon:"thumbtack",iconLibrary:"fontawesome",iconSize:"14px",label:o?.pinned?"Unpin Tab":"Pin Tab",onClick:()=>{this.togglePin(t),this.contextMenu=void 0}}),r("hr",null),r("ui-button",{variant:"ghost",fullWidth:!0,disabled:o?.pinned,label:o?.pinned?"Close (Pinned)":"Close",onClick:()=>{this.removePanel(t),this.contextMenu=void 0}}),r("ui-button",{variant:"ghost",fullWidth:!0,icon:"arrows-alt-h",iconLibrary:"fontawesome",iconSize:"14px",label:"Close Others",onClick:()=>{this.closeOthers(i,t),this.contextMenu=void 0}}),r("ui-button",{variant:"ghost",fullWidth:!0,icon:"arrow-right",iconLibrary:"fontawesome",iconSize:"14px",label:"Close to the Right",onClick:()=>{this.closeToRight(i,t),this.contextMenu=void 0}}),r("hr",null),r("ui-button",{variant:"ghost",fullWidth:!0,label:"Move to New Group (H)",onClick:()=>{this.splitRegion(i,"horizontal").then((()=>this.movePanel(t,i+"-b"))),this.contextMenu=void 0}}),r("ui-button",{variant:"ghost",fullWidth:!0,label:"Move to New Group (V)",onClick:()=>{this.splitRegion(i,"vertical").then((()=>this.movePanel(t,i+"-b"))),this.contextMenu=void 0}}))}renderTabActionsMenu(){const{x:a,y:e,panelId:i}=this.tabActionsMenu,t=this.panelsById[i];return t?r("div",{class:"lm-tab-actions-menu-fixed",style:{left:a+"px",top:e+"px"}},r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.maximizePanel(i),this.openDropdowns={...this.openDropdowns,["tab-"+i]:!1},this.tabActionsMenu=void 0}},r("ui-icon",{name:"expand",library:"fontawesome",size:"14px"}),r("span",null,"Maximize")),t.allowPopout&&r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.popoutPanel(i),this.openDropdowns={...this.openDropdowns,["tab-"+i]:!1},this.tabActionsMenu=void 0}},r("ui-icon",{name:"window-restore",library:"fontawesome"}),r("span",null,"Pop Out")),r("div",{class:"lm-tab-actions-divider"}),r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.togglePin(i),this.openDropdowns={...this.openDropdowns,["tab-"+i]:!1},this.tabActionsMenu=void 0}},r(r.Fragment,null,r("ui-icon",{name:"thumbtack",library:"fontawesome"}),r("span",null,t.pinned?"Unpin Tab":"Pin Tab"))),r("div",{class:"lm-tab-actions-divider"}),r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.closeOthers(t.regionId,i),this.tabActionsMenu=void 0}},r("ui-icon",{name:"arrows-alt-h",library:"fontawesome"}),r("span",null,"Close Others")),r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.closeToRight(t.regionId,i),this.tabActionsMenu=void 0}},r("ui-icon",{name:"arrow-right",library:"fontawesome"}),r("span",null,"Close to the Right")),r("div",{class:"lm-tab-actions-divider"}),r("div",{class:"lm-tab-actions-item lm-tab-actions-danger",onClick:a=>{a.stopPropagation(),this.removePanel(i),this.tabActionsMenu=void 0}},r("ui-icon",{name:"times",library:"fontawesome"}),r("span",null,"Close"))):null}closeOthers(a,e){const i=this.findRegionNode(a)?.node;i&&(i.panels||[]).filter((a=>a!==e)).forEach((a=>this.removePanel(a)))}closeToRight(a,e){const i=this.findRegionNode(a)?.node;if(!i)return;const r=(i.panels||[]).indexOf(e);(i.panels||[]).slice(r+1).forEach((a=>this.removePanel(a)))}togglePin(a){const e=this.panelsById[a];if(!e)return;e.pinned=!e.pinned;const i=this.findRegionNode(e.regionId)?.node;if(!i||!i.panels)return;const r=i.panels.map((a=>this.panelsById[a])).filter(Boolean),t=r.filter((a=>a.pinned)).map((a=>a.id)),o=r.filter((a=>!a.pinned)).map((a=>a.id));i.panels=[...t,...o],this.panelsById={...this.panelsById},this.root={...this.root}}checkTabsOverflow(){const a=[],e=i=>{i.panels&&a.push(i),i.children&&i.children.forEach(e)};this.root&&e(this.root);const i={};a.forEach((a=>{const e=this.el.querySelector(`[data-region-id="${a.id}"] .lm-tabs`);e&&(i[a.id]=e.scrollWidth>e.offsetWidth)})),JSON.stringify(i)!==JSON.stringify(this.regionsNeedingScroll)&&(this.regionsNeedingScroll=i)}handleDragOver(a,e){const i=a.currentTarget.getBoundingClientRect(),r=a.clientX-i.left,t=a.clientY-i.top;let o="center";t<.2*i.height?o="top":t>.8*i.height?o="bottom":r<.2*i.width?o="left":r>.8*i.width&&(o="right"),this.dragOverTarget={regionId:e,position:o}}renderFloatingDropdown(){if(!this.floatingDropdown)return null;const{x:a,y:e,regionId:i,type:t}=this.floatingDropdown,o=this.findRegionById(this.root,i);if(!o)return null;if("panel"===t){const i=o.panels.map((a=>this.panelsById[a])).filter(Boolean);return r("div",{class:"lm-panel-dropdown-menu",style:{position:"fixed",top:e+"px",left:a+"px",zIndex:"12000",minWidth:"200px"}},r("div",{class:"lm-panel-dropdown-header"},"All Panels (",i.length,")"),i.map((a=>r("div",{class:{"lm-panel-dropdown-item":!0,active:o.activePanelId===a.id},onClick:()=>this.selectPanelFromDropdown(o.id,a.id)},a.icon&&r("ui-icon",{name:a.icon,library:a.iconLibrary||"lucide",style:{marginRight:"8px"}}),r("span",null,a.title)))))}{const i=o.activePanelId?this.panelsById[o.activePanelId]:null;return r("div",{class:"lm-actions-dropdown-menu",style:{position:"fixed",top:e+"px",left:a+"px",zIndex:"12000",minWidth:"180px"}},r("div",{class:"lm-actions-item",onClick:()=>{this.splitRegion(o.id,"horizontal"),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"columns",library:"fontawesome",class:"lm-actions-icon"}),"Split Horizontal"),r("div",{class:"lm-actions-item",onClick:()=>{this.splitRegion(o.id,"vertical"),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"grip-lines",library:"fontawesome",class:"lm-actions-icon"}),"Split Vertical"),r("div",{class:"lm-actions-divider"}),i&&r("div",{class:"lm-actions-item",onClick:()=>{this.maximizePanel(i.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"expand",library:"fontawesome",class:"lm-actions-icon"}),"Maximize Panel"),(o.panels?.length||0)>0&&r(r.Fragment,null,r("div",{class:"lm-actions-divider"}),r("div",{class:"lm-actions-item",onClick:()=>{this.closeAllPanels(o.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"times",library:"fontawesome",class:"lm-actions-icon"}),"Close All Panels")),r("div",{class:"lm-actions-divider"}),r("div",{class:"lm-actions-item",onClick:()=>{this.mergeRegion(o.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"compress",library:"fontawesome",class:"lm-actions-icon"}),"Merge Region"),r("div",{class:"lm-actions-divider"}),r("div",{class:"lm-actions-item lm-actions-danger",onClick:()=>{this.closeAllAndRemoveRegion(o.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"trash",library:"fontawesome",class:"lm-actions-icon"}),"Remove Group"))}}findRegionById(a,e){if(a.id===e)return a;for(const i of a.children??[]){const a=this.findRegionById(i,e);if(a)return a}return null}componentDidUpdate(){setTimeout((()=>this.checkTabsOverflow()),0)}static get watchers(){return{regions:[{handleRegionsChange:0}]}}static get style(){return'.sr-only.sc-ui-workspace-manager{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only.sc-ui-workspace-manager{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.sc-ui-workspace-manager-h{display:flex;height:100%;width:100%;overflow:hidden}.lm-vertical-nav.sc-ui-workspace-manager{width:50px;background:var(--bg-secondary, #2b2b2b);display:flex;flex-direction:column;align-items:center;padding:0;gap:0;overflow-y:auto;flex-shrink:0}.lm-vertical-nav.lm-vertical-nav-left.sc-ui-workspace-manager{border-right:1px solid var(--border-strong, #3e3e42);box-shadow:2px 0 8px rgba(0, 0, 0, 0.3)}.lm-vertical-nav.lm-vertical-nav-right.sc-ui-workspace-manager{border-left:1px solid var(--border-strong, #3e3e42);box-shadow:-2px 0 8px rgba(0, 0, 0, 0.3)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager{width:100%;height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted, #858585);transition:all 0.15s ease;padding:0;position:relative}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager::before{content:"";position:absolute;top:0;bottom:0;width:2px;background:transparent;transition:background 0.15s ease}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:24px;margin-bottom:0}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager .lm-nav-label.sc-ui-workspace-manager{font-size:8px;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-weight:400;letter-spacing:0.5px;text-transform:uppercase}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:hover{background:var(--bg-secondary, #2d2d30);color:var(--text-standard, #ffffff)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:hover::before{background:var(--bg-secondary, #505050)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:active,.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.active.sc-ui-workspace-manager{background:var(--bg-primary, #1e1e1e);color:var(--text-standard, #ffffff)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:active::before,.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.active.sc-ui-workspace-manager::before{background:var(--color-primary, #007acc)}.lm-vertical-nav.lm-vertical-nav-left.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager::before{left:0}.lm-vertical-nav.lm-vertical-nav-right.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager::before{right:0}.lm-container.sc-ui-workspace-manager{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.lm-container.lm-maximized.sc-ui-workspace-manager{background:var(--bg-secondary, #0f172a)}.lm-maximized-panel.sc-ui-workspace-manager{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg-secondary, #0f172a);overflow:hidden}.lm-maximized-header.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg, var(--color-primary, #1e3a8a) 0%, var(--color-primary, #10b981) 100%);color:var(--text-standard, #ffffff);padding:8px 12px;border-bottom:1px solid var(--color-primary-hover, #2563eb);flex-shrink:0;min-height:40px;box-shadow:0 2px 8px rgba(0, 0, 0, 0.3)}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-title.sc-ui-workspace-manager{font-size:16px;font-weight:600}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager{display:flex;gap:8px}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager{background:rgba(255, 255, 255, 0.2);border:none;color:var(--text-standard, #ffffff);cursor:pointer;padding:6px 10px;border-radius:4px;transition:all 0.2s;font-size:14px}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager:hover{background:rgba(255, 255, 255, 0.3);transform:scale(1.05)}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager i.sc-ui-workspace-manager{pointer-events:none}.lm-maximized-content.sc-ui-workspace-manager{flex:1;overflow:auto;background:var(--bg-secondary, #0f172a);color:var(--text-standard, #e5e7eb)}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar{width:8px;height:8px}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1e293b)}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #475569);border-radius:4px}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #64748b)}.lm-slot.sc-ui-workspace-manager{width:100%;height:100%;display:flex;flex-direction:column;min-height:0;min-width:0}.lm-region.sc-ui-workspace-manager{display:flex;flex-direction:column;height:100%;width:100%;min-height:0;min-width:0;overflow:visible;position:relative}.lm-region.lm-region-navigation.sc-ui-workspace-manager .lm-region-header.sc-ui-workspace-manager{background:var(--color-primary, #1e3a8a);border-bottom:2px solid var(--color-primary, #10b981)}.lm-region.lm-region-title-only.sc-ui-workspace-manager .lm-region-header.sc-ui-workspace-manager{background:var(--color-primary, #374151);justify-content:center;padding:8px 12px}.lm-region.lm-region-no-header.sc-ui-workspace-manager .lm-region-content.sc-ui-workspace-manager{border-radius:0}.lm-region.lm-region-content-only.sc-ui-workspace-manager{overflow:hidden}.lm-region.lm-region-content-only.sc-ui-workspace-manager .lm-panel-host.sc-ui-workspace-manager{width:100%;height:100%;margin:0;padding:0;border:none;background:transparent}.lm-region.lm-region-header-only.sc-ui-workspace-manager .lm-region-header.sc-ui-workspace-manager{background:var(--bg-primary, #1f2937);padding:6px 12px;border-bottom:2px solid var(--color-primary, #10b981)}.lm-region-title.sc-ui-workspace-manager{flex:1;display:flex;align-items:center;font-weight:600;font-size:14px;color:var(--text-standard, #e5e7eb);padding:0 8px}.lm-navigation-header.sc-ui-workspace-manager{flex:1;display:flex;align-items:center;gap:8px;padding:0 8px}.lm-navigation-title.sc-ui-workspace-manager{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-standard, #ffffff)}.lm-region-header.sc-ui-workspace-manager{display:flex;align-items:center;gap:4px;background:var(--bg-primary, #1f2937);color:var(--text-standard, #e5e7eb);padding:2px 6px;border-bottom:1px solid var(--border-default, #374151);flex-shrink:0;min-height:36px;min-width:0;width:100%;overflow:visible;position:relative;z-index:11000;box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.lm-tabs-container.sc-ui-workspace-manager{display:flex;align-items:center;gap:4px;background:var(--bg-secondary, #0f172a);padding:0 4px;flex:1;min-width:0;overflow:visible;max-width:100%}.lm-tab-scroll-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;cursor:pointer;flex-shrink:0;flex-basis:28px;transition:all 0.2s ease}.lm-tab-scroll-btn.sc-ui-workspace-manager:hover{transform:translateY(-1px)}.lm-tab-scroll-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-tab-scroll-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:12px}.lm-tabs.sc-ui-workspace-manager{display:flex;gap:2px;overflow-x:auto;overflow-y:visible;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #374151) var(--text-primary, #1f2937);flex:1;min-width:0}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar{height:6px}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1f2937)}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #374151);border-radius:3px}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #4b5563)}.lm-tab-separator.sc-ui-workspace-manager{width:1px;background:linear-gradient(to bottom, transparent 20%, var(--color-primary, #10b981) 50%, transparent 80%);margin:0 4px;flex-shrink:0;opacity:0.5}.lm-panel-dropdown-wrapper.sc-ui-workspace-manager{position:relative;flex-shrink:0;z-index:1}.lm-panel-list-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-panel-list-btn.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--text-standard, #e5e7eb);border-color:var(--border-dark)}.lm-panel-list-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-panel-list-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-panel-dropdown-menu.sc-ui-workspace-manager{position:absolute;top:calc(100% + 4px);right:0;min-width:220px;max-width:320px;max-height:400px;overflow-y:auto;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.5);z-index:2;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #4b5563) var(--text-primary, #1f2937)}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar{width:6px}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1f2937)}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #4b5563);border-radius:3px}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #6b7280)}.lm-panel-dropdown-header.sc-ui-workspace-manager{padding:8px 12px;font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-secondary);border-bottom:1px solid var(--border-default, #374151);background:var(--bg-secondary, #111827);position:sticky;top:0;z-index:1}.lm-panel-dropdown-item.sc-ui-workspace-manager{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;transition:all 0.15s ease;color:var(--text-standard, #e5e7eb);font-size:13px}.lm-panel-dropdown-item.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151)}.lm-panel-dropdown-item.active.sc-ui-workspace-manager{background:var(--color-primary, #10b981);color:var(--text-standard, #ffffff);font-weight:500}.lm-panel-dropdown-item.sc-ui-workspace-manager i.sc-ui-workspace-manager:first-child{width:16px;text-align:center;font-size:12px;color:var(--text-muted, #9ca3af)}.lm-panel-dropdown-item.sc-ui-workspace-manager .lm-panel-dropdown-title.sc-ui-workspace-manager{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lm-panel-dropdown-item.sc-ui-workspace-manager .fa-check.sc-ui-workspace-manager{color:var(--text-standard, #ffffff);font-size:12px}.lm-panel-dropdown-item.sc-ui-workspace-manager .lm-dot.sc-ui-workspace-manager{width:6px;height:6px;border-radius:50%;background:var(--color-warning, #f59e0b)}.lm-minimize-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-minimize-btn.sc-ui-workspace-manager:hover{background:var(--color-primary, #10b981);color:var(--text-standard, #ffffff);border-color:var(--primary-color)}.lm-minimize-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-minimize-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-close-all-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-close-all-btn.sc-ui-workspace-manager:hover{background:var(--color-danger, #991b1b);color:var(--color-danger, #fca5a5);border-color:var(--color-danger-hover, #dc2626)}.lm-close-all-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-close-all-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-actions-menu-wrapper.sc-ui-workspace-manager{position:relative;flex-shrink:0;z-index:1}.lm-actions-menu-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-actions-menu-btn.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--text-standard, #e5e7eb);border-color:var(--border-dark)}.lm-actions-menu-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-actions-menu-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-actions-dropdown-menu.sc-ui-workspace-manager{position:absolute;top:calc(100% + 4px);right:0;min-width:180px;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.5);z-index:2;overflow:hidden}.lm-actions-menu-item.sc-ui-workspace-manager{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;transition:all 0.15s ease;color:var(--text-standard, #e5e7eb);font-size:13px}.lm-actions-menu-item.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151)}.lm-actions-menu-item.sc-ui-workspace-manager i.sc-ui-workspace-manager{width:16px;text-align:center;font-size:13px;color:var(--text-muted, #9ca3af)}.lm-actions-menu-item.sc-ui-workspace-manager span.sc-ui-workspace-manager{flex:1}.lm-actions-menu-divider.sc-ui-workspace-manager{height:1px;background:var(--color-primary, #374151);margin:4px 0}.lm-tab.sc-ui-workspace-manager{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:4px 4px 0 0;background:var(--bg-secondary, #111827);cursor:pointer;user-select:none;white-space:nowrap;flex-shrink:0;transition:all 0.2s ease;border:1px solid transparent;border-bottom:none;position:relative;z-index:1}.lm-tab.sc-ui-workspace-manager:hover{background:var(--bg-primary, #1f2937);border-color:var(--border-dark);transform:translateY(-1px);z-index:2}.lm-tab.sc-ui-workspace-manager .fa-thumbtack.sc-ui-workspace-manager{color:var(--primary-color);font-size:11px;animation:pinPulse 2s ease-in-out infinite}@keyframes pinPulse{0%,100%{opacity:0.7}50%{opacity:1}}.lm-tab.active.sc-ui-workspace-manager{background:var(--bg-primary, #0b1020);color:var(--text-standard, #ffffff);border-color:var(--primary-color);box-shadow:0 2px 8px rgba(var(--color-success-rgb, 61, 205, 88), 0.2)}.lm-tab.sc-ui-workspace-manager .lm-dot.sc-ui-workspace-manager{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-danger, #eab308)}.lm-region-actions.sc-ui-workspace-manager{margin-left:auto;display:inline-flex;gap:6px}.lm-region-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager{appearance:none;border:none;background:transparent;color:inherit;padding:6px;cursor:pointer;border-radius:4px;transition:all 0.2s ease;display:inline-flex;align-items:center;justify-content:center}.lm-region-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--primary-color)}.lm-region-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.sc-ui-workspace-manager{appearance:none;border:none;background:transparent;color:inherit;padding:4px;cursor:pointer;border-radius:4px;transition:all 0.15s ease;display:inline-flex;align-items:center;justify-content:center}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.sc-ui-workspace-manager:hover{background:rgba(var(--color-success-rgb, 61, 205, 88), 0.15);color:var(--primary-color);transform:scale(1.1)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.sc-ui-workspace-manager:active{transform:scale(0.9)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.lm-tab-actions.sc-ui-workspace-manager:hover{background:rgba(156, 163, 175, 0.15);color:var(--text-muted, #9ca3af)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.lm-close.sc-ui-workspace-manager:hover{background:rgba(var(--color-danger-rgb, 220, 38, 38), 0.15);color:var(--color-danger-hover, #dc2626)}.lm-tab-actions-wrapper.sc-ui-workspace-manager{position:relative;display:inline-flex;align-items:center;z-index:1}.lm-tab.sc-ui-workspace-manager:has(.lm-tab-actions-menu){z-index:10002}.lm-tab-actions-menu.sc-ui-workspace-manager{position:absolute;top:100%;right:0;margin-top:4px;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.3);z-index:10001;min-width:140px;overflow:hidden;animation:slideDown 0.15s ease}.lm-tab-actions-menu-fixed.sc-ui-workspace-manager{position:fixed;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 24px rgba(0, 0, 0, 0.5);z-index:12000;min-width:160px;overflow:hidden;transform:translateX(-100%);animation:slideDown 0.15s ease}.lm-tab-actions-item.sc-ui-workspace-manager{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;color:var(--text-standard, #e5e7eb);font-size:13px;transition:all 0.15s ease}.lm-tab-actions-item.sc-ui-workspace-manager i.sc-ui-workspace-manager{width:16px;text-align:center;font-size:13px;color:var(--text-muted, #9ca3af)}.lm-tab-actions-item.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--primary-color)}.lm-tab-actions-item.sc-ui-workspace-manager:hover i.sc-ui-workspace-manager{color:var(--primary-color)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager{color:var(--color-danger, #fca5a5)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager i.sc-ui-workspace-manager{color:var(--color-danger, #fca5a5)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager:hover{background:var(--color-danger, #991b1b);color:var(--text-standard, #ffffff)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager:hover i.sc-ui-workspace-manager{color:var(--text-standard, #ffffff)}.lm-tab-actions-item.sc-ui-workspace-manager:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.lm-tab-actions-item.sc-ui-workspace-manager:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.lm-tab-actions-divider.sc-ui-workspace-manager{height:1px;background:var(--color-primary, #374151);margin:4px 8px}.lm-region-content.sc-ui-workspace-manager{position:relative;flex:1;background:var(--bg-secondary, #0f172a);color:var(--text-standard, #e5e7eb);min-height:0;min-width:0;overflow:hidden;display:flex;flex-direction:column}.lm-panel-host.sc-ui-workspace-manager{position:absolute;inset:0;padding:0;overflow:auto;display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #374151) var(--text-primary, #0f172a)}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar{width:8px;height:8px}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-secondary, #0f172a)}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #374151);border-radius:4px}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #4b5563)}.lm-empty.sc-ui-workspace-manager{position:absolute;inset:0;display:grid;place-items:center;color:var(--text-muted, #9ca3af);font-size:14px;font-style:italic}.lm-popout-layer.sc-ui-workspace-manager{position:absolute;inset:0;pointer-events:none}.lm-popout-window.sc-ui-workspace-manager{position:absolute;background:var(--bg-secondary, #0f172a);border:1px solid var(--color-success, #3dcd58);border-radius:10px;box-shadow:0 20px 60px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(var(--color-success-rgb, 61, 205, 88), 0.3);overflow:hidden;pointer-events:auto;display:flex;flex-direction:column;backdrop-filter:blur(10px)}.lm-popout-header.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:linear-gradient(135deg, var(--bg-primary, #1f2937), var(--bg-secondary, #111827));border-bottom:1px solid var(--border-default, #374151);cursor:move;user-select:none}.lm-popout-header.sc-ui-workspace-manager:active{cursor:grabbing}.lm-popout-content.sc-ui-workspace-manager{flex:1;overflow:auto;padding:0;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #374151) var(--text-primary, #0f172a)}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar{width:8px;height:8px}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-secondary, #0f172a)}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #374151);border-radius:4px}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #4b5563)}.lm-tabs.drag-over.sc-ui-workspace-manager,.lm-region-content.drag-over.sc-ui-workspace-manager{outline:2px dashed var(--color-success, #3dcd58)}.lm-context-menu.sc-ui-workspace-manager{position:fixed;background:var(--bg-secondary, #111827);color:var(--text-standard, #e5e7eb);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 8px 24px rgba(0, 0, 0, 0.4);padding:6px;display:grid;gap:4px;z-index:11000}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager{appearance:none;border:none;background:var(--bg-primary, #1f2937);color:inherit;padding:6px 8px;border-radius:4px;cursor:pointer;text-align:left;display:flex;align-items:center;gap:8px}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager:disabled{opacity:0.5;cursor:not-allowed;color:var(--text-secondary)}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager i.sc-ui-workspace-manager{width:14px;text-align:center}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager:hover:not(:disabled){background:var(--color-primary, #374151)}.lm-navigation-content.sc-ui-workspace-manager{flex:1;overflow-y:auto;overflow-x:hidden;background:var(--bg-secondary, #0f172a)}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar{width:8px}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1e293b)}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #475569);border-radius:4px}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #64748b)}.lm-navigation-section.sc-ui-workspace-manager{border-bottom:1px solid var(--border-subtle, #1e293b)}.lm-navigation-section.sc-ui-workspace-manager:last-child{border-bottom:none}.lm-navigation-section-header.sc-ui-workspace-manager{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg-primary, #1f2937);color:var(--text-standard, #e5e7eb);cursor:pointer;transition:all 0.2s;border-left:3px solid transparent}.lm-navigation-section-header.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151)}.lm-navigation-section-header.active.sc-ui-workspace-manager{background:var(--color-primary, #1e3a8a);border-left-color:var(--primary-color);font-weight:600}.lm-navigation-section-header.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px;color:var(--text-muted, #9ca3af);width:16px;text-align:center}.lm-navigation-section-title.sc-ui-workspace-manager{flex:1;font-size:13px}.lm-navigation-section-close.sc-ui-workspace-manager{display:none;background:transparent;border:none;color:var(--text-muted, #9ca3af);cursor:pointer;padding:4px;border-radius:3px;transition:all 0.2s}.lm-navigation-section-close.sc-ui-workspace-manager:hover{background:rgba(255, 255, 255, 0.1);color:var(--text-standard, #ffffff)}.lm-navigation-section-close.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:12px;pointer-events:none}.lm-navigation-section-header.sc-ui-workspace-manager:hover .lm-navigation-section-close.sc-ui-workspace-manager{display:block}.lm-navigation-section-content.sc-ui-workspace-manager{padding:12px;background:var(--bg-secondary, #0f172a);overflow:auto;max-height:400px}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar{width:6px}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1e293b)}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #475569);border-radius:3px}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #64748b)}.lm-header-only-title.sc-ui-workspace-manager{flex:1;display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;color:var(--text-standard, #e5e7eb)}.lm-header-only-title.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px;color:var(--text-muted, #9ca3af)}.lm-header-only-title.sc-ui-workspace-manager span.sc-ui-workspace-manager{color:var(--text-standard, #ffffff)}.lm-header-only-actions.sc-ui-workspace-manager{display:flex;align-items:center;gap:8px}.lm-header-btn.sc-ui-workspace-manager{background:rgba(255, 255, 255, 0.1);border:none;color:var(--text-standard, #e5e7eb);cursor:pointer;padding:6px 10px;border-radius:4px;transition:all 0.2s;font-size:13px;display:flex;align-items:center;justify-content:center}.lm-header-btn.sc-ui-workspace-manager:hover{background:rgba(255, 255, 255, 0.2);transform:scale(1.05)}.lm-header-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{pointer-events:none}.lm-context-menu.sc-ui-workspace-manager hr.sc-ui-workspace-manager{border:none;border-top:1px solid var(--border-default, #374151);margin:6px 0}'}},[514,"ui-workspace-manager",{regions:[1],direction:[1],saveState:[4,"save-state"],stateKey:[1,"state-key"],root:[32],panelsById:[32],popouts:[32],maximizedPanel:[32],preMaximizeState:[32],draggingPanel:[32],draggingPopout:[32],layoutVersion:[32],contextMenu:[32],tabActionsMenu:[32],floatingDropdown:[32],openDropdowns:[32],openActionsMenu:[32],regionsNeedingScroll:[32],minimizedRegions:[32],dragOverTarget:[32],getLayoutState:[64],clearAllRegions:[64],addPanel:[64],removePanel:[64],movePanel:[64],popoutPanel:[64],dockPanel:[64],splitRegion:[64],maximizePanel:[64],restorePanel:[64],closeAllPanels:[64],mergeRegion:[64],createRegion:[64],addRegion:[64],normalizeRegionSizes:[64],removeRegion:[64]},[[11,"scroll","handleScroll"],[9,"resize","handleScroll"],[9,"mousemove","handleScroll"],[0,"panelPopout","onPanelPopout"],[0,"panelSelect","onPanelSelect"]],{regions:[{handleRegionsChange:0}]}]),u=g,b=function(){"undefined"!=typeof customElements&&["ui-workspace-manager","ui-badge","ui-button","ui-icon","ui-resizable-panel"].forEach((a=>{switch(a){case"ui-workspace-manager":customElements.get(o(a))||customElements.define(o(a),g);break;case"ui-badge":customElements.get(o(a))||p();break;case"ui-button":customElements.get(o(a))||d();break;case"ui-icon":customElements.get(o(a))||s();break;case"ui-resizable-panel":customElements.get(o(a))||h()}}))};export{u as UiWorkspaceManager,b as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as a,HTMLElement as e,createEvent as i,h as r,Host as t,transformTag as o}from"@stencil/core/internal/client";import{s as n,d as s}from"./icon.js";import{c,g as l,b as m}from"./dom.js";import{d,a as p}from"./badge.js";import{d as h}from"./loader.js";import{d as g}from"./resizable-panel.js";const u=a(class extends e{constructor(a){super(),!1!==a&&this.__registerHost(),this.layoutChange=i(this,"layoutChange",7),this.panelAdded=i(this,"panelAdded",7),this.panelRemoved=i(this,"panelRemoved",7),this.panelMoved=i(this,"panelMoved",7),this.panelPoppedOut=i(this,"panelPoppedOut",7),this.panelDocked=i(this,"panelDocked",7),this.panelMaximized=i(this,"panelMaximized",7),this.panelRestored=i(this,"panelRestored",7),this.regionAdded=i(this,"regionAdded",7),this.regionRemoved=i(this,"regionRemoved",7)}get el(){return this}regions=[];handleRegionsChange(){this.initRegions(),this.root={...this.root},this.layoutVersion++}direction="horizontal";saveState=!0;stateKey="layout-manager-state";root;panelsById={};popouts={};maximizedPanel;preMaximizeState;draggingPanel;draggingPopout;layoutVersion=0;contextMenu;tabActionsMenu;floatingDropdown;openDropdowns={};openActionsMenu={};regionsNeedingScroll={};minimizedRegions={};dragOverTarget;floatingDropdownTrigger;tabActionsMenuTrigger;layoutChange;panelAdded;panelRemoved;panelMoved;panelPoppedOut;panelDocked;panelMaximized;panelRestored;regionAdded;regionRemoved;async getLayoutState(){return{root:this.root,panels:this.panelsById}}async clearAllRegions(){await this.closeAllPanels(),this.panelsById={},this.popouts={},this.maximizedPanel=void 0,this.draggingPanel=void 0,this.draggingPopout=void 0,this.contextMenu=void 0,this.tabActionsMenu=void 0,this.openDropdowns={},this.openActionsMenu={},this.root={id:"__root__",title:"Root",direction:this.direction,children:[],panels:[]},this.floatingDropdownTrigger=void 0,this.tabActionsMenuTrigger=void 0,this.emitLayoutChange()}handleScroll(){(this.floatingDropdown||this.tabActionsMenu)&&this.recalculateMenuPositions()}recalculateMenuPositions(){requestAnimationFrame((()=>{if(this.floatingDropdown&&this.floatingDropdownTrigger){const a=c(this.floatingDropdownTrigger,{menuWidth:200,menuHeight:300,gap:4,align:"end"});this.floatingDropdown={...this.floatingDropdown,x:a.left??0,y:a.top??0}}if(this.tabActionsMenu&&this.tabActionsMenuTrigger){const a=c(this.tabActionsMenuTrigger,{menuWidth:180,menuHeight:200,gap:4,align:"end"});this.tabActionsMenu={...this.tabActionsMenu,x:a.left??0,y:a.top??0}}}))}componentWillLoad(){this.saveState&&this.loadState(),(!this.root||0===this.root.children?.length&&0===this.root.panels?.length)&&this.initRegions(),document.addEventListener("click",this.handleDocumentClick)}disconnectedCallback(){document.removeEventListener("click",this.handleDocumentClick)}handleDocumentClick=a=>{const e=a.target;e.closest(".lm-panel-dropdown-wrapper")||Object.values(this.openDropdowns).some((a=>a))&&(this.openDropdowns={}),e.closest(".lm-actions-menu-wrapper")||Object.values(this.openActionsMenu).some((a=>a))&&(this.openActionsMenu={})};parseRegions(){return(("string"==typeof this.regions?JSON.parse(this.regions):this.regions)||[]).map((a=>({id:a.id,title:a.title,size:a.size??25,minSize:a.minSize,maxSize:a.maxSize,collapsible:a.collapsible??!1})))}initRegions(){const a=this.parseRegions(),e=a.reduce(((a,e)=>a+(e.size||0)),0)||100,i=a.map((i=>({...i,size:(i.size||100/a.length)/e*100,panels:[],activePanelId:void 0})));this.root={id:"__root__",title:"Root",size:100,panels:[],children:i,direction:this.direction}}async addPanel(a){const e=a.id||`panel-${Date.now()}-${Math.floor(1e3*Math.random())}`,i=this.findRegionNode(a.regionId)?.node;if(!i)throw Error("Region not found: "+a.regionId);if("content-only"===i.type&&i.panels&&i.panels.length>0)return i.panels[0];const r={id:e,title:a.title,regionId:i.id,closable:!1!==a.closable,icon:a.icon,iconLibrary:a.iconLibrary,allowPopout:!1!==a.allowPopout,element:a.element,html:a.html};return this.panelsById={...this.panelsById,[e]:r},i.panels=[...i.panels||[],e],i.activePanelId=e,this.root={...this.root},this.panelAdded.emit(r),this.emitLayoutChange(),e}async removePanel(a){const e=this.panelsById[a];if(!e)return;if(e.pinned)return;this.maximizedPanel===a&&(this.maximizedPanel=void 0,this.preMaximizeState=void 0);const i=this.findRegionNode(e.regionId)?.node;i&&(i.panels=(i.panels||[]).filter((e=>e!==a)),i.activePanelId===a&&(i.activePanelId=i.panels[(i.panels||[]).length-1]||void 0));const{[a]:r,...t}=this.panelsById;this.panelsById=t;const{[a]:o,...n}=this.popouts;this.popouts=n,this.root={...this.root},this.panelRemoved.emit({panelId:a,regionId:i?.id||""}),this.emitLayoutChange()}async movePanel(a,e,i){const r=this.panelsById[a];if(!r)throw Error("Panel not found: "+a);const t=this.findRegionNode(r.regionId)?.node,o=this.findRegionNode(e)?.node;if(!o)throw Error("Target region not found: "+e);t&&(t.panels=(t.panels||[]).filter((e=>e!==a)),t.activePanelId===a&&(t.activePanelId=t.panels[(t.panels||[]).length-1]||void 0)),r.regionId=o.id;const n=[...o.panels||[]];void 0===i||i<0||i>n.length?n.push(a):n.splice(i,0,a),o.panels=n,o.activePanelId=a,this.panelsById={...this.panelsById},this.root={...this.root},this.panelMoved.emit({panelId:a,from:t?.id||"",to:o.id}),this.emitLayoutChange()}async popoutPanel(a,e){const i=this.panelsById[a];if(!i)throw Error("Panel not found: "+a);const r=this.findRegionNode(i.regionId)?.node;r&&(r.panels=(r.panels||[]).filter((e=>e!==a)),r.activePanelId===a&&(r.activePanelId=r.panels[(r.panels||[]).length-1]||void 0)),this.popouts={...this.popouts,[a]:{x:e?.x??100,y:e?.y??100,width:e?.width??400,height:e?.height??300}},this.root={...this.root},this.panelPoppedOut.emit({panelId:a}),this.emitLayoutChange()}async dockPanel(a,e,i){if(!this.popouts[a])return;const{[a]:r,...t}=this.popouts;this.popouts=t,await this.movePanel(a,e,i),this.panelDocked.emit({panelId:a,regionId:e})}async splitRegion(a,e="horizontal"){const i=this.findRegionNode(a);if(!i)throw Error("Region not found: "+a);const{node:r}=i;if(r.children&&r.children.length)return;const t={id:a+"-a",title:r.title,size:50,panels:[],activePanelId:void 0},o={id:a+"-b",title:r.title,size:50,panels:[],activePanelId:void 0};r.panels?.length&&(t.panels=[...r.panels],t.activePanelId=r.activePanelId,r.panels=[],r.activePanelId=void 0),r.children=[t,o],r.direction=e,this.root={...this.root},this.emitLayoutChange()}async maximizePanel(a){if(!this.panelsById[a])throw Error("Panel not found: "+a);this.preMaximizeState={root:JSON.parse(JSON.stringify(this.root)),panelsById:JSON.parse(JSON.stringify(this.panelsById))},this.maximizedPanel=a,this.panelMaximized.emit({panelId:a})}async restorePanel(){if(!this.maximizedPanel)return;const a=this.maximizedPanel;this.preMaximizeState&&(this.preMaximizeState.root&&this.preMaximizeState.panelsById&&(this.root=this.preMaximizeState.root,this.panelsById=this.preMaximizeState.panelsById,this.root={...this.root},this.panelsById={...this.panelsById},this.layoutVersion++),this.preMaximizeState=void 0),this.maximizedPanel=void 0,this.panelRestored.emit({panelId:a}),this.emitLayoutChange()}async closeAllPanels(a){if(a){const e=this.findRegionNode(a);if(!e||!e.node.panels)return;const i=[...e.node.panels];for(const a of i)await this.removePanel(a)}else{const a=Object.keys(this.panelsById);for(const e of a)await this.removePanel(e)}}async mergeRegion(a){const e=this.findRegionNode(a);if(!e)return;const{node:i}=e;if(!i.children||!i.children.length)return;const r=i.children[0];i.panels=[...r.panels||[]],i.activePanelId=r.activePanelId,i.children=void 0,i.direction=void 0,this.root={...this.root},this.emitLayoutChange()}async createRegion(a){if(this.findRegionNode(a.id))return;const e=this.root.children||[],i=e.reduce(((a,e)=>a+(e.size||0)),0)||100,r=a.size??100/(e.length+1),t=r/(i+r)*100,o=e.map((a=>({...a,size:(a.size||0)*(i/(i+r))})));this.root.children=[...o,{id:a.id,title:a.title,size:t,minSize:a.minSize,maxSize:a.maxSize,collapsible:a.collapsible??!1,panels:[],activePanelId:void 0}],this.emitLayoutChange()}async addRegion(a){this.root&&this.root.children||(this.root={id:"__root__",title:"Root",direction:this.direction,children:[],panels:[]});const e=a.id||"region-"+Date.now(),i=a.title||"Region "+(this.root.children.length+1),r=a.position||"end",t=a.type||"default";if(this.findRegionNode(e))throw Error(`Region with id '${e}' already exists`);const o={id:e,title:i,size:a.size||100/(this.root.children.length+1),panels:[],activePanelId:void 0,type:t};if(this.root.children="start"===r?[o,...this.root.children]:[...this.root.children,o],!a.skipNormalization){const a=this.root.children.reduce(((a,e)=>a+(e.size||0)),0);this.root.children=this.root.children.map((e=>({...e,size:(e.size||0)/a*100})))}return this.root={...this.root},this.emitLayoutChange(),this.regionAdded.emit({regionId:e,title:i}),e}async normalizeRegionSizes(){if(!this.root||!this.root.children)return;const a=this.root.children.reduce(((a,e)=>a+(e.size||0)),0);0!==a&&(this.root.children=this.root.children.map((e=>({...e,size:(e.size||0)/a*100}))),this.root={...this.root},this.emitLayoutChange())}async removeRegion(a){const e=this.findRegionNode(a);if(!e)return;const{parent:i}=e;if(!i||!i.children)return;const r=i.children.findIndex((e=>e.id===a)),t=i.children[r],o=i.children[r-1]||i.children[r+1];i.children=i.children.filter((e=>e.id!==a)),o&&t&&t.panels?.length&&(o.panels=[...o.panels||[],...t.panels],o.activePanelId=o.activePanelId||t.activePanelId||(o.panels||[])[(o.panels||[]).length-1]);const n=i.children,s=n.reduce(((a,e)=>a+(e.size||0)),0)||100;i.children=n.map((a=>({...a,size:(a.size||0)/s*100}))),this.root={...this.root},this.emitLayoutChange(),this.regionRemoved.emit({regionId:a})}onPanelPopout(a){this.popoutPanel(a.detail.panelId)}onPanelSelect(a){const e=this.findRegionNode(a.detail.regionId)?.node;e&&(e.activePanelId=a.detail.panelId,this.root={...this.root},this.emitLayoutChange())}emitLayoutChange(){const a=[],e=i=>{i.children&&i.children.length?i.children.forEach(e):a.push(i)};e(this.root),this.layoutChange.emit({regions:a}),this.saveState&&this.saveStateToStorage()}saveStateToStorage(){try{const a=Object.fromEntries(Object.entries(this.panelsById).map((([a,e])=>{const{element:i,...r}=e;return[a,r]})));localStorage.setItem(this.stateKey,JSON.stringify({root:this.root,panelsById:a,minimizedRegions:this.minimizedRegions}))}catch(a){console.error("[WorkspaceManager] Failed to save state",a)}}loadState(){try{const a=localStorage.getItem(this.stateKey);if(a){const e=JSON.parse(a);this.root=e.root,this.panelsById=e.panelsById,this.minimizedRegions=e.minimizedRegions||{}}}catch(a){console.error("[WorkspaceManager] Failed to load state",a)}}findRegionNode(a){let e;const i=(r,t)=>{r.id!==a?r.children&&r.children.forEach((a=>i(a,r))):e={node:r,parent:t}};return i(this.root),e}scrollTabs(a,e){const i=document.querySelector(`[data-region-id="${a}"] .lm-tabs`);i&&i.scrollBy({left:"left"===e?-200:200,behavior:"smooth"})}togglePanelDropdown(a,e){e?.stopPropagation();const i=!this.openDropdowns[a];if(this.openDropdowns={...this.openDropdowns,[a]:i},i&&e){this.floatingDropdownTrigger=e.currentTarget;const i=c(this.floatingDropdownTrigger,{menuWidth:200,menuHeight:300,gap:4,align:"end"});this.floatingDropdown={x:i.left??0,y:i.top??0,regionId:a,type:"panel"}}else this.floatingDropdown=void 0,this.floatingDropdownTrigger=void 0}selectPanelFromDropdown(a,e){this.selectPanel(a,e),this.openDropdowns={...this.openDropdowns,[a]:!1},this.floatingDropdown=void 0}toggleActionsMenu(a,e){e?.stopPropagation();const i=!this.openActionsMenu[a];if(this.openActionsMenu={...this.openActionsMenu,[a]:i},i&&e){this.floatingDropdownTrigger=e.currentTarget;const i=c(this.floatingDropdownTrigger,{menuWidth:200,menuHeight:300,gap:4,align:"end"});this.floatingDropdown={x:i.left??0,y:i.top??0,regionId:a,type:"actions"}}else this.floatingDropdown=void 0,this.floatingDropdownTrigger=void 0}minimizeRegion(a){if(this.maximizedPanel)return;const e=this.findRegionNode(a);if(!e)return;const i=e.node,r=e.parent;if(this.maximizedPanel){const e=this.panelsById[this.maximizedPanel];if(e&&e.regionId===a)return}const t=i.panels?.[0]?this.panelsById[i.panels[0]]:null,o=t?.icon||"fas fa-window-minimize";let n,s=-1,c="left";if(r&&r.children){s=r.children.findIndex((e=>e.id===a)),n=r.id,c=s<Math.floor(r.children.length/2)?"left":"right";const e=r.children.filter((e=>e.id!==a));if(e.length>0){const a=e.reduce(((a,e)=>a+(e.size||0)),0);if(a>0)e.forEach((e=>{e.size=(e.size||0)/a*100}));else{const a=100/e.length;e.forEach((e=>{e.size=a}))}}r.children=e}else if(this.root.id===a)return;this.minimizedRegions={...this.minimizedRegions,[a]:{title:i.title||a,icon:o,iconLibrary:t?.iconLibrary,region:{...i},parentId:n,index:s,side:c}},this.layoutVersion++,this.root={...this.root},this.emitLayoutChange()}restoreRegion(a){const e=this.minimizedRegions[a];if(!e)return;const{region:i,parentId:r,index:t}=e;if(r){const a=this.findRegionNode(r);if(a&&a.node&&a.node.children){const e=a.node,r=JSON.parse(JSON.stringify(i)),o=[...e.children??[]];o.splice(t,0,r);const n=o.reduce(((a,e)=>a+(e.size||0)),0);n>0&&o.forEach((a=>{a.size=(a.size||0)/n*100})),e.children=o,this.layoutVersion++}}const{[a]:o,...n}=this.minimizedRegions;this.minimizedRegions=n,this.root={...this.root},this.emitLayoutChange()}closeAllAndRemoveRegion(a){const e=this.findRegionNode(a)?.node;e&&([...e.panels].forEach((a=>{this.removePanel(a)})),this.removeRegion(a))}renderTabs(a){const e=a.panels.map((a=>this.panelsById[a])).filter(Boolean),i=e.filter((a=>a.pinned)),t=e.filter((a=>!a.pinned)),o=i.length>0&&t.length>0,n=this.regionsNeedingScroll[a.id]||!1;return r("div",{class:"lm-tabs-container","data-region-id":a.id},n&&r("ui-button",{variant:"ghost",size:"sm",icon:"chevron-left",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Scroll left",onClick:()=>this.scrollTabs(a.id,"left")}),r("div",{class:"lm-tabs",onDragOver:e=>{e.preventDefault(),this.handleDragOver(e,a.id)},onDragLeave:()=>this.dragOverTarget=void 0,onDrop:e=>this.handleTabDrop(e,a)},e.map(((i,t)=>{const n=i.pinned;return r("div",{key:i.id},!n&&t>0&&e[t-1]?.pinned&&o&&r("div",{class:"lm-tab-separator",title:"Pinned / Unpinned divider"}),r("div",{class:{"lm-tab":!0,active:a.activePanelId===i.id,pinned:!!n},draggable:!0,onDragStart:e=>this.handleTabDragStart(e,i,a),onContextMenu:e=>this.openContextMenu(e,a.id,i.id),onClick:()=>this.selectPanel(a.id,i.id)},i.icon&&r("ui-icon",{name:i.icon,library:i.iconLibrary||"lucide"}),r("span",{class:"lm-tab-title"},i.title),n&&r("ui-icon",{name:"thumbtack",library:"fontawesome",class:"lm-tab-btn",title:"Unpin",onClick:a=>{a.stopPropagation(),this.togglePin(i.id)}}),i.dirty&&r("span",{class:"lm-dot",title:"Unsaved changes"}),r("ui-button",{variant:"ghost",size:"sm",icon:"ellipsis-v",iconLibrary:"fontawesome",ariaLabel:"More actions",onClick:a=>{a.stopPropagation();const e=!this.openDropdowns["tab-"+i.id];if(this.openDropdowns={...this.openDropdowns,["tab-"+i.id]:e},e){this.tabActionsMenuTrigger=a.currentTarget;const e=this.tabActionsMenuTrigger.getBoundingClientRect(),r=l(this.el);this.tabActionsMenu={x:e.right-r.x,y:e.bottom-r.y+4,panelId:i.id}}else this.tabActionsMenu=void 0,this.tabActionsMenuTrigger=void 0}}),i.closable&&!n&&r("ui-button",{variant:"ghost",size:"sm",icon:"times",iconLibrary:"fontawesome",ariaLabel:"Close",onClick:a=>{a.stopPropagation(),this.removePanel(i.id)}})))}))),n&&r("ui-button",{variant:"ghost",size:"sm",icon:"chevron-right",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Scroll right",onClick:()=>this.scrollTabs(a.id,"right")}))}handleTabDragStart(a,e,i){this.draggingPanel={panelId:e.id,fromRegionId:i.id},a.dataTransfer?.setData("text/plain",e.id),a.dataTransfer?.setDragImage(a.target,0,0)}handleTabDrop(a,e){a.preventDefault();const i=a.dataTransfer?.getData("text/plain")||this.draggingPanel?.panelId;if(!i)return;let r;const t=a.target.closest(".lm-tab");t&&(r=Array.from(t.parentElement.querySelectorAll(".lm-tab")).indexOf(t)),this.movePanel(i,e.id,r),this.draggingPanel=void 0}selectPanel(a,e){const i=this.findRegionNode(a)?.node;i&&(i.activePanelId=e,this.root={...this.root},this.emitLayoutChange())}switchToPanel(a,e){const i=this.findRegionNode(a)?.node;i&&i.panels.includes(e)&&(i.activePanelId=e,this.root={...this.root})}renderNavigationRegion(a){const e=a.panels.map((a=>this.panelsById[a])).filter(Boolean);return r("div",{class:"lm-region lm-region-navigation","data-region-id":a.id},r("div",{class:"lm-region-header"},r("div",{class:"lm-navigation-header"},r("span",{class:"lm-navigation-title"},a.title||"Navigation")),r("ui-button",{variant:"ghost",size:"sm",icon:"times-circle",iconLibrary:"fontawesome",ariaLabel:"Close all panels and remove region",onClick:()=>this.closeAllAndRemoveRegion(a.id)})),r("div",{class:"lm-navigation-content"},e.map((e=>r("div",{class:"lm-navigation-section","data-panel-id":e.id},r("div",{class:{"lm-navigation-section-header":!0,active:a.activePanelId===e.id},onClick:()=>this.switchToPanel(a.id,e.id)},e.icon&&r("ui-icon",{name:e.icon,library:e.iconLibrary||"default"}),r("span",{class:"lm-navigation-section-title"},e.title),r("ui-button",{variant:"ghost",size:"sm",class:"lm-navigation-section-close",icon:"times",iconLibrary:"fontawesome",ariaLabel:"Close panel",onClick:a=>{a.stopPropagation(),this.removePanel(e.id)}})),a.activePanelId===e.id&&r("div",{class:"lm-navigation-section-content",ref:a=>this.attachContent(a,e)})))),0===e.length&&r("div",{class:"lm-empty"},"No panels open")))}renderHeaderOnlyRegion(a){const e=a.activePanelId?this.panelsById[a.activePanelId]:void 0;return r("div",{class:"lm-region lm-region-header-only","data-region-id":a.id},r("div",{class:"lm-region-header"},r("div",{class:"lm-header-only-title"},e?.icon&&r("ui-icon",{name:e.icon,library:e.iconLibrary||"default"}),r("span",null,e?.title||a.title||"Content")),r("div",{class:"lm-header-only-actions"},r("div",{class:"lm-panel-dropdown-wrapper"},r("ui-button",{variant:"ghost",size:"sm",icon:"list",iconLibrary:"fontawesome",ariaLabel:"Show all panels",onClick:e=>this.togglePanelDropdown(a.id,e)})),e&&r("ui-button",{variant:"ghost",size:"sm",icon:"expand",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Maximize",onClick:()=>this.maximizePanel(e.id)}),e&&r("ui-button",{variant:"ghost",size:"sm",icon:"external-link-alt",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Pop out",onClick:()=>this.popoutPanel(e.id)}),r("ui-button",{variant:"ghost",size:"sm",icon:"times-circle",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close all panels and remove region",onClick:()=>this.closeAllAndRemoveRegion(a.id)}))),r("div",{class:"lm-region-content"},e&&r("div",{class:"lm-panel-host","data-panel-id":e.id,ref:a=>this.attachContent(a,e)}),!e&&r("div",{class:"lm-empty"},"No content available")))}renderLeafRegion(a){const e=a.activePanelId?this.panelsById[a.activePanelId]:void 0,i=a.type||"default",t="no-header"!==i&&"content-only"!==i,o="title-only"!==i&&"no-header"!==i&&"content-only"!==i&&"navigation"!==i&&"header-only"!==i,n="default"===i,s=this.regionsNeedingScroll[a.id]||!1;return"content-only"===i?r("div",{class:"lm-region lm-region-content-only","data-region-id":a.id},e&&r("div",{class:"lm-panel-host","data-panel-id":e.id,ref:a=>this.attachContent(a,e)})):"navigation"===i?this.renderNavigationRegion(a):"header-only"===i?this.renderHeaderOnlyRegion(a):r("div",{class:{"lm-region":!0,["lm-region-"+i]:!0},"data-region-id":a.id},t&&r("div",{class:"lm-region-header"},"title-only"===i&&r("div",{class:"lm-region-title"},r("span",null,a.title)),o&&this.renderTabs(a),n&&r("div",{class:"lm-region-actions"},s&&r("div",{class:"lm-panel-dropdown-wrapper"},r("ui-button",{variant:"ghost",size:"sm",icon:"list",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Show all panels",onClick:e=>this.togglePanelDropdown(a.id,e)})),r("div",{class:"lm-actions-menu-wrapper"},r("ui-button",{variant:"ghost",size:"sm",icon:"ellipsis-v",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Actions",onClick:e=>this.toggleActionsMenu(a.id,e)})),r("ui-button",{variant:"ghost",size:"sm",icon:"window-minimize",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Minimize region",onClick:()=>this.minimizeRegion(a.id)}),(a.panels?.length||0)>0&&r("ui-button",{variant:"ghost",size:"sm",icon:"times-circle",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close all panels and remove region",onClick:()=>this.closeAllAndRemoveRegion(a.id)}))),r("div",{class:"lm-region-content",onDragOver:e=>{e.preventDefault(),this.handleDragOver(e,a.id)},onDragLeave:()=>this.dragOverTarget=void 0,onDrop:e=>this.handleTabDrop(e,a)},e&&r("div",{class:"lm-panel-host","data-panel-id":e.id,ref:a=>this.attachContent(a,e)}),!e&&r("div",{class:"lm-empty"},"No tabs open"),this.dragOverTarget?.regionId===a.id&&r("div",{class:"lm-drop-highlighter lm-drop-"+this.dragOverTarget.position})))}renderRegionNode(a){if(a.children&&a.children.length){const e=a.children.map((a=>({id:a.id,size:a.size,minSize:a.minSize,maxSize:a.maxSize,collapsible:a.collapsible})));return r("ui-resizable-panel",{key:`resizable-${a.id}-v${this.layoutVersion}`,direction:a.direction||"horizontal",panels:JSON.stringify(e),saveState:!1,stateKey:`${this.stateKey}-${a.id}`,showHandleIcon:!0},a.children.map((a=>r("div",{slot:a.id,class:"lm-slot"},this.renderRegionNode(a)))))}return this.renderLeafRegion(a)}attachContent(a,e){if(a){for(;a.firstChild;)a.removeChild(a.firstChild);e.element?a.appendChild(e.element):e.html&&(a.innerHTML=n(e.html))}}renderVerticalNav(a){const e=Object.entries(this.minimizedRegions).filter((([e,i])=>i.side===a));return 0===e.length?null:r("div",{class:"lm-vertical-nav lm-vertical-nav-"+a},e.map((([a,e])=>r("div",{key:a,class:"lm-nav-item",title:e.title,onClick:()=>this.restoreRegion(a)},r("ui-icon",{name:e.icon,library:e.iconLibrary||"default"}),r("span",{class:"lm-nav-label"},e.title)))))}render(){if(this.maximizedPanel){const a=this.panelsById[this.maximizedPanel];if(a)return r(t,null,r("div",{class:"lm-container lm-maximized"},r("div",{class:"lm-maximized-panel"},r("div",{class:"lm-maximized-header"},r("span",{class:"lm-maximized-title"},a.title),r("div",{class:"lm-maximized-actions"},r("ui-button",{variant:"ghost",size:"sm",icon:"compress",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Restore",onClick:()=>this.restorePanel()}),r("ui-button",{variant:"ghost",size:"sm",icon:"times",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close",onClick:()=>this.removePanel(this.maximizedPanel)}))),r("div",{class:"lm-maximized-content",ref:e=>this.attachContent(e,a)}))))}return r(t,null,this.renderVerticalNav("left"),r("div",{class:"lm-container"},this.root&&this.renderRegionNode(this.root),r("div",{class:"lm-popout-layer"},Object.keys(this.popouts).map((a=>{const e=this.popouts[a],i=this.panelsById[a];return i?r("div",{class:"lm-popout-window",style:{left:e.x+"px",top:e.y+"px",width:e.width+"px",height:e.height+"px"},"data-panel-id":a},r("div",{class:"lm-popout-header",onMouseDown:e=>this.startPopoutDrag(e,a)},r("span",{class:"lm-popout-title"},i.title),r("div",{class:"lm-popout-actions"},r("ui-button",{variant:"ghost",size:"sm",icon:"download",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Dock",onClick:()=>this.dockPanel(a,i.regionId)}),r("ui-button",{variant:"ghost",size:"sm",icon:"times",iconLibrary:"fontawesome",iconSize:"14px",ariaLabel:"Close",onClick:()=>this.removePanel(a)}))),r("div",{class:"lm-popout-content",ref:a=>this.attachContent(a,i)})):null}))),this.contextMenu&&this.renderContextMenu(),this.tabActionsMenu&&this.renderTabActionsMenu(),this.floatingDropdown&&this.renderFloatingDropdown()),this.renderVerticalNav("right"))}startPopoutDrag(a,e){const i=this.popouts[e];if(!i)return;const r=a.currentTarget.parentElement.getBoundingClientRect();this.draggingPopout={panelId:e,offsetX:a.clientX-r.left,offsetY:a.clientY-r.top};const t=a=>{let r=a.clientX-this.draggingPopout.offsetX,t=a.clientY-this.draggingPopout.offsetY;const o=window.innerWidth,n=window.innerHeight;Math.abs(r)<20&&(r=0),Math.abs(t)<20&&(t=0),Math.abs(r+i.width-o)<20&&(r=o-i.width),Math.abs(t+i.height-n)<20&&(t=n-i.height),this.popouts[e]={...this.popouts[e],x:r,y:t},this.popouts={...this.popouts}},o=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",o),this.draggingPopout=void 0};document.addEventListener("mousemove",t),document.addEventListener("mouseup",o)}openContextMenu(a,e,i){a.preventDefault();const r=m(a.clientX,a.clientY,this.el);this.contextMenu={x:r.x,y:r.y,regionId:e,panelId:i};const t=()=>{this.contextMenu=void 0,document.removeEventListener("click",t)};document.addEventListener("click",t,{once:!0})}renderContextMenu(){const{x:a,y:e,regionId:i,panelId:t}=this.contextMenu,o=this.panelsById[t];return r("div",{class:"lm-context-menu",style:{left:a+"px",top:e+"px"}},r("ui-button",{variant:"ghost",fullWidth:!0,icon:"thumbtack",iconLibrary:"fontawesome",iconSize:"14px",label:o?.pinned?"Unpin Tab":"Pin Tab",onClick:()=>{this.togglePin(t),this.contextMenu=void 0}}),r("hr",null),r("ui-button",{variant:"ghost",fullWidth:!0,disabled:o?.pinned,label:o?.pinned?"Close (Pinned)":"Close",onClick:()=>{this.removePanel(t),this.contextMenu=void 0}}),r("ui-button",{variant:"ghost",fullWidth:!0,icon:"arrows-alt-h",iconLibrary:"fontawesome",iconSize:"14px",label:"Close Others",onClick:()=>{this.closeOthers(i,t),this.contextMenu=void 0}}),r("ui-button",{variant:"ghost",fullWidth:!0,icon:"arrow-right",iconLibrary:"fontawesome",iconSize:"14px",label:"Close to the Right",onClick:()=>{this.closeToRight(i,t),this.contextMenu=void 0}}),r("hr",null),r("ui-button",{variant:"ghost",fullWidth:!0,label:"Move to New Group (H)",onClick:()=>{this.splitRegion(i,"horizontal").then((()=>this.movePanel(t,i+"-b"))),this.contextMenu=void 0}}),r("ui-button",{variant:"ghost",fullWidth:!0,label:"Move to New Group (V)",onClick:()=>{this.splitRegion(i,"vertical").then((()=>this.movePanel(t,i+"-b"))),this.contextMenu=void 0}}))}renderTabActionsMenu(){const{x:a,y:e,panelId:i}=this.tabActionsMenu,t=this.panelsById[i];return t?r("div",{class:"lm-tab-actions-menu-fixed",style:{left:a+"px",top:e+"px"}},r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.maximizePanel(i),this.openDropdowns={...this.openDropdowns,["tab-"+i]:!1},this.tabActionsMenu=void 0}},r("ui-icon",{name:"expand",library:"fontawesome",size:"14px"}),r("span",null,"Maximize")),t.allowPopout&&r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.popoutPanel(i),this.openDropdowns={...this.openDropdowns,["tab-"+i]:!1},this.tabActionsMenu=void 0}},r("ui-icon",{name:"window-restore",library:"fontawesome"}),r("span",null,"Pop Out")),r("div",{class:"lm-tab-actions-divider"}),r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.togglePin(i),this.openDropdowns={...this.openDropdowns,["tab-"+i]:!1},this.tabActionsMenu=void 0}},r(r.Fragment,null,r("ui-icon",{name:"thumbtack",library:"fontawesome"}),r("span",null,t.pinned?"Unpin Tab":"Pin Tab"))),r("div",{class:"lm-tab-actions-divider"}),r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.closeOthers(t.regionId,i),this.tabActionsMenu=void 0}},r("ui-icon",{name:"arrows-alt-h",library:"fontawesome"}),r("span",null,"Close Others")),r("div",{class:"lm-tab-actions-item",onClick:a=>{a.stopPropagation(),this.closeToRight(t.regionId,i),this.tabActionsMenu=void 0}},r("ui-icon",{name:"arrow-right",library:"fontawesome"}),r("span",null,"Close to the Right")),r("div",{class:"lm-tab-actions-divider"}),r("div",{class:"lm-tab-actions-item lm-tab-actions-danger",onClick:a=>{a.stopPropagation(),this.removePanel(i),this.tabActionsMenu=void 0}},r("ui-icon",{name:"times",library:"fontawesome"}),r("span",null,"Close"))):null}closeOthers(a,e){const i=this.findRegionNode(a)?.node;i&&(i.panels||[]).filter((a=>a!==e)).forEach((a=>this.removePanel(a)))}closeToRight(a,e){const i=this.findRegionNode(a)?.node;if(!i)return;const r=(i.panels||[]).indexOf(e);(i.panels||[]).slice(r+1).forEach((a=>this.removePanel(a)))}togglePin(a){const e=this.panelsById[a];if(!e)return;e.pinned=!e.pinned;const i=this.findRegionNode(e.regionId)?.node;if(!i||!i.panels)return;const r=i.panels.map((a=>this.panelsById[a])).filter(Boolean),t=r.filter((a=>a.pinned)).map((a=>a.id)),o=r.filter((a=>!a.pinned)).map((a=>a.id));i.panels=[...t,...o],this.panelsById={...this.panelsById},this.root={...this.root}}checkTabsOverflow(){const a=[],e=i=>{i.panels&&a.push(i),i.children&&i.children.forEach(e)};this.root&&e(this.root);const i={};a.forEach((a=>{const e=this.el.querySelector(`[data-region-id="${a.id}"] .lm-tabs`);e&&(i[a.id]=e.scrollWidth>e.offsetWidth)})),JSON.stringify(i)!==JSON.stringify(this.regionsNeedingScroll)&&(this.regionsNeedingScroll=i)}handleDragOver(a,e){const i=a.currentTarget.getBoundingClientRect(),r=a.clientX-i.left,t=a.clientY-i.top;let o="center";t<.2*i.height?o="top":t>.8*i.height?o="bottom":r<.2*i.width?o="left":r>.8*i.width&&(o="right"),this.dragOverTarget={regionId:e,position:o}}renderFloatingDropdown(){if(!this.floatingDropdown)return null;const{x:a,y:e,regionId:i,type:t}=this.floatingDropdown,o=this.findRegionById(this.root,i);if(!o)return null;if("panel"===t){const i=o.panels.map((a=>this.panelsById[a])).filter(Boolean);return r("div",{class:"lm-panel-dropdown-menu",style:{position:"fixed",top:e+"px",left:a+"px",zIndex:"12000",minWidth:"200px"}},r("div",{class:"lm-panel-dropdown-header"},"All Panels (",i.length,")"),i.map((a=>r("div",{class:{"lm-panel-dropdown-item":!0,active:o.activePanelId===a.id},onClick:()=>this.selectPanelFromDropdown(o.id,a.id)},a.icon&&r("ui-icon",{name:a.icon,library:a.iconLibrary||"lucide",style:{marginRight:"8px"}}),r("span",null,a.title)))))}{const i=o.activePanelId?this.panelsById[o.activePanelId]:null;return r("div",{class:"lm-actions-dropdown-menu",style:{position:"fixed",top:e+"px",left:a+"px",zIndex:"12000",minWidth:"180px"}},r("div",{class:"lm-actions-item",onClick:()=>{this.splitRegion(o.id,"horizontal"),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"columns",library:"fontawesome",class:"lm-actions-icon"}),"Split Horizontal"),r("div",{class:"lm-actions-item",onClick:()=>{this.splitRegion(o.id,"vertical"),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"grip-lines",library:"fontawesome",class:"lm-actions-icon"}),"Split Vertical"),r("div",{class:"lm-actions-divider"}),i&&r("div",{class:"lm-actions-item",onClick:()=>{this.maximizePanel(i.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"expand",library:"fontawesome",class:"lm-actions-icon"}),"Maximize Panel"),(o.panels?.length||0)>0&&r(r.Fragment,null,r("div",{class:"lm-actions-divider"}),r("div",{class:"lm-actions-item",onClick:()=>{this.closeAllPanels(o.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"times",library:"fontawesome",class:"lm-actions-icon"}),"Close All Panels")),r("div",{class:"lm-actions-divider"}),r("div",{class:"lm-actions-item",onClick:()=>{this.mergeRegion(o.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"compress",library:"fontawesome",class:"lm-actions-icon"}),"Merge Region"),r("div",{class:"lm-actions-divider"}),r("div",{class:"lm-actions-item lm-actions-danger",onClick:()=>{this.closeAllAndRemoveRegion(o.id),this.floatingDropdown=void 0,this.openActionsMenu={}}},r("ui-icon",{name:"trash",library:"fontawesome",class:"lm-actions-icon"}),"Remove Group"))}}findRegionById(a,e){if(a.id===e)return a;for(const i of a.children??[]){const a=this.findRegionById(i,e);if(a)return a}return null}componentDidUpdate(){setTimeout((()=>this.checkTabsOverflow()),0)}static get watchers(){return{regions:[{handleRegionsChange:0}]}}static get style(){return'.sr-only.sc-ui-workspace-manager{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only.sc-ui-workspace-manager{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.sc-ui-workspace-manager-h{display:flex;height:100%;width:100%;overflow:hidden}.lm-vertical-nav.sc-ui-workspace-manager{width:50px;background:var(--bg-secondary, #2b2b2b);display:flex;flex-direction:column;align-items:center;padding:0;gap:0;overflow-y:auto;flex-shrink:0}.lm-vertical-nav.lm-vertical-nav-left.sc-ui-workspace-manager{border-right:1px solid var(--border-strong, #3e3e42);box-shadow:2px 0 8px rgba(0, 0, 0, 0.3)}.lm-vertical-nav.lm-vertical-nav-right.sc-ui-workspace-manager{border-left:1px solid var(--border-strong, #3e3e42);box-shadow:-2px 0 8px rgba(0, 0, 0, 0.3)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager{width:100%;height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted, #858585);transition:all 0.15s ease;padding:0;position:relative}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager::before{content:"";position:absolute;top:0;bottom:0;width:2px;background:transparent;transition:background 0.15s ease}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:24px;margin-bottom:0}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager .lm-nav-label.sc-ui-workspace-manager{font-size:8px;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-weight:400;letter-spacing:0.5px;text-transform:uppercase}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:hover{background:var(--bg-secondary, #2d2d30);color:var(--text-standard, #ffffff)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:hover::before{background:var(--bg-secondary, #505050)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:active,.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.active.sc-ui-workspace-manager{background:var(--bg-primary, #1e1e1e);color:var(--text-standard, #ffffff)}.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager:active::before,.lm-vertical-nav.sc-ui-workspace-manager .lm-nav-item.active.sc-ui-workspace-manager::before{background:var(--color-primary, #007acc)}.lm-vertical-nav.lm-vertical-nav-left.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager::before{left:0}.lm-vertical-nav.lm-vertical-nav-right.sc-ui-workspace-manager .lm-nav-item.sc-ui-workspace-manager::before{right:0}.lm-container.sc-ui-workspace-manager{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.lm-container.lm-maximized.sc-ui-workspace-manager{background:var(--bg-secondary, #0f172a)}.lm-maximized-panel.sc-ui-workspace-manager{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg-secondary, #0f172a);overflow:hidden}.lm-maximized-header.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg, var(--color-primary, #1e3a8a) 0%, var(--color-primary, #10b981) 100%);color:var(--text-standard, #ffffff);padding:8px 12px;border-bottom:1px solid var(--color-primary-hover, #2563eb);flex-shrink:0;min-height:40px;box-shadow:0 2px 8px rgba(0, 0, 0, 0.3)}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-title.sc-ui-workspace-manager{font-size:16px;font-weight:600}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager{display:flex;gap:8px}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager{background:rgba(255, 255, 255, 0.2);border:none;color:var(--text-standard, #ffffff);cursor:pointer;padding:6px 10px;border-radius:4px;transition:all 0.2s;font-size:14px}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager:hover{background:rgba(255, 255, 255, 0.3);transform:scale(1.05)}.lm-maximized-header.sc-ui-workspace-manager .lm-maximized-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager i.sc-ui-workspace-manager{pointer-events:none}.lm-maximized-content.sc-ui-workspace-manager{flex:1;overflow:auto;background:var(--bg-secondary, #0f172a);color:var(--text-standard, #e5e7eb)}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar{width:8px;height:8px}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1e293b)}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #475569);border-radius:4px}.lm-maximized-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #64748b)}.lm-slot.sc-ui-workspace-manager{width:100%;height:100%;display:flex;flex-direction:column;min-height:0;min-width:0}.lm-region.sc-ui-workspace-manager{display:flex;flex-direction:column;height:100%;width:100%;min-height:0;min-width:0;overflow:visible;position:relative}.lm-region.lm-region-navigation.sc-ui-workspace-manager .lm-region-header.sc-ui-workspace-manager{background:var(--color-primary, #1e3a8a);border-bottom:2px solid var(--color-primary, #10b981)}.lm-region.lm-region-title-only.sc-ui-workspace-manager .lm-region-header.sc-ui-workspace-manager{background:var(--color-primary, #374151);justify-content:center;padding:8px 12px}.lm-region.lm-region-no-header.sc-ui-workspace-manager .lm-region-content.sc-ui-workspace-manager{border-radius:0}.lm-region.lm-region-content-only.sc-ui-workspace-manager{overflow:hidden}.lm-region.lm-region-content-only.sc-ui-workspace-manager .lm-panel-host.sc-ui-workspace-manager{width:100%;height:100%;margin:0;padding:0;border:none;background:transparent}.lm-region.lm-region-header-only.sc-ui-workspace-manager .lm-region-header.sc-ui-workspace-manager{background:var(--bg-primary, #1f2937);padding:6px 12px;border-bottom:2px solid var(--color-primary, #10b981)}.lm-region-title.sc-ui-workspace-manager{flex:1;display:flex;align-items:center;font-weight:600;font-size:14px;color:var(--text-standard, #e5e7eb);padding:0 8px}.lm-navigation-header.sc-ui-workspace-manager{flex:1;display:flex;align-items:center;gap:8px;padding:0 8px}.lm-navigation-title.sc-ui-workspace-manager{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-standard, #ffffff)}.lm-region-header.sc-ui-workspace-manager{display:flex;align-items:center;gap:4px;background:var(--bg-primary, #1f2937);color:var(--text-standard, #e5e7eb);padding:2px 6px;border-bottom:1px solid var(--border-default, #374151);flex-shrink:0;min-height:36px;min-width:0;width:100%;overflow:visible;position:relative;z-index:11000;box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.lm-tabs-container.sc-ui-workspace-manager{display:flex;align-items:center;gap:4px;background:var(--bg-secondary, #0f172a);padding:0 4px;flex:1;min-width:0;overflow:visible;max-width:100%}.lm-tab-scroll-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;cursor:pointer;flex-shrink:0;flex-basis:28px;transition:all 0.2s ease}.lm-tab-scroll-btn.sc-ui-workspace-manager:hover{transform:translateY(-1px)}.lm-tab-scroll-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-tab-scroll-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:12px}.lm-tabs.sc-ui-workspace-manager{display:flex;gap:2px;overflow-x:auto;overflow-y:visible;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #374151) var(--text-primary, #1f2937);flex:1;min-width:0}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar{height:6px}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1f2937)}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #374151);border-radius:3px}.lm-tabs.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #4b5563)}.lm-tab-separator.sc-ui-workspace-manager{width:1px;background:linear-gradient(to bottom, transparent 20%, var(--color-primary, #10b981) 50%, transparent 80%);margin:0 4px;flex-shrink:0;opacity:0.5}.lm-panel-dropdown-wrapper.sc-ui-workspace-manager{position:relative;flex-shrink:0;z-index:1}.lm-panel-list-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-panel-list-btn.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--text-standard, #e5e7eb);border-color:var(--border-dark)}.lm-panel-list-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-panel-list-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-panel-dropdown-menu.sc-ui-workspace-manager{position:absolute;top:calc(100% + 4px);right:0;min-width:220px;max-width:320px;max-height:400px;overflow-y:auto;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.5);z-index:2;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #4b5563) var(--text-primary, #1f2937)}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar{width:6px}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1f2937)}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #4b5563);border-radius:3px}.lm-panel-dropdown-menu.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #6b7280)}.lm-panel-dropdown-header.sc-ui-workspace-manager{padding:8px 12px;font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-secondary);border-bottom:1px solid var(--border-default, #374151);background:var(--bg-secondary, #111827);position:sticky;top:0;z-index:1}.lm-panel-dropdown-item.sc-ui-workspace-manager{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;transition:all 0.15s ease;color:var(--text-standard, #e5e7eb);font-size:13px}.lm-panel-dropdown-item.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151)}.lm-panel-dropdown-item.active.sc-ui-workspace-manager{background:var(--color-primary, #10b981);color:var(--text-standard, #ffffff);font-weight:500}.lm-panel-dropdown-item.sc-ui-workspace-manager i.sc-ui-workspace-manager:first-child{width:16px;text-align:center;font-size:12px;color:var(--text-muted, #9ca3af)}.lm-panel-dropdown-item.sc-ui-workspace-manager .lm-panel-dropdown-title.sc-ui-workspace-manager{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lm-panel-dropdown-item.sc-ui-workspace-manager .fa-check.sc-ui-workspace-manager{color:var(--text-standard, #ffffff);font-size:12px}.lm-panel-dropdown-item.sc-ui-workspace-manager .lm-dot.sc-ui-workspace-manager{width:6px;height:6px;border-radius:50%;background:var(--color-warning, #f59e0b)}.lm-minimize-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-minimize-btn.sc-ui-workspace-manager:hover{background:var(--color-primary, #10b981);color:var(--text-standard, #ffffff);border-color:var(--primary-color)}.lm-minimize-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-minimize-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-close-all-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-close-all-btn.sc-ui-workspace-manager:hover{background:var(--color-danger, #991b1b);color:var(--color-danger, #fca5a5);border-color:var(--color-danger-hover, #dc2626)}.lm-close-all-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-close-all-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-actions-menu-wrapper.sc-ui-workspace-manager{position:relative;flex-shrink:0;z-index:1}.lm-actions-menu-btn.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-default, #374151);background:var(--bg-primary, #1f2937);color:var(--text-muted, #9ca3af);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all 0.2s ease}.lm-actions-menu-btn.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--text-standard, #e5e7eb);border-color:var(--border-dark)}.lm-actions-menu-btn.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-actions-menu-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px}.lm-actions-dropdown-menu.sc-ui-workspace-manager{position:absolute;top:calc(100% + 4px);right:0;min-width:180px;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.5);z-index:2;overflow:hidden}.lm-actions-menu-item.sc-ui-workspace-manager{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;transition:all 0.15s ease;color:var(--text-standard, #e5e7eb);font-size:13px}.lm-actions-menu-item.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151)}.lm-actions-menu-item.sc-ui-workspace-manager i.sc-ui-workspace-manager{width:16px;text-align:center;font-size:13px;color:var(--text-muted, #9ca3af)}.lm-actions-menu-item.sc-ui-workspace-manager span.sc-ui-workspace-manager{flex:1}.lm-actions-menu-divider.sc-ui-workspace-manager{height:1px;background:var(--color-primary, #374151);margin:4px 0}.lm-tab.sc-ui-workspace-manager{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:4px 4px 0 0;background:var(--bg-secondary, #111827);cursor:pointer;user-select:none;white-space:nowrap;flex-shrink:0;transition:all 0.2s ease;border:1px solid transparent;border-bottom:none;position:relative;z-index:1}.lm-tab.sc-ui-workspace-manager:hover{background:var(--bg-primary, #1f2937);border-color:var(--border-dark);transform:translateY(-1px);z-index:2}.lm-tab.sc-ui-workspace-manager .fa-thumbtack.sc-ui-workspace-manager{color:var(--primary-color);font-size:11px;animation:pinPulse 2s ease-in-out infinite}@keyframes pinPulse{0%,100%{opacity:0.7}50%{opacity:1}}.lm-tab.active.sc-ui-workspace-manager{background:var(--bg-primary, #0b1020);color:var(--text-standard, #ffffff);border-color:var(--primary-color);box-shadow:0 2px 8px rgba(var(--color-success-rgb, 61, 205, 88), 0.2)}.lm-tab.sc-ui-workspace-manager .lm-dot.sc-ui-workspace-manager{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-danger, #eab308)}.lm-region-actions.sc-ui-workspace-manager{margin-left:auto;display:inline-flex;gap:6px}.lm-region-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager{appearance:none;border:none;background:transparent;color:inherit;padding:6px;cursor:pointer;border-radius:4px;transition:all 0.2s ease;display:inline-flex;align-items:center;justify-content:center}.lm-region-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--primary-color)}.lm-region-actions.sc-ui-workspace-manager button.sc-ui-workspace-manager:active{transform:scale(0.95)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.sc-ui-workspace-manager{appearance:none;border:none;background:transparent;color:inherit;padding:4px;cursor:pointer;border-radius:4px;transition:all 0.15s ease;display:inline-flex;align-items:center;justify-content:center}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.sc-ui-workspace-manager:hover{background:rgba(var(--color-success-rgb, 61, 205, 88), 0.15);color:var(--primary-color);transform:scale(1.1)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.sc-ui-workspace-manager:active{transform:scale(0.9)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.lm-tab-actions.sc-ui-workspace-manager:hover{background:rgba(156, 163, 175, 0.15);color:var(--text-muted, #9ca3af)}.lm-tab.sc-ui-workspace-manager .lm-tab-btn.lm-close.sc-ui-workspace-manager:hover{background:rgba(var(--color-danger-rgb, 220, 38, 38), 0.15);color:var(--color-danger-hover, #dc2626)}.lm-tab-actions-wrapper.sc-ui-workspace-manager{position:relative;display:inline-flex;align-items:center;z-index:1}.lm-tab.sc-ui-workspace-manager:has(.lm-tab-actions-menu){z-index:10002}.lm-tab-actions-menu.sc-ui-workspace-manager{position:absolute;top:100%;right:0;margin-top:4px;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.3);z-index:10001;min-width:140px;overflow:hidden;animation:slideDown 0.15s ease}.lm-tab-actions-menu-fixed.sc-ui-workspace-manager{position:fixed;background:var(--bg-primary, #1f2937);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 4px 24px rgba(0, 0, 0, 0.5);z-index:12000;min-width:160px;overflow:hidden;transform:translateX(-100%);animation:slideDown 0.15s ease}.lm-tab-actions-item.sc-ui-workspace-manager{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;color:var(--text-standard, #e5e7eb);font-size:13px;transition:all 0.15s ease}.lm-tab-actions-item.sc-ui-workspace-manager i.sc-ui-workspace-manager{width:16px;text-align:center;font-size:13px;color:var(--text-muted, #9ca3af)}.lm-tab-actions-item.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151);color:var(--primary-color)}.lm-tab-actions-item.sc-ui-workspace-manager:hover i.sc-ui-workspace-manager{color:var(--primary-color)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager{color:var(--color-danger, #fca5a5)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager i.sc-ui-workspace-manager{color:var(--color-danger, #fca5a5)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager:hover{background:var(--color-danger, #991b1b);color:var(--text-standard, #ffffff)}.lm-tab-actions-item.lm-tab-actions-danger.sc-ui-workspace-manager:hover i.sc-ui-workspace-manager{color:var(--text-standard, #ffffff)}.lm-tab-actions-item.sc-ui-workspace-manager:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.lm-tab-actions-item.sc-ui-workspace-manager:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.lm-tab-actions-divider.sc-ui-workspace-manager{height:1px;background:var(--color-primary, #374151);margin:4px 8px}.lm-region-content.sc-ui-workspace-manager{position:relative;flex:1;background:var(--bg-secondary, #0f172a);color:var(--text-standard, #e5e7eb);min-height:0;min-width:0;overflow:hidden;display:flex;flex-direction:column}.lm-panel-host.sc-ui-workspace-manager{position:absolute;inset:0;padding:0;overflow:auto;display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #374151) var(--text-primary, #0f172a)}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar{width:8px;height:8px}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-secondary, #0f172a)}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #374151);border-radius:4px}.lm-panel-host.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #4b5563)}.lm-empty.sc-ui-workspace-manager{position:absolute;inset:0;display:grid;place-items:center;color:var(--text-muted, #9ca3af);font-size:14px;font-style:italic}.lm-popout-layer.sc-ui-workspace-manager{position:absolute;inset:0;pointer-events:none}.lm-popout-window.sc-ui-workspace-manager{position:absolute;background:var(--bg-secondary, #0f172a);border:1px solid var(--color-success, #3dcd58);border-radius:10px;box-shadow:0 20px 60px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(var(--color-success-rgb, 61, 205, 88), 0.3);overflow:hidden;pointer-events:auto;display:flex;flex-direction:column;backdrop-filter:blur(10px)}.lm-popout-header.sc-ui-workspace-manager{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:linear-gradient(135deg, var(--bg-primary, #1f2937), var(--bg-secondary, #111827));border-bottom:1px solid var(--border-default, #374151);cursor:move;user-select:none}.lm-popout-header.sc-ui-workspace-manager:active{cursor:grabbing}.lm-popout-content.sc-ui-workspace-manager{flex:1;overflow:auto;padding:0;scrollbar-width:thin;scrollbar-color:var(--text-secondary, #374151) var(--text-primary, #0f172a)}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar{width:8px;height:8px}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-secondary, #0f172a)}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #374151);border-radius:4px}.lm-popout-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #4b5563)}.lm-tabs.drag-over.sc-ui-workspace-manager,.lm-region-content.drag-over.sc-ui-workspace-manager{outline:2px dashed var(--color-success, #3dcd58)}.lm-context-menu.sc-ui-workspace-manager{position:fixed;background:var(--bg-secondary, #111827);color:var(--text-standard, #e5e7eb);border:1px solid var(--border-default, #374151);border-radius:6px;box-shadow:0 8px 24px rgba(0, 0, 0, 0.4);padding:6px;display:grid;gap:4px;z-index:11000}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager{appearance:none;border:none;background:var(--bg-primary, #1f2937);color:inherit;padding:6px 8px;border-radius:4px;cursor:pointer;text-align:left;display:flex;align-items:center;gap:8px}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager:disabled{opacity:0.5;cursor:not-allowed;color:var(--text-secondary)}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager i.sc-ui-workspace-manager{width:14px;text-align:center}.lm-context-menu.sc-ui-workspace-manager button.sc-ui-workspace-manager:hover:not(:disabled){background:var(--color-primary, #374151)}.lm-navigation-content.sc-ui-workspace-manager{flex:1;overflow-y:auto;overflow-x:hidden;background:var(--bg-secondary, #0f172a)}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar{width:8px}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1e293b)}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #475569);border-radius:4px}.lm-navigation-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #64748b)}.lm-navigation-section.sc-ui-workspace-manager{border-bottom:1px solid var(--border-subtle, #1e293b)}.lm-navigation-section.sc-ui-workspace-manager:last-child{border-bottom:none}.lm-navigation-section-header.sc-ui-workspace-manager{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg-primary, #1f2937);color:var(--text-standard, #e5e7eb);cursor:pointer;transition:all 0.2s;border-left:3px solid transparent}.lm-navigation-section-header.sc-ui-workspace-manager:hover{background:var(--color-primary, #374151)}.lm-navigation-section-header.active.sc-ui-workspace-manager{background:var(--color-primary, #1e3a8a);border-left-color:var(--primary-color);font-weight:600}.lm-navigation-section-header.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px;color:var(--text-muted, #9ca3af);width:16px;text-align:center}.lm-navigation-section-title.sc-ui-workspace-manager{flex:1;font-size:13px}.lm-navigation-section-close.sc-ui-workspace-manager{display:none;background:transparent;border:none;color:var(--text-muted, #9ca3af);cursor:pointer;padding:4px;border-radius:3px;transition:all 0.2s}.lm-navigation-section-close.sc-ui-workspace-manager:hover{background:rgba(255, 255, 255, 0.1);color:var(--text-standard, #ffffff)}.lm-navigation-section-close.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:12px;pointer-events:none}.lm-navigation-section-header.sc-ui-workspace-manager:hover .lm-navigation-section-close.sc-ui-workspace-manager{display:block}.lm-navigation-section-content.sc-ui-workspace-manager{padding:12px;background:var(--bg-secondary, #0f172a);overflow:auto;max-height:400px}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar{width:6px}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar-track{background:var(--bg-primary, #1e293b)}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb{background:var(--color-primary, #475569);border-radius:3px}.lm-navigation-section-content.sc-ui-workspace-manager::-webkit-scrollbar-thumb:hover{background:var(--color-primary, #64748b)}.lm-header-only-title.sc-ui-workspace-manager{flex:1;display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;color:var(--text-standard, #e5e7eb)}.lm-header-only-title.sc-ui-workspace-manager i.sc-ui-workspace-manager{font-size:14px;color:var(--text-muted, #9ca3af)}.lm-header-only-title.sc-ui-workspace-manager span.sc-ui-workspace-manager{color:var(--text-standard, #ffffff)}.lm-header-only-actions.sc-ui-workspace-manager{display:flex;align-items:center;gap:8px}.lm-header-btn.sc-ui-workspace-manager{background:rgba(255, 255, 255, 0.1);border:none;color:var(--text-standard, #e5e7eb);cursor:pointer;padding:6px 10px;border-radius:4px;transition:all 0.2s;font-size:13px;display:flex;align-items:center;justify-content:center}.lm-header-btn.sc-ui-workspace-manager:hover{background:rgba(255, 255, 255, 0.2);transform:scale(1.05)}.lm-header-btn.sc-ui-workspace-manager i.sc-ui-workspace-manager{pointer-events:none}.lm-context-menu.sc-ui-workspace-manager hr.sc-ui-workspace-manager{border:none;border-top:1px solid var(--border-default, #374151);margin:6px 0}'}},[514,"ui-workspace-manager",{regions:[1],direction:[1],saveState:[4,"save-state"],stateKey:[1,"state-key"],root:[32],panelsById:[32],popouts:[32],maximizedPanel:[32],preMaximizeState:[32],draggingPanel:[32],draggingPopout:[32],layoutVersion:[32],contextMenu:[32],tabActionsMenu:[32],floatingDropdown:[32],openDropdowns:[32],openActionsMenu:[32],regionsNeedingScroll:[32],minimizedRegions:[32],dragOverTarget:[32],getLayoutState:[64],clearAllRegions:[64],addPanel:[64],removePanel:[64],movePanel:[64],popoutPanel:[64],dockPanel:[64],splitRegion:[64],maximizePanel:[64],restorePanel:[64],closeAllPanels:[64],mergeRegion:[64],createRegion:[64],addRegion:[64],normalizeRegionSizes:[64],removeRegion:[64]},[[11,"scroll","handleScroll"],[9,"resize","handleScroll"],[9,"mousemove","handleScroll"],[0,"panelPopout","onPanelPopout"],[0,"panelSelect","onPanelSelect"]],{regions:[{handleRegionsChange:0}]}]),b=u,v=function(){"undefined"!=typeof customElements&&["ui-workspace-manager","ui-badge","ui-button","ui-icon","ui-loader","ui-resizable-panel"].forEach((a=>{switch(a){case"ui-workspace-manager":customElements.get(o(a))||customElements.define(o(a),u);break;case"ui-badge":customElements.get(o(a))||p();break;case"ui-button":customElements.get(o(a))||d();break;case"ui-icon":customElements.get(o(a))||s();break;case"ui-loader":customElements.get(o(a))||h();break;case"ui-resizable-panel":customElements.get(o(a))||g()}}))};export{b as UiWorkspaceManager,v as defineCustomElement}
|