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{r as t,c as e,h as i}from"./p-DUsoYu9r.js";import{s as o}from"./p-D2WzX6vR.js";const r=class{constructor(i){t(this,i),this.valueChange=e(this,"valueChange"),this.runCode=e(this,"runCode")}value="";language="javascript";theme="vs-dark";readonly=!1;lineNumbers=!0;toolbar=!1;toolbarLabelDisplay="hover";toolbarGroups=["all"];tabs=[];valueChange;runCode;highlightedCode="";lineCount=1;statusStats={line:1,col:1,selected:0};showSearch=!1;searchQuery="";showPalette=!1;paletteQuery="";showHelp=!1;activeTabIndex=0;unfoldedLines=new Set;foldedLines=new Set;lintErrors=[];activeToolbarTab="home";fontSize=14;showLineNumbers=!0;showMinimap=!0;showSidebar=!0;showBottomPanel=!0;activeSidebarTab="files";activeBottomTab="terminal";activeFileIndex=0;files=[{name:"index.js",language:"javascript",content:"// Welcome to the IDE\n// Start coding here..."},{name:"styles.css",language:"css",content:"/* Add your styles here */\nbody {\n margin: 0;\n}"},{name:"index.html",language:"html",content:"<!DOCTYPE html>\n<html>\n<body>\n <h1>Hello</h1>\n</body>\n</html>"}];terminalLogs=[{type:"info",text:"IDE Terminal initialized.",time:(new Date).toLocaleTimeString()}];suggestions=[];suggestionIndex=0;showSuggestions=!1;suggestionPos={top:0,left:0};textarea;pre;lineNumbersRef;minimapRef;minimapViewport;searchInput;paletteInput;charWidth=8.4;lineHeight=21;keywords={javascript:["function","return","const","let","var","import","export","class","if","else","for","while","switch","case","break","continue","true","false","null","undefined","console","log","document","window","async","await","try","catch","throw","new","this","super","typeof","instanceof","void","delete","in","of"],python:["def","class","return","if","elif","else","for","while","try","except","finally","import","from","as","pass","break","continue","True","False","None","print","with","yield","lambda","global","nonlocal","raise","assert"],html:["div","span","h1","h2","h3","p","a","button","input","form","img","ul","li","script","style","head","body","html","meta","link","title","header","footer","nav","main","section","article","aside"],css:["color","background","border","margin","padding","width","height","display","flex","grid","font-size","position","top","left","right","bottom","opacity","z-index","transform","transition","animation","justify-content","align-items"],java:["public","private","protected","class","interface","extends","implements","void","int","double","String","boolean","if","else","for","while","return","new","this","super","try","catch","finally","throw","throws","package","import","static","final"],csharp:["public","private","protected","class","interface","void","int","string","bool","if","else","for","while","return","new","this","var","namespace","using","static","readonly","async","await"]};commands=[{id:"theme-toggle",label:"Toggle Theme (Dark/Light)",action:()=>this.toggleTheme()},{id:"minimap-toggle",label:"Toggle Minimap",action:()=>this.showMinimap=!this.showMinimap},{id:"line-nums-toggle",label:"Toggle Line Numbers",action:()=>this.showLineNumbers=!this.showLineNumbers},{id:"format",label:"Format Document (Simple Indent)",action:()=>this.simpleFormat()},{id:"clear",label:"Clear Code",action:()=>{this.value="",this.valueChange.emit("")}},{id:"copy",label:"Copy to Clipboard",action:()=>this.handleCopy()},{id:"fold-all",label:"Fold All",action:()=>this.foldAll()},{id:"unfold-all",label:"Unfold All",action:()=>this.unfoldAll()},{id:"undo",label:"Undo",action:()=>document.execCommand("undo")},{id:"redo",label:"Redo",action:()=>document.execCommand("redo")}];componentWillLoad(){this.highlightCode(),this.updateLineCount(),this.runLinting()}componentDidLoad(){this.measureChar(),this.tabs.length>0&&this.handleTabClick(0)}measureChar(){if(!this.pre)return;const t=document.createElement("span");t.textContent="M",t.style.visibility="hidden",this.pre.appendChild(t);const e=t.getBoundingClientRect();this.charWidth=e.width,this.lineHeight=e.height,this.pre.removeChild(t)}valueChanged(){this.highlightCode(),this.updateLineCount(),this.runLinting()}languageChanged(){this.highlightCode(),this.runLinting()}tabsChanged(){this.tabs.length>0&&this.activeTabIndex>=this.tabs.length&&this.handleTabClick(0)}searchQueryChanged(){this.highlightCode()}executeCode(){if("javascript"===this.language||"json"===this.language)try{const t=[],e={log:(...e)=>t.push({type:"info",text:e.map((t=>"object"==typeof t?JSON.stringify(t):String(t))).join(" ")}),error:(...e)=>t.push({type:"error",text:e.join(" ")}),warn:(...e)=>t.push({type:"warn",text:e.join(" ")})};return new Function("console",this.value)(e),t.length>0?t:[{type:"info",text:"(Success: No output)"}]}catch(t){return[{type:"error",text:`Runtime Error: ${t.message}`}]}return[{type:"info",text:`Simulation for ${this.language} complete. (Code execution restricted to JS)`}]}handleInput=t=>{this.value=t.target.value,this.valueChange.emit(this.value),this.checkSuggestions()};checkSuggestions(){if(!this.textarea)return;const{selectionStart:t,value:e}=this.textarea;let i=t-1;for(;i>=0&&/[\w]/.test(e[i]);)i--;const o=e.substring(i+1,t);if(o.length<1)return void(this.showSuggestions=!1);const r=(this.keywords[this.language]||[]).filter((t=>t.toLowerCase().startsWith(o.toLowerCase())&&t!==o));if(r.length>0){this.suggestions=r,this.suggestionIndex=0,this.showSuggestions=!0;const i=e.substring(0,t).split("\n");this.suggestionPos={top:i.length*this.lineHeight-this.textarea.scrollTop+5,left:i[i.length-1].length*this.charWidth-this.textarea.scrollLeft+10}}else this.showSuggestions=!1}acceptSuggestion(t){if(!this.textarea)return;const{selectionStart:e,value:i}=this.textarea;let o=e-1;for(;o>=0&&/[\w]/.test(i[o]);)o--;o++;const r=i.substring(0,o)+t+i.substring(e);this.value=r,this.valueChange.emit(r),this.showSuggestions=!1,requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=o+t.length,this.highlightCode(),this.textarea.focus()}))}handleScroll=()=>{if(this.textarea&&this.pre){const{scrollTop:t,scrollLeft:e}=this.textarea;if(this.pre.scrollTop=t,this.pre.scrollLeft=e,this.minimapRef&&(this.minimapRef.scrollTop=t/(this.textarea.scrollHeight-this.textarea.clientHeight)*(this.minimapRef.scrollHeight-this.minimapRef.clientHeight),this.minimapViewport)){const e=this.textarea.clientHeight/this.textarea.scrollHeight;this.minimapViewport.style.top=t/this.textarea.scrollHeight*100+"%",this.minimapViewport.style.height=100*e+"%"}}this.lineNumbersRef&&this.textarea&&(this.lineNumbersRef.scrollTop=this.textarea.scrollTop)};handleKeydown=t=>{const e=t.ctrlKey||t.metaKey;if(e&&t.shiftKey&&("p"===t.key||"P"===t.key))return t.preventDefault(),void this.togglePalette();if(e&&"f"===t.key)return t.preventDefault(),void this.toggleSearch();if(this.showSuggestions){if("ArrowDown"===t.key)return t.preventDefault(),void(this.suggestionIndex=(this.suggestionIndex+1)%this.suggestions.length);if("ArrowUp"===t.key)return t.preventDefault(),void(this.suggestionIndex=(this.suggestionIndex-1+this.suggestions.length)%this.suggestions.length);if("Enter"===t.key||"Tab"===t.key)return t.preventDefault(),void this.acceptSuggestion(this.suggestions[this.suggestionIndex]);if("Escape"===t.key)return void(this.showSuggestions=!1)}if("Tab"===t.key){t.preventDefault();const e=this.textarea.selectionStart,i=this.textarea.selectionEnd,o=" ";return this.value=this.value.substring(0,e)+o+this.value.substring(i),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=e+o.length,this.highlightCode()})),void this.valueChange.emit(this.value)}const i=this.textarea.selectionStart,o=this.textarea.selectionEnd,r=this.value,a={"(":")","{":"}","[":"]",'"':'"',"'":"'"};if(a[t.key])return t.preventDefault(),this.value=r.substring(0,i)+t.key+a[t.key]+r.substring(o),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=i+1,this.highlightCode()})),void this.valueChange.emit(this.value);if(["}","]",")",'"',"'"].includes(t.key)&&r[i]===t.key)return t.preventDefault(),void(this.textarea.selectionStart=this.textarea.selectionEnd=i+1);if("Enter"===t.key){t.preventDefault();const e=r.substring(0,i).split("\n").pop(),a=e.match(/^\s*/);let s=a?a[0]:"";return(e.trim().endsWith("{")||e.trim().endsWith(":"))&&(s+=" "),this.value=r.substring(0,i)+"\n"+s+r.substring(o),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=i+1+s.length,this.highlightCode()})),void this.valueChange.emit(this.value)}if("Backspace"===t.key&&i===o&&i>0){const e=r[i-1],o=r[i];("{"===e&&"}"===o||"("===e&&")"===o||"["===e&&"]"===o||'"'===e&&'"'===o||"'"===e&&"'"===o)&&(t.preventDefault(),this.value=r.substring(0,i-1)+r.substring(i+1),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=i-1,this.highlightCode()})),this.valueChange.emit(this.value))}};handleSelection=t=>{const e=t.target,i=e.value.substring(0,e.selectionStart).split("\n");this.statusStats={line:i.length,col:i[i.length-1].length+1,selected:e.selectionEnd-e.selectionStart}};handleMinimapClick=t=>{const e=t.currentTarget.getBoundingClientRect();this.textarea&&(this.textarea.scrollTop=(t.clientY-e.top)/e.height*this.textarea.scrollHeight-this.textarea.clientHeight/2)};handleCopy=()=>{navigator.clipboard.writeText(this.value)};handleTabClick(t){if(t<0||t>=this.tabs.length)return;this.activeTabIndex=t;const e=this.tabs[t];this.value=e.content,this.language=e.language,this.valueChange.emit(this.value)}toggleSearch=()=>{this.showSearch=!this.showSearch,this.showSearch?setTimeout((()=>this.searchInput?.focus()),50):this.searchQuery=""};findNext(){if(!this.searchQuery)return;const t=this.value;let e=t.indexOf(this.searchQuery,this.textarea.selectionEnd);-1===e&&(e=t.indexOf(this.searchQuery,0)),-1!==e&&this.selectAndScroll(e,e+this.searchQuery.length)}findPrev(){if(!this.searchQuery)return;const t=this.value;let e=t.lastIndexOf(this.searchQuery,this.textarea.selectionStart-1);-1===e&&(e=t.lastIndexOf(this.searchQuery)),-1!==e&&this.selectAndScroll(e,e+this.searchQuery.length)}selectAndScroll(t,e){this.textarea.focus(),this.textarea.selectionStart=t,this.textarea.selectionEnd=e,this.handleScroll()}togglePalette=()=>{this.showPalette=!this.showPalette,this.paletteQuery="",this.showPalette&&setTimeout((()=>this.paletteInput?.focus()),50)};runCommand(t){t.isSymbol?this.selectAndScroll(t.start,t.end):t.action(),this.showPalette=!1}getPaletteItems(){if(this.paletteQuery.startsWith("@"))return this.getSymbols(this.paletteQuery.substring(1));const t=this.paletteQuery.toLowerCase();return this.commands.filter((e=>e.label.toLowerCase().includes(t)))}getSymbols(t){const e=[],i=this.value.split("\n"),o=t.toLowerCase(),r={javascript:/function\s+([\w$]+)|const\s+([\w$]+)\s*=\s*\([^)]*\)\s*=>|class\s+([\w$]+)/g,python:/def\s+([\w]+)|class\s+([\w]+)/g,java:/(?:public|private|protected|static|\s) +[\w\<\>\[\]]+\s+([\w]+)\s*\([^)]*\)\s*\{|class\s+([\w]+)/g,csharp:/(?:public|private|protected|static|\s) +[\w\<\>\[\]]+\s+([\w]+)\s*\([^)]*\)\s*\{|class\s+([\w]+)/g}[this.language];if(!r)return[];let a=0;for(let t=0;t<i.length;t++){const s=i[t];let n;for(;null!==(n=r.exec(s));){const i=n[1]||n[2]||n[3];i&&i.toLowerCase().includes(o)&&e.push({id:`symbol-${t}`,label:`@${i}`,isSymbol:!0,start:a+n.index,end:a+n.index+n[0].length,line:t+1})}a+=s.length+1}return e}toggleTheme(){this.theme="vs-dark"===this.theme?"vs-light":"vs-dark"}toggleMinimap(){this.showMinimap=!this.showMinimap}handleSelectAll(){this.textarea&&this.textarea.select()}handleUndo(){document.execCommand("undo")}handleRedo(){document.execCommand("redo")}handleCommentSelection(){if(!this.textarea)return;const t=this.textarea.selectionStart,e=this.textarea.selectionEnd,i=this.value,o=i.substring(t,e);let r;if("javascript"===this.language||"python"===this.language||"java"===this.language||"csharp"===this.language){const t="python"===this.language?"# ":"// ";r=o.includes("\n")?o.split("\n").map((e=>e.startsWith(t)?e.substring(t.length):t+e)).join("\n"):o.startsWith(t)?o.substring(t.length):t+o}else"html"===this.language?r=o.startsWith("\x3c!--")?o.replace(/^<!--\s*([\s\S]*?)\s*-->$/,"$1"):`\x3c!-- ${o} --\x3e`:"css"===this.language&&(r=o.startsWith("/*")?o.replace(/^\/\*\s*([\s\S]*?)\s*\*\/$/,"$1"):`/* ${o} */`);void 0!==r&&(this.value=i.substring(0,t)+r+i.substring(e),this.valueChange.emit(this.value),requestAnimationFrame((()=>{this.textarea.selectionStart=t,this.textarea.selectionEnd=t+r.length,this.highlightCode()})))}simpleFormat(){if("json"===this.language){try{const t=JSON.parse(this.value);this.value=JSON.stringify(t,null,2),this.valueChange.emit(this.value)}catch(t){}return}const t=this.value.split("\n");let e=0;const i=[];for(let o=0;o<t.length;o++){let r=t[o].trim();""!==r?((r.match(/^[\}\]\)]/)||r.startsWith("</"))&&(e=Math.max(0,e-1)),i.push(" ".repeat(e)+r),(r.endsWith("{")||r.endsWith("[")||r.endsWith("(")||r.match(/<[^/].*>$/)&&!r.match(/\/>$/)&&!r.includes("</"))&&e++):i.push("")}this.value=i.join("\n"),this.valueChange.emit(this.value),this.terminalLogs=[...this.terminalLogs,{type:"info",text:"Document formatted successfully.",time:(new Date).toLocaleTimeString()}]}getLineGitStatus(t){return t%15==0?"added":t%25==0?"modified":"none"}runLinting(){const t=[],e=this.value.split("\n"),i=[];for(let o=0;o<e.length;o++){const r=e[o];for(let e=0;e<r.length;e++){const a=r[e];if(["{","[","("].includes(a))i.push({char:a,line:o+1});else if(["}","]",")"].includes(a)){const e=i.pop();e&&this.matches(e.char,a)||t.push({line:o+1,msg:`Unexpected '${a}'`})}}}i.length>0&&i.forEach((e=>{t.push({line:e.line,msg:`Unclosed '${e.char}'`})})),this.lintErrors=t}matches(t,e){return"{"===t&&"}"===e||"["===t&&"]"===e||"("===t&&")"===e}isLineFoldable(t,e){if(t>=e.length-1)return!1;const i=this.getIndentLevel(e[t]);return this.getIndentLevel(e[t+1])>i||e[t].trim().endsWith("{")||e[t].trim().endsWith(":")}getIndentLevel(t){const e=t.match(/^\s*/);return e?e[0].length:0}toggleFold(t){this.foldedLines.has(t)?this.foldedLines.delete(t):this.foldedLines.add(t),this.foldedLines=new Set(this.foldedLines)}foldAll(){const t=this.value.split("\n");for(let e=0;e<t.length;e++)this.isLineFoldable(e,t)&&this.foldedLines.add(e+1);this.foldedLines=new Set(this.foldedLines)}unfoldAll(){this.foldedLines.clear(),this.foldedLines=new Set(this.foldedLines)}updateLineCount(){const t=this.value?this.value.split("\n").length:1;this.lineCount=t}highlightCode(){if(!this.value)return void(this.highlightedCode="");let t=this.escapeHtml(this.value);switch(this.language){case"javascript":case"json":t=this.highlightJS(t);break;case"html":t=this.highlightHTML(t);break;case"css":t=this.highlightCSS(t);break;case"python":t=this.highlightPython(t);break;case"java":case"csharp":t=this.highlightJavaCSharp(t);break;case"ladder":t=this.highlightLadder(t)}this.value.endsWith("\n")&&(t+="<br>"),this.highlightedCode=t}escapeRegex(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}escapeHtml(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}highlightJS(t){return t.replace(/\/\/.*/g,'<span class="token comment">$&</span>').replace(/\/\*[\s\S]*?\*\//g,'<span class="token comment">$&</span>').replace(/('.*?')|(".*?")|(`[\s\S]*?`)/g,'<span class="token string">$&</span>').replace(/\b(const|let|var|function|return|if|else|for|while|import|export|class|this|new|true|false|null|undefined|async|await|try|catch|finally|throw|break|continue|default|case|switch|typeof|instanceof|void|delete|in|of|static|get|set|extends|super)\b/g,'<span class="token keyword">$&</span>').replace(/\b(\d+)\b/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token class">$&</span>').replace(/(\w+)(?=\()/g,'<span class="token function">$&</span>')}highlightHTML(t){return t.replace(/(<\/?)(\w+)(.*?)(>)/g,((t,e,i,o,r)=>`<span class="token tag">${e}${i}</span>${o.replace(/(\w+)=("[^"]*")/g,'<span class="token attr-name">$1</span>=<span class="token string">$2</span>')}<span class="token tag">${r}</span>`)).replace(/<!--[\s\S]*?-->/g,'<span class="token comment">$&</span>')}highlightCSS(t){return t.replace(/\/\*[\s\S]*?\*\//g,'<span class="token comment">$&</span>').replace(/([a-zA-Z-]+)(?=:)/g,'<span class="token property">$1</span>').replace(/(:)([^;]+)(;)/g,((t,e,i,o)=>`${e}<span class="token number">${i}</span>${o}`)).replace(/(\.|#)([\w-]+)/g,'<span class="token selector">$1$2</span>')}highlightPython(t){return t.replace(/#.*/g,'<span class="token comment">$&</span>').replace(/("""[\s\S]*?""")|('''.*?''')/g,'<span class="token string">$&</span>').replace(/('.*?')|(".*?")/g,'<span class="token string">$&</span>').replace(/\b(def|class|if|elif|else|for|while|return|import|from|as|try|except|finally|with|pass|continue|break|True|False|None)\b/g,'<span class="token keyword">$&</span>').replace(/\b(\d+)\b/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token class">$&</span>').replace(/@\w+/g,'<span class="token function">$&</span>')}highlightJavaCSharp(t){return t.replace(/\/\/.*/g,'<span class="token comment">$&</span>').replace(/('.*?')|(".*?")/g,'<span class="token string">$&</span>').replace(/\b(public|private|protected|static|final|class|interface|void|int|double|String|boolean|if|else|for|while|return|new|this|super|extends|implements|try|catch|finally|throw|throws|package|import|namespace|using|var)\b/g,'<span class="token keyword">$&</span>').replace(/\b(\d+)\b/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token class">$&</span>').replace(/@\w+/g,'<span class="token function">$&</span>')}highlightLadder(t){return t.replace(/\(\*.*?\*\)/g,'<span class="token comment">$&</span>').replace(/\b(XIC|XIO|OTE|OTL|OTU|TON|TOF|RTO|CTU|CTD|MOV|COP|ADD|SUB|MUL|DIV|LIM|EQU|NEQ|LES|GRT|LEQ|GEQ|JMP|LBL)\b/g,'<span class="token keyword">$&</span>').replace(/\b(PROGRAM|END_PROGRAM|VAR|END_VAR|BOOL|INT|REAL|TIME|TON|IF|THEN|END_IF)\b/g,'<span class="token keyword">$&</span>').replace(/%[IQM][\d\.]+/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token variable">$&</span>')}renderLineNumbers(){if(!this.showLineNumbers)return null;const t=this.value.split("\n");return i("div",{class:"line-numbers",ref:t=>this.lineNumbersRef=t},t.map(((e,o)=>{const r=o+1,a=this.lintErrors.find((t=>t.line===r)),s=this.isLineFoldable(o,t),n=this.foldedLines.has(r),l=this.getLineGitStatus(o);return i("div",{class:{"line-number":!0,[`git-${l}`]:"none"!==l},onClick:()=>s&&this.toggleFold(r),style:{color:a?"#ff4d4d":"inherit"},title:a?a.msg:""},r,s&&i("span",{class:"fold-icon"},i("ui-icon",{name:"chevron-"+(n?"right":"down"),library:"fontawesome",size:"10px"})))})))}renderPalette(){if(!this.showPalette)return null;const t=this.getPaletteItems();return i("div",{class:"editor-palette-overlay",onClick:this.togglePalette},i("div",{class:"editor-palette",onClick:t=>t.stopPropagation()},i("div",{class:"palette-input-wrapper"},i("ui-icon",{name:"terminal",library:"fontawesome"}),i("ui-input",{type:"text",placeholder:"Type a command or @ for symbols...",value:this.paletteQuery,onInputChange:t=>this.paletteQuery=t.detail,ref:t=>this.paletteInput=t,onInputKeydown:e=>{"Escape"===e.detail.key&&this.togglePalette(),"Enter"===e.detail.key&&t.length>0&&this.runCommand(t[0])},variant:"plain",size:"sm"})),i("div",{class:"palette-results"},t.length>0?t.map((t=>i("div",{class:"palette-item",onClick:()=>this.runCommand(t)},i("ui-icon",{name:t.isSymbol?"at":"play",library:"fontawesome",size:"14px"}),i("span",null,t.label),t.line&&i("span",{class:"palette-meta"},"Line ",t.line)))):i("div",{class:"palette-no-results"},"No results found"))))}renderSearch(){return this.showSearch?i("div",{class:"search-widget"},i("ui-input",{customClass:"search-input",ref:t=>this.searchInput=t,type:"text",placeholder:"Find",value:this.searchQuery,onInputChange:t=>this.searchQuery=t.detail,onInputKeydown:t=>{const e=t.detail;"Escape"===e.key&&(this.showSearch=!1),"Enter"===e.key&&(e.shiftKey?this.findPrev():this.findNext())},size:"sm",variant:"outlined"}),i("div",{class:"search-actions"},i("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findPrev(),ariaLabel:"Previous (Shift+Enter)",icon:"arrow-up",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),i("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findNext(),ariaLabel:"Next (Enter)",icon:"arrow-down",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),i("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.showSearch=!1,ariaLabel:"Close search",icon:"times",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}))):null}renderMinimap(){return this.showMinimap?i("div",{class:"minimap-container",onClick:this.handleMinimapClick},i("div",{class:"minimap-content",innerHTML:o(this.highlightedCode),ref:t=>this.minimapRef=t}),i("div",{class:"minimap-viewport",ref:t=>this.minimapViewport=t})):null}renderStatusBar(){return i("div",{class:"status-bar"},i("div",{class:"status-item"},i("ui-icon",{name:"code-branch",library:"fontawesome",size:"14px"})," main"),i("div",{class:"status-item"},i("ui-icon",{name:"exclamation-circle",library:"fontawesome",size:"14px"})," ",this.lintErrors.length," Errors"),i("div",{class:"status-item"},"Ln ",this.statusStats.line,", Col ",this.statusStats.col),i("div",{class:"status-item"},this.statusStats.selected>0?`(${this.statusStats.selected} selected)`:""),i("div",{class:"status-item"},"Spaces: 2"),i("div",{class:"status-item"},this.language.toUpperCase()),i("div",{class:"status-item",onClick:()=>this.toggleTheme(),style:{cursor:"pointer"}},i("ui-icon","vs-dark"===this.theme?{name:"moon",library:"fontawesome",size:"14px"}:{name:"sun",library:"fontawesome",size:"14px"})))}renderSuggestions(){return this.showSuggestions?i("ul",{class:"suggestion-list",style:{top:`${this.suggestionPos.top}px`,left:`${this.suggestionPos.left}px`}},this.suggestions.map(((t,e)=>i("li",{class:e===this.suggestionIndex?"active":"",onClick:()=>this.acceptSuggestion(t),onMouseDown:t=>t.preventDefault()},i("ui-icon",{name:"cube",library:"fontawesome",size:"14px",class:"icon"})," ",t)))):null}renderRibbonButton(t,e,o,r={}){const{lg:a=!1,color:s}=r,n="always"===this.toolbarLabelDisplay,l="hover"===this.toolbarLabelDisplay,c=i("ui-button",{slot:l?"target":void 0,onClick:o,style:s?{color:s}:{},ariaLabel:e,label:n?e:void 0,icon:t.replace(/^fa[sb]? fa-/,""),iconLibrary:"fontawesome",iconOnly:!n,size:a?"lg":"md",variant:"ghost"});return l?i("ui-tooltip",{content:e,position:"bottom"},c):c}isGroupVisible(t){return!(this.toolbarGroups&&!this.toolbarGroups.includes("all"))||this.toolbarGroups.includes(t)}renderToolbar(){return this.toolbar?i("div",{class:`editor-ribbon-container labels-${this.toolbarLabelDisplay}`},i("div",{class:"ribbon-tabs"},i("div",{class:"ribbon-tab "+("home"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="home"},i("ui-tooltip",{content:"Home",position:"bottom"},i("ui-icon",{name:"home",library:"fontawesome",slot:"target",size:"16px"}))),i("div",{class:"ribbon-tab "+("edit"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="edit"},i("ui-tooltip",{content:"Edit",position:"bottom"},i("ui-icon",{name:"edit",library:"fontawesome",slot:"target",size:"16px"}))),i("div",{class:"ribbon-tab "+("view"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="view"},i("ui-tooltip",{content:"View",position:"bottom"},i("ui-icon",{name:"eye",library:"fontawesome",slot:"target",size:"16px"}))),i("div",{class:"ribbon-tab "+("run"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="run"},i("ui-tooltip",{content:"Run",position:"bottom"},i("ui-icon",{name:"play",library:"fontawesome",slot:"target",size:"16px"})))),i("div",{class:"ribbon-content"},"home"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("history")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-undo","Undo",(()=>this.handleUndo()),{lg:!0}),this.renderRibbonButton("fas fa-redo","Redo",(()=>this.handleRedo()),{lg:!0})),i("div",{class:"ribbon-group-label"},"History")),this.isGroupVisible("history")&&this.isGroupVisible("clipboard")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("clipboard")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-copy","Copy",(()=>this.handleCopy())),this.renderRibbonButton("fas fa-mouse-pointer","Select All",(()=>this.handleSelectAll()))),i("div",{class:"ribbon-group-label"},"Clipboard")),(this.isGroupVisible("history")||this.isGroupVisible("clipboard"))&&this.isGroupVisible("search")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("search")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-search","Find",(()=>this.toggleSearch()),{lg:!0}),this.renderRibbonButton("fas fa-terminal","Palette",(()=>this.togglePalette()),{lg:!0})),i("div",{class:"ribbon-group-label"},"Search"))),"edit"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("document")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-code","Format",(()=>this.simpleFormat()),{lg:!0})),i("div",{class:"ribbon-group-label"},"Document")),this.isGroupVisible("document")&&this.isGroupVisible("folding")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("folding")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-minus-square","Fold All",(()=>this.foldAll())),this.renderRibbonButton("fas fa-plus-square","Unfold All",(()=>this.unfoldAll()))),i("div",{class:"ribbon-group-label"},"Folding")),(this.isGroupVisible("document")||this.isGroupVisible("folding"))&&this.isGroupVisible("actions")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("actions")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-comment-slash","Comment",(()=>this.handleCommentSelection()))),i("div",{class:"ribbon-group-label"},"Actions"))),"view"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("interface")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-map","Minimap",(()=>this.toggleMinimap()),{lg:!0,active:this.showMinimap}),this.renderRibbonButton("fas fa-list-ol","Line Numbers",(()=>this.showLineNumbers=!this.showLineNumbers),{lg:!0,active:this.showLineNumbers})),i("div",{class:"ribbon-group-label"},"Interface")),this.isGroupVisible("interface")&&this.isGroupVisible("theme")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("theme")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("vs-dark"===this.theme?"fas fa-moon":"fas fa-sun","vs-dark"===this.theme?"Dark":"Light",(()=>this.toggleTheme()),{lg:!0})),i("div",{class:"ribbon-group-label"},"Theme")),(this.isGroupVisible("interface")||this.isGroupVisible("theme"))&&this.isGroupVisible("appearance")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("appearance")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},i("div",{class:"ribbon-select-container"},i("select",{onChange:t=>this.fontSize=parseInt(t.target.value)},[10,12,14,16,18,20,24].map((t=>i("option",{value:t,selected:this.fontSize===t},t,"px")))),"always"===this.toolbarLabelDisplay&&i("span",null,"Font Size"))),i("div",{class:"ribbon-group-label"},"Appearance"))),"run"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("execution")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-play","Run Code",(()=>this.runCode.emit()),{lg:!0,color:"#4ade80"})),i("div",{class:"ribbon-group-label"},"Execution"))))):null}renderHelp(){return this.showHelp?i("div",{class:"help-modal-overlay",onClick:()=>this.showHelp=!1},i("div",{class:"help-modal",onClick:t=>t.stopPropagation()},i("div",{class:"help-header"},i("h3",null,"Editor Shortcuts & Help"),i("ui-button",{variant:"ghost",onClick:()=>this.showHelp=!1,ariaLabel:"Close help",icon:"times",iconLibrary:"fontawesome",iconOnly:!0})),i("div",{class:"help-content"},i("div",{class:"help-section"},i("h4",null,"Keyboard Shortcuts"),i("ul",null,i("li",null,i("kbd",null,"Ctrl")," + ",i("kbd",null,"F")," : Find / Search"),i("li",null,i("kbd",null,"Ctrl")," + ",i("kbd",null,"Shift")," + ",i("kbd",null,"P")," : Command Palette"),i("li",null,i("kbd",null,"Ctrl")," + ",i("kbd",null,"Space")," : Trigger Suggestions"),i("li",null,i("kbd",null,"Tab")," : Indent / Accept Suggestion"))),i("div",{class:"help-section"},i("h4",null,"Toolbar Features"),i("ul",null,i("li",null,i("ui-icon",{name:"play",library:"fontawesome",style:{color:"#4ade80"},size:"14px"})," ",i("strong",null,"Run"),": Execute code (demo mode)"),i("li",null,i("ui-icon",{name:"indent",library:"fontawesome",size:"14px"})," ",i("strong",null,"Format"),": Auto-indent code"),i("li",null,i("ui-icon",{name:"moon",library:"fontawesome",size:"14px"})," ",i("strong",null,"Theme"),": Toggle Dark/Light")))))):null}renderTabBar(){return this.tabs&&0!==this.tabs.length?i("div",{class:"editor-tabs"},this.tabs.map(((t,e)=>i("div",{class:"editor-tab "+(e===this.activeTabIndex?"active":""),onClick:()=>this.handleTabClick(e)},i("ui-icon",{class:"tab-icon",name:this.getIconForLang(t.language),library:"fontawesome"}),i("span",{class:"tab-title"},t.title))))):null}getIconForLang(t){switch(t){case"javascript":return"js-square";case"html":return"html5";case"css":return"css3";case"python":return"python";case"java":return"java";case"json":return"code";default:return"file-alt"}}renderSidebar(){return this.showSidebar?i("div",{class:{"editor-sidebar":!0,collapsed:!this.showSidebar}},i("div",{class:"sidebar-tabs"},i("div",{class:{"sidebar-tab":!0,active:"files"===this.activeSidebarTab},onClick:()=>this.activeSidebarTab="files"},i("ui-icon",{name:"copy",library:"fontawesome"}))),i("div",{class:"sidebar-content"},"files"===this.activeSidebarTab&&i("div",{class:"file-explorer"},i("div",{class:"sidebar-header"},"EXPLORER"),i("div",{class:"file-list"},this.files.map(((t,e)=>i("div",{class:{"file-item":!0,active:this.activeFileIndex===e},onClick:()=>this.switchFile(e)},i("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name)}),i("span",null,t.name)))))))):null}handleTerminalKeyDown=t=>{if("Enter"===t.key){const e=t.target,i=e.value.trim().toLowerCase();if(!i)return;this.terminalLogs=[...this.terminalLogs,{type:"info",text:`$ ${e.value}`,time:(new Date).toLocaleTimeString()}],"clear"===i?this.terminalLogs=[]:"run"===i||"node index.js"===i?(this.terminalLogs=[...this.terminalLogs,{type:"info",text:"Executing program...",time:(new Date).toLocaleTimeString()}],setTimeout((()=>{const t=this.executeCode().map((t=>({...t,time:(new Date).toLocaleTimeString()})));this.terminalLogs=[...this.terminalLogs,...t],this.runCode.emit()}),500)):this.terminalLogs="help"===i?[...this.terminalLogs,{type:"info",text:"Available commands: run, clear, help, ls, whoami",time:(new Date).toLocaleTimeString()}]:[...this.terminalLogs,{type:"error",text:`Command not found: ${i}`,time:(new Date).toLocaleTimeString()}],e.value=""}};renderBreadcrumbs(){const t=this.files[this.activeFileIndex];return i("div",{class:"editor-breadcrumbs"},i("div",{class:"breadcrumb-item"},i("ui-icon",{name:"folder-open",library:"fontawesome",size:"12px"}),i("span",null,"project"),i("span",{class:"separator"},"/")),i("div",{class:"breadcrumb-item"},i("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name),size:"12px"}),i("span",null,t.name)))}renderBottomPanel(){return this.showBottomPanel?i("div",{class:{"editor-bottom-panel":!0,collapsed:!this.showBottomPanel}},i("div",{class:"panel-header"},i("div",{class:"panel-tabs"},i("div",{class:{"panel-tab":!0,active:"terminal"===this.activeBottomTab},onClick:()=>this.activeBottomTab="terminal"},"TERMINAL"),i("div",{class:{"panel-tab":!0,active:"output"===this.activeBottomTab},onClick:()=>this.activeBottomTab="output"},"OUTPUT"),i("div",{class:{"panel-tab":!0,active:"problems"===this.activeBottomTab},onClick:()=>this.activeBottomTab="problems"},"PROBLEMS")),i("div",{class:"panel-controls"},i("ui-icon",{name:"times",library:"fontawesome",onClick:()=>this.showBottomPanel=!1,style:{cursor:"pointer"}}))),i("div",{class:"panel-content"},"terminal"===this.activeBottomTab&&i("div",{class:"terminal-content"},this.terminalLogs.map((t=>i("div",{class:`log-item ${t.type}`},i("span",{class:"log-time"},"[",t.time,"]"),i("span",{class:"log-text"},t.text)))),i("div",{class:"terminal-input-line"},i("span",{class:"terminal-prompt"},"$"),i("ui-input",{type:"text",customClass:"terminal-input",placeholder:"Type a command (run, clear, help)...",onInputKeydown:t=>this.handleTerminalKeyDown(t.detail),variant:"plain",size:"sm",fullWidth:!0}))),"output"===this.activeBottomTab&&i("div",{class:"output-preview",style:{display:"flex",alignItems:"center",justifyCenter:"center",height:"100%",background:"#f8fafc",color:"#64748b"}},i("div",{style:{textAlign:"center"}},i("ui-icon",{name:"eye-slash",library:"fontawesome",size:"32px",style:{opacity:.5,marginBottom:"12px"}}),i("p",{style:{fontSize:"14px",fontWeight:"500"}},"Live Preview Disabled (No Iframe)"))))):null}switchFile(t){this.activeFileIndex=t;const e=this.files[t];this.value=e.content,this.language=e.language,this.valueChange.emit(this.value)}getFileIcon(t){return t.endsWith(".js")?"fab fa-js-square text-warning":t.endsWith(".html")?"fab fa-html5 text-danger":t.endsWith(".css")?"fab fa-css3-alt text-primary":"fas fa-file-code"}render(){const t="vs-light"===this.theme?"theme-vs-light":"theme-vs-dark",e=this.value.split("\n");let r=-1,a=-1;for(let t=0;t<e.length;t++)if(-1!==r){if(!(this.getIndentLevel(e[t])<=a&&""!==e[t].trim()))continue;r=-1}else this.foldedLines.has(t+1)&&(r=t+1,a=this.getIndentLevel(e[t]));return i("div",{key:"321fc92d91bf5365394b866e7efef0bcce5f92e8",class:`code-editor-container ${t}`},this.renderTabBar(),this.renderToolbar(),this.renderPalette(),i("div",{key:"212c74c9fae6bddf8206698c2b7279acc328cdf6",class:"code-editor-layout"},this.renderSidebar(),i("div",{key:"6afeb17b34a66e4cdaf72d8582041913a58d13fc",class:"editor-main-panel"},this.renderBreadcrumbs(),i("div",{key:"7a3e97d74cc5b68250a4471a3e1b9fa858d22b98",class:"editor-main-content",style:{display:"flex",flex:"1",minHeight:"0",position:"relative"}},this.renderLineNumbers(),i("div",{key:"ce569b57f4c9b4365cd9f014d8aff2d1c8679b8b",class:"editor-wrapper"},this.renderSearch(),this.renderSuggestions(),i("ui-button",{key:"629168b1f60cc6a962af7d4f81e0078d5c13f2d4",variant:"ghost",class:"copy-button",onClick:this.handleCopy,ariaLabel:"Copy Code",icon:"copy",iconLibrary:"fontawesome",iconOnly:!0}),i("pre",{key:"d4fa13f823d5ba4ab80db9ab66286de099ba28cc",class:"syntax-highlighter",ref:t=>this.pre=t,innerHTML:o(this.highlightedCode)}),i("textarea",{key:"77d8ec6eb4aa8cea02da3ca30d1b5a992717d319",class:"editor-content",ref:t=>this.textarea=t,value:this.value,onInput:this.handleInput,onScroll:this.handleScroll,onKeyDown:this.handleKeydown,onSelect:this.handleSelection,onClick:this.handleSelection,onKeyUp:this.handleSelection,spellcheck:!1,readonly:this.readonly,role:"textbox","aria-multiline":"true","aria-label":"Code Editor"})),this.renderMinimap()),this.renderBottomPanel())),this.renderStatusBar(),this.renderHelp())}static get watchers(){return{value:[{valueChanged:0}],language:[{languageChanged:0}],tabs:[{tabsChanged:0}],searchQuery:[{searchQueryChanged:0}]}}};r.style='.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:flex;flex-direction:column;font-family:"Menlo", "Monaco", "Courier New", monospace;font-size:14px;line-height:1.5;position:relative;border-radius:8px;overflow:hidden;border:1px solid var(--border-color, var(--border-subtle, #e2e8f0));background-color:var(--editor-bg);color:var(--editor-fg);--editor-bg:var(--bg-primary, #ffffff);--editor-fg:var(--text-primary, #1e293b);--line-num-bg:var(--bg-primary, #f8fafc);--line-num-fg:var(--color-primary, #94a3b8);--indent-guide:rgba(0, 0, 0, 0.05);--cursor-color:var(--text-primary, #000);--selection-bg:var(--color-primary, #b3d4fc);--status-bar-bg:var(--bg-secondary, #f1f5f9);--status-bar-fg:var(--color-primary, #64748b);--minimap-width:60px;--git-added:var(--color-success, #28a745);--git-modified:var(--color-danger, #ffc107)}:host(.theme-vs-dark){--editor-bg:var(--bg-primary, #1e1e1e);--editor-fg:var(--bg-secondary, #d4d4d4);--line-num-bg:var(--bg-primary, #1e1e1e);--line-num-fg:var(--text-muted, #858585);--cursor-color:var(--text-standard, #ffffff);--selection-bg:var(--color-primary, #264f78);--status-bar-bg:var(--color-primary, #007acc);--status-bar-fg:var(--bg-primary, #ffffff);border-color:var(--border-strong, #333)}.code-editor-container{display:flex;flex-direction:column;flex:1;position:relative;overflow:hidden;height:100%}.code-editor-layout{display:grid;grid-template-columns:auto 1fr auto;flex:1;min-height:0;position:relative;overflow:hidden;background-color:var(--editor-bg)}.sidebar-tabs{width:48px;flex-shrink:0;background-color:var(--status-bar-bg);border-right:1px solid var(--border-color);display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:20px}.sidebar-tabs .sidebar-tab{font-size:20px;color:var(--status-bar-fg);cursor:pointer;width:100%;display:flex;justify-content:center;position:relative;padding:8px 0;opacity:0.6;transition:all 0.2s}.sidebar-tabs .sidebar-tab.active{opacity:1;color:var(--color-primary, #007acc);border-left:2px solid var(--color-primary, #007acc)}.sidebar-tabs .sidebar-tab:hover{opacity:1}.sidebar-content{flex:1;overflow-y:auto;padding:0}.sidebar-header{padding:10px 16px;font-size:11px;font-weight:600;color:var(--status-bar-fg);text-transform:uppercase;letter-spacing:0.5px}.file-list{padding:4px 0}.file-item{display:flex;align-items:center;padding:6px 16px;gap:8px;cursor:pointer;font-size:13px;color:var(--status-bar-fg);transition:background 0.2s}.file-item:hover{background-color:rgba(128, 128, 128, 0.1);color:var(--editor-fg)}.file-item.active{background-color:rgba(0, 122, 204, 0.1);color:var(--color-primary, #007acc);font-weight:500}.file-item i{width:16px;text-align:center}.file-item .text-warning{color:var(--color-warning, #f59e0b)}.file-item .text-danger{color:var(--color-danger, #ef4444)}.file-item .text-primary{color:var(--color-primary, #10b981)}.editor-main-panel{display:flex;flex-direction:column;min-width:0;flex:1}.editor-breadcrumbs{height:35px;background-color:var(--editor-bg);border-bottom:1px solid var(--border-color);display:flex;align-items:center;padding:0 16px;font-size:13px;color:var(--status-bar-fg);gap:10px;user-select:none}.editor-breadcrumbs .breadcrumb-item{display:flex;align-items:center;gap:6px;cursor:pointer}.editor-breadcrumbs .breadcrumb-item:hover{color:var(--editor-fg)}.editor-breadcrumbs .breadcrumb-item i{font-size:14px}.editor-breadcrumbs .breadcrumb-item .separator{opacity:0.5;margin:0 4px}.editor-bottom-panel{height:250px;background-color:var(--editor-bg);border-top:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden;transition:height 0.3s ease}.editor-bottom-panel.collapsed{height:0;border-top:none}.editor-bottom-panel .panel-header{height:35px;display:flex;justify-content:space-between;align-items:center;padding:0 16px;border-bottom:1px solid var(--border-color);background-color:var(--status-bar-bg)}.editor-bottom-panel .panel-tabs{display:flex;gap:20px;height:100%}.editor-bottom-panel .panel-tabs .panel-tab{font-size:11px;font-weight:600;color:var(--status-bar-fg);height:100%;display:flex;align-items:center;cursor:pointer;border-bottom:2px solid transparent;opacity:0.7;transition:all 0.2s}.editor-bottom-panel .panel-tabs .panel-tab:hover{opacity:1}.editor-bottom-panel .panel-tabs .panel-tab.active{opacity:1;color:var(--color-primary, #007acc);border-bottom-color:var(--color-primary, #007acc)}.editor-bottom-panel .panel-controls i{font-size:12px;color:var(--status-bar-fg);cursor:pointer;opacity:0.6}.editor-bottom-panel .panel-controls i:hover{opacity:1;color:var(--color-danger, #ef4444)}.editor-bottom-panel .panel-content{flex:1;overflow-y:auto;padding:12px 16px;font-family:"Menlo", "Monaco", "Courier New", monospace;background-color:var(--editor-bg)}.editor-bottom-panel .terminal-content .log-item{margin-bottom:4px;font-size:12px;display:flex;gap:8px}.editor-bottom-panel .terminal-content .log-item .log-time{opacity:0.5}.editor-bottom-panel .terminal-content .log-item.info{color:var(--color-success, #10b981)}.editor-bottom-panel .terminal-content .log-item.error{color:var(--color-danger, #ef4444)}.editor-bottom-panel .terminal-content .log-item.warn{color:var(--color-warning, #f59e0b)}.editor-bottom-panel .terminal-content .terminal-input-line{display:flex;gap:8px;margin-top:8px;align-items:center}.editor-bottom-panel .terminal-content .terminal-input-line .terminal-prompt{color:var(--color-primary, #007acc);font-weight:bold}.editor-bottom-panel .terminal-content .terminal-input-line .terminal-input{background:transparent;border:none;color:var(--editor-fg);outline:none;flex:1;font-family:inherit;font-size:12px}.line-numbers{flex-shrink:0;padding:10px 0;text-align:right;background-color:var(--line-num-bg);color:var(--line-num-fg);border-right:1px solid rgba(128, 128, 128, 0.1);user-select:none;min-width:45px;overflow:hidden}.line-numbers .line-number{display:flex;padding:0 4px 0 8px;height:1.5em;white-space:nowrap;justify-content:space-between;cursor:pointer}.line-numbers .line-number .fold-icon{opacity:0;font-size:9px;margin-left:4px;display:flex;align-items:center;color:var(--line-num-fg)}.line-numbers .line-number.git-added{border-left:3px solid var(--git-added)}.line-numbers .line-number.git-modified{border-left:3px solid var(--git-modified)}.line-numbers .line-number:hover .fold-icon{opacity:1;color:var(--editor-fg)}.folded-placeholder{background-color:var(--status-bar-bg);color:var(--status-bar-fg);padding:0 4px;border-radius:2px;font-size:10px;cursor:pointer;user-select:none;margin-left:4px;display:inline-block;height:14px;line-height:14px}.editor-wrapper{flex-grow:1;position:relative;overflow:hidden}.editor-content,.syntax-highlighter{margin:0;padding:10px;border:none;box-sizing:border-box;font-family:inherit;font-size:inherit;line-height:inherit;tab-size:2;white-space:pre;word-wrap:normal;overflow-x:auto;overflow-y:auto;position:absolute;top:0;left:0;width:100%;height:100%}.editor-content{color:transparent;background:transparent;caret-color:var(--cursor-color);z-index:1;resize:none;outline:none;background-image:linear-gradient(to right, var(--indent-guide) 1px, transparent 1px);background-size:calc(var(--indent-size, 2) * 8.4px) 100%;background-repeat:repeat-x;background-attachment:local}.editor-content::selection{background:var(--selection-bg);color:transparent}.syntax-highlighter{z-index:0;pointer-events:none;color:var(--editor-fg)}.lint-error{text-decoration:underline wavy var(--color-danger, #ff4d4d);text-decoration-thickness:2px;position:relative}.minimap-container{width:var(--minimap-width);border-left:1px solid rgba(128, 128, 128, 0.1);background:var(--editor-bg);overflow:hidden;position:relative;user-select:none;flex-shrink:0;cursor:pointer}.minimap-content{transform-origin:top left;transform:scale(0.15);width:666%;pointer-events:none;padding:10px}.minimap-viewport{position:absolute;left:0;width:100%;background:rgba(100, 100, 100, 0.2);cursor:grab;transition:background 0.2s}.minimap-viewport:hover{background:rgba(100, 100, 100, 0.3)}.minimap-viewport:active{cursor:grabbing;background:rgba(100, 100, 100, 0.4)}.status-bar{display:flex;justify-content:flex-end;gap:16px;padding:4px 12px;background-color:var(--status-bar-bg);color:var(--status-bar-fg);font-size:11px;flex-shrink:0;user-select:none}.status-item{display:flex;align-items:center;gap:6px;cursor:default}.status-item i{font-size:10px}.command-palette-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.3);z-index:100;display:flex;justify-content:center;align-items:flex-start;padding-top:20px;backdrop-filter:blur(1px)}.command-palette{width:400px;max-width:90%;background:var(--editor-bg);border:1px solid var(--border-color, #454545);box-shadow:0 4px 12px rgba(0, 0, 0, 0.25);border-radius:6px;display:flex;flex-direction:column;overflow:hidden;animation:slideDown 0.15s ease-out}.command-palette input{width:100%;padding:10px;border:none;background:var(--status-bar-bg);color:var(--editor-fg);font-family:inherit;font-size:13px;outline:none;border-bottom:1px solid var(--border-color, rgba(128, 128, 128, 0.2))}.command-palette .command-list{max-height:250px;overflow-y:auto;margin:0;padding:0;list-style:none}.command-palette .command-item{padding:8px 12px;cursor:pointer;font-size:13px;display:flex;justify-content:space-between;color:var(--editor-fg);border-left:2px solid transparent;}.command-palette .command-item:hover,.command-palette .command-item.active{background-color:var(--selection-bg);border-left-color:var(--status-bar-bg)}.command-palette .command-item .shortcut{opacity:0.6;font-size:11px}@keyframes slideDown{from{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.token.comment{color:var(--color-success, #6a9955);font-style:italic}.token.string{color:var(--color-danger, #ce9178)}.token.number{color:var(--color-primary, #b5cea8)}.token.boolean{color:var(--color-primary, #569cd6)}.token.keyword{color:var(--color-primary, #c586c0);font-weight:bold}.token.function{color:var(--color-primary, #dcdcaa)}.token.operator{color:var(--bg-secondary, #d4d4d4)}.token.class{color:var(--color-primary, #4ec9b0)}.token.variable{color:var(--color-primary, #9cdcfe)}.token.tag{color:var(--color-primary, #569cd6)}.token.attr-name{color:var(--color-primary, #9cdcfe)}.token.property{color:var(--color-primary, #9cdcfe)}.token.selector{color:var(--color-primary, #d7ba7d)}:host(:not(.theme-vs-dark)) .token.string{color:var(--color-danger, #a31515)}:host(:not(.theme-vs-dark)) .token.keyword{color:var(--color-primary, #af00db)}:host(:not(.theme-vs-dark)) .token.function{color:var(--color-primary, #795e26)}:host(:not(.theme-vs-dark)) .token.number{color:var(--color-success, #098658)}:host(:not(.theme-vs-dark)) .token.comment{color:var(--color-success, #008000)}:host(:not(.theme-vs-dark)) .token.selector{color:var(--text-primary, #800000)}.copy-button{position:absolute;top:8px;right:20px;z-index:10;background:rgba(128, 128, 128, 0.2);border:none;color:var(--editor-fg);padding:4px 8px;border-radius:4px;cursor:pointer;opacity:0;transition:opacity 0.2s;font-size:12px}.copy-button:hover{background:rgba(128, 128, 128, 0.4)}:host(:hover) .copy-button{opacity:1}.search-widget{position:absolute;top:10px;right:40px;right:60px;z-index:50;display:flex;background:var(--editor-bg);border:1px solid var(--border-color, #ccc);box-shadow:0 4px 6px rgba(0, 0, 0, 0.1);border-radius:4px;padding:4px;align-items:center}.search-widget .search-input{border:none;outline:none;background:transparent;color:var(--editor-fg);padding:4px;font-size:13px;width:150px}.search-widget .search-actions{display:flex;gap:2px}.search-widget .search-actions button{background:transparent;border:none;color:var(--status-bar-fg);cursor:pointer;padding:4px;border-radius:2px}.search-widget .search-actions button:hover{background:var(--line-num-bg);color:var(--editor-fg)}.suggestion-list{position:absolute;z-index:100;background:var(--editor-bg);border:1px solid var(--border-color, #ccc);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);border-radius:4px;max-height:200px;overflow-y:auto;width:200px;margin:0;padding:0;list-style:none;font-size:13px;font-family:inherit}.suggestion-list li{padding:4px 8px;cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--editor-fg)}.suggestion-list li.active,.suggestion-list li:hover{background:var(--selection-bg);color:var(--editor-fg)}.suggestion-list li .icon{opacity:0.7;font-size:11px}.editor-tabs{display:flex;background-color:var(--status-bar-bg);background-color:var(--bg-primary, #252526);overflow-x:auto;flex-shrink:0;}.editor-tabs::-webkit-scrollbar{height:4px}.editor-tabs::-webkit-scrollbar-thumb{background:rgba(128, 128, 128, 0.3)}:host(:not(.theme-vs-dark)) .editor-tabs{background-color:var(--bg-primary, #f3f3f3)}.editor-tab{display:flex;align-items:center;gap:8px;padding:8px 12px;color:var(--text-muted, #969696);background-color:transparent;cursor:pointer;border-right:1px solid rgba(0, 0, 0, 0.1);font-size:13px;white-space:nowrap;border-top:2px solid transparent;}.editor-tab:hover{background-color:rgba(128, 128, 128, 0.1);color:var(--editor-fg)}.editor-tab.active{background-color:var(--editor-bg);color:var(--editor-fg);border-top-color:var(--color-primary, #007acc);}.editor-tab .tab-icon{font-size:12px;opacity:0.8}.editor-tab{}.editor-ribbon-container{display:flex;flex-direction:column;background-color:var(--ribbon-bg, #f3f3f3);border-bottom:1px solid var(--border-color, #d1d1d1);flex-shrink:0;user-select:none;font-family:"Segoe UI", system-ui, -apple-system, sans-serif;--ribbon-bg:var(--bg-primary, #f3f3f3);--ribbon-tab-active:var(--bg-primary, #ffffff);--ribbon-tab-fg:var(--text-secondary, #333333);--ribbon-accent:var(--color-primary, #2b579a);}:host(.theme-vs-dark) .editor-ribbon-container{--ribbon-bg:var(--bg-secondary, #2d2d2d);--ribbon-tab-active:var(--text-secondary, #3c3c3c);--ribbon-tab-fg:var(--bg-secondary, #cccccc);--ribbon-accent:var(--color-primary, #007acc);border-bottom-color:var(--border-strong, #3e3e3e)}.ribbon-tabs{display:flex;padding:0 10px;background-color:var(--ribbon-accent);gap:2px}.ribbon-tab{padding:4px 12px;cursor:pointer;opacity:0.7;transition:all 0.2s;border-bottom:2px solid transparent;font-size:11px;font-weight:500;display:flex;align-items:center;gap:6px;min-width:60px;justify-content:center}.ribbon-tab ui-tooltip{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ribbon-tab i{font-size:14px}.ribbon-tab:hover{background-color:rgba(255, 255, 255, 0.15);opacity:1}.ribbon-tab:hover i{transform:scale(1.1)}.ribbon-tab.active{background-color:var(--ribbon-bg);color:var(--ribbon-tab-fg);font-weight:600;border-bottom:none;border-radius:4px 4px 0 0;margin-top:4px;padding-top:4px;opacity:1}.ribbon-tab.active i{opacity:1}.ribbon-content{background:var(--editor-bg);border-bottom:1px solid var(--border-color);min-height:0;padding:4px;display:flex;gap:8px;overflow-x:auto}.labels-hover .ribbon-content,.labels-hidden .ribbon-content{min-height:48px}.ribbon-panel{display:flex;gap:12px;height:100%;align-items:stretch}.ribbon-group{display:flex;flex-direction:column;gap:2px;padding-right:12px;border-right:1px solid var(--border-color);height:100%;justify-content:space-between}.ribbon-group:last-child{border-right:none}.ribbon-group.divider{padding:0;width:1px;background:linear-gradient(to bottom, transparent 10%, var(--border-color, #d1d1d1) 20%, var(--border-color, #d1d1d1) 80%, transparent 90%);margin:2px 4px}.ribbon-group-content{display:flex;gap:4px;align-items:center;flex:1}.ribbon-group-label{font-size:9px;color:var(--status-bar-fg);text-align:center;text-transform:uppercase;letter-spacing:0.5px;opacity:0.7}.labels-hidden .ribbon-group-label{display:none}.ribbon-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px 8px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--editor-fg);cursor:pointer;transition:all 0.2s;min-width:32px;font-size:11px}.ribbon-btn i{font-size:16px}.ribbon-btn:hover{background:rgba(144, 144, 144, 0.1);border-color:var(--border-color)}.ribbon-btn.active{background:rgba(0, 122, 204, 0.1);border-color:var(--color-primary, #007acc);color:var(--color-primary, #007acc)}.ribbon-btn.lg{padding:4px 12px;gap:4px;min-width:48px}.ribbon-btn.lg i{font-size:20px}.ribbon-btn.icon-only{padding:4px;min-width:28px;height:28px}.ribbon-btn.icon-only span{display:none}.ribbon-btn.icon-only i{font-size:16px}.ribbon-select-container{display:flex;flex-direction:column;gap:2px;align-items:center}.ribbon-select-container select{padding:2px 4px;font-size:11px;border:1px solid var(--border-color, #ccc);border-radius:3px;background:var(--editor-bg);color:var(--editor-fg);outline:none}.ribbon-select-container span{font-size:10px;opacity:0.7}.help-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.5);z-index:200;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(2px)}.help-modal{background:var(--editor-bg);color:var(--editor-fg);width:400px;max-width:90%;border-radius:8px;border:1px solid var(--border-color, #454545);box-shadow:0 10px 25px rgba(0, 0, 0, 0.5);display:flex;flex-direction:column;overflow:hidden;animation:fadeIn 0.2s ease-out}.help-modal .help-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--status-bar-bg);color:var(--status-bar-fg);border-bottom:1px solid rgba(128, 128, 128, 0.2)}.help-modal .help-header h3{margin:0;font-size:14px;font-weight:600}.help-modal .help-header .close-btn{background:transparent;border:none;color:inherit;cursor:pointer;font-size:14px;padding:4px}.help-modal .help-header .close-btn:hover{opacity:0.8}.help-modal .help-content{padding:16px;display:flex;flex-direction:column;gap:16px}.help-modal .help-section h4{margin:0 0 8px 0;font-size:12px;text-transform:uppercase;letter-spacing:0.5px;opacity:0.7;border-bottom:1px solid rgba(128, 128, 128, 0.2);padding-bottom:4px}.help-modal .help-section ul{list-style:none;padding:0;margin:0;font-size:13px}.help-modal .help-section ul li{margin-bottom:6px;display:flex;align-items:center;gap:8px}.help-modal kbd{background:rgba(128, 128, 128, 0.2);padding:2px 4px;border-radius:3px;font-family:inherit;font-size:11px;border:1px solid rgba(128, 128, 128, 0.3)}@keyframes fadeIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}';export{r as ui_code_editor}
|
|
1
|
+
import{r as t,c as e,h as i}from"./p-DUsoYu9r.js";import{s as o}from"./p-Dyu3Nplq.js";const r=class{constructor(i){t(this,i),this.valueChange=e(this,"valueChange"),this.runCode=e(this,"runCode")}value="";language="javascript";theme="vs-dark";readonly=!1;lineNumbers=!0;toolbar=!1;toolbarLabelDisplay="hover";toolbarGroups=["all"];tabs=[];valueChange;runCode;highlightedCode="";lineCount=1;statusStats={line:1,col:1,selected:0};showSearch=!1;searchQuery="";showPalette=!1;paletteQuery="";showHelp=!1;activeTabIndex=0;unfoldedLines=new Set;foldedLines=new Set;lintErrors=[];activeToolbarTab="home";fontSize=14;showLineNumbers=!0;showMinimap=!0;showSidebar=!0;showBottomPanel=!0;activeSidebarTab="files";activeBottomTab="terminal";activeFileIndex=0;files=[{name:"index.js",language:"javascript",content:"// Welcome to the IDE\n// Start coding here..."},{name:"styles.css",language:"css",content:"/* Add your styles here */\nbody {\n margin: 0;\n}"},{name:"index.html",language:"html",content:"<!DOCTYPE html>\n<html>\n<body>\n <h1>Hello</h1>\n</body>\n</html>"}];terminalLogs=[{type:"info",text:"IDE Terminal initialized.",time:(new Date).toLocaleTimeString()}];suggestions=[];suggestionIndex=0;showSuggestions=!1;suggestionPos={top:0,left:0};textarea;pre;lineNumbersRef;minimapRef;minimapViewport;searchInput;paletteInput;charWidth=8.4;lineHeight=21;keywords={javascript:["function","return","const","let","var","import","export","class","if","else","for","while","switch","case","break","continue","true","false","null","undefined","console","log","document","window","async","await","try","catch","throw","new","this","super","typeof","instanceof","void","delete","in","of"],python:["def","class","return","if","elif","else","for","while","try","except","finally","import","from","as","pass","break","continue","True","False","None","print","with","yield","lambda","global","nonlocal","raise","assert"],html:["div","span","h1","h2","h3","p","a","button","input","form","img","ul","li","script","style","head","body","html","meta","link","title","header","footer","nav","main","section","article","aside"],css:["color","background","border","margin","padding","width","height","display","flex","grid","font-size","position","top","left","right","bottom","opacity","z-index","transform","transition","animation","justify-content","align-items"],java:["public","private","protected","class","interface","extends","implements","void","int","double","String","boolean","if","else","for","while","return","new","this","super","try","catch","finally","throw","throws","package","import","static","final"],csharp:["public","private","protected","class","interface","void","int","string","bool","if","else","for","while","return","new","this","var","namespace","using","static","readonly","async","await"]};commands=[{id:"theme-toggle",label:"Toggle Theme (Dark/Light)",action:()=>this.toggleTheme()},{id:"minimap-toggle",label:"Toggle Minimap",action:()=>this.showMinimap=!this.showMinimap},{id:"line-nums-toggle",label:"Toggle Line Numbers",action:()=>this.showLineNumbers=!this.showLineNumbers},{id:"format",label:"Format Document (Simple Indent)",action:()=>this.simpleFormat()},{id:"clear",label:"Clear Code",action:()=>{this.value="",this.valueChange.emit("")}},{id:"copy",label:"Copy to Clipboard",action:()=>this.handleCopy()},{id:"fold-all",label:"Fold All",action:()=>this.foldAll()},{id:"unfold-all",label:"Unfold All",action:()=>this.unfoldAll()},{id:"undo",label:"Undo",action:()=>document.execCommand("undo")},{id:"redo",label:"Redo",action:()=>document.execCommand("redo")}];componentWillLoad(){this.highlightCode(),this.updateLineCount(),this.runLinting()}componentDidLoad(){this.measureChar(),this.tabs.length>0&&this.handleTabClick(0)}measureChar(){if(!this.pre)return;const t=document.createElement("span");t.textContent="M",t.style.visibility="hidden",this.pre.appendChild(t);const e=t.getBoundingClientRect();this.charWidth=e.width,this.lineHeight=e.height,this.pre.removeChild(t)}valueChanged(){this.highlightCode(),this.updateLineCount(),this.runLinting()}languageChanged(){this.highlightCode(),this.runLinting()}tabsChanged(){this.tabs.length>0&&this.activeTabIndex>=this.tabs.length&&this.handleTabClick(0)}searchQueryChanged(){this.highlightCode()}executeCode(){if("javascript"===this.language||"json"===this.language)try{const t=[],e={log:(...e)=>t.push({type:"info",text:e.map((t=>"object"==typeof t?JSON.stringify(t):String(t))).join(" ")}),error:(...e)=>t.push({type:"error",text:e.join(" ")}),warn:(...e)=>t.push({type:"warn",text:e.join(" ")})};return new Function("console",this.value)(e),t.length>0?t:[{type:"info",text:"(Success: No output)"}]}catch(t){return[{type:"error",text:`Runtime Error: ${t.message}`}]}return[{type:"info",text:`Simulation for ${this.language} complete. (Code execution restricted to JS)`}]}handleInput=t=>{this.value=t.target.value,this.valueChange.emit(this.value),this.checkSuggestions()};checkSuggestions(){if(!this.textarea)return;const{selectionStart:t,value:e}=this.textarea;let i=t-1;for(;i>=0&&/[\w]/.test(e[i]);)i--;const o=e.substring(i+1,t);if(o.length<1)return void(this.showSuggestions=!1);const r=(this.keywords[this.language]||[]).filter((t=>t.toLowerCase().startsWith(o.toLowerCase())&&t!==o));if(r.length>0){this.suggestions=r,this.suggestionIndex=0,this.showSuggestions=!0;const i=e.substring(0,t).split("\n");this.suggestionPos={top:i.length*this.lineHeight-this.textarea.scrollTop+5,left:i[i.length-1].length*this.charWidth-this.textarea.scrollLeft+10}}else this.showSuggestions=!1}acceptSuggestion(t){if(!this.textarea)return;const{selectionStart:e,value:i}=this.textarea;let o=e-1;for(;o>=0&&/[\w]/.test(i[o]);)o--;o++;const r=i.substring(0,o)+t+i.substring(e);this.value=r,this.valueChange.emit(r),this.showSuggestions=!1,requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=o+t.length,this.highlightCode(),this.textarea.focus()}))}handleScroll=()=>{if(this.textarea&&this.pre){const{scrollTop:t,scrollLeft:e}=this.textarea;if(this.pre.scrollTop=t,this.pre.scrollLeft=e,this.minimapRef&&(this.minimapRef.scrollTop=t/(this.textarea.scrollHeight-this.textarea.clientHeight)*(this.minimapRef.scrollHeight-this.minimapRef.clientHeight),this.minimapViewport)){const e=this.textarea.clientHeight/this.textarea.scrollHeight;this.minimapViewport.style.top=t/this.textarea.scrollHeight*100+"%",this.minimapViewport.style.height=100*e+"%"}}this.lineNumbersRef&&this.textarea&&(this.lineNumbersRef.scrollTop=this.textarea.scrollTop)};handleKeydown=t=>{const e=t.ctrlKey||t.metaKey;if(e&&t.shiftKey&&("p"===t.key||"P"===t.key))return t.preventDefault(),void this.togglePalette();if(e&&"f"===t.key)return t.preventDefault(),void this.toggleSearch();if(this.showSuggestions){if("ArrowDown"===t.key)return t.preventDefault(),void(this.suggestionIndex=(this.suggestionIndex+1)%this.suggestions.length);if("ArrowUp"===t.key)return t.preventDefault(),void(this.suggestionIndex=(this.suggestionIndex-1+this.suggestions.length)%this.suggestions.length);if("Enter"===t.key||"Tab"===t.key)return t.preventDefault(),void this.acceptSuggestion(this.suggestions[this.suggestionIndex]);if("Escape"===t.key)return void(this.showSuggestions=!1)}if("Tab"===t.key){t.preventDefault();const e=this.textarea.selectionStart,i=this.textarea.selectionEnd,o=" ";return this.value=this.value.substring(0,e)+o+this.value.substring(i),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=e+o.length,this.highlightCode()})),void this.valueChange.emit(this.value)}const i=this.textarea.selectionStart,o=this.textarea.selectionEnd,r=this.value,a={"(":")","{":"}","[":"]",'"':'"',"'":"'"};if(a[t.key])return t.preventDefault(),this.value=r.substring(0,i)+t.key+a[t.key]+r.substring(o),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=i+1,this.highlightCode()})),void this.valueChange.emit(this.value);if(["}","]",")",'"',"'"].includes(t.key)&&r[i]===t.key)return t.preventDefault(),void(this.textarea.selectionStart=this.textarea.selectionEnd=i+1);if("Enter"===t.key){t.preventDefault();const e=r.substring(0,i).split("\n").pop(),a=e.match(/^\s*/);let s=a?a[0]:"";return(e.trim().endsWith("{")||e.trim().endsWith(":"))&&(s+=" "),this.value=r.substring(0,i)+"\n"+s+r.substring(o),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=i+1+s.length,this.highlightCode()})),void this.valueChange.emit(this.value)}if("Backspace"===t.key&&i===o&&i>0){const e=r[i-1],o=r[i];("{"===e&&"}"===o||"("===e&&")"===o||"["===e&&"]"===o||'"'===e&&'"'===o||"'"===e&&"'"===o)&&(t.preventDefault(),this.value=r.substring(0,i-1)+r.substring(i+1),requestAnimationFrame((()=>{this.textarea.selectionStart=this.textarea.selectionEnd=i-1,this.highlightCode()})),this.valueChange.emit(this.value))}};handleSelection=t=>{const e=t.target,i=e.value.substring(0,e.selectionStart).split("\n");this.statusStats={line:i.length,col:i[i.length-1].length+1,selected:e.selectionEnd-e.selectionStart}};handleMinimapClick=t=>{const e=t.currentTarget.getBoundingClientRect();this.textarea&&(this.textarea.scrollTop=(t.clientY-e.top)/e.height*this.textarea.scrollHeight-this.textarea.clientHeight/2)};handleCopy=()=>{navigator.clipboard.writeText(this.value)};handleTabClick(t){if(t<0||t>=this.tabs.length)return;this.activeTabIndex=t;const e=this.tabs[t];this.value=e.content,this.language=e.language,this.valueChange.emit(this.value)}toggleSearch=()=>{this.showSearch=!this.showSearch,this.showSearch?setTimeout((()=>this.searchInput?.focus()),50):this.searchQuery=""};findNext(){if(!this.searchQuery)return;const t=this.value;let e=t.indexOf(this.searchQuery,this.textarea.selectionEnd);-1===e&&(e=t.indexOf(this.searchQuery,0)),-1!==e&&this.selectAndScroll(e,e+this.searchQuery.length)}findPrev(){if(!this.searchQuery)return;const t=this.value;let e=t.lastIndexOf(this.searchQuery,this.textarea.selectionStart-1);-1===e&&(e=t.lastIndexOf(this.searchQuery)),-1!==e&&this.selectAndScroll(e,e+this.searchQuery.length)}selectAndScroll(t,e){this.textarea.focus(),this.textarea.selectionStart=t,this.textarea.selectionEnd=e,this.handleScroll()}togglePalette=()=>{this.showPalette=!this.showPalette,this.paletteQuery="",this.showPalette&&setTimeout((()=>this.paletteInput?.focus()),50)};runCommand(t){t.isSymbol?this.selectAndScroll(t.start,t.end):t.action(),this.showPalette=!1}getPaletteItems(){if(this.paletteQuery.startsWith("@"))return this.getSymbols(this.paletteQuery.substring(1));const t=this.paletteQuery.toLowerCase();return this.commands.filter((e=>e.label.toLowerCase().includes(t)))}getSymbols(t){const e=[],i=this.value.split("\n"),o=t.toLowerCase(),r={javascript:/function\s+([\w$]+)|const\s+([\w$]+)\s*=\s*\([^)]*\)\s*=>|class\s+([\w$]+)/g,python:/def\s+([\w]+)|class\s+([\w]+)/g,java:/(?:public|private|protected|static|\s) +[\w\<\>\[\]]+\s+([\w]+)\s*\([^)]*\)\s*\{|class\s+([\w]+)/g,csharp:/(?:public|private|protected|static|\s) +[\w\<\>\[\]]+\s+([\w]+)\s*\([^)]*\)\s*\{|class\s+([\w]+)/g}[this.language];if(!r)return[];let a=0;for(let t=0;t<i.length;t++){const s=i[t];let n;for(;null!==(n=r.exec(s));){const i=n[1]||n[2]||n[3];i&&i.toLowerCase().includes(o)&&e.push({id:`symbol-${t}`,label:`@${i}`,isSymbol:!0,start:a+n.index,end:a+n.index+n[0].length,line:t+1})}a+=s.length+1}return e}toggleTheme(){this.theme="vs-dark"===this.theme?"vs-light":"vs-dark"}toggleMinimap(){this.showMinimap=!this.showMinimap}handleSelectAll(){this.textarea&&this.textarea.select()}handleUndo(){document.execCommand("undo")}handleRedo(){document.execCommand("redo")}handleCommentSelection(){if(!this.textarea)return;const t=this.textarea.selectionStart,e=this.textarea.selectionEnd,i=this.value,o=i.substring(t,e);let r;if("javascript"===this.language||"python"===this.language||"java"===this.language||"csharp"===this.language){const t="python"===this.language?"# ":"// ";r=o.includes("\n")?o.split("\n").map((e=>e.startsWith(t)?e.substring(t.length):t+e)).join("\n"):o.startsWith(t)?o.substring(t.length):t+o}else"html"===this.language?r=o.startsWith("\x3c!--")?o.replace(/^<!--\s*([\s\S]*?)\s*-->$/,"$1"):`\x3c!-- ${o} --\x3e`:"css"===this.language&&(r=o.startsWith("/*")?o.replace(/^\/\*\s*([\s\S]*?)\s*\*\/$/,"$1"):`/* ${o} */`);void 0!==r&&(this.value=i.substring(0,t)+r+i.substring(e),this.valueChange.emit(this.value),requestAnimationFrame((()=>{this.textarea.selectionStart=t,this.textarea.selectionEnd=t+r.length,this.highlightCode()})))}simpleFormat(){if("json"===this.language){try{const t=JSON.parse(this.value);this.value=JSON.stringify(t,null,2),this.valueChange.emit(this.value)}catch(t){}return}const t=this.value.split("\n");let e=0;const i=[];for(let o=0;o<t.length;o++){let r=t[o].trim();""!==r?((r.match(/^[\}\]\)]/)||r.startsWith("</"))&&(e=Math.max(0,e-1)),i.push(" ".repeat(e)+r),(r.endsWith("{")||r.endsWith("[")||r.endsWith("(")||r.match(/<[^/].*>$/)&&!r.match(/\/>$/)&&!r.includes("</"))&&e++):i.push("")}this.value=i.join("\n"),this.valueChange.emit(this.value),this.terminalLogs=[...this.terminalLogs,{type:"info",text:"Document formatted successfully.",time:(new Date).toLocaleTimeString()}]}getLineGitStatus(t){return t%15==0?"added":t%25==0?"modified":"none"}runLinting(){const t=[],e=this.value.split("\n"),i=[];for(let o=0;o<e.length;o++){const r=e[o];for(let e=0;e<r.length;e++){const a=r[e];if(["{","[","("].includes(a))i.push({char:a,line:o+1});else if(["}","]",")"].includes(a)){const e=i.pop();e&&this.matches(e.char,a)||t.push({line:o+1,msg:`Unexpected '${a}'`})}}}i.length>0&&i.forEach((e=>{t.push({line:e.line,msg:`Unclosed '${e.char}'`})})),this.lintErrors=t}matches(t,e){return"{"===t&&"}"===e||"["===t&&"]"===e||"("===t&&")"===e}isLineFoldable(t,e){if(t>=e.length-1)return!1;const i=this.getIndentLevel(e[t]);return this.getIndentLevel(e[t+1])>i||e[t].trim().endsWith("{")||e[t].trim().endsWith(":")}getIndentLevel(t){const e=t.match(/^\s*/);return e?e[0].length:0}toggleFold(t){this.foldedLines.has(t)?this.foldedLines.delete(t):this.foldedLines.add(t),this.foldedLines=new Set(this.foldedLines)}foldAll(){const t=this.value.split("\n");for(let e=0;e<t.length;e++)this.isLineFoldable(e,t)&&this.foldedLines.add(e+1);this.foldedLines=new Set(this.foldedLines)}unfoldAll(){this.foldedLines.clear(),this.foldedLines=new Set(this.foldedLines)}updateLineCount(){const t=this.value?this.value.split("\n").length:1;this.lineCount=t}highlightCode(){if(!this.value)return void(this.highlightedCode="");let t=this.escapeHtml(this.value);switch(this.language){case"javascript":case"json":t=this.highlightJS(t);break;case"html":t=this.highlightHTML(t);break;case"css":t=this.highlightCSS(t);break;case"python":t=this.highlightPython(t);break;case"java":case"csharp":t=this.highlightJavaCSharp(t);break;case"ladder":t=this.highlightLadder(t)}this.value.endsWith("\n")&&(t+="<br>"),this.highlightedCode=t}escapeRegex(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}escapeHtml(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}highlightJS(t){return t.replace(/\/\/.*/g,'<span class="token comment">$&</span>').replace(/\/\*[\s\S]*?\*\//g,'<span class="token comment">$&</span>').replace(/('.*?')|(".*?")|(`[\s\S]*?`)/g,'<span class="token string">$&</span>').replace(/\b(const|let|var|function|return|if|else|for|while|import|export|class|this|new|true|false|null|undefined|async|await|try|catch|finally|throw|break|continue|default|case|switch|typeof|instanceof|void|delete|in|of|static|get|set|extends|super)\b/g,'<span class="token keyword">$&</span>').replace(/\b(\d+)\b/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token class">$&</span>').replace(/(\w+)(?=\()/g,'<span class="token function">$&</span>')}highlightHTML(t){return t.replace(/(<\/?)(\w+)(.*?)(>)/g,((t,e,i,o,r)=>`<span class="token tag">${e}${i}</span>${o.replace(/(\w+)=("[^"]*")/g,'<span class="token attr-name">$1</span>=<span class="token string">$2</span>')}<span class="token tag">${r}</span>`)).replace(/<!--[\s\S]*?-->/g,'<span class="token comment">$&</span>')}highlightCSS(t){return t.replace(/\/\*[\s\S]*?\*\//g,'<span class="token comment">$&</span>').replace(/([a-zA-Z-]+)(?=:)/g,'<span class="token property">$1</span>').replace(/(:)([^;]+)(;)/g,((t,e,i,o)=>`${e}<span class="token number">${i}</span>${o}`)).replace(/(\.|#)([\w-]+)/g,'<span class="token selector">$1$2</span>')}highlightPython(t){return t.replace(/#.*/g,'<span class="token comment">$&</span>').replace(/("""[\s\S]*?""")|('''.*?''')/g,'<span class="token string">$&</span>').replace(/('.*?')|(".*?")/g,'<span class="token string">$&</span>').replace(/\b(def|class|if|elif|else|for|while|return|import|from|as|try|except|finally|with|pass|continue|break|True|False|None)\b/g,'<span class="token keyword">$&</span>').replace(/\b(\d+)\b/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token class">$&</span>').replace(/@\w+/g,'<span class="token function">$&</span>')}highlightJavaCSharp(t){return t.replace(/\/\/.*/g,'<span class="token comment">$&</span>').replace(/('.*?')|(".*?")/g,'<span class="token string">$&</span>').replace(/\b(public|private|protected|static|final|class|interface|void|int|double|String|boolean|if|else|for|while|return|new|this|super|extends|implements|try|catch|finally|throw|throws|package|import|namespace|using|var)\b/g,'<span class="token keyword">$&</span>').replace(/\b(\d+)\b/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token class">$&</span>').replace(/@\w+/g,'<span class="token function">$&</span>')}highlightLadder(t){return t.replace(/\(\*.*?\*\)/g,'<span class="token comment">$&</span>').replace(/\b(XIC|XIO|OTE|OTL|OTU|TON|TOF|RTO|CTU|CTD|MOV|COP|ADD|SUB|MUL|DIV|LIM|EQU|NEQ|LES|GRT|LEQ|GEQ|JMP|LBL)\b/g,'<span class="token keyword">$&</span>').replace(/\b(PROGRAM|END_PROGRAM|VAR|END_VAR|BOOL|INT|REAL|TIME|TON|IF|THEN|END_IF)\b/g,'<span class="token keyword">$&</span>').replace(/%[IQM][\d\.]+/g,'<span class="token number">$&</span>').replace(/\b([A-Z][a-zA-Z0-9_]*)\b/g,'<span class="token variable">$&</span>')}renderLineNumbers(){if(!this.showLineNumbers)return null;const t=this.value.split("\n");return i("div",{class:"line-numbers",ref:t=>this.lineNumbersRef=t},t.map(((e,o)=>{const r=o+1,a=this.lintErrors.find((t=>t.line===r)),s=this.isLineFoldable(o,t),n=this.foldedLines.has(r),l=this.getLineGitStatus(o);return i("div",{class:{"line-number":!0,[`git-${l}`]:"none"!==l},onClick:()=>s&&this.toggleFold(r),style:{color:a?"#ff4d4d":"inherit"},title:a?a.msg:""},r,s&&i("span",{class:"fold-icon"},i("ui-icon",{name:"chevron-"+(n?"right":"down"),library:"fontawesome",size:"10px"})))})))}renderPalette(){if(!this.showPalette)return null;const t=this.getPaletteItems();return i("div",{class:"editor-palette-overlay",onClick:this.togglePalette},i("div",{class:"editor-palette",onClick:t=>t.stopPropagation()},i("div",{class:"palette-input-wrapper"},i("ui-icon",{name:"terminal",library:"fontawesome"}),i("ui-input",{type:"text",placeholder:"Type a command or @ for symbols...",value:this.paletteQuery,onInputChange:t=>this.paletteQuery=t.detail,ref:t=>this.paletteInput=t,onInputKeydown:e=>{"Escape"===e.detail.key&&this.togglePalette(),"Enter"===e.detail.key&&t.length>0&&this.runCommand(t[0])},variant:"plain",size:"sm"})),i("div",{class:"palette-results"},t.length>0?t.map((t=>i("div",{class:"palette-item",onClick:()=>this.runCommand(t)},i("ui-icon",{name:t.isSymbol?"at":"play",library:"fontawesome",size:"14px"}),i("span",null,t.label),t.line&&i("span",{class:"palette-meta"},"Line ",t.line)))):i("div",{class:"palette-no-results"},"No results found"))))}renderSearch(){return this.showSearch?i("div",{class:"search-widget"},i("ui-input",{customClass:"search-input",ref:t=>this.searchInput=t,type:"text",placeholder:"Find",value:this.searchQuery,onInputChange:t=>this.searchQuery=t.detail,onInputKeydown:t=>{const e=t.detail;"Escape"===e.key&&(this.showSearch=!1),"Enter"===e.key&&(e.shiftKey?this.findPrev():this.findNext())},size:"sm",variant:"outlined"}),i("div",{class:"search-actions"},i("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findPrev(),ariaLabel:"Previous (Shift+Enter)",icon:"arrow-up",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),i("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findNext(),ariaLabel:"Next (Enter)",icon:"arrow-down",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),i("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.showSearch=!1,ariaLabel:"Close search",icon:"times",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}))):null}renderMinimap(){return this.showMinimap?i("div",{class:"minimap-container",onClick:this.handleMinimapClick},i("div",{class:"minimap-content",innerHTML:o(this.highlightedCode),ref:t=>this.minimapRef=t}),i("div",{class:"minimap-viewport",ref:t=>this.minimapViewport=t})):null}renderStatusBar(){return i("div",{class:"status-bar"},i("div",{class:"status-item"},i("ui-icon",{name:"code-branch",library:"fontawesome",size:"14px"})," main"),i("div",{class:"status-item"},i("ui-icon",{name:"exclamation-circle",library:"fontawesome",size:"14px"})," ",this.lintErrors.length," Errors"),i("div",{class:"status-item"},"Ln ",this.statusStats.line,", Col ",this.statusStats.col),i("div",{class:"status-item"},this.statusStats.selected>0?`(${this.statusStats.selected} selected)`:""),i("div",{class:"status-item"},"Spaces: 2"),i("div",{class:"status-item"},this.language.toUpperCase()),i("div",{class:"status-item",onClick:()=>this.toggleTheme(),style:{cursor:"pointer"}},i("ui-icon","vs-dark"===this.theme?{name:"moon",library:"fontawesome",size:"14px"}:{name:"sun",library:"fontawesome",size:"14px"})))}renderSuggestions(){return this.showSuggestions?i("ul",{class:"suggestion-list",style:{top:`${this.suggestionPos.top}px`,left:`${this.suggestionPos.left}px`}},this.suggestions.map(((t,e)=>i("li",{class:e===this.suggestionIndex?"active":"",onClick:()=>this.acceptSuggestion(t),onMouseDown:t=>t.preventDefault()},i("ui-icon",{name:"cube",library:"fontawesome",size:"14px",class:"icon"})," ",t)))):null}renderRibbonButton(t,e,o,r={}){const{lg:a=!1,color:s}=r,n="always"===this.toolbarLabelDisplay,l="hover"===this.toolbarLabelDisplay,c=i("ui-button",{slot:l?"target":void 0,onClick:o,style:s?{color:s}:{},ariaLabel:e,label:n?e:void 0,icon:t.replace(/^fa[sb]? fa-/,""),iconLibrary:"fontawesome",iconOnly:!n,size:a?"lg":"md",variant:"ghost"});return l?i("ui-tooltip",{content:e,position:"bottom"},c):c}isGroupVisible(t){return!(this.toolbarGroups&&!this.toolbarGroups.includes("all"))||this.toolbarGroups.includes(t)}renderToolbar(){return this.toolbar?i("div",{class:`editor-ribbon-container labels-${this.toolbarLabelDisplay}`},i("div",{class:"ribbon-tabs"},i("div",{class:"ribbon-tab "+("home"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="home"},i("ui-tooltip",{content:"Home",position:"bottom"},i("ui-icon",{name:"home",library:"fontawesome",slot:"target",size:"16px"}))),i("div",{class:"ribbon-tab "+("edit"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="edit"},i("ui-tooltip",{content:"Edit",position:"bottom"},i("ui-icon",{name:"edit",library:"fontawesome",slot:"target",size:"16px"}))),i("div",{class:"ribbon-tab "+("view"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="view"},i("ui-tooltip",{content:"View",position:"bottom"},i("ui-icon",{name:"eye",library:"fontawesome",slot:"target",size:"16px"}))),i("div",{class:"ribbon-tab "+("run"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="run"},i("ui-tooltip",{content:"Run",position:"bottom"},i("ui-icon",{name:"play",library:"fontawesome",slot:"target",size:"16px"})))),i("div",{class:"ribbon-content"},"home"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("history")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-undo","Undo",(()=>this.handleUndo()),{lg:!0}),this.renderRibbonButton("fas fa-redo","Redo",(()=>this.handleRedo()),{lg:!0})),i("div",{class:"ribbon-group-label"},"History")),this.isGroupVisible("history")&&this.isGroupVisible("clipboard")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("clipboard")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-copy","Copy",(()=>this.handleCopy())),this.renderRibbonButton("fas fa-mouse-pointer","Select All",(()=>this.handleSelectAll()))),i("div",{class:"ribbon-group-label"},"Clipboard")),(this.isGroupVisible("history")||this.isGroupVisible("clipboard"))&&this.isGroupVisible("search")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("search")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-search","Find",(()=>this.toggleSearch()),{lg:!0}),this.renderRibbonButton("fas fa-terminal","Palette",(()=>this.togglePalette()),{lg:!0})),i("div",{class:"ribbon-group-label"},"Search"))),"edit"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("document")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-code","Format",(()=>this.simpleFormat()),{lg:!0})),i("div",{class:"ribbon-group-label"},"Document")),this.isGroupVisible("document")&&this.isGroupVisible("folding")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("folding")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-minus-square","Fold All",(()=>this.foldAll())),this.renderRibbonButton("fas fa-plus-square","Unfold All",(()=>this.unfoldAll()))),i("div",{class:"ribbon-group-label"},"Folding")),(this.isGroupVisible("document")||this.isGroupVisible("folding"))&&this.isGroupVisible("actions")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("actions")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-comment-slash","Comment",(()=>this.handleCommentSelection()))),i("div",{class:"ribbon-group-label"},"Actions"))),"view"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("interface")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-map","Minimap",(()=>this.toggleMinimap()),{lg:!0,active:this.showMinimap}),this.renderRibbonButton("fas fa-list-ol","Line Numbers",(()=>this.showLineNumbers=!this.showLineNumbers),{lg:!0,active:this.showLineNumbers})),i("div",{class:"ribbon-group-label"},"Interface")),this.isGroupVisible("interface")&&this.isGroupVisible("theme")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("theme")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("vs-dark"===this.theme?"fas fa-moon":"fas fa-sun","vs-dark"===this.theme?"Dark":"Light",(()=>this.toggleTheme()),{lg:!0})),i("div",{class:"ribbon-group-label"},"Theme")),(this.isGroupVisible("interface")||this.isGroupVisible("theme"))&&this.isGroupVisible("appearance")&&i("div",{class:"ribbon-group divider"}),this.isGroupVisible("appearance")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},i("div",{class:"ribbon-select-container"},i("select",{onChange:t=>this.fontSize=parseInt(t.target.value)},[10,12,14,16,18,20,24].map((t=>i("option",{value:t,selected:this.fontSize===t},t,"px")))),"always"===this.toolbarLabelDisplay&&i("span",null,"Font Size"))),i("div",{class:"ribbon-group-label"},"Appearance"))),"run"===this.activeToolbarTab&&i("div",{class:"ribbon-panel"},this.isGroupVisible("execution")&&i("div",{class:"ribbon-group"},i("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-play","Run Code",(()=>this.runCode.emit()),{lg:!0,color:"#4ade80"})),i("div",{class:"ribbon-group-label"},"Execution"))))):null}renderHelp(){return this.showHelp?i("div",{class:"help-modal-overlay",onClick:()=>this.showHelp=!1},i("div",{class:"help-modal",onClick:t=>t.stopPropagation()},i("div",{class:"help-header"},i("h3",null,"Editor Shortcuts & Help"),i("ui-button",{variant:"ghost",onClick:()=>this.showHelp=!1,ariaLabel:"Close help",icon:"times",iconLibrary:"fontawesome",iconOnly:!0})),i("div",{class:"help-content"},i("div",{class:"help-section"},i("h4",null,"Keyboard Shortcuts"),i("ul",null,i("li",null,i("kbd",null,"Ctrl")," + ",i("kbd",null,"F")," : Find / Search"),i("li",null,i("kbd",null,"Ctrl")," + ",i("kbd",null,"Shift")," + ",i("kbd",null,"P")," : Command Palette"),i("li",null,i("kbd",null,"Ctrl")," + ",i("kbd",null,"Space")," : Trigger Suggestions"),i("li",null,i("kbd",null,"Tab")," : Indent / Accept Suggestion"))),i("div",{class:"help-section"},i("h4",null,"Toolbar Features"),i("ul",null,i("li",null,i("ui-icon",{name:"play",library:"fontawesome",style:{color:"#4ade80"},size:"14px"})," ",i("strong",null,"Run"),": Execute code (demo mode)"),i("li",null,i("ui-icon",{name:"indent",library:"fontawesome",size:"14px"})," ",i("strong",null,"Format"),": Auto-indent code"),i("li",null,i("ui-icon",{name:"moon",library:"fontawesome",size:"14px"})," ",i("strong",null,"Theme"),": Toggle Dark/Light")))))):null}renderTabBar(){return this.tabs&&0!==this.tabs.length?i("div",{class:"editor-tabs"},this.tabs.map(((t,e)=>i("div",{class:"editor-tab "+(e===this.activeTabIndex?"active":""),onClick:()=>this.handleTabClick(e)},i("ui-icon",{class:"tab-icon",name:this.getIconForLang(t.language),library:"fontawesome"}),i("span",{class:"tab-title"},t.title))))):null}getIconForLang(t){switch(t){case"javascript":return"js-square";case"html":return"html5";case"css":return"css3";case"python":return"python";case"java":return"java";case"json":return"code";default:return"file-alt"}}renderSidebar(){return this.showSidebar?i("div",{class:{"editor-sidebar":!0,collapsed:!this.showSidebar}},i("div",{class:"sidebar-tabs"},i("div",{class:{"sidebar-tab":!0,active:"files"===this.activeSidebarTab},onClick:()=>this.activeSidebarTab="files"},i("ui-icon",{name:"copy",library:"fontawesome"}))),i("div",{class:"sidebar-content"},"files"===this.activeSidebarTab&&i("div",{class:"file-explorer"},i("div",{class:"sidebar-header"},"EXPLORER"),i("div",{class:"file-list"},this.files.map(((t,e)=>i("div",{class:{"file-item":!0,active:this.activeFileIndex===e},onClick:()=>this.switchFile(e)},i("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name)}),i("span",null,t.name)))))))):null}handleTerminalKeyDown=t=>{if("Enter"===t.key){const e=t.target,i=e.value.trim().toLowerCase();if(!i)return;this.terminalLogs=[...this.terminalLogs,{type:"info",text:`$ ${e.value}`,time:(new Date).toLocaleTimeString()}],"clear"===i?this.terminalLogs=[]:"run"===i||"node index.js"===i?(this.terminalLogs=[...this.terminalLogs,{type:"info",text:"Executing program...",time:(new Date).toLocaleTimeString()}],setTimeout((()=>{const t=this.executeCode().map((t=>({...t,time:(new Date).toLocaleTimeString()})));this.terminalLogs=[...this.terminalLogs,...t],this.runCode.emit()}),500)):this.terminalLogs="help"===i?[...this.terminalLogs,{type:"info",text:"Available commands: run, clear, help, ls, whoami",time:(new Date).toLocaleTimeString()}]:[...this.terminalLogs,{type:"error",text:`Command not found: ${i}`,time:(new Date).toLocaleTimeString()}],e.value=""}};renderBreadcrumbs(){const t=this.files[this.activeFileIndex];return i("div",{class:"editor-breadcrumbs"},i("div",{class:"breadcrumb-item"},i("ui-icon",{name:"folder-open",library:"fontawesome",size:"12px"}),i("span",null,"project"),i("span",{class:"separator"},"/")),i("div",{class:"breadcrumb-item"},i("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name),size:"12px"}),i("span",null,t.name)))}renderBottomPanel(){return this.showBottomPanel?i("div",{class:{"editor-bottom-panel":!0,collapsed:!this.showBottomPanel}},i("div",{class:"panel-header"},i("div",{class:"panel-tabs"},i("div",{class:{"panel-tab":!0,active:"terminal"===this.activeBottomTab},onClick:()=>this.activeBottomTab="terminal"},"TERMINAL"),i("div",{class:{"panel-tab":!0,active:"output"===this.activeBottomTab},onClick:()=>this.activeBottomTab="output"},"OUTPUT"),i("div",{class:{"panel-tab":!0,active:"problems"===this.activeBottomTab},onClick:()=>this.activeBottomTab="problems"},"PROBLEMS")),i("div",{class:"panel-controls"},i("ui-icon",{name:"times",library:"fontawesome",onClick:()=>this.showBottomPanel=!1,style:{cursor:"pointer"}}))),i("div",{class:"panel-content"},"terminal"===this.activeBottomTab&&i("div",{class:"terminal-content"},this.terminalLogs.map((t=>i("div",{class:`log-item ${t.type}`},i("span",{class:"log-time"},"[",t.time,"]"),i("span",{class:"log-text"},t.text)))),i("div",{class:"terminal-input-line"},i("span",{class:"terminal-prompt"},"$"),i("ui-input",{type:"text",customClass:"terminal-input",placeholder:"Type a command (run, clear, help)...",onInputKeydown:t=>this.handleTerminalKeyDown(t.detail),variant:"plain",size:"sm",fullWidth:!0}))),"output"===this.activeBottomTab&&i("div",{class:"output-preview",style:{display:"flex",alignItems:"center",justifyCenter:"center",height:"100%",background:"#f8fafc",color:"#64748b"}},i("div",{style:{textAlign:"center"}},i("ui-icon",{name:"eye-slash",library:"fontawesome",size:"32px",style:{opacity:.5,marginBottom:"12px"}}),i("p",{style:{fontSize:"14px",fontWeight:"500"}},"Live Preview Disabled (No Iframe)"))))):null}switchFile(t){this.activeFileIndex=t;const e=this.files[t];this.value=e.content,this.language=e.language,this.valueChange.emit(this.value)}getFileIcon(t){return t.endsWith(".js")?"fab fa-js-square text-warning":t.endsWith(".html")?"fab fa-html5 text-danger":t.endsWith(".css")?"fab fa-css3-alt text-primary":"fas fa-file-code"}render(){const t="vs-light"===this.theme?"theme-vs-light":"theme-vs-dark",e=this.value.split("\n");let r=-1,a=-1;for(let t=0;t<e.length;t++)if(-1!==r){if(!(this.getIndentLevel(e[t])<=a&&""!==e[t].trim()))continue;r=-1}else this.foldedLines.has(t+1)&&(r=t+1,a=this.getIndentLevel(e[t]));return i("div",{key:"e856c9fbd64e22059c917ed99eebcc66f605d91b",class:`code-editor-container ${t}`},this.renderTabBar(),this.renderToolbar(),this.renderPalette(),i("div",{key:"de880b366ca14669ef66169d2283a18fab623e31",class:"code-editor-layout"},this.renderSidebar(),i("div",{key:"058b6a13934f82cd6b257a3b6322361c8323cb5d",class:"editor-main-panel"},this.renderBreadcrumbs(),i("div",{key:"408b4b6d461588819fa49ea1aef707edcc666be6",class:"editor-main-content",style:{display:"flex",flex:"1",minHeight:"0",position:"relative"}},this.renderLineNumbers(),i("div",{key:"dcb8f35793966525ef0da6d966e4789e5d0eed8e",class:"editor-wrapper"},this.renderSearch(),this.renderSuggestions(),i("ui-button",{key:"1cbe2e3c0929fa428fd6735b36dc4845bd733b58",variant:"ghost",class:"copy-button",onClick:this.handleCopy,ariaLabel:"Copy Code",icon:"copy",iconLibrary:"fontawesome",iconOnly:!0}),i("pre",{key:"dc17184da52fcfced8a468f891443ab7af9372f6",class:"syntax-highlighter",ref:t=>this.pre=t,innerHTML:o(this.highlightedCode)}),i("textarea",{key:"f04e9f88a8299b500bcb3bf9cf928416f539b15d",class:"editor-content",ref:t=>this.textarea=t,value:this.value,onInput:this.handleInput,onScroll:this.handleScroll,onKeyDown:this.handleKeydown,onSelect:this.handleSelection,onClick:this.handleSelection,onKeyUp:this.handleSelection,spellcheck:!1,readonly:this.readonly,role:"textbox","aria-multiline":"true","aria-label":"Code Editor"})),this.renderMinimap()),this.renderBottomPanel())),this.renderStatusBar(),this.renderHelp())}static get watchers(){return{value:[{valueChanged:0}],language:[{languageChanged:0}],tabs:[{tabsChanged:0}],searchQuery:[{searchQueryChanged:0}]}}};r.style='.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:flex;flex-direction:column;font-family:"Menlo", "Monaco", "Courier New", monospace;font-size:14px;line-height:1.5;position:relative;border-radius:8px;overflow:hidden;border:1px solid var(--border-color, var(--border-subtle, #e2e8f0));background-color:var(--editor-bg);color:var(--editor-fg);--editor-bg:var(--bg-primary, #ffffff);--editor-fg:var(--text-primary, #1e293b);--line-num-bg:var(--bg-primary, #f8fafc);--line-num-fg:var(--color-primary, #94a3b8);--indent-guide:rgba(0, 0, 0, 0.05);--cursor-color:var(--text-primary, #000);--selection-bg:var(--color-primary, #b3d4fc);--status-bar-bg:var(--bg-secondary, #f1f5f9);--status-bar-fg:var(--color-primary, #64748b);--minimap-width:60px;--git-added:var(--color-success, #28a745);--git-modified:var(--color-danger, #ffc107)}:host(.theme-vs-dark){--editor-bg:var(--bg-primary, #1e1e1e);--editor-fg:var(--bg-secondary, #d4d4d4);--line-num-bg:var(--bg-primary, #1e1e1e);--line-num-fg:var(--text-muted, #858585);--cursor-color:var(--text-standard, #ffffff);--selection-bg:var(--color-primary, #264f78);--status-bar-bg:var(--color-primary, #007acc);--status-bar-fg:var(--bg-primary, #ffffff);border-color:var(--border-strong, #333)}.code-editor-container{display:flex;flex-direction:column;flex:1;position:relative;overflow:hidden;height:100%}.code-editor-layout{display:grid;grid-template-columns:auto 1fr auto;flex:1;min-height:0;position:relative;overflow:hidden;background-color:var(--editor-bg)}.sidebar-tabs{width:48px;flex-shrink:0;background-color:var(--status-bar-bg);border-right:1px solid var(--border-color);display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:20px}.sidebar-tabs .sidebar-tab{font-size:20px;color:var(--status-bar-fg);cursor:pointer;width:100%;display:flex;justify-content:center;position:relative;padding:8px 0;opacity:0.6;transition:all 0.2s}.sidebar-tabs .sidebar-tab.active{opacity:1;color:var(--color-primary, #007acc);border-left:2px solid var(--color-primary, #007acc)}.sidebar-tabs .sidebar-tab:hover{opacity:1}.sidebar-content{flex:1;overflow-y:auto;padding:0}.sidebar-header{padding:10px 16px;font-size:11px;font-weight:600;color:var(--status-bar-fg);text-transform:uppercase;letter-spacing:0.5px}.file-list{padding:4px 0}.file-item{display:flex;align-items:center;padding:6px 16px;gap:8px;cursor:pointer;font-size:13px;color:var(--status-bar-fg);transition:background 0.2s}.file-item:hover{background-color:rgba(128, 128, 128, 0.1);color:var(--editor-fg)}.file-item.active{background-color:rgba(0, 122, 204, 0.1);color:var(--color-primary, #007acc);font-weight:500}.file-item i{width:16px;text-align:center}.file-item .text-warning{color:var(--color-warning, #f59e0b)}.file-item .text-danger{color:var(--color-danger, #ef4444)}.file-item .text-primary{color:var(--color-primary, #10b981)}.editor-main-panel{display:flex;flex-direction:column;min-width:0;flex:1}.editor-breadcrumbs{height:35px;background-color:var(--editor-bg);border-bottom:1px solid var(--border-color);display:flex;align-items:center;padding:0 16px;font-size:13px;color:var(--status-bar-fg);gap:10px;user-select:none}.editor-breadcrumbs .breadcrumb-item{display:flex;align-items:center;gap:6px;cursor:pointer}.editor-breadcrumbs .breadcrumb-item:hover{color:var(--editor-fg)}.editor-breadcrumbs .breadcrumb-item i{font-size:14px}.editor-breadcrumbs .breadcrumb-item .separator{opacity:0.5;margin:0 4px}.editor-bottom-panel{height:250px;background-color:var(--editor-bg);border-top:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden;transition:height 0.3s ease}.editor-bottom-panel.collapsed{height:0;border-top:none}.editor-bottom-panel .panel-header{height:35px;display:flex;justify-content:space-between;align-items:center;padding:0 16px;border-bottom:1px solid var(--border-color);background-color:var(--status-bar-bg)}.editor-bottom-panel .panel-tabs{display:flex;gap:20px;height:100%}.editor-bottom-panel .panel-tabs .panel-tab{font-size:11px;font-weight:600;color:var(--status-bar-fg);height:100%;display:flex;align-items:center;cursor:pointer;border-bottom:2px solid transparent;opacity:0.7;transition:all 0.2s}.editor-bottom-panel .panel-tabs .panel-tab:hover{opacity:1}.editor-bottom-panel .panel-tabs .panel-tab.active{opacity:1;color:var(--color-primary, #007acc);border-bottom-color:var(--color-primary, #007acc)}.editor-bottom-panel .panel-controls i{font-size:12px;color:var(--status-bar-fg);cursor:pointer;opacity:0.6}.editor-bottom-panel .panel-controls i:hover{opacity:1;color:var(--color-danger, #ef4444)}.editor-bottom-panel .panel-content{flex:1;overflow-y:auto;padding:12px 16px;font-family:"Menlo", "Monaco", "Courier New", monospace;background-color:var(--editor-bg)}.editor-bottom-panel .terminal-content .log-item{margin-bottom:4px;font-size:12px;display:flex;gap:8px}.editor-bottom-panel .terminal-content .log-item .log-time{opacity:0.5}.editor-bottom-panel .terminal-content .log-item.info{color:var(--color-success, #10b981)}.editor-bottom-panel .terminal-content .log-item.error{color:var(--color-danger, #ef4444)}.editor-bottom-panel .terminal-content .log-item.warn{color:var(--color-warning, #f59e0b)}.editor-bottom-panel .terminal-content .terminal-input-line{display:flex;gap:8px;margin-top:8px;align-items:center}.editor-bottom-panel .terminal-content .terminal-input-line .terminal-prompt{color:var(--color-primary, #007acc);font-weight:bold}.editor-bottom-panel .terminal-content .terminal-input-line .terminal-input{background:transparent;border:none;color:var(--editor-fg);outline:none;flex:1;font-family:inherit;font-size:12px}.line-numbers{flex-shrink:0;padding:10px 0;text-align:right;background-color:var(--line-num-bg);color:var(--line-num-fg);border-right:1px solid rgba(128, 128, 128, 0.1);user-select:none;min-width:45px;overflow:hidden}.line-numbers .line-number{display:flex;padding:0 4px 0 8px;height:1.5em;white-space:nowrap;justify-content:space-between;cursor:pointer}.line-numbers .line-number .fold-icon{opacity:0;font-size:9px;margin-left:4px;display:flex;align-items:center;color:var(--line-num-fg)}.line-numbers .line-number.git-added{border-left:3px solid var(--git-added)}.line-numbers .line-number.git-modified{border-left:3px solid var(--git-modified)}.line-numbers .line-number:hover .fold-icon{opacity:1;color:var(--editor-fg)}.folded-placeholder{background-color:var(--status-bar-bg);color:var(--status-bar-fg);padding:0 4px;border-radius:2px;font-size:10px;cursor:pointer;user-select:none;margin-left:4px;display:inline-block;height:14px;line-height:14px}.editor-wrapper{flex-grow:1;position:relative;overflow:hidden}.editor-content,.syntax-highlighter{margin:0;padding:10px;border:none;box-sizing:border-box;font-family:inherit;font-size:inherit;line-height:inherit;tab-size:2;white-space:pre;word-wrap:normal;overflow-x:auto;overflow-y:auto;position:absolute;top:0;left:0;width:100%;height:100%}.editor-content{color:transparent;background:transparent;caret-color:var(--cursor-color);z-index:1;resize:none;outline:none;background-image:linear-gradient(to right, var(--indent-guide) 1px, transparent 1px);background-size:calc(var(--indent-size, 2) * 8.4px) 100%;background-repeat:repeat-x;background-attachment:local}.editor-content::selection{background:var(--selection-bg);color:transparent}.syntax-highlighter{z-index:0;pointer-events:none;color:var(--editor-fg)}.lint-error{text-decoration:underline wavy var(--color-danger, #ff4d4d);text-decoration-thickness:2px;position:relative}.minimap-container{width:var(--minimap-width);border-left:1px solid rgba(128, 128, 128, 0.1);background:var(--editor-bg);overflow:hidden;position:relative;user-select:none;flex-shrink:0;cursor:pointer}.minimap-content{transform-origin:top left;transform:scale(0.15);width:666%;pointer-events:none;padding:10px}.minimap-viewport{position:absolute;left:0;width:100%;background:rgba(100, 100, 100, 0.2);cursor:grab;transition:background 0.2s}.minimap-viewport:hover{background:rgba(100, 100, 100, 0.3)}.minimap-viewport:active{cursor:grabbing;background:rgba(100, 100, 100, 0.4)}.status-bar{display:flex;justify-content:flex-end;gap:16px;padding:4px 12px;background-color:var(--status-bar-bg);color:var(--status-bar-fg);font-size:11px;flex-shrink:0;user-select:none}.status-item{display:flex;align-items:center;gap:6px;cursor:default}.status-item i{font-size:10px}.command-palette-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.3);z-index:100;display:flex;justify-content:center;align-items:flex-start;padding-top:20px;backdrop-filter:blur(1px)}.command-palette{width:400px;max-width:90%;background:var(--editor-bg);border:1px solid var(--border-color, #454545);box-shadow:0 4px 12px rgba(0, 0, 0, 0.25);border-radius:6px;display:flex;flex-direction:column;overflow:hidden;animation:slideDown 0.15s ease-out}.command-palette input{width:100%;padding:10px;border:none;background:var(--status-bar-bg);color:var(--editor-fg);font-family:inherit;font-size:13px;outline:none;border-bottom:1px solid var(--border-color, rgba(128, 128, 128, 0.2))}.command-palette .command-list{max-height:250px;overflow-y:auto;margin:0;padding:0;list-style:none}.command-palette .command-item{padding:8px 12px;cursor:pointer;font-size:13px;display:flex;justify-content:space-between;color:var(--editor-fg);border-left:2px solid transparent;}.command-palette .command-item:hover,.command-palette .command-item.active{background-color:var(--selection-bg);border-left-color:var(--status-bar-bg)}.command-palette .command-item .shortcut{opacity:0.6;font-size:11px}@keyframes slideDown{from{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.token.comment{color:var(--color-success, #6a9955);font-style:italic}.token.string{color:var(--color-danger, #ce9178)}.token.number{color:var(--color-primary, #b5cea8)}.token.boolean{color:var(--color-primary, #569cd6)}.token.keyword{color:var(--color-primary, #c586c0);font-weight:bold}.token.function{color:var(--color-primary, #dcdcaa)}.token.operator{color:var(--bg-secondary, #d4d4d4)}.token.class{color:var(--color-primary, #4ec9b0)}.token.variable{color:var(--color-primary, #9cdcfe)}.token.tag{color:var(--color-primary, #569cd6)}.token.attr-name{color:var(--color-primary, #9cdcfe)}.token.property{color:var(--color-primary, #9cdcfe)}.token.selector{color:var(--color-primary, #d7ba7d)}:host(:not(.theme-vs-dark)) .token.string{color:var(--color-danger, #a31515)}:host(:not(.theme-vs-dark)) .token.keyword{color:var(--color-primary, #af00db)}:host(:not(.theme-vs-dark)) .token.function{color:var(--color-primary, #795e26)}:host(:not(.theme-vs-dark)) .token.number{color:var(--color-success, #098658)}:host(:not(.theme-vs-dark)) .token.comment{color:var(--color-success, #008000)}:host(:not(.theme-vs-dark)) .token.selector{color:var(--text-primary, #800000)}.copy-button{position:absolute;top:8px;right:20px;z-index:10;background:rgba(128, 128, 128, 0.2);border:none;color:var(--editor-fg);padding:4px 8px;border-radius:4px;cursor:pointer;opacity:0;transition:opacity 0.2s;font-size:12px}.copy-button:hover{background:rgba(128, 128, 128, 0.4)}:host(:hover) .copy-button{opacity:1}.search-widget{position:absolute;top:10px;right:40px;right:60px;z-index:50;display:flex;background:var(--editor-bg);border:1px solid var(--border-color, #ccc);box-shadow:0 4px 6px rgba(0, 0, 0, 0.1);border-radius:4px;padding:4px;align-items:center}.search-widget .search-input{border:none;outline:none;background:transparent;color:var(--editor-fg);padding:4px;font-size:13px;width:150px}.search-widget .search-actions{display:flex;gap:2px}.search-widget .search-actions button{background:transparent;border:none;color:var(--status-bar-fg);cursor:pointer;padding:4px;border-radius:2px}.search-widget .search-actions button:hover{background:var(--line-num-bg);color:var(--editor-fg)}.suggestion-list{position:absolute;z-index:100;background:var(--editor-bg);border:1px solid var(--border-color, #ccc);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);border-radius:4px;max-height:200px;overflow-y:auto;width:200px;margin:0;padding:0;list-style:none;font-size:13px;font-family:inherit}.suggestion-list li{padding:4px 8px;cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--editor-fg)}.suggestion-list li.active,.suggestion-list li:hover{background:var(--selection-bg);color:var(--editor-fg)}.suggestion-list li .icon{opacity:0.7;font-size:11px}.editor-tabs{display:flex;background-color:var(--status-bar-bg);background-color:var(--bg-primary, #252526);overflow-x:auto;flex-shrink:0;}.editor-tabs::-webkit-scrollbar{height:4px}.editor-tabs::-webkit-scrollbar-thumb{background:rgba(128, 128, 128, 0.3)}:host(:not(.theme-vs-dark)) .editor-tabs{background-color:var(--bg-primary, #f3f3f3)}.editor-tab{display:flex;align-items:center;gap:8px;padding:8px 12px;color:var(--text-muted, #969696);background-color:transparent;cursor:pointer;border-right:1px solid rgba(0, 0, 0, 0.1);font-size:13px;white-space:nowrap;border-top:2px solid transparent;}.editor-tab:hover{background-color:rgba(128, 128, 128, 0.1);color:var(--editor-fg)}.editor-tab.active{background-color:var(--editor-bg);color:var(--editor-fg);border-top-color:var(--color-primary, #007acc);}.editor-tab .tab-icon{font-size:12px;opacity:0.8}.editor-tab{}.editor-ribbon-container{display:flex;flex-direction:column;background-color:var(--ribbon-bg, #f3f3f3);border-bottom:1px solid var(--border-color, #d1d1d1);flex-shrink:0;user-select:none;font-family:"Segoe UI", system-ui, -apple-system, sans-serif;--ribbon-bg:var(--bg-primary, #f3f3f3);--ribbon-tab-active:var(--bg-primary, #ffffff);--ribbon-tab-fg:var(--text-secondary, #333333);--ribbon-accent:var(--color-primary, #2b579a);}:host(.theme-vs-dark) .editor-ribbon-container{--ribbon-bg:var(--bg-secondary, #2d2d2d);--ribbon-tab-active:var(--text-secondary, #3c3c3c);--ribbon-tab-fg:var(--bg-secondary, #cccccc);--ribbon-accent:var(--color-primary, #007acc);border-bottom-color:var(--border-strong, #3e3e3e)}.ribbon-tabs{display:flex;padding:0 10px;background-color:var(--ribbon-accent);gap:2px}.ribbon-tab{padding:4px 12px;cursor:pointer;opacity:0.7;transition:all 0.2s;border-bottom:2px solid transparent;font-size:11px;font-weight:500;display:flex;align-items:center;gap:6px;min-width:60px;justify-content:center}.ribbon-tab ui-tooltip{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ribbon-tab i{font-size:14px}.ribbon-tab:hover{background-color:rgba(255, 255, 255, 0.15);opacity:1}.ribbon-tab:hover i{transform:scale(1.1)}.ribbon-tab.active{background-color:var(--ribbon-bg);color:var(--ribbon-tab-fg);font-weight:600;border-bottom:none;border-radius:4px 4px 0 0;margin-top:4px;padding-top:4px;opacity:1}.ribbon-tab.active i{opacity:1}.ribbon-content{background:var(--editor-bg);border-bottom:1px solid var(--border-color);min-height:0;padding:4px;display:flex;gap:8px;overflow-x:auto}.labels-hover .ribbon-content,.labels-hidden .ribbon-content{min-height:48px}.ribbon-panel{display:flex;gap:12px;height:100%;align-items:stretch}.ribbon-group{display:flex;flex-direction:column;gap:2px;padding-right:12px;border-right:1px solid var(--border-color);height:100%;justify-content:space-between}.ribbon-group:last-child{border-right:none}.ribbon-group.divider{padding:0;width:1px;background:linear-gradient(to bottom, transparent 10%, var(--border-color, #d1d1d1) 20%, var(--border-color, #d1d1d1) 80%, transparent 90%);margin:2px 4px}.ribbon-group-content{display:flex;gap:4px;align-items:center;flex:1}.ribbon-group-label{font-size:9px;color:var(--status-bar-fg);text-align:center;text-transform:uppercase;letter-spacing:0.5px;opacity:0.7}.labels-hidden .ribbon-group-label{display:none}.ribbon-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px 8px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--editor-fg);cursor:pointer;transition:all 0.2s;min-width:32px;font-size:11px}.ribbon-btn i{font-size:16px}.ribbon-btn:hover{background:rgba(144, 144, 144, 0.1);border-color:var(--border-color)}.ribbon-btn.active{background:rgba(0, 122, 204, 0.1);border-color:var(--color-primary, #007acc);color:var(--color-primary, #007acc)}.ribbon-btn.lg{padding:4px 12px;gap:4px;min-width:48px}.ribbon-btn.lg i{font-size:20px}.ribbon-btn.icon-only{padding:4px;min-width:28px;height:28px}.ribbon-btn.icon-only span{display:none}.ribbon-btn.icon-only i{font-size:16px}.ribbon-select-container{display:flex;flex-direction:column;gap:2px;align-items:center}.ribbon-select-container select{padding:2px 4px;font-size:11px;border:1px solid var(--border-color, #ccc);border-radius:3px;background:var(--editor-bg);color:var(--editor-fg);outline:none}.ribbon-select-container span{font-size:10px;opacity:0.7}.help-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.5);z-index:200;display:flex;justify-content:center;align-items:center;backdrop-filter:blur(2px)}.help-modal{background:var(--editor-bg);color:var(--editor-fg);width:400px;max-width:90%;border-radius:8px;border:1px solid var(--border-color, #454545);box-shadow:0 10px 25px rgba(0, 0, 0, 0.5);display:flex;flex-direction:column;overflow:hidden;animation:fadeIn 0.2s ease-out}.help-modal .help-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--status-bar-bg);color:var(--status-bar-fg);border-bottom:1px solid rgba(128, 128, 128, 0.2)}.help-modal .help-header h3{margin:0;font-size:14px;font-weight:600}.help-modal .help-header .close-btn{background:transparent;border:none;color:inherit;cursor:pointer;font-size:14px;padding:4px}.help-modal .help-header .close-btn:hover{opacity:0.8}.help-modal .help-content{padding:16px;display:flex;flex-direction:column;gap:16px}.help-modal .help-section h4{margin:0 0 8px 0;font-size:12px;text-transform:uppercase;letter-spacing:0.5px;opacity:0.7;border-bottom:1px solid rgba(128, 128, 128, 0.2);padding-bottom:4px}.help-modal .help-section ul{list-style:none;padding:0;margin:0;font-size:13px}.help-modal .help-section ul li{margin-bottom:6px;display:flex;align-items:center;gap:8px}.help-modal kbd{background:rgba(128, 128, 128, 0.2);padding:2px 4px;border-radius:3px;font-family:inherit;font-size:11px;border:1px solid rgba(128, 128, 128, 0.3)}@keyframes fadeIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}';export{r as ui_code_editor}
|