atomicuilibrary 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/dist/cjs/category-section.cjs.entry.js +2 -2
  2. package/dist/cjs/dom-BvBb0kmW.js +267 -0
  3. package/dist/cjs/exploration-project-tailwind.cjs.js +2 -2
  4. package/dist/cjs/{index-ClkOYpT8.js → index-C32cWsm5.js} +1 -1
  5. package/dist/cjs/layout-manager.cjs.entry.js +3 -3
  6. package/dist/cjs/library-card.cjs.entry.js +2 -2
  7. package/dist/cjs/lm-container_2.cjs.entry.js +2 -2
  8. package/dist/cjs/lm-panel_3.cjs.entry.js +4 -4
  9. package/dist/cjs/loader.cjs.js +2 -2
  10. package/dist/cjs/my-component.cjs.entry.js +1 -1
  11. package/dist/cjs/my-step.cjs.entry.js +2 -2
  12. package/dist/cjs/nav-bar.cjs.entry.js +4 -4
  13. package/dist/cjs/smart-step.cjs.entry.js +3 -3
  14. package/dist/cjs/timeline-item.cjs.entry.js +2 -2
  15. package/dist/cjs/ui-accordion_11.cjs.entry.js +132 -50
  16. package/dist/cjs/ui-advanced-data-table.cjs.entry.js +2 -2
  17. package/dist/cjs/ui-anchor.cjs.entry.js +2 -2
  18. package/dist/cjs/ui-animate-on-scroll.cjs.entry.js +3 -3
  19. package/dist/cjs/ui-aside-panel.cjs.entry.js +10 -11
  20. package/dist/cjs/ui-avatar-group_5.cjs.entry.js +1694 -0
  21. package/dist/cjs/ui-breadcrumb-item.cjs.entry.js +3 -3
  22. package/dist/cjs/ui-breadcrumb.cjs.entry.js +1 -1
  23. package/dist/cjs/ui-callout-banner.cjs.entry.js +2 -2
  24. package/dist/cjs/ui-card.cjs.entry.js +4 -3
  25. package/dist/cjs/ui-carousel.cjs.entry.js +1 -1
  26. package/dist/cjs/ui-checkbox.cjs.entry.js +3 -3
  27. package/dist/cjs/ui-code-editor.cjs.entry.js +2 -2
  28. package/dist/cjs/ui-code-preview.cjs.entry.js +2 -2
  29. package/dist/cjs/ui-color-picker.cjs.entry.js +256 -22
  30. package/dist/cjs/ui-command-palette.cjs.entry.js +1 -1
  31. package/dist/cjs/ui-dialog-box.cjs.entry.js +85 -11
  32. package/dist/cjs/ui-dialog-content.cjs.entry.js +1 -1
  33. package/dist/cjs/ui-dialog-footer_2.cjs.entry.js +1 -1
  34. package/dist/cjs/ui-divider.cjs.entry.js +1 -1
  35. package/dist/cjs/ui-dock-host.cjs.entry.js +4 -4
  36. package/dist/cjs/ui-dock.cjs.entry.js +2 -2
  37. package/dist/cjs/ui-drag-drop.cjs.entry.js +2 -2
  38. package/dist/cjs/ui-dropdown_2.cjs.entry.js +104 -34
  39. package/dist/cjs/ui-empty-state.cjs.entry.js +2 -2
  40. package/dist/cjs/ui-fab-item.cjs.entry.js +2 -2
  41. package/dist/cjs/ui-fab.cjs.entry.js +4 -4
  42. package/dist/cjs/ui-file-upload.cjs.entry.js +143 -44
  43. package/dist/cjs/ui-horizontal-nav.cjs.entry.js +2 -2
  44. package/dist/cjs/ui-knob.cjs.entry.js +1 -1
  45. package/dist/cjs/ui-label.cjs.entry.js +473 -0
  46. package/dist/cjs/ui-library.cjs.entry.js +2 -2
  47. package/dist/cjs/ui-list-group_2.cjs.entry.js +349 -60
  48. package/dist/cjs/ui-list.cjs.entry.js +76 -42
  49. package/dist/cjs/ui-masonry.cjs.entry.js +1 -1
  50. package/dist/cjs/ui-meter-group.cjs.entry.js +5 -4
  51. package/dist/cjs/ui-navigation-item.cjs.entry.js +5 -5
  52. package/dist/cjs/ui-number-input.cjs.entry.js +7 -3
  53. package/dist/cjs/ui-otp-input.cjs.entry.js +5 -5
  54. package/dist/cjs/{ui-pagination_4.cjs.entry.js → ui-pagination_3.cjs.entry.js} +35 -506
  55. package/dist/cjs/ui-panel.cjs.entry.js +1 -1
  56. package/dist/cjs/ui-pattern-input.cjs.entry.js +46 -11
  57. package/dist/cjs/ui-progress.cjs.entry.js +66 -9
  58. package/dist/cjs/ui-range-slider.cjs.entry.js +2 -2
  59. package/dist/cjs/ui-resizable-panel.cjs.entry.js +2 -2
  60. package/dist/cjs/ui-scroll-top.cjs.entry.js +1 -1
  61. package/dist/cjs/ui-smart-context-menu.cjs.entry.js +1 -1
  62. package/dist/cjs/ui-smart-stepper.cjs.entry.js +2 -2
  63. package/dist/cjs/ui-snackbar.cjs.entry.js +1 -1
  64. package/dist/cjs/ui-speed-dial.cjs.entry.js +1 -1
  65. package/dist/cjs/ui-speedometer.cjs.entry.js +28 -17
  66. package/dist/cjs/ui-splitter.cjs.entry.js +1 -1
  67. package/dist/cjs/ui-step.cjs.entry.js +2 -2
  68. package/dist/cjs/ui-stepper.cjs.entry.js +1 -1
  69. package/dist/cjs/ui-switch.cjs.entry.js +14 -13
  70. package/dist/cjs/ui-tabs.cjs.entry.js +2 -2
  71. package/dist/cjs/ui-tag.cjs.entry.js +58 -13
  72. package/dist/cjs/ui-timeline.cjs.entry.js +10 -2
  73. package/dist/cjs/ui-timer.cjs.entry.js +2 -2
  74. package/dist/cjs/ui-toolbar.cjs.entry.js +2 -2
  75. package/dist/cjs/ui-tooltip.cjs.entry.js +4 -4
  76. package/dist/cjs/ui-top-bar.cjs.entry.js +1 -1
  77. package/dist/cjs/ui-transfer-list.cjs.entry.js +6 -6
  78. package/dist/cjs/ui-tree.cjs.entry.js +30 -15
  79. package/dist/cjs/ui-workspace-manager.cjs.entry.js +2 -2
  80. package/dist/collection/assets/js/component-config.js +1 -0
  81. package/dist/collection/assets/js/demo-loader.js +2 -0
  82. package/dist/collection/assets/js/demos/about-demo.js +13 -13
  83. package/dist/collection/assets/js/demos/accordion-demo.js +66 -66
  84. package/dist/collection/assets/js/demos/advanced-data-table-demo.js +102 -102
  85. package/dist/collection/assets/js/demos/anchor-demo.js +27 -28
  86. package/dist/collection/assets/js/demos/animate-on-scroll-demo.js +12 -12
  87. package/dist/collection/assets/js/demos/aside-panel-demo.js +51 -51
  88. package/dist/collection/assets/js/demos/avatar-demo.js +433 -95
  89. package/dist/collection/assets/js/demos/badge-demo.js +51 -52
  90. package/dist/collection/assets/js/demos/breadcrumb-demo.js +7 -7
  91. package/dist/collection/assets/js/demos/button-demo.js +117 -107
  92. package/dist/collection/assets/js/demos/button-toggle-demo.js +199 -96
  93. package/dist/collection/assets/js/demos/callout-banner-demo.js +23 -23
  94. package/dist/collection/assets/js/demos/card-demo.js +23 -22
  95. package/dist/collection/assets/js/demos/carousel-demo.js +632 -360
  96. package/dist/collection/assets/js/demos/checkbox-demo.js +124 -7
  97. package/dist/collection/assets/js/demos/color-picker-demo.js +394 -100
  98. package/dist/collection/assets/js/demos/command-palette-demo.js +182 -65
  99. package/dist/collection/assets/js/demos/complex-form-demo.js +5 -5
  100. package/dist/collection/assets/js/demos/context-menu-demo.js +43 -43
  101. package/dist/collection/assets/js/demos/dialog-demo-temp.js +3 -3
  102. package/dist/collection/assets/js/demos/dialog-demo.js +336 -230
  103. package/dist/collection/assets/js/demos/divider-demo.js +59 -62
  104. package/dist/collection/assets/js/demos/dock-demo.js +12 -12
  105. package/dist/collection/assets/js/demos/dock-host-init.js +31 -31
  106. package/dist/collection/assets/js/demos/documentation-demo.js +34 -34
  107. package/dist/collection/assets/js/demos/drag-drop-demo.js +2 -2
  108. package/dist/collection/assets/js/demos/dropdown-demo.js +140 -136
  109. package/dist/collection/assets/js/demos/dropdown-subtitle-demo.js +2 -2
  110. package/dist/collection/assets/js/demos/empty-state-demo.js +294 -78
  111. package/dist/collection/assets/js/demos/fab-demo.js +95 -11
  112. package/dist/collection/assets/js/demos/file-upload-demo.js +641 -171
  113. package/dist/collection/assets/js/demos/home-components.js +2 -2
  114. package/dist/collection/assets/js/demos/horizontal-nav-demo.js +6 -6
  115. package/dist/collection/assets/js/demos/icon-demo.js +17 -17
  116. package/dist/collection/assets/js/demos/input-demo.js +147 -143
  117. package/dist/collection/assets/js/demos/knob-demo.js +29 -30
  118. package/dist/collection/assets/js/demos/label-demo.js +697 -0
  119. package/dist/collection/assets/js/demos/layout-manager-demo.js +55 -55
  120. package/dist/collection/assets/js/demos/list-demo.js +185 -122
  121. package/dist/collection/assets/js/demos/loader-demo.js +48 -48
  122. package/dist/collection/assets/js/demos/masonry-demo.js +568 -140
  123. package/dist/collection/assets/js/demos/meter-group-demo.js +14 -16
  124. package/dist/collection/assets/js/demos/multi-level-context-menu-demo.js +25 -25
  125. package/dist/collection/assets/js/demos/my-profile-demo.js +27 -27
  126. package/dist/collection/assets/js/demos/nav-bar-demo.js +1 -1
  127. package/dist/collection/assets/js/demos/number-input-demo.js +262 -211
  128. package/dist/collection/assets/js/demos/pagination-demo.js +29 -29
  129. package/dist/collection/assets/js/demos/panel-demo.js +18 -25
  130. package/dist/collection/assets/js/demos/pattern-input-demo.js +278 -40
  131. package/dist/collection/assets/js/demos/popover-demo.js +240 -149
  132. package/dist/collection/assets/js/demos/progress-demo.js +170 -156
  133. package/dist/collection/assets/js/demos/radio-demo.js +73 -12
  134. package/dist/collection/assets/js/demos/range-slider-demo.js +33 -33
  135. package/dist/collection/assets/js/demos/rating-demo.js +19 -19
  136. package/dist/collection/assets/js/demos/scroll-top-demo.js +8 -9
  137. package/dist/collection/assets/js/demos/skeleton-demo.js +110 -52
  138. package/dist/collection/assets/js/demos/skeleton-performance-demo.js +2 -2
  139. package/dist/collection/assets/js/demos/smart-dialog-demo.js +12 -12
  140. package/dist/collection/assets/js/demos/smart-menu-demo.js +17 -17
  141. package/dist/collection/assets/js/demos/snackbar-demo.js +53 -53
  142. package/dist/collection/assets/js/demos/speed-dial-demo.js +14 -14
  143. package/dist/collection/assets/js/demos/speedometer-demo.js +40 -32
  144. package/dist/collection/assets/js/demos/split-button-demo.js +2 -2
  145. package/dist/collection/assets/js/demos/splitter-demo.js +14 -14
  146. package/dist/collection/assets/js/demos/stack-demo.js +27 -27
  147. package/dist/collection/assets/js/demos/stepper-demo.js +49 -49
  148. package/dist/collection/assets/js/demos/switch-demo.js +561 -125
  149. package/dist/collection/assets/js/demos/tabs-demo.js +22 -22
  150. package/dist/collection/assets/js/demos/tag-demo.js +62 -62
  151. package/dist/collection/assets/js/demos/theme-selector-demo.js +27 -27
  152. package/dist/collection/assets/js/demos/timeline-demo.js +10 -10
  153. package/dist/collection/assets/js/demos/timeline-playground.js +2 -2
  154. package/dist/collection/assets/js/demos/timer-demo.js +10 -10
  155. package/dist/collection/assets/js/demos/toolbar-demo.js +17 -17
  156. package/dist/collection/assets/js/demos/tooltip-demo.js +92 -90
  157. package/dist/collection/assets/js/demos/top-bar-demo.js +6 -6
  158. package/dist/collection/assets/js/demos/transfer-list-demo.js +20 -20
  159. package/dist/collection/assets/js/demos/tree-demo.js +50 -66
  160. package/dist/collection/assets/js/demos/workspace-manager-demo.js +20 -20
  161. package/dist/collection/collection-manifest.json +1 -2
  162. package/dist/collection/components/accordion/accordion.css +275 -9
  163. package/dist/collection/components/accordion/accordion.js +7 -6
  164. package/dist/collection/components/advanced-data-table/advanced-data-table.css +5 -5
  165. package/dist/collection/components/advanced-data-table/advanced-data-table.js +2 -2
  166. package/dist/collection/components/anchor/anchor.css +1 -0
  167. package/dist/collection/components/animate-on-scroll/animate-on-scroll.js +2 -2
  168. package/dist/collection/components/aside-panel/aside-panel.css +2 -2
  169. package/dist/collection/components/aside-panel/aside-panel.js +10 -11
  170. package/dist/collection/components/avatar/avatar.css +6 -6
  171. package/dist/collection/components/avatar/avatar.js +63 -11
  172. package/dist/collection/components/badge/badge.css +27 -17
  173. package/dist/collection/components/badge/badge.js +6 -3
  174. package/dist/collection/components/breadcrumb/breadcrumb-item.js +2 -2
  175. package/dist/collection/components/button/button.css +1 -0
  176. package/dist/collection/components/button/button.js +3 -3
  177. package/dist/collection/components/button-toggle/button-toggle.js +2 -2
  178. package/dist/collection/components/button-toggle-group/button-toggle-group.css +161 -14
  179. package/dist/collection/components/button-toggle-group/button-toggle-group.js +2 -2
  180. package/dist/collection/components/callout-banner/callout-banner.css +75 -0
  181. package/dist/collection/components/callout-banner/callout-banner.js +1 -1
  182. package/dist/collection/components/card/card.css +221 -9
  183. package/dist/collection/components/card/card.js +3 -2
  184. package/dist/collection/components/checkbox/checkbox.js +3 -3
  185. package/dist/collection/components/code-editor/code-editor.js +1 -1
  186. package/dist/collection/components/code-preview/ui-code-preview.js +1 -1
  187. package/dist/collection/components/color-picker/color-picker.css +110 -6
  188. package/dist/collection/components/color-picker/color-picker.js +302 -26
  189. package/dist/collection/components/context-menu/context-menu.css +9 -9
  190. package/dist/collection/components/dialog-box/dialog-box.js +116 -14
  191. package/dist/collection/components/dialog-header/dialog-header.js +1 -1
  192. package/dist/collection/components/dock/dock.css +116 -3
  193. package/dist/collection/components/dock-host/ui-dock-host.js +3 -3
  194. package/dist/collection/components/drag-drop/drag-drop.js +1 -1
  195. package/dist/collection/components/dropdown/dropdown.css +101 -8
  196. package/dist/collection/components/dropdown/dropdown.js +94 -28
  197. package/dist/collection/components/empty-state/empty-state.js +1 -1
  198. package/dist/collection/components/fab/fab.css +87 -15
  199. package/dist/collection/components/fab/fab.js +3 -3
  200. package/dist/collection/components/fab-item/fab-item.js +1 -1
  201. package/dist/collection/components/file-upload/file-upload.css +1362 -31
  202. package/dist/collection/components/file-upload/file-upload.js +171 -50
  203. package/dist/collection/components/horizontal-nav/horizontal-nav.css +9 -9
  204. package/dist/collection/components/horizontal-nav/horizontal-nav.js +2 -2
  205. package/dist/collection/components/icon/icon.js +1 -1
  206. package/dist/collection/components/input/input.css +9 -0
  207. package/dist/collection/components/input/input.js +20 -9
  208. package/dist/collection/components/label/label.css +583 -0
  209. package/dist/collection/components/label/label.js +1669 -0
  210. package/dist/collection/components/layout-manager/layout-manager.js +1 -1
  211. package/dist/collection/components/layout-manager/lm-floating-window/lm-floating-window.js +1 -1
  212. package/dist/collection/components/layout-manager/lm-panel/lm-panel.js +1 -1
  213. package/dist/collection/components/layout-manager/lm-splitter/lm-splitter.js +1 -1
  214. package/dist/collection/components/layout-manager/lm-tabs/lm-tabs.js +1 -1
  215. package/dist/collection/components/library/category-section.js +1 -1
  216. package/dist/collection/components/library/library-card.js +1 -1
  217. package/dist/collection/components/library/library.js +1 -1
  218. package/dist/collection/components/list/list.css +46 -5
  219. package/dist/collection/components/list/list.js +76 -42
  220. package/dist/collection/components/list-group/list-group.css +0 -2
  221. package/dist/collection/components/list-group/list-group.js +11 -5
  222. package/dist/collection/components/list-item/list-item.css +403 -131
  223. package/dist/collection/components/list-item/list-item.js +345 -61
  224. package/dist/collection/components/loader/loader.css +1 -1
  225. package/dist/collection/components/loader/loader.js +2 -2
  226. package/dist/collection/components/meter-group/meter-group.css +5 -0
  227. package/dist/collection/components/meter-group/meter-group.js +3 -2
  228. package/dist/collection/components/my-step/my-step.js +1 -1
  229. package/dist/collection/components/nav-bar/nav-bar.css +4 -4
  230. package/dist/collection/components/nav-bar/nav-bar.js +6 -6
  231. package/dist/collection/components/number-input/number-input.js +6 -2
  232. package/dist/collection/components/otp-input/otp-input.css +10 -0
  233. package/dist/collection/components/otp-input/otp-input.js +3 -3
  234. package/dist/collection/components/pagination/pagination.js +1 -1
  235. package/dist/collection/components/pattern-input/pattern-input.css +0 -1
  236. package/dist/collection/components/pattern-input/pattern-input.js +44 -9
  237. package/dist/collection/components/popover/popover.css +35 -7
  238. package/dist/collection/components/popover/popover.js +64 -9
  239. package/dist/collection/components/progress/progress.css +176 -32
  240. package/dist/collection/components/progress/progress.js +66 -8
  241. package/dist/collection/components/radio/radio.css +2 -0
  242. package/dist/collection/components/radio/radio.js +2 -2
  243. package/dist/collection/components/range-slider/range-slider.css +284 -31
  244. package/dist/collection/components/range-slider/range-slider.js +5 -5
  245. package/dist/collection/components/rating/rating.css +151 -65
  246. package/dist/collection/components/rating/rating.js +31 -13
  247. package/dist/collection/components/resizable-panel/resizable-panel.js +1 -1
  248. package/dist/collection/components/skeleton/skeleton-loader.css +144 -44
  249. package/dist/collection/components/skeleton/skeleton-loader.js +11 -7
  250. package/dist/collection/components/smart-stepper/smart-step.js +2 -2
  251. package/dist/collection/components/smart-stepper/smart-stepper.js +1 -1
  252. package/dist/collection/components/speedometer/speedometer.css +26 -6
  253. package/dist/collection/components/speedometer/speedometer.js +26 -15
  254. package/dist/collection/components/stack/stack.js +2 -2
  255. package/dist/collection/components/step/step.js +1 -1
  256. package/dist/collection/components/stepper/stepper.js +1 -1
  257. package/dist/collection/components/switch/switch.css +367 -8
  258. package/dist/collection/components/switch/switch.js +13 -12
  259. package/dist/collection/components/tag/tag.css +38 -12
  260. package/dist/collection/components/tag/tag.js +58 -13
  261. package/dist/collection/components/tag-group/tag-group.css +0 -1
  262. package/dist/collection/components/tag-group/tag-group.js +3 -3
  263. package/dist/collection/components/timeline/timeline.css +380 -317
  264. package/dist/collection/components/timeline/timeline.js +8 -0
  265. package/dist/collection/components/timeline-item/timeline-item.js +1 -1
  266. package/dist/collection/components/timer/timer.js +1 -1
  267. package/dist/collection/components/toggle-group/toggle-group.css +7 -3
  268. package/dist/collection/components/toggle-group/toggle-group.js +7 -3
  269. package/dist/collection/components/toolbar/toolbar.js +1 -1
  270. package/dist/collection/components/tooltip/tooltip.js +4 -4
  271. package/dist/collection/components/top-bar/top-bar.js +2 -2
  272. package/dist/collection/components/transfer-list/transfer-list.css +13 -13
  273. package/dist/collection/components/transfer-list/transfer-list.js +4 -4
  274. package/dist/collection/components/tree/tree.css +35 -21
  275. package/dist/collection/components/tree/tree.js +28 -13
  276. package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.css +34 -16
  277. package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.js +46 -11
  278. package/dist/collection/components/ui-navigation-bar/navigation-item.css +7 -7
  279. package/dist/collection/components/ui-navigation-bar/navigation-item.js +3 -3
  280. package/dist/collection/utils/dom.js +151 -151
  281. package/dist/components/avatar-group.js +1 -1
  282. package/dist/components/avatar.js +1 -1
  283. package/dist/components/badge.js +1 -1
  284. package/dist/components/button-toggle.js +1 -1
  285. package/dist/components/button.js +1 -0
  286. package/dist/components/category-section2.js +1 -1
  287. package/dist/components/checkbox.js +1 -1
  288. package/dist/components/context-menu.js +1 -1
  289. package/dist/components/dialog-header.js +1 -1
  290. package/dist/components/dom.js +1 -1
  291. package/dist/components/dropdown.js +1 -1
  292. package/dist/components/icon.js +2 -2
  293. package/dist/components/input.js +1 -1
  294. package/dist/components/layout-manager.js +1 -1
  295. package/dist/components/library-card2.js +1 -1
  296. package/dist/components/list-group.js +1 -1
  297. package/dist/components/list-item.js +1 -1
  298. package/dist/components/lm-container2.js +1 -1
  299. package/dist/components/lm-floating-window2.js +1 -1
  300. package/dist/components/lm-panel2.js +1 -1
  301. package/dist/components/lm-splitter2.js +1 -1
  302. package/dist/components/lm-tabs2.js +1 -1
  303. package/dist/components/loader.js +1 -1
  304. package/dist/components/my-step.js +1 -1
  305. package/dist/components/nav-bar.js +1 -1
  306. package/dist/components/pagination.js +1 -1
  307. package/dist/components/popover.js +1 -0
  308. package/dist/components/radio.js +1 -1
  309. package/dist/components/range-slider.js +1 -1
  310. package/dist/components/rating.js +1 -1
  311. package/dist/components/resizable-panel.js +1 -1
  312. package/dist/components/skeleton-loader.js +1 -1
  313. package/dist/components/smart-step.js +1 -1
  314. package/dist/components/stack.js +1 -1
  315. package/dist/components/switch.js +1 -1
  316. package/dist/components/tag-group.js +1 -1
  317. package/dist/components/tag.js +1 -1
  318. package/dist/components/timeline-item.js +1 -1
  319. package/dist/components/toggle-group.js +1 -1
  320. package/dist/components/tooltip.js +1 -1
  321. package/dist/components/ui-accordion.js +1 -1
  322. package/dist/components/ui-advanced-data-table.js +1 -1
  323. package/dist/components/ui-anchor.js +1 -1
  324. package/dist/components/ui-animate-on-scroll.js +1 -1
  325. package/dist/components/ui-aside-panel.js +1 -1
  326. package/dist/components/ui-badge.js +1 -1
  327. package/dist/components/ui-breadcrumb-item.js +1 -1
  328. package/dist/components/ui-breadcrumb.js +1 -1
  329. package/dist/components/ui-button-toggle-group.js +1 -1
  330. package/dist/components/ui-button.js +1 -1
  331. package/dist/components/ui-callout-banner.js +1 -1
  332. package/dist/components/ui-card.js +1 -1
  333. package/dist/components/ui-carousel.js +1 -1
  334. package/dist/components/ui-code-editor.js +1 -1
  335. package/dist/components/ui-code-preview.js +1 -1
  336. package/dist/components/ui-color-picker.js +1 -1
  337. package/dist/components/ui-command-palette.js +1 -1
  338. package/dist/components/ui-dialog-box.js +1 -1
  339. package/dist/components/ui-dock-host.js +1 -1
  340. package/dist/components/ui-dock.js +1 -1
  341. package/dist/components/ui-drag-drop.js +1 -1
  342. package/dist/components/ui-empty-state.js +1 -1
  343. package/dist/components/ui-fab-item.js +1 -1
  344. package/dist/components/ui-fab.js +1 -1
  345. package/dist/components/ui-file-upload.js +1 -1
  346. package/dist/components/ui-horizontal-nav.js +1 -1
  347. package/dist/components/ui-knob.js +1 -1
  348. package/dist/components/{ui-color-controller.d.ts → ui-label.d.ts} +4 -4
  349. package/dist/components/ui-label.js +1 -0
  350. package/dist/components/ui-library.js +1 -1
  351. package/dist/components/ui-list.js +1 -1
  352. package/dist/components/ui-masonry.js +1 -1
  353. package/dist/components/ui-meter-group.js +1 -1
  354. package/dist/components/ui-navigation-bar.js +1 -1
  355. package/dist/components/ui-navigation-item.js +1 -1
  356. package/dist/components/ui-number-input.js +1 -1
  357. package/dist/components/ui-otp-input.js +1 -1
  358. package/dist/components/ui-panel.js +1 -1
  359. package/dist/components/ui-pattern-input.js +1 -1
  360. package/dist/components/ui-popover.js +1 -1
  361. package/dist/components/ui-progress.js +1 -1
  362. package/dist/components/ui-scroll-top.js +1 -1
  363. package/dist/components/ui-smart-stepper.js +1 -1
  364. package/dist/components/ui-snackbar.js +1 -1
  365. package/dist/components/ui-speed-dial.js +1 -1
  366. package/dist/components/ui-speedometer.js +1 -1
  367. package/dist/components/ui-splitter.js +1 -1
  368. package/dist/components/ui-step.js +1 -1
  369. package/dist/components/ui-stepper.js +1 -1
  370. package/dist/components/ui-tabs.js +1 -1
  371. package/dist/components/ui-timeline.js +1 -1
  372. package/dist/components/ui-timer.js +1 -1
  373. package/dist/components/ui-toolbar.js +1 -1
  374. package/dist/components/ui-top-bar.js +1 -1
  375. package/dist/components/ui-transfer-list.js +1 -1
  376. package/dist/components/ui-tree.js +1 -1
  377. package/dist/components/ui-workspace-manager.js +1 -1
  378. package/dist/esm/category-section.entry.js +2 -2
  379. package/dist/esm/dom-DFBTWhGw.js +262 -0
  380. package/dist/esm/exploration-project-tailwind.js +3 -3
  381. package/dist/esm/{index-DUsoYu9r.js → index-Dqu2zaH1.js} +1 -1
  382. package/dist/esm/layout-manager.entry.js +3 -3
  383. package/dist/esm/library-card.entry.js +2 -2
  384. package/dist/esm/lm-container_2.entry.js +2 -2
  385. package/dist/esm/lm-panel_3.entry.js +4 -4
  386. package/dist/esm/loader.js +3 -3
  387. package/dist/esm/my-component.entry.js +1 -1
  388. package/dist/esm/my-step.entry.js +2 -2
  389. package/dist/esm/nav-bar.entry.js +4 -4
  390. package/dist/esm/smart-step.entry.js +3 -3
  391. package/dist/esm/timeline-item.entry.js +2 -2
  392. package/dist/esm/ui-accordion_11.entry.js +132 -50
  393. package/dist/esm/ui-advanced-data-table.entry.js +2 -2
  394. package/dist/esm/ui-anchor.entry.js +2 -2
  395. package/dist/esm/ui-animate-on-scroll.entry.js +3 -3
  396. package/dist/esm/ui-aside-panel.entry.js +10 -11
  397. package/dist/esm/ui-avatar-group_5.entry.js +1688 -0
  398. package/dist/esm/ui-breadcrumb-item.entry.js +3 -3
  399. package/dist/esm/ui-breadcrumb.entry.js +1 -1
  400. package/dist/esm/ui-callout-banner.entry.js +2 -2
  401. package/dist/esm/ui-card.entry.js +4 -3
  402. package/dist/esm/ui-carousel.entry.js +1 -1
  403. package/dist/esm/ui-checkbox.entry.js +3 -3
  404. package/dist/esm/ui-code-editor.entry.js +2 -2
  405. package/dist/esm/ui-code-preview.entry.js +2 -2
  406. package/dist/esm/ui-color-picker.entry.js +256 -22
  407. package/dist/esm/ui-command-palette.entry.js +1 -1
  408. package/dist/esm/ui-dialog-box.entry.js +85 -11
  409. package/dist/esm/ui-dialog-content.entry.js +1 -1
  410. package/dist/esm/ui-dialog-footer_2.entry.js +1 -1
  411. package/dist/esm/ui-divider.entry.js +1 -1
  412. package/dist/esm/ui-dock-host.entry.js +4 -4
  413. package/dist/esm/ui-dock.entry.js +2 -2
  414. package/dist/esm/ui-drag-drop.entry.js +2 -2
  415. package/dist/esm/ui-dropdown_2.entry.js +104 -34
  416. package/dist/esm/ui-empty-state.entry.js +2 -2
  417. package/dist/esm/ui-fab-item.entry.js +2 -2
  418. package/dist/esm/ui-fab.entry.js +4 -4
  419. package/dist/esm/ui-file-upload.entry.js +143 -44
  420. package/dist/esm/ui-horizontal-nav.entry.js +2 -2
  421. package/dist/esm/ui-knob.entry.js +1 -1
  422. package/dist/esm/ui-label.entry.js +471 -0
  423. package/dist/esm/ui-library.entry.js +2 -2
  424. package/dist/esm/ui-list-group_2.entry.js +349 -60
  425. package/dist/esm/ui-list.entry.js +76 -42
  426. package/dist/esm/ui-masonry.entry.js +1 -1
  427. package/dist/esm/ui-meter-group.entry.js +5 -4
  428. package/dist/esm/ui-navigation-item.entry.js +5 -5
  429. package/dist/esm/ui-number-input.entry.js +7 -3
  430. package/dist/esm/ui-otp-input.entry.js +5 -5
  431. package/dist/esm/{ui-pagination_4.entry.js → ui-pagination_3.entry.js} +36 -506
  432. package/dist/esm/ui-panel.entry.js +1 -1
  433. package/dist/esm/ui-pattern-input.entry.js +46 -11
  434. package/dist/esm/ui-progress.entry.js +66 -9
  435. package/dist/esm/ui-range-slider.entry.js +2 -2
  436. package/dist/esm/ui-resizable-panel.entry.js +2 -2
  437. package/dist/esm/ui-scroll-top.entry.js +1 -1
  438. package/dist/esm/ui-smart-context-menu.entry.js +1 -1
  439. package/dist/esm/ui-smart-stepper.entry.js +2 -2
  440. package/dist/esm/ui-snackbar.entry.js +1 -1
  441. package/dist/esm/ui-speed-dial.entry.js +1 -1
  442. package/dist/esm/ui-speedometer.entry.js +28 -17
  443. package/dist/esm/ui-splitter.entry.js +1 -1
  444. package/dist/esm/ui-step.entry.js +2 -2
  445. package/dist/esm/ui-stepper.entry.js +1 -1
  446. package/dist/esm/ui-switch.entry.js +14 -13
  447. package/dist/esm/ui-tabs.entry.js +2 -2
  448. package/dist/esm/ui-tag.entry.js +58 -13
  449. package/dist/esm/ui-timeline.entry.js +10 -2
  450. package/dist/esm/ui-timer.entry.js +2 -2
  451. package/dist/esm/ui-toolbar.entry.js +2 -2
  452. package/dist/esm/ui-tooltip.entry.js +4 -4
  453. package/dist/esm/ui-top-bar.entry.js +1 -1
  454. package/dist/esm/ui-transfer-list.entry.js +6 -6
  455. package/dist/esm/ui-tree.entry.js +30 -15
  456. package/dist/esm/ui-workspace-manager.entry.js +2 -2
  457. package/dist/exploration-project-tailwind/exploration-project-tailwind.css +1 -1
  458. package/dist/exploration-project-tailwind/exploration-project-tailwind.esm.js +1 -1
  459. package/dist/exploration-project-tailwind/{p-7ba2258a.entry.js → p-024a299a.entry.js} +1 -1
  460. package/dist/exploration-project-tailwind/p-0a71896a.entry.js +1 -0
  461. package/dist/exploration-project-tailwind/{p-35296877.entry.js → p-0cdeb8d8.entry.js} +1 -1
  462. package/dist/exploration-project-tailwind/{p-a42fdc33.entry.js → p-139cefbc.entry.js} +1 -1
  463. package/dist/exploration-project-tailwind/{p-036d2a44.entry.js → p-198c83e5.entry.js} +1 -1
  464. package/dist/exploration-project-tailwind/p-236f47b1.entry.js +1 -0
  465. package/dist/exploration-project-tailwind/{p-81ebba11.entry.js → p-25530d0d.entry.js} +1 -1
  466. package/dist/exploration-project-tailwind/{p-41cd6bf0.entry.js → p-298f2057.entry.js} +1 -1
  467. package/dist/exploration-project-tailwind/{p-85e36111.entry.js → p-2b5a8e3e.entry.js} +1 -1
  468. package/dist/exploration-project-tailwind/{p-e8c6d395.entry.js → p-2b6aa7bc.entry.js} +1 -1
  469. package/dist/exploration-project-tailwind/{p-70bacda8.entry.js → p-2cfba753.entry.js} +1 -1
  470. package/dist/exploration-project-tailwind/{p-cbee2607.entry.js → p-2fe22958.entry.js} +1 -1
  471. package/dist/exploration-project-tailwind/{p-20ecc116.entry.js → p-3012e780.entry.js} +1 -1
  472. package/dist/exploration-project-tailwind/p-321c3f46.entry.js +1 -0
  473. package/dist/exploration-project-tailwind/{p-8b57fe4e.entry.js → p-3ab43638.entry.js} +1 -1
  474. package/dist/exploration-project-tailwind/p-3ad7e47e.entry.js +1 -0
  475. package/dist/exploration-project-tailwind/p-3b1ca826.entry.js +1 -0
  476. package/dist/exploration-project-tailwind/p-3ee8ddae.entry.js +1 -0
  477. package/dist/exploration-project-tailwind/{p-e22317c1.entry.js → p-3efb44c8.entry.js} +1 -1
  478. package/dist/exploration-project-tailwind/{p-36861546.entry.js → p-42e3bc28.entry.js} +1 -1
  479. package/dist/exploration-project-tailwind/p-4360331a.entry.js +1 -0
  480. package/dist/exploration-project-tailwind/{p-2f961934.entry.js → p-443de32b.entry.js} +1 -1
  481. package/dist/exploration-project-tailwind/{p-898dd0fa.entry.js → p-44d15451.entry.js} +1 -1
  482. package/dist/exploration-project-tailwind/{p-4288c158.entry.js → p-46071679.entry.js} +1 -1
  483. package/dist/exploration-project-tailwind/{p-a3f465d9.entry.js → p-497d6182.entry.js} +1 -1
  484. package/dist/exploration-project-tailwind/p-4ad8c55c.entry.js +1 -0
  485. package/dist/exploration-project-tailwind/{p-4aaa8e40.entry.js → p-4c46ac0b.entry.js} +1 -1
  486. package/dist/exploration-project-tailwind/{p-98e91da5.entry.js → p-5042ddaa.entry.js} +1 -1
  487. package/dist/exploration-project-tailwind/p-60190e0e.entry.js +1 -0
  488. package/dist/exploration-project-tailwind/p-60530874.entry.js +1 -0
  489. package/dist/exploration-project-tailwind/{p-200241f8.entry.js → p-6108565d.entry.js} +1 -1
  490. package/dist/exploration-project-tailwind/{p-fb4aca69.entry.js → p-62889cfe.entry.js} +1 -1
  491. package/dist/exploration-project-tailwind/{p-c02284ea.entry.js → p-66f71613.entry.js} +1 -1
  492. package/dist/exploration-project-tailwind/{p-7889bfc4.entry.js → p-67c440b2.entry.js} +1 -1
  493. package/dist/exploration-project-tailwind/{p-c1c8ac28.entry.js → p-6f09503f.entry.js} +1 -1
  494. package/dist/exploration-project-tailwind/p-721bdbc3.entry.js +1 -0
  495. package/dist/exploration-project-tailwind/p-747b02ea.entry.js +1 -0
  496. package/dist/exploration-project-tailwind/{p-c6fd72e1.entry.js → p-754cb046.entry.js} +1 -1
  497. package/dist/exploration-project-tailwind/{p-97af03cc.entry.js → p-7ed3bba2.entry.js} +1 -1
  498. package/dist/exploration-project-tailwind/{p-d59da767.entry.js → p-864cebb7.entry.js} +1 -1
  499. package/dist/exploration-project-tailwind/{p-4d73c143.entry.js → p-96ee3196.entry.js} +1 -1
  500. package/dist/exploration-project-tailwind/{p-54965530.entry.js → p-97086868.entry.js} +1 -1
  501. package/dist/exploration-project-tailwind/{p-d114a347.entry.js → p-9c5ced88.entry.js} +1 -1
  502. package/dist/exploration-project-tailwind/p-9d3044d4.entry.js +1 -0
  503. package/dist/exploration-project-tailwind/p-9e079be6.entry.js +1 -0
  504. package/dist/exploration-project-tailwind/{p-790556f0.entry.js → p-9e4c45f5.entry.js} +1 -1
  505. package/dist/exploration-project-tailwind/p-9eee7394.entry.js +1 -0
  506. package/dist/exploration-project-tailwind/p-DFBTWhGw.js +1 -0
  507. package/dist/exploration-project-tailwind/p-Dqu2zaH1.js +2 -0
  508. package/dist/exploration-project-tailwind/p-a7bdedc2.entry.js +1 -0
  509. package/dist/exploration-project-tailwind/{p-c87aeab6.entry.js → p-a8ec29de.entry.js} +1 -1
  510. package/dist/exploration-project-tailwind/{p-6ddbee42.entry.js → p-ae617f62.entry.js} +1 -1
  511. package/dist/exploration-project-tailwind/{p-05a436d3.entry.js → p-aef76052.entry.js} +1 -1
  512. package/dist/exploration-project-tailwind/p-b5f043fa.entry.js +1 -0
  513. package/dist/exploration-project-tailwind/p-b637b91b.entry.js +1 -0
  514. package/dist/exploration-project-tailwind/{p-d2e45c5e.entry.js → p-bc49a088.entry.js} +1 -1
  515. package/dist/exploration-project-tailwind/{p-6b838549.entry.js → p-bd9a631f.entry.js} +1 -1
  516. package/dist/exploration-project-tailwind/{p-e8ba0c95.entry.js → p-bf4b6767.entry.js} +1 -1
  517. package/dist/exploration-project-tailwind/p-c0fa400e.entry.js +1 -0
  518. package/dist/exploration-project-tailwind/{p-8578b616.entry.js → p-c4f3d990.entry.js} +1 -1
  519. package/dist/exploration-project-tailwind/p-c68ddb2f.entry.js +1 -0
  520. package/dist/exploration-project-tailwind/p-c79574c4.entry.js +1 -0
  521. package/dist/exploration-project-tailwind/p-c840098d.entry.js +1 -0
  522. package/dist/exploration-project-tailwind/{p-a1ad32a2.entry.js → p-c8663cbe.entry.js} +1 -1
  523. package/dist/exploration-project-tailwind/p-cb6e38a6.entry.js +1 -0
  524. package/dist/exploration-project-tailwind/p-cb9f2df1.entry.js +1 -0
  525. package/dist/exploration-project-tailwind/p-cfe8b696.entry.js +1 -0
  526. package/dist/exploration-project-tailwind/p-d00e13ae.entry.js +1 -0
  527. package/dist/exploration-project-tailwind/{p-c4ba7e52.entry.js → p-d01ed934.entry.js} +1 -1
  528. package/dist/exploration-project-tailwind/{p-aa85ff78.entry.js → p-d4e57d94.entry.js} +1 -1
  529. package/dist/exploration-project-tailwind/{p-ccb5c737.entry.js → p-d5bd3a3f.entry.js} +1 -1
  530. package/dist/exploration-project-tailwind/{p-45482d86.entry.js → p-d987cebe.entry.js} +1 -1
  531. package/dist/exploration-project-tailwind/p-d9ae77c0.entry.js +1 -0
  532. package/dist/exploration-project-tailwind/p-e9bae5c7.entry.js +1 -0
  533. package/dist/exploration-project-tailwind/p-f516fabc.entry.js +1 -0
  534. package/dist/exploration-project-tailwind/p-f68e2794.entry.js +1 -0
  535. package/dist/exploration-project-tailwind/{p-d30e24bd.entry.js → p-fa034f69.entry.js} +1 -1
  536. package/dist/types/components/aside-panel/aside-panel.d.ts +0 -3
  537. package/dist/types/components/avatar/avatar.d.ts +3 -0
  538. package/dist/types/components/avatar/types.d.ts +2 -0
  539. package/dist/types/components/badge/badge.d.ts +1 -0
  540. package/dist/types/components/color-picker/color-picker.d.ts +35 -2
  541. package/dist/types/components/dialog-box/dialog-box.d.ts +10 -0
  542. package/dist/types/components/dropdown/dropdown.d.ts +5 -0
  543. package/dist/types/components/file-upload/file-upload.d.ts +23 -6
  544. package/dist/types/components/label/label.d.ts +290 -0
  545. package/dist/types/components/label/types.d.ts +39 -0
  546. package/dist/types/components/list/list.d.ts +2 -1
  547. package/dist/types/components/list-group/list-group.d.ts +1 -0
  548. package/dist/types/components/list-item/list-item.d.ts +45 -17
  549. package/dist/types/components/pattern-input/pattern-input.d.ts +6 -0
  550. package/dist/types/components/popover/popover.d.ts +3 -0
  551. package/dist/types/components/progress/progress.d.ts +7 -0
  552. package/dist/types/components/range-slider/range-slider.d.ts +2 -2
  553. package/dist/types/components/rating/rating.d.ts +1 -0
  554. package/dist/types/components/skeleton/skeleton-loader.d.ts +1 -1
  555. package/dist/types/components/speedometer/speedometer.d.ts +1 -0
  556. package/dist/types/components/tag/tag.d.ts +4 -0
  557. package/dist/types/components/tree/tree.d.ts +1 -0
  558. package/dist/types/components/ui-navigation-bar/navigation-bar/navigation-bar.d.ts +1 -1
  559. package/dist/types/components.d.ts +742 -425
  560. package/dist/types/types/common.d.ts +2 -2
  561. package/dist/types/types/common.type.d.ts +2 -0
  562. package/dist/types/utils/dom.d.ts +4 -4
  563. package/package.json +4 -5
  564. package/dist/cjs/dom-oP1E4Rd3.js +0 -267
  565. package/dist/cjs/ui-avatar-group_3.cjs.entry.js +0 -634
  566. package/dist/cjs/ui-color-controller.cjs.entry.js +0 -150
  567. package/dist/cjs/ui-popover.cjs.entry.js +0 -517
  568. package/dist/cjs/ui-smart-location-dropdown.cjs.entry.js +0 -565
  569. package/dist/collection/components/color-controller/color-controller.css +0 -108
  570. package/dist/collection/components/color-controller/color-controller.js +0 -224
  571. package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.css +0 -357
  572. package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.js +0 -1190
  573. package/dist/components/ui-color-controller.js +0 -1
  574. package/dist/components/ui-smart-location-dropdown.d.ts +0 -11
  575. package/dist/components/ui-smart-location-dropdown.js +0 -1
  576. package/dist/esm/dom-BMFah5q3.js +0 -262
  577. package/dist/esm/ui-avatar-group_3.entry.js +0 -630
  578. package/dist/esm/ui-color-controller.entry.js +0 -148
  579. package/dist/esm/ui-popover.entry.js +0 -515
  580. package/dist/esm/ui-smart-location-dropdown.entry.js +0 -563
  581. package/dist/exploration-project-tailwind/p-06f0c679.entry.js +0 -1
  582. package/dist/exploration-project-tailwind/p-0d31c9e9.entry.js +0 -1
  583. package/dist/exploration-project-tailwind/p-148e81df.entry.js +0 -1
  584. package/dist/exploration-project-tailwind/p-16bdd162.entry.js +0 -1
  585. package/dist/exploration-project-tailwind/p-2347d21b.entry.js +0 -1
  586. package/dist/exploration-project-tailwind/p-3d381f75.entry.js +0 -1
  587. package/dist/exploration-project-tailwind/p-4417a9d8.entry.js +0 -1
  588. package/dist/exploration-project-tailwind/p-44742ddd.entry.js +0 -1
  589. package/dist/exploration-project-tailwind/p-47e2a7ee.entry.js +0 -1
  590. package/dist/exploration-project-tailwind/p-4bef8bed.entry.js +0 -1
  591. package/dist/exploration-project-tailwind/p-4efd63ce.entry.js +0 -1
  592. package/dist/exploration-project-tailwind/p-5c835d90.entry.js +0 -1
  593. package/dist/exploration-project-tailwind/p-61717490.entry.js +0 -1
  594. package/dist/exploration-project-tailwind/p-717dad1f.entry.js +0 -1
  595. package/dist/exploration-project-tailwind/p-71d95bb1.entry.js +0 -1
  596. package/dist/exploration-project-tailwind/p-9bd14f69.entry.js +0 -1
  597. package/dist/exploration-project-tailwind/p-9fc06ff0.entry.js +0 -1
  598. package/dist/exploration-project-tailwind/p-BMFah5q3.js +0 -1
  599. package/dist/exploration-project-tailwind/p-DUsoYu9r.js +0 -2
  600. package/dist/exploration-project-tailwind/p-a27f59d2.entry.js +0 -1
  601. package/dist/exploration-project-tailwind/p-a7b07cf4.entry.js +0 -1
  602. package/dist/exploration-project-tailwind/p-bd89d060.entry.js +0 -1
  603. package/dist/exploration-project-tailwind/p-c63c522e.entry.js +0 -1
  604. package/dist/exploration-project-tailwind/p-c69dd43e.entry.js +0 -1
  605. package/dist/exploration-project-tailwind/p-d6ce9721.entry.js +0 -1
  606. package/dist/exploration-project-tailwind/p-dc92a343.entry.js +0 -1
  607. package/dist/exploration-project-tailwind/p-debede45.entry.js +0 -1
  608. package/dist/exploration-project-tailwind/p-e76318c7.entry.js +0 -1
  609. package/dist/exploration-project-tailwind/p-ea51c5d8.entry.js +0 -1
  610. package/dist/exploration-project-tailwind/p-eab5ad36.entry.js +0 -1
  611. package/dist/exploration-project-tailwind/p-f0bc5d7e.entry.js +0 -1
  612. package/dist/exploration-project-tailwind/p-f1beee72.entry.js +0 -1
  613. package/dist/exploration-project-tailwind/p-f543392f.entry.js +0 -1
  614. package/dist/exploration-project-tailwind/p-f61cfb7c.entry.js +0 -1
  615. package/dist/types/components/color-controller/color-controller.d.ts +0 -24
  616. package/dist/types/components/smart-location-dropdown/smart-location-dropdown.d.ts +0 -119
  617. package/dist/types/components/smart-location-dropdown/types.d.ts +0 -37
  618. /package/dist/collection/components/{smart-location-dropdown → label}/types.js +0 -0
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,createEvent as i,h as o,transformTag as r}from"@stencil/core/internal/client";import{s as a,d as s}from"./icon.js";import{d as n,a as l}from"./badge.js";import{d as c}from"./input.js";import{d}from"./loader.js";import{d as p}from"./tooltip.js";const h=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange",7),this.runCode=i(this,"runCode",7)}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):t+"")).join(" ")}),error:(...e)=>t.push({type:"error",text:e.join(" ")}),warn:(...e)=>t.push({type:"warn",text:e.join(" ")})};return 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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}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(/(&lt;\/?)(\w+)(.*?)(&gt;)/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(/&lt;!--[\s\S]*?--&gt;/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 o("div",{class:"line-numbers",ref:t=>this.lineNumbersRef=t},t.map(((e,i)=>{const r=i+1,a=this.lintErrors.find((t=>t.line===r)),s=this.isLineFoldable(i,t),n=this.foldedLines.has(r),l=this.getLineGitStatus(i);return o("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&&o("span",{class:"fold-icon"},o("ui-icon",{name:"chevron-"+(n?"right":"down"),library:"fontawesome",size:"10px"})))})))}renderPalette(){if(!this.showPalette)return null;const t=this.getPaletteItems();return o("div",{class:"editor-palette-overlay",onClick:this.togglePalette},o("div",{class:"editor-palette",onClick:t=>t.stopPropagation()},o("div",{class:"palette-input-wrapper"},o("ui-icon",{name:"terminal",library:"fontawesome"}),o("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"})),o("div",{class:"palette-results"},t.length>0?t.map((t=>o("div",{class:"palette-item",onClick:()=>this.runCommand(t)},o("ui-icon",{name:t.isSymbol?"at":"play",library:"fontawesome",size:"14px"}),o("span",null,t.label),t.line&&o("span",{class:"palette-meta"},"Line ",t.line)))):o("div",{class:"palette-no-results"},"No results found"))))}renderSearch(){return this.showSearch?o("div",{class:"search-widget"},o("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"}),o("div",{class:"search-actions"},o("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findPrev(),ariaLabel:"Previous (Shift+Enter)",icon:"arrow-up",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),o("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findNext(),ariaLabel:"Next (Enter)",icon:"arrow-down",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),o("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?o("div",{class:"minimap-container",onClick:this.handleMinimapClick},o("div",{class:"minimap-content",innerHTML:a(this.highlightedCode),ref:t=>this.minimapRef=t}),o("div",{class:"minimap-viewport",ref:t=>this.minimapViewport=t})):null}renderStatusBar(){return o("div",{class:"status-bar"},o("div",{class:"status-item"},o("ui-icon",{name:"code-branch",library:"fontawesome",size:"14px"})," main"),o("div",{class:"status-item"},o("ui-icon",{name:"exclamation-circle",library:"fontawesome",size:"14px"})," ",this.lintErrors.length," Errors"),o("div",{class:"status-item"},"Ln ",this.statusStats.line,", Col ",this.statusStats.col),o("div",{class:"status-item"},this.statusStats.selected>0?`(${this.statusStats.selected} selected)`:""),o("div",{class:"status-item"},"Spaces: 2"),o("div",{class:"status-item"},this.language.toUpperCase()),o("div",{class:"status-item",onClick:()=>this.toggleTheme(),style:{cursor:"pointer"}},o("ui-icon","vs-dark"===this.theme?{name:"moon",library:"fontawesome",size:"14px"}:{name:"sun",library:"fontawesome",size:"14px"})))}renderSuggestions(){return this.showSuggestions?o("ul",{class:"suggestion-list",style:{top:this.suggestionPos.top+"px",left:this.suggestionPos.left+"px"}},this.suggestions.map(((t,e)=>o("li",{class:e===this.suggestionIndex?"active":"",onClick:()=>this.acceptSuggestion(t),onMouseDown:t=>t.preventDefault()},o("ui-icon",{name:"cube",library:"fontawesome",size:"14px",class:"icon"})," ",t)))):null}renderRibbonButton(t,e,i,r={}){const{lg:a=!1,color:s}=r,n="always"===this.toolbarLabelDisplay,l="hover"===this.toolbarLabelDisplay,c=o("ui-button",{slot:l?"target":void 0,onClick:i,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?o("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?o("div",{class:"editor-ribbon-container labels-"+this.toolbarLabelDisplay},o("div",{class:"ribbon-tabs"},o("div",{class:"ribbon-tab "+("home"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="home"},o("ui-tooltip",{content:"Home",position:"bottom"},o("ui-icon",{name:"home",library:"fontawesome",slot:"target",size:"16px"}))),o("div",{class:"ribbon-tab "+("edit"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="edit"},o("ui-tooltip",{content:"Edit",position:"bottom"},o("ui-icon",{name:"edit",library:"fontawesome",slot:"target",size:"16px"}))),o("div",{class:"ribbon-tab "+("view"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="view"},o("ui-tooltip",{content:"View",position:"bottom"},o("ui-icon",{name:"eye",library:"fontawesome",slot:"target",size:"16px"}))),o("div",{class:"ribbon-tab "+("run"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="run"},o("ui-tooltip",{content:"Run",position:"bottom"},o("ui-icon",{name:"play",library:"fontawesome",slot:"target",size:"16px"})))),o("div",{class:"ribbon-content"},"home"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("history")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"History")),this.isGroupVisible("history")&&this.isGroupVisible("clipboard")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("clipboard")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-copy","Copy",(()=>this.handleCopy())),this.renderRibbonButton("fas fa-mouse-pointer","Select All",(()=>this.handleSelectAll()))),o("div",{class:"ribbon-group-label"},"Clipboard")),(this.isGroupVisible("history")||this.isGroupVisible("clipboard"))&&this.isGroupVisible("search")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("search")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"Search"))),"edit"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("document")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-code","Format",(()=>this.simpleFormat()),{lg:!0})),o("div",{class:"ribbon-group-label"},"Document")),this.isGroupVisible("document")&&this.isGroupVisible("folding")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("folding")&&o("div",{class:"ribbon-group"},o("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()))),o("div",{class:"ribbon-group-label"},"Folding")),(this.isGroupVisible("document")||this.isGroupVisible("folding"))&&this.isGroupVisible("actions")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("actions")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-comment-slash","Comment",(()=>this.handleCommentSelection()))),o("div",{class:"ribbon-group-label"},"Actions"))),"view"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("interface")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"Interface")),this.isGroupVisible("interface")&&this.isGroupVisible("theme")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("theme")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"Theme")),(this.isGroupVisible("interface")||this.isGroupVisible("theme"))&&this.isGroupVisible("appearance")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("appearance")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},o("div",{class:"ribbon-select-container"},o("select",{onChange:t=>this.fontSize=parseInt(t.target.value)},[10,12,14,16,18,20,24].map((t=>o("option",{value:t,selected:this.fontSize===t},t,"px")))),"always"===this.toolbarLabelDisplay&&o("span",null,"Font Size"))),o("div",{class:"ribbon-group-label"},"Appearance"))),"run"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("execution")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-play","Run Code",(()=>this.runCode.emit()),{lg:!0,color:"#4ade80"})),o("div",{class:"ribbon-group-label"},"Execution"))))):null}renderHelp(){return this.showHelp?o("div",{class:"help-modal-overlay",onClick:()=>this.showHelp=!1},o("div",{class:"help-modal",onClick:t=>t.stopPropagation()},o("div",{class:"help-header"},o("h3",null,"Editor Shortcuts & Help"),o("ui-button",{variant:"ghost",onClick:()=>this.showHelp=!1,ariaLabel:"Close help",icon:"times",iconLibrary:"fontawesome",iconOnly:!0})),o("div",{class:"help-content"},o("div",{class:"help-section"},o("h4",null,"Keyboard Shortcuts"),o("ul",null,o("li",null,o("kbd",null,"Ctrl")," + ",o("kbd",null,"F")," : Find / Search"),o("li",null,o("kbd",null,"Ctrl")," + ",o("kbd",null,"Shift")," + ",o("kbd",null,"P")," : Command Palette"),o("li",null,o("kbd",null,"Ctrl")," + ",o("kbd",null,"Space")," : Trigger Suggestions"),o("li",null,o("kbd",null,"Tab")," : Indent / Accept Suggestion"))),o("div",{class:"help-section"},o("h4",null,"Toolbar Features"),o("ul",null,o("li",null,o("ui-icon",{name:"play",library:"fontawesome",style:{color:"#4ade80"},size:"14px"})," ",o("strong",null,"Run"),": Execute code (demo mode)"),o("li",null,o("ui-icon",{name:"indent",library:"fontawesome",size:"14px"})," ",o("strong",null,"Format"),": Auto-indent code"),o("li",null,o("ui-icon",{name:"moon",library:"fontawesome",size:"14px"})," ",o("strong",null,"Theme"),": Toggle Dark/Light")))))):null}renderTabBar(){return this.tabs&&0!==this.tabs.length?o("div",{class:"editor-tabs"},this.tabs.map(((t,e)=>o("div",{class:"editor-tab "+(e===this.activeTabIndex?"active":""),onClick:()=>this.handleTabClick(e)},o("ui-icon",{class:"tab-icon",name:this.getIconForLang(t.language),library:"fontawesome"}),o("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?o("div",{class:{"editor-sidebar":!0,collapsed:!this.showSidebar}},o("div",{class:"sidebar-tabs"},o("div",{class:{"sidebar-tab":!0,active:"files"===this.activeSidebarTab},onClick:()=>this.activeSidebarTab="files"},o("ui-icon",{name:"copy",library:"fontawesome"}))),o("div",{class:"sidebar-content"},"files"===this.activeSidebarTab&&o("div",{class:"file-explorer"},o("div",{class:"sidebar-header"},"EXPLORER"),o("div",{class:"file-list"},this.files.map(((t,e)=>o("div",{class:{"file-item":!0,active:this.activeFileIndex===e},onClick:()=>this.switchFile(e)},o("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name)}),o("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 o("div",{class:"editor-breadcrumbs"},o("div",{class:"breadcrumb-item"},o("ui-icon",{name:"folder-open",library:"fontawesome",size:"12px"}),o("span",null,"project"),o("span",{class:"separator"},"/")),o("div",{class:"breadcrumb-item"},o("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name),size:"12px"}),o("span",null,t.name)))}renderBottomPanel(){return this.showBottomPanel?o("div",{class:{"editor-bottom-panel":!0,collapsed:!this.showBottomPanel}},o("div",{class:"panel-header"},o("div",{class:"panel-tabs"},o("div",{class:{"panel-tab":!0,active:"terminal"===this.activeBottomTab},onClick:()=>this.activeBottomTab="terminal"},"TERMINAL"),o("div",{class:{"panel-tab":!0,active:"output"===this.activeBottomTab},onClick:()=>this.activeBottomTab="output"},"OUTPUT"),o("div",{class:{"panel-tab":!0,active:"problems"===this.activeBottomTab},onClick:()=>this.activeBottomTab="problems"},"PROBLEMS")),o("div",{class:"panel-controls"},o("ui-icon",{name:"times",library:"fontawesome",onClick:()=>this.showBottomPanel=!1,style:{cursor:"pointer"}}))),o("div",{class:"panel-content"},"terminal"===this.activeBottomTab&&o("div",{class:"terminal-content"},this.terminalLogs.map((t=>o("div",{class:"log-item "+t.type},o("span",{class:"log-time"},"[",t.time,"]"),o("span",{class:"log-text"},t.text)))),o("div",{class:"terminal-input-line"},o("span",{class:"terminal-prompt"},"$"),o("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&&o("div",{class:"output-preview",style:{display:"flex",alignItems:"center",justifyCenter:"center",height:"100%",background:"#f8fafc",color:"#64748b"}},o("div",{style:{textAlign:"center"}},o("ui-icon",{name:"eye-slash",library:"fontawesome",size:"32px",style:{opacity:.5,marginBottom:"12px"}}),o("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 i=-1,r=-1;for(let t=0;t<e.length;t++)if(-1!==i){if(!(this.getIndentLevel(e[t])<=r&&""!==e[t].trim()))continue;i=-1}else this.foldedLines.has(t+1)&&(i=t+1,r=this.getIndentLevel(e[t]));return o("div",{key:"e856c9fbd64e22059c917ed99eebcc66f605d91b",class:"code-editor-container "+t},this.renderTabBar(),this.renderToolbar(),this.renderPalette(),o("div",{key:"de880b366ca14669ef66169d2283a18fab623e31",class:"code-editor-layout"},this.renderSidebar(),o("div",{key:"058b6a13934f82cd6b257a3b6322361c8323cb5d",class:"editor-main-panel"},this.renderBreadcrumbs(),o("div",{key:"408b4b6d461588819fa49ea1aef707edcc666be6",class:"editor-main-content",style:{display:"flex",flex:"1",minHeight:"0",position:"relative"}},this.renderLineNumbers(),o("div",{key:"dcb8f35793966525ef0da6d966e4789e5d0eed8e",class:"editor-wrapper"},this.renderSearch(),this.renderSuggestions(),o("ui-button",{key:"1cbe2e3c0929fa428fd6735b36dc4845bd733b58",variant:"ghost",class:"copy-button",onClick:this.handleCopy,ariaLabel:"Copy Code",icon:"copy",iconLibrary:"fontawesome",iconOnly:!0}),o("pre",{key:"dc17184da52fcfced8a468f891443ab7af9372f6",class:"syntax-highlighter",ref:t=>this.pre=t,innerHTML:a(this.highlightedCode)}),o("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}]}}static get style(){return'.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)}}'}},[513,"ui-code-editor",{value:[1025],language:[1],theme:[1],readonly:[4],lineNumbers:[4,"line-numbers"],toolbar:[4],toolbarLabelDisplay:[1,"toolbar-label-display"],toolbarGroups:[16],tabs:[16],highlightedCode:[32],lineCount:[32],statusStats:[32],showSearch:[32],searchQuery:[32],showPalette:[32],paletteQuery:[32],showHelp:[32],activeTabIndex:[32],unfoldedLines:[32],foldedLines:[32],lintErrors:[32],activeToolbarTab:[32],fontSize:[32],showLineNumbers:[32],showMinimap:[32],showSidebar:[32],showBottomPanel:[32],activeSidebarTab:[32],activeBottomTab:[32],activeFileIndex:[32],files:[32],terminalLogs:[32],suggestions:[32],suggestionIndex:[32],showSuggestions:[32],suggestionPos:[32]},void 0,{value:[{valueChanged:0}],language:[{languageChanged:0}],tabs:[{tabsChanged:0}],searchQuery:[{searchQueryChanged:0}]}]),b=h,u=function(){"undefined"!=typeof customElements&&["ui-code-editor","ui-badge","ui-button","ui-icon","ui-input","ui-loader","ui-tooltip"].forEach((t=>{switch(t){case"ui-code-editor":customElements.get(r(t))||customElements.define(r(t),h);break;case"ui-badge":customElements.get(r(t))||l();break;case"ui-button":customElements.get(r(t))||n();break;case"ui-icon":customElements.get(r(t))||s();break;case"ui-input":customElements.get(r(t))||c();break;case"ui-loader":customElements.get(r(t))||d();break;case"ui-tooltip":customElements.get(r(t))||p()}}))};export{b as UiCodeEditor,u as defineCustomElement}
1
+ import{proxyCustomElement as t,HTMLElement as e,createEvent as i,h as o,transformTag as r}from"@stencil/core/internal/client";import{s as a,d as s}from"./icon.js";import{d as n}from"./badge.js";import{d as l}from"./button.js";import{d as c}from"./input.js";import{d}from"./loader.js";import{d as p}from"./tooltip.js";const h=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.valueChange=i(this,"valueChange",7),this.runCode=i(this,"runCode",7)}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):t+"")).join(" ")}),error:(...e)=>t.push({type:"error",text:e.join(" ")}),warn:(...e)=>t.push({type:"warn",text:e.join(" ")})};return 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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}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(/(&lt;\/?)(\w+)(.*?)(&gt;)/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(/&lt;!--[\s\S]*?--&gt;/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 o("div",{class:"line-numbers",ref:t=>this.lineNumbersRef=t},t.map(((e,i)=>{const r=i+1,a=this.lintErrors.find((t=>t.line===r)),s=this.isLineFoldable(i,t),n=this.foldedLines.has(r),l=this.getLineGitStatus(i);return o("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&&o("span",{class:"fold-icon"},o("ui-icon",{name:"chevron-"+(n?"right":"down"),library:"fontawesome",size:"10px"})))})))}renderPalette(){if(!this.showPalette)return null;const t=this.getPaletteItems();return o("div",{class:"editor-palette-overlay",onClick:this.togglePalette},o("div",{class:"editor-palette",onClick:t=>t.stopPropagation()},o("div",{class:"palette-input-wrapper"},o("ui-icon",{name:"terminal",library:"fontawesome"}),o("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"})),o("div",{class:"palette-results"},t.length>0?t.map((t=>o("div",{class:"palette-item",onClick:()=>this.runCommand(t)},o("ui-icon",{name:t.isSymbol?"at":"play",library:"fontawesome",size:"14px"}),o("span",null,t.label),t.line&&o("span",{class:"palette-meta"},"Line ",t.line)))):o("div",{class:"palette-no-results"},"No results found"))))}renderSearch(){return this.showSearch?o("div",{class:"search-widget"},o("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"}),o("div",{class:"search-actions"},o("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findPrev(),ariaLabel:"Previous (Shift+Enter)",icon:"arrow-up",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),o("ui-button",{variant:"ghost",size:"sm",onClick:()=>this.findNext(),ariaLabel:"Next (Enter)",icon:"arrow-down",iconLibrary:"fontawesome",iconOnly:!0,iconSize:"14px"}),o("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?o("div",{class:"minimap-container",onClick:this.handleMinimapClick},o("div",{class:"minimap-content",innerHTML:a(this.highlightedCode),ref:t=>this.minimapRef=t}),o("div",{class:"minimap-viewport",ref:t=>this.minimapViewport=t})):null}renderStatusBar(){return o("div",{class:"status-bar"},o("div",{class:"status-item"},o("ui-icon",{name:"code-branch",library:"fontawesome",size:"14px"})," main"),o("div",{class:"status-item"},o("ui-icon",{name:"exclamation-circle",library:"fontawesome",size:"14px"})," ",this.lintErrors.length," Errors"),o("div",{class:"status-item"},"Ln ",this.statusStats.line,", Col ",this.statusStats.col),o("div",{class:"status-item"},this.statusStats.selected>0?`(${this.statusStats.selected} selected)`:""),o("div",{class:"status-item"},"Spaces: 2"),o("div",{class:"status-item"},this.language.toUpperCase()),o("div",{class:"status-item",onClick:()=>this.toggleTheme(),style:{cursor:"pointer"}},o("ui-icon","vs-dark"===this.theme?{name:"moon",library:"fontawesome",size:"14px"}:{name:"sun",library:"fontawesome",size:"14px"})))}renderSuggestions(){return this.showSuggestions?o("ul",{class:"suggestion-list",style:{top:this.suggestionPos.top+"px",left:this.suggestionPos.left+"px"}},this.suggestions.map(((t,e)=>o("li",{class:e===this.suggestionIndex?"active":"",onClick:()=>this.acceptSuggestion(t),onMouseDown:t=>t.preventDefault()},o("ui-icon",{name:"cube",library:"fontawesome",size:"14px",class:"icon"})," ",t)))):null}renderRibbonButton(t,e,i,r={}){const{lg:a=!1,color:s}=r,n="always"===this.toolbarLabelDisplay,l="hover"===this.toolbarLabelDisplay,c=o("ui-button",{slot:l?"target":void 0,onClick:i,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?o("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?o("div",{class:"editor-ribbon-container labels-"+this.toolbarLabelDisplay},o("div",{class:"ribbon-tabs"},o("div",{class:"ribbon-tab "+("home"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="home"},o("ui-tooltip",{content:"Home",position:"bottom"},o("ui-icon",{name:"home",library:"fontawesome",slot:"target",size:"16px"}))),o("div",{class:"ribbon-tab "+("edit"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="edit"},o("ui-tooltip",{content:"Edit",position:"bottom"},o("ui-icon",{name:"edit",library:"fontawesome",slot:"target",size:"16px"}))),o("div",{class:"ribbon-tab "+("view"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="view"},o("ui-tooltip",{content:"View",position:"bottom"},o("ui-icon",{name:"eye",library:"fontawesome",slot:"target",size:"16px"}))),o("div",{class:"ribbon-tab "+("run"===this.activeToolbarTab?"active":""),onClick:()=>this.activeToolbarTab="run"},o("ui-tooltip",{content:"Run",position:"bottom"},o("ui-icon",{name:"play",library:"fontawesome",slot:"target",size:"16px"})))),o("div",{class:"ribbon-content"},"home"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("history")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"History")),this.isGroupVisible("history")&&this.isGroupVisible("clipboard")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("clipboard")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-copy","Copy",(()=>this.handleCopy())),this.renderRibbonButton("fas fa-mouse-pointer","Select All",(()=>this.handleSelectAll()))),o("div",{class:"ribbon-group-label"},"Clipboard")),(this.isGroupVisible("history")||this.isGroupVisible("clipboard"))&&this.isGroupVisible("search")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("search")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"Search"))),"edit"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("document")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-code","Format",(()=>this.simpleFormat()),{lg:!0})),o("div",{class:"ribbon-group-label"},"Document")),this.isGroupVisible("document")&&this.isGroupVisible("folding")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("folding")&&o("div",{class:"ribbon-group"},o("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()))),o("div",{class:"ribbon-group-label"},"Folding")),(this.isGroupVisible("document")||this.isGroupVisible("folding"))&&this.isGroupVisible("actions")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("actions")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-comment-slash","Comment",(()=>this.handleCommentSelection()))),o("div",{class:"ribbon-group-label"},"Actions"))),"view"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("interface")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"Interface")),this.isGroupVisible("interface")&&this.isGroupVisible("theme")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("theme")&&o("div",{class:"ribbon-group"},o("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})),o("div",{class:"ribbon-group-label"},"Theme")),(this.isGroupVisible("interface")||this.isGroupVisible("theme"))&&this.isGroupVisible("appearance")&&o("div",{class:"ribbon-group divider"}),this.isGroupVisible("appearance")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},o("div",{class:"ribbon-select-container"},o("select",{onChange:t=>this.fontSize=parseInt(t.target.value)},[10,12,14,16,18,20,24].map((t=>o("option",{value:t,selected:this.fontSize===t},t,"px")))),"always"===this.toolbarLabelDisplay&&o("span",null,"Font Size"))),o("div",{class:"ribbon-group-label"},"Appearance"))),"run"===this.activeToolbarTab&&o("div",{class:"ribbon-panel"},this.isGroupVisible("execution")&&o("div",{class:"ribbon-group"},o("div",{class:"ribbon-group-content"},this.renderRibbonButton("fas fa-play","Run Code",(()=>this.runCode.emit()),{lg:!0,color:"#4ade80"})),o("div",{class:"ribbon-group-label"},"Execution"))))):null}renderHelp(){return this.showHelp?o("div",{class:"help-modal-overlay",onClick:()=>this.showHelp=!1},o("div",{class:"help-modal",onClick:t=>t.stopPropagation()},o("div",{class:"help-header"},o("h3",null,"Editor Shortcuts & Help"),o("ui-button",{variant:"ghost",onClick:()=>this.showHelp=!1,ariaLabel:"Close help",icon:"times",iconLibrary:"fontawesome",iconOnly:!0})),o("div",{class:"help-content"},o("div",{class:"help-section"},o("h4",null,"Keyboard Shortcuts"),o("ul",null,o("li",null,o("kbd",null,"Ctrl")," + ",o("kbd",null,"F")," : Find / Search"),o("li",null,o("kbd",null,"Ctrl")," + ",o("kbd",null,"Shift")," + ",o("kbd",null,"P")," : Command Palette"),o("li",null,o("kbd",null,"Ctrl")," + ",o("kbd",null,"Space")," : Trigger Suggestions"),o("li",null,o("kbd",null,"Tab")," : Indent / Accept Suggestion"))),o("div",{class:"help-section"},o("h4",null,"Toolbar Features"),o("ul",null,o("li",null,o("ui-icon",{name:"play",library:"fontawesome",style:{color:"#4ade80"},size:"14px"})," ",o("strong",null,"Run"),": Execute code (demo mode)"),o("li",null,o("ui-icon",{name:"indent",library:"fontawesome",size:"14px"})," ",o("strong",null,"Format"),": Auto-indent code"),o("li",null,o("ui-icon",{name:"moon",library:"fontawesome",size:"14px"})," ",o("strong",null,"Theme"),": Toggle Dark/Light")))))):null}renderTabBar(){return this.tabs&&0!==this.tabs.length?o("div",{class:"editor-tabs"},this.tabs.map(((t,e)=>o("div",{class:"editor-tab "+(e===this.activeTabIndex?"active":""),onClick:()=>this.handleTabClick(e)},o("ui-icon",{class:"tab-icon",name:this.getIconForLang(t.language),library:"fontawesome"}),o("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?o("div",{class:{"editor-sidebar":!0,collapsed:!this.showSidebar}},o("div",{class:"sidebar-tabs"},o("div",{class:{"sidebar-tab":!0,active:"files"===this.activeSidebarTab},onClick:()=>this.activeSidebarTab="files"},o("ui-icon",{name:"copy",library:"fontawesome"}))),o("div",{class:"sidebar-content"},"files"===this.activeSidebarTab&&o("div",{class:"file-explorer"},o("div",{class:"sidebar-header"},"EXPLORER"),o("div",{class:"file-list"},this.files.map(((t,e)=>o("div",{class:{"file-item":!0,active:this.activeFileIndex===e},onClick:()=>this.switchFile(e)},o("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name)}),o("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 o("div",{class:"editor-breadcrumbs"},o("div",{class:"breadcrumb-item"},o("ui-icon",{name:"folder-open",library:"fontawesome",size:"12px"}),o("span",null,"project"),o("span",{class:"separator"},"/")),o("div",{class:"breadcrumb-item"},o("ui-icon",{name:this.getFileIcon(t.name).split(" ").find((t=>t.startsWith("fa-"))).replace("fa-",""),library:"fontawesome",class:this.getFileIcon(t.name),size:"12px"}),o("span",null,t.name)))}renderBottomPanel(){return this.showBottomPanel?o("div",{class:{"editor-bottom-panel":!0,collapsed:!this.showBottomPanel}},o("div",{class:"panel-header"},o("div",{class:"panel-tabs"},o("div",{class:{"panel-tab":!0,active:"terminal"===this.activeBottomTab},onClick:()=>this.activeBottomTab="terminal"},"TERMINAL"),o("div",{class:{"panel-tab":!0,active:"output"===this.activeBottomTab},onClick:()=>this.activeBottomTab="output"},"OUTPUT"),o("div",{class:{"panel-tab":!0,active:"problems"===this.activeBottomTab},onClick:()=>this.activeBottomTab="problems"},"PROBLEMS")),o("div",{class:"panel-controls"},o("ui-icon",{name:"times",library:"fontawesome",onClick:()=>this.showBottomPanel=!1,style:{cursor:"pointer"}}))),o("div",{class:"panel-content"},"terminal"===this.activeBottomTab&&o("div",{class:"terminal-content"},this.terminalLogs.map((t=>o("div",{class:"log-item "+t.type},o("span",{class:"log-time"},"[",t.time,"]"),o("span",{class:"log-text"},t.text)))),o("div",{class:"terminal-input-line"},o("span",{class:"terminal-prompt"},"$"),o("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&&o("div",{class:"output-preview",style:{display:"flex",alignItems:"center",justifyCenter:"center",height:"100%",background:"#f8fafc",color:"#64748b"}},o("div",{style:{textAlign:"center"}},o("ui-icon",{name:"eye-slash",library:"fontawesome",size:"32px",style:{opacity:.5,marginBottom:"12px"}}),o("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 i=-1,r=-1;for(let t=0;t<e.length;t++)if(-1!==i){if(!(this.getIndentLevel(e[t])<=r&&""!==e[t].trim()))continue;i=-1}else this.foldedLines.has(t+1)&&(i=t+1,r=this.getIndentLevel(e[t]));return o("div",{key:"5229f839ffa5013cc1353c43d54c3315d6aa0c11",class:"code-editor-container "+t},this.renderTabBar(),this.renderToolbar(),this.renderPalette(),o("div",{key:"6564c00ec9a82be1bcb45a18940fe7556b0393df",class:"code-editor-layout"},this.renderSidebar(),o("div",{key:"f47ffa82fba7f827560b696c1f7405e65615571b",class:"editor-main-panel"},this.renderBreadcrumbs(),o("div",{key:"a1fef31453e1575e131734c36e0a4c1b719ea837",class:"editor-main-content",style:{display:"flex",flex:"1",minHeight:"0",position:"relative"}},this.renderLineNumbers(),o("div",{key:"20e82ae884cd7bf7adf2fcbe89381b8df7fba253",class:"editor-wrapper"},this.renderSearch(),this.renderSuggestions(),o("ui-button",{key:"35f030759ebe50cbfd90e5b993ddd950b6762956",variant:"ghost",class:"copy-button",onClick:this.handleCopy,ariaLabel:"Copy Code",icon:"copy",iconLibrary:"fontawesome",iconOnly:!0}),o("pre",{key:"dcc2605b0183153a60e5242ff75af686c1e2d591",class:"syntax-highlighter",ref:t=>this.pre=t,innerHTML:a(this.highlightedCode)}),o("textarea",{key:"64339f4a719d2f1b5851cd886b741b56eb5d0e58",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}]}}static get style(){return'.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)}}'}},[513,"ui-code-editor",{value:[1025],language:[1],theme:[1],readonly:[4],lineNumbers:[4,"line-numbers"],toolbar:[4],toolbarLabelDisplay:[1,"toolbar-label-display"],toolbarGroups:[16],tabs:[16],highlightedCode:[32],lineCount:[32],statusStats:[32],showSearch:[32],searchQuery:[32],showPalette:[32],paletteQuery:[32],showHelp:[32],activeTabIndex:[32],unfoldedLines:[32],foldedLines:[32],lintErrors:[32],activeToolbarTab:[32],fontSize:[32],showLineNumbers:[32],showMinimap:[32],showSidebar:[32],showBottomPanel:[32],activeSidebarTab:[32],activeBottomTab:[32],activeFileIndex:[32],files:[32],terminalLogs:[32],suggestions:[32],suggestionIndex:[32],showSuggestions:[32],suggestionPos:[32]},void 0,{value:[{valueChanged:0}],language:[{languageChanged:0}],tabs:[{tabsChanged:0}],searchQuery:[{searchQueryChanged:0}]}]),b=h,u=function(){"undefined"!=typeof customElements&&["ui-code-editor","ui-badge","ui-button","ui-icon","ui-input","ui-loader","ui-tooltip"].forEach((t=>{switch(t){case"ui-code-editor":customElements.get(r(t))||customElements.define(r(t),h);break;case"ui-badge":customElements.get(r(t))||n();break;case"ui-button":customElements.get(r(t))||l();break;case"ui-icon":customElements.get(r(t))||s();break;case"ui-input":customElements.get(r(t))||c();break;case"ui-loader":customElements.get(r(t))||d();break;case"ui-tooltip":customElements.get(r(t))||p()}}))};export{b as UiCodeEditor,u as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,createEvent as i,h as a,transformTag as o}from"@stencil/core/internal/client";import{d as s,a as r}from"./badge.js";import{d as n}from"./icon.js";import{d as c}from"./loader.js";const d=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.uiReset=i(this,"uiReset",7),this.expandedChange=i(this,"expandedChange",7)}get el(){return this}jsCode="";tsCode="";cssCode="";htmlCode="";snippets=[];activeLang="";label="";expanded=!0;showReset=!1;uiReset;expandedChange;copied=!1;resetting=!1;prismLoaded=!1;internalSnippets=[];handleStateChange(){this.highlightCode()}handleCodeChange(){this.processSnippets(),this.expanded&&this.highlightCode()}componentWillLoad(){this.processSnippets(),!this.activeLang&&this.internalSnippets.length>0&&(this.activeLang=this.internalSnippets[0].language)}componentDidLoad(){this.loadPrism()}processSnippets(){let e=[];if(this.snippets)if("string"==typeof this.snippets)try{e=JSON.parse(this.snippets)}catch(e){console.error("Failed to parse snippets JSON",e)}else Array.isArray(this.snippets)&&(e=[...this.snippets]);this.tsCode?e.push({language:"typescript",code:this.tsCode,label:"TS"}):this.jsCode&&e.push({language:"javascript",code:this.jsCode,label:"JS"}),this.htmlCode&&e.push({language:"markup",code:this.htmlCode,label:"HTML"}),this.cssCode&&e.push({language:"css",code:this.cssCode,label:"CSS"}),this.internalSnippets=e,!this.internalSnippets.some((e=>e.language===this.activeLang))&&this.internalSnippets.length>0&&(this.activeLang=this.internalSnippets[0].language)}loadPrism(){if(window.Prism?.languages?.tsx)this.checkAndLoadLanguages();else if(window.PRISM_LOADING){const e=setInterval((()=>{window.Prism&&(clearInterval(e),this.checkAndLoadLanguages())}),100)}else{window.PRISM_LOADING=!0;const e=document.createElement("script");e.src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js",e.onload=()=>{this.checkAndLoadLanguages()},document.head.appendChild(e);const t=document.createElement("link");t.rel="stylesheet",t.href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css",document.head.appendChild(t)}}checkAndLoadLanguages(){if(!window.Prism)return;const e=new Set(this.internalSnippets.map((e=>e.language)));["javascript","typescript","jsx","tsx","css","markup"].forEach((t=>e.add(t)));const t={js:"javascript",ts:"typescript",html:"markup",xml:"markup",svg:"markup",py:"python",cs:"csharp","c#":"csharp",pdk:"php",rb:"ruby",go:"go",java:"java",json:"json",bash:"bash",sh:"bash",shell:"bash"},i=[];if(e.forEach((e=>{const a=t[e.toLowerCase()]||e.toLowerCase();window.Prism.languages[a]||i.push(a)})),0===i.length)return this.prismLoaded=!0,void this.highlightCode();let a=0;i.forEach((e=>{if(document.querySelector(`script[src*="prism-${e}.min.js"]`))return a++,void(a===i.length&&(this.prismLoaded=!0,this.highlightCode()));const t=document.createElement("script");t.src=`https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-${e}.min.js`,t.onload=()=>{a++,a===i.length&&(this.prismLoaded=!0,this.highlightCode())},t.onerror=()=>{console.warn("Failed to load Prism language: "+e),a++,a===i.length&&(this.prismLoaded=!0,this.highlightCode())},document.head.appendChild(t)}))}highlightCode(){if(this.expanded){const e=this.internalSnippets.find((e=>e.language===this.activeLang))||this.internalSnippets[0],t=e?e.code:"";setTimeout((()=>{const e=this.el.querySelector("code");e&&(e.textContent=t,window.Prism&&window.Prism.highlightElement(e))}),50)}}handleCopy=e=>{e.stopPropagation();const t=this.internalSnippets.find((e=>e.language===this.activeLang));t?.code&&navigator.clipboard.writeText(t.code).then((()=>{this.copied=!0,setTimeout((()=>this.copied=!1),2e3)}))};handleReset=e=>{e.stopPropagation(),this.resetting=!0,this.uiReset.emit(),setTimeout((()=>this.resetting=!1),600)};toggleExpanded=e=>{e.stopPropagation(),this.expanded=!this.expanded,this.expandedChange.emit(this.expanded)};getPrismLanguage(e){return{js:"javascript",ts:"typescript",html:"markup","c#":"csharp"}[e.toLowerCase()]||e.toLowerCase()}getLabel(e){if(e.label)return e.label;const t=e.language.toLowerCase();return{javascript:"JS",typescript:"TS",markup:"HTML",css:"CSS",python:"Python",java:"Java",csharp:"C#",go:"Go",json:"JSON"}[t]||t.toUpperCase()}render(){const e=this.internalSnippets.find((e=>e.language===this.activeLang))||this.internalSnippets[0],t=e?e.code:"",i=this.getPrismLanguage(e?e.language:"markup");return a("div",{key:"7c018300ea409daaeffdc41909ee4cd6219ee3e7",class:{"code-preview-root":!0,"is-expanded":this.expanded}},a("div",{key:"efca8affcb0b7261ea588b97950b99df29ca696a",class:"code-toolbar"},a("div",{key:"71d77e7c07764ff350d438eb963328f1def9695f",class:"left-actions"},this.label&&a("span",{key:"54b86ab6f989e15c93d7c6421dfd548be19c3be3",class:"code-label"},this.label),this.internalSnippets.length>1&&a("div",{key:"b4d2e0ebce935db765f8b125150448f224270998",class:"lang-tabs"},this.internalSnippets.map((e=>a("ui-button",{variant:this.activeLang===e.language?"primary":"ghost",class:{active:this.activeLang===e.language},onClick:()=>this.activeLang=e.language,size:"sm",label:this.getLabel(e)})))),1===this.internalSnippets.length&&!this.label&&a("span",{key:"dfd511444c9ac3367ec094a02b39a9b2a75ce80c",class:"code-label",style:{opacity:"0.7",fontSize:"12px"}},this.getLabel(this.internalSnippets[0]))),a("div",{key:"6db7ea479ab2760e5f4826866a763bb774b2d8d4",class:"right-actions"},this.showReset&&a("ui-button",{key:"b54d50c47246f4c9a7a3cd04f15ff69bc5f0ab0e",variant:"ghost",onClick:this.handleReset,title:"Reset demo",ariaLabel:"Reset demo",icon:"rotate-cw",iconLibrary:"lucide",iconOnly:!0,size:"sm",loading:this.resetting}),a("ui-button",{key:"1ea0a7befd699d18b05d6bc95ba0290f7d56d447",variant:"ghost",onClick:this.toggleExpanded,title:this.expanded?"Hide code":"Show code",ariaLabel:this.expanded?"Hide code":"Show code",size:"sm",label:this.expanded?"Hide code":"Show code",icon:this.expanded?"chevron-up":"chevron-down",iconLibrary:"lucide"}),a("ui-button",{key:"42aca403662777a91d6841f0195185dceaeb04da",variant:"ghost",onClick:this.handleCopy,title:"Copy code",ariaLabel:"Copy code",size:"sm",icon:this.copied?"check":"copy",iconLibrary:"lucide",iconOnly:!0,iconColor:this.copied?"#4caf50":void 0}))),a("div",{key:"48dee33979bc2f63352c5ed2375951b8341e812a",class:"code-container",style:{maxHeight:this.expanded?"800px":"0"}},a("pre",{key:"c426c52b4a21389c77ebfa99d7b14fdb6acc778d",class:"language-"+i},a("code",{key:"ece0a1bf1acedae115ac8c5f1c13cbb4065c7ee7",class:"language-"+i},t))))}static get watchers(){return{activeLang:[{handleStateChange:0}],expanded:[{handleStateChange:0}],jsCode:[{handleCodeChange:0}],tsCode:[{handleCodeChange:0}],htmlCode:[{handleCodeChange:0}],cssCode:[{handleCodeChange:0}],snippets:[{handleCodeChange:0}]}}static get style(){return'.sr-only.sc-ui-code-preview{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only.sc-ui-code-preview{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.sc-ui-code-preview-h{display:block;margin:16px 0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--preview-border-color:var(--border-default, #e0e0e0);--preview-bg-color:var(--bg-primary, var(--text-standard, #ffffff));--preview-toolbar-bg:var(--bg-primary, #f8f9fa);--preview-highlight-color:var(--color-primary, #1976d2);--preview-text-main:var(--text-primary, #202124);--preview-text-muted:var(--text-secondary, #5f6368);--preview-shadow:0 2px 8px rgba(0, 0, 0, 0.08);--code-bg:var(--bg-primary, #1d1f21)}.code-preview-root.sc-ui-code-preview{border:1px solid var(--preview-border-color);border-radius:8px;overflow:hidden;background:var(--preview-bg-color);box-shadow:var(--preview-shadow);transition:box-shadow 0.3s ease}.code-preview-root.sc-ui-code-preview:hover{box-shadow:0 4px 12px rgba(0, 0, 0, 0.12)}.code-toolbar.sc-ui-code-preview{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:var(--preview-toolbar-bg);border-bottom:1px solid var(--preview-border-color);min-height:48px}.left-actions.sc-ui-code-preview{display:flex;align-items:center;gap:16px}.code-label.sc-ui-code-preview{font-size:14px;font-weight:600;color:var(--preview-text-main)}.lang-tabs.sc-ui-code-preview{display:flex;background:var(--bg-primary, #eee);padding:2px;border-radius:6px;gap:2px}.tab-btn.sc-ui-code-preview{background:transparent;border:none;padding:4px 12px;font-size:12px;font-weight:500;border-radius:4px;cursor:pointer;color:var(--preview-text-muted);transition:all 0.2s ease}.tab-btn.sc-ui-code-preview:hover{color:var(--preview-text-main)}.tab-btn.active.sc-ui-code-preview{background:var(--bg-primary, #ffffff);color:var(--preview-highlight-color);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1)}.right-actions.sc-ui-code-preview{display:flex;align-items:center;gap:8px}.icon-action-btn.sc-ui-code-preview{background:transparent;border:1px solid transparent;padding:6px 12px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:6px;color:var(--preview-text-muted);transition:all 0.2s ease;font-size:13px;font-weight:500}.icon-action-btn.sc-ui-code-preview:hover{background:rgba(0, 0, 0, 0.04);color:var(--preview-text-main)}.copy-btn.sc-ui-code-preview{padding:6px}.btn-text.sc-ui-code-preview{user-select:none}.chevron-icon.sc-ui-code-preview{transition:transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)}.chevron-icon.rotated.sc-ui-code-preview{transform:rotate(180deg)}.reset-icon.spinning.sc-ui-code-preview{animation:spin 0.6s cubic-bezier(0.4, 0, 0.2, 1)}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.code-container.sc-ui-code-preview{overflow:hidden;transition:max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);background:var(--code-bg)}pre[class*=language-].sc-ui-code-preview{margin:0 !important;padding:20px !important;font-size:13px !important;line-height:1.6 !important;background:var(--code-bg) !important;border-radius:0 !important;max-height:100% !important;overflow:auto !important}code[class*=language-].sc-ui-code-preview{font-family:"Fira Code", "Cascadia Code", "Source Code Pro", Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace !important;text-shadow:none !important}pre.sc-ui-code-preview::-webkit-scrollbar{width:8px;height:8px}pre.sc-ui-code-preview::-webkit-scrollbar-track{background:var(--bg-primary, #25282c)}pre.sc-ui-code-preview::-webkit-scrollbar-thumb{background:var(--bg-secondary, #4a4d51);border-radius:4px}pre.sc-ui-code-preview::-webkit-scrollbar-thumb:hover{background:var(--bg-secondary, #5a5d61)}@media (max-width: 600px){.btn-text.sc-ui-code-preview{display:none}.code-toolbar.sc-ui-code-preview{padding:8px}}'}},[514,"ui-code-preview",{jsCode:[513,"js-code"],tsCode:[513,"ts-code"],cssCode:[513,"css-code"],htmlCode:[513,"html-code"],snippets:[513],activeLang:[1025,"active-lang"],label:[1],expanded:[1540],showReset:[4,"show-reset"],copied:[32],resetting:[32],prismLoaded:[32],internalSnippets:[32]},void 0,{activeLang:[{handleStateChange:0}],expanded:[{handleStateChange:0}],jsCode:[{handleCodeChange:0}],tsCode:[{handleCodeChange:0}],htmlCode:[{handleCodeChange:0}],cssCode:[{handleCodeChange:0}],snippets:[{handleCodeChange:0}]}]),p=d,h=function(){"undefined"!=typeof customElements&&["ui-code-preview","ui-badge","ui-button","ui-icon","ui-loader"].forEach((e=>{switch(e){case"ui-code-preview":customElements.get(o(e))||customElements.define(o(e),d);break;case"ui-badge":customElements.get(o(e))||r();break;case"ui-button":customElements.get(o(e))||s();break;case"ui-icon":customElements.get(o(e))||n();break;case"ui-loader":customElements.get(o(e))||c()}}))};export{p as UiCodePreview,h as defineCustomElement}
1
+ import{proxyCustomElement as e,HTMLElement as t,createEvent as i,h as a,transformTag as o}from"@stencil/core/internal/client";import{d as s}from"./badge.js";import{d as r}from"./button.js";import{d as n}from"./icon.js";import{d as c}from"./loader.js";const d=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.uiReset=i(this,"uiReset",7),this.expandedChange=i(this,"expandedChange",7)}get el(){return this}jsCode="";tsCode="";cssCode="";htmlCode="";snippets=[];activeLang="";label="";expanded=!0;showReset=!1;uiReset;expandedChange;copied=!1;resetting=!1;prismLoaded=!1;internalSnippets=[];handleStateChange(){this.highlightCode()}handleCodeChange(){this.processSnippets(),this.expanded&&this.highlightCode()}componentWillLoad(){this.processSnippets(),!this.activeLang&&this.internalSnippets.length>0&&(this.activeLang=this.internalSnippets[0].language)}componentDidLoad(){this.loadPrism()}processSnippets(){let e=[];if(this.snippets)if("string"==typeof this.snippets)try{e=JSON.parse(this.snippets)}catch(e){console.error("Failed to parse snippets JSON",e)}else Array.isArray(this.snippets)&&(e=[...this.snippets]);this.tsCode?e.push({language:"typescript",code:this.tsCode,label:"TS"}):this.jsCode&&e.push({language:"javascript",code:this.jsCode,label:"JS"}),this.htmlCode&&e.push({language:"markup",code:this.htmlCode,label:"HTML"}),this.cssCode&&e.push({language:"css",code:this.cssCode,label:"CSS"}),this.internalSnippets=e,!this.internalSnippets.some((e=>e.language===this.activeLang))&&this.internalSnippets.length>0&&(this.activeLang=this.internalSnippets[0].language)}loadPrism(){if(window.Prism?.languages?.tsx)this.checkAndLoadLanguages();else if(window.PRISM_LOADING){const e=setInterval((()=>{window.Prism&&(clearInterval(e),this.checkAndLoadLanguages())}),100)}else{window.PRISM_LOADING=!0;const e=document.createElement("script");e.src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js",e.onload=()=>{this.checkAndLoadLanguages()},document.head.appendChild(e);const t=document.createElement("link");t.rel="stylesheet",t.href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css",document.head.appendChild(t)}}checkAndLoadLanguages(){if(!window.Prism)return;const e=new Set(this.internalSnippets.map((e=>e.language)));["javascript","typescript","jsx","tsx","css","markup"].forEach((t=>e.add(t)));const t={js:"javascript",ts:"typescript",html:"markup",xml:"markup",svg:"markup",py:"python",cs:"csharp","c#":"csharp",pdk:"php",rb:"ruby",go:"go",java:"java",json:"json",bash:"bash",sh:"bash",shell:"bash"},i=[];if(e.forEach((e=>{const a=t[e.toLowerCase()]||e.toLowerCase();window.Prism.languages[a]||i.push(a)})),0===i.length)return this.prismLoaded=!0,void this.highlightCode();let a=0;i.forEach((e=>{if(document.querySelector(`script[src*="prism-${e}.min.js"]`))return a++,void(a===i.length&&(this.prismLoaded=!0,this.highlightCode()));const t=document.createElement("script");t.src=`https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-${e}.min.js`,t.onload=()=>{a++,a===i.length&&(this.prismLoaded=!0,this.highlightCode())},t.onerror=()=>{console.warn("Failed to load Prism language: "+e),a++,a===i.length&&(this.prismLoaded=!0,this.highlightCode())},document.head.appendChild(t)}))}highlightCode(){if(this.expanded){const e=this.internalSnippets.find((e=>e.language===this.activeLang))||this.internalSnippets[0],t=e?e.code:"";setTimeout((()=>{const e=this.el.querySelector("code");e&&(e.textContent=t,window.Prism&&window.Prism.highlightElement(e))}),50)}}handleCopy=e=>{e.stopPropagation();const t=this.internalSnippets.find((e=>e.language===this.activeLang));t?.code&&navigator.clipboard.writeText(t.code).then((()=>{this.copied=!0,setTimeout((()=>this.copied=!1),2e3)}))};handleReset=e=>{e.stopPropagation(),this.resetting=!0,this.uiReset.emit(),setTimeout((()=>this.resetting=!1),600)};toggleExpanded=e=>{e.stopPropagation(),this.expanded=!this.expanded,this.expandedChange.emit(this.expanded)};getPrismLanguage(e){return{js:"javascript",ts:"typescript",html:"markup","c#":"csharp"}[e.toLowerCase()]||e.toLowerCase()}getLabel(e){if(e.label)return e.label;const t=e.language.toLowerCase();return{javascript:"JS",typescript:"TS",markup:"HTML",css:"CSS",python:"Python",java:"Java",csharp:"C#",go:"Go",json:"JSON"}[t]||t.toUpperCase()}render(){const e=this.internalSnippets.find((e=>e.language===this.activeLang))||this.internalSnippets[0],t=e?e.code:"",i=this.getPrismLanguage(e?e.language:"markup");return a("div",{key:"811103de21fb5c3ff463e4088243cfc9105b1273",class:{"code-preview-root":!0,"is-expanded":this.expanded}},a("div",{key:"79b59a2fe64d31f795f8f10d4ae96eac2156ec70",class:"code-toolbar"},a("div",{key:"96fe58a5fb9fa40551bb9be4b5f5b59339759bee",class:"left-actions"},this.label&&a("span",{key:"3eda520830a007b75d8dea1b565b26341afb9974",class:"code-label"},this.label),this.internalSnippets.length>1&&a("div",{key:"dd51e5c06a645a7561c613c68bfdccf4471a1bd5",class:"lang-tabs"},this.internalSnippets.map((e=>a("ui-button",{variant:this.activeLang===e.language?"primary":"ghost",class:{active:this.activeLang===e.language},onClick:()=>this.activeLang=e.language,size:"sm",label:this.getLabel(e)})))),1===this.internalSnippets.length&&!this.label&&a("span",{key:"f5b0ae6583318202d615626051922de254ca5aef",class:"code-label",style:{opacity:"0.7",fontSize:"12px"}},this.getLabel(this.internalSnippets[0]))),a("div",{key:"288495bfd25c894386dff4736b2db81967ae0b08",class:"right-actions"},this.showReset&&a("ui-button",{key:"17ee0a23664d63660bab0d7fc393a07fc73f7eb2",variant:"ghost",onClick:this.handleReset,title:"Reset demo",ariaLabel:"Reset demo",icon:"rotate-cw",iconLibrary:"lucide",iconOnly:!0,size:"sm",loading:this.resetting}),a("ui-button",{key:"98fa30e525d7714e6fa890fb28ab79427afb72f9",variant:"ghost",onClick:this.toggleExpanded,title:this.expanded?"Hide code":"Show code",ariaLabel:this.expanded?"Hide code":"Show code",size:"sm",label:this.expanded?"Hide code":"Show code",icon:this.expanded?"chevron-up":"chevron-down",iconLibrary:"lucide"}),a("ui-button",{key:"9766773c94ea197a8a9121e684fb9ef70519242c",variant:"ghost",onClick:this.handleCopy,title:"Copy code",ariaLabel:"Copy code",size:"sm",icon:this.copied?"check":"copy",iconLibrary:"lucide",iconOnly:!0,iconColor:this.copied?"#4caf50":void 0}))),a("div",{key:"c119a017577a7c95213cc91f152baec31a3d03ac",class:"code-container",style:{maxHeight:this.expanded?"800px":"0"}},a("pre",{key:"9c1b4083099695f7cf587df3c234467a4cdc6430",class:"language-"+i},a("code",{key:"6267458fadcd83701e97f09e2bddbf7132de54bb",class:"language-"+i},t))))}static get watchers(){return{activeLang:[{handleStateChange:0}],expanded:[{handleStateChange:0}],jsCode:[{handleCodeChange:0}],tsCode:[{handleCodeChange:0}],htmlCode:[{handleCodeChange:0}],cssCode:[{handleCodeChange:0}],snippets:[{handleCodeChange:0}]}}static get style(){return'.sr-only.sc-ui-code-preview{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only.sc-ui-code-preview{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.sc-ui-code-preview-h{display:block;margin:16px 0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--preview-border-color:var(--border-default, #e0e0e0);--preview-bg-color:var(--bg-primary, var(--text-standard, #ffffff));--preview-toolbar-bg:var(--bg-primary, #f8f9fa);--preview-highlight-color:var(--color-primary, #1976d2);--preview-text-main:var(--text-primary, #202124);--preview-text-muted:var(--text-secondary, #5f6368);--preview-shadow:0 2px 8px rgba(0, 0, 0, 0.08);--code-bg:var(--bg-primary, #1d1f21)}.code-preview-root.sc-ui-code-preview{border:1px solid var(--preview-border-color);border-radius:8px;overflow:hidden;background:var(--preview-bg-color);box-shadow:var(--preview-shadow);transition:box-shadow 0.3s ease}.code-preview-root.sc-ui-code-preview:hover{box-shadow:0 4px 12px rgba(0, 0, 0, 0.12)}.code-toolbar.sc-ui-code-preview{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:var(--preview-toolbar-bg);border-bottom:1px solid var(--preview-border-color);min-height:48px}.left-actions.sc-ui-code-preview{display:flex;align-items:center;gap:16px}.code-label.sc-ui-code-preview{font-size:14px;font-weight:600;color:var(--preview-text-main)}.lang-tabs.sc-ui-code-preview{display:flex;background:var(--bg-primary, #eee);padding:2px;border-radius:6px;gap:2px}.tab-btn.sc-ui-code-preview{background:transparent;border:none;padding:4px 12px;font-size:12px;font-weight:500;border-radius:4px;cursor:pointer;color:var(--preview-text-muted);transition:all 0.2s ease}.tab-btn.sc-ui-code-preview:hover{color:var(--preview-text-main)}.tab-btn.active.sc-ui-code-preview{background:var(--bg-primary, #ffffff);color:var(--preview-highlight-color);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1)}.right-actions.sc-ui-code-preview{display:flex;align-items:center;gap:8px}.icon-action-btn.sc-ui-code-preview{background:transparent;border:1px solid transparent;padding:6px 12px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:6px;color:var(--preview-text-muted);transition:all 0.2s ease;font-size:13px;font-weight:500}.icon-action-btn.sc-ui-code-preview:hover{background:rgba(0, 0, 0, 0.04);color:var(--preview-text-main)}.copy-btn.sc-ui-code-preview{padding:6px}.btn-text.sc-ui-code-preview{user-select:none}.chevron-icon.sc-ui-code-preview{transition:transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)}.chevron-icon.rotated.sc-ui-code-preview{transform:rotate(180deg)}.reset-icon.spinning.sc-ui-code-preview{animation:spin 0.6s cubic-bezier(0.4, 0, 0.2, 1)}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.code-container.sc-ui-code-preview{overflow:hidden;transition:max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);background:var(--code-bg)}pre[class*=language-].sc-ui-code-preview{margin:0 !important;padding:20px !important;font-size:13px !important;line-height:1.6 !important;background:var(--code-bg) !important;border-radius:0 !important;max-height:100% !important;overflow:auto !important}code[class*=language-].sc-ui-code-preview{font-family:"Fira Code", "Cascadia Code", "Source Code Pro", Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace !important;text-shadow:none !important}pre.sc-ui-code-preview::-webkit-scrollbar{width:8px;height:8px}pre.sc-ui-code-preview::-webkit-scrollbar-track{background:var(--bg-primary, #25282c)}pre.sc-ui-code-preview::-webkit-scrollbar-thumb{background:var(--bg-secondary, #4a4d51);border-radius:4px}pre.sc-ui-code-preview::-webkit-scrollbar-thumb:hover{background:var(--bg-secondary, #5a5d61)}@media (max-width: 600px){.btn-text.sc-ui-code-preview{display:none}.code-toolbar.sc-ui-code-preview{padding:8px}}'}},[514,"ui-code-preview",{jsCode:[513,"js-code"],tsCode:[513,"ts-code"],cssCode:[513,"css-code"],htmlCode:[513,"html-code"],snippets:[513],activeLang:[1025,"active-lang"],label:[1],expanded:[1540],showReset:[4,"show-reset"],copied:[32],resetting:[32],prismLoaded:[32],internalSnippets:[32]},void 0,{activeLang:[{handleStateChange:0}],expanded:[{handleStateChange:0}],jsCode:[{handleCodeChange:0}],tsCode:[{handleCodeChange:0}],htmlCode:[{handleCodeChange:0}],cssCode:[{handleCodeChange:0}],snippets:[{handleCodeChange:0}]}]),p=d,h=function(){"undefined"!=typeof customElements&&["ui-code-preview","ui-badge","ui-button","ui-icon","ui-loader"].forEach((e=>{switch(e){case"ui-code-preview":customElements.get(o(e))||customElements.define(o(e),d);break;case"ui-badge":customElements.get(o(e))||s();break;case"ui-button":customElements.get(o(e))||r();break;case"ui-icon":customElements.get(o(e))||n();break;case"ui-loader":customElements.get(o(e))||c()}}))};export{p as UiCodePreview,h as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as i,createEvent as s,h as e,Host as a,transformTag as r}from"@stencil/core/internal/client";import{d as h,a as n}from"./badge.js";import{d as o}from"./icon.js";import{d as l}from"./input.js";import{d as c}from"./loader.js";import{d as p}from"./range-slider.js";const d=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.colorChange=s(this,"colorChange",7)}value="#3bf673";label="";showHex=!0;showRgb=!0;showRgba=!0;showHsl=!0;showHsla=!0;showAlpha=!1;showSwatches=!0;swatches=[];format="hex";disabled=!1;inline=!1;size="md";name="";required=!1;showRecent=!0;showEyeDropper=!0;showColorName=!0;showGradient=!1;variant="default";get el(){return this}internals;isOpen=!1;hue=220;saturation=80;lightness=60;alpha=1;hexInput="#3bf673";isInvalid=!1;invalidField=null;recentColors=[];isGradientMode=!1;gradientStops=["#3bf673","#10b981"];activeStopIndex=0;colorChange;handleDocumentPointerDown=t=>{this.isOpen&&!this.inline&&(("function"==typeof t.composedPath?t.composedPath():[]).includes(this.el)||this.el.contains(t.target)||(this.isOpen=!1))};defaultSwatches=["#ef4444","#f97316","#f59e0b","#eab308","#84cc16","#22c55e","#10b981","#06b6d4","#3bf673","#8b5cf6","#ec4899","#f43f5e","#6b7280","#1f2937","#ffffff"];colorNames={"#ff0000":"Red","#00ff00":"Lime","#0000ff":"Blue","#ffffff":"White","#000000":"Black","#808080":"Gray","#ffff00":"Yellow","#00ffff":"Cyan","#ff00ff":"Magenta","#3bf673":"Royal Blue","#10b981":"Emerald","#ef4444":"Red Orange","#f59e0b":"Amber","#8b5cf6":"Violet","#6b7280":"Slate"};initializeInternals(){if(!this.internals&&"function"==typeof this.el?.attachInternals)try{this.internals=this.el.attachInternals()}catch(t){if(!(t instanceof DOMException)||"NotSupportedError"!==t.name)throw t}}componentWillLoad(){this.initializeInternals(),this.syncValueToState(this.value),this.value=this.getFormattedValue(),this.updateFormValue(),this.loadHistory()}connectedCallback(){document.addEventListener("pointerdown",this.handleDocumentPointerDown,!0)}disconnectedCallback(){document.removeEventListener("pointerdown",this.handleDocumentPointerDown,!0)}loadHistory(){if(this.showRecent)try{const t=localStorage.getItem("ui-color-history");t&&(this.recentColors=JSON.parse(t))}catch(t){console.error("Failed to load color history",t)}}saveHistory(t){if(!this.showRecent)return;const i=[t,...this.recentColors.filter((i=>i!==t))].slice(0,10);this.recentColors=i,localStorage.setItem("ui-color-history",JSON.stringify(i))}updateFormValue(){this.internals&&this.internals?.setFormValue(this.value)}valueChanged(t){this.syncValueToState(t)}getSwatches(){if("string"==typeof this.swatches)try{return JSON.parse(this.swatches)}catch{return this.defaultSwatches}return this.swatches.length>0?this.swatches:this.defaultSwatches}clamp(t,i,s){return Math.min(s,Math.max(i,t))}roundAlpha(t){return Math.round(100*this.clamp(t,0,1))/100}componentToHex(t){return Math.round(this.clamp(t,0,255)).toString(16).padStart(2,"0")}rgbToHsl(t,i,s){const e=this.clamp(t,0,255)/255,a=this.clamp(i,0,255)/255,r=this.clamp(s,0,255)/255,h=Math.max(e,a,r),n=Math.min(e,a,r),o=(h+n)/2;let l=0,c=0;if(h!==n){const t=h-n;switch(c=o>.5?t/(2-h-n):t/(h+n),h){case e:l=((a-r)/t+(a<r?6:0))/6;break;case a:l=((r-e)/t+2)/6;break;default:l=((e-a)/t+4)/6}}return{h:Math.round(360*l),s:Math.round(100*c),l:Math.round(100*o)}}parseHex(t){const i=t.trim().match(/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i);if(!i)return null;let s=i[1];3!==s.length&&4!==s.length||(s=s.split("").map((t=>`${t}${t}`)).join(""));const e=8===s.length,a=parseInt(s.slice(0,2),16),r=parseInt(s.slice(2,4),16),h=parseInt(s.slice(4,6),16),n=e?parseInt(s.slice(6,8),16)/255:this.alpha,o=this.rgbToHsl(a,r,h);return{hex:`#${this.componentToHex(a)}${this.componentToHex(r)}${this.componentToHex(h)}`,alpha:this.roundAlpha(n),...o}}parseRgbColor(t){const i=t.trim().match(/^rgba?\(([^)]+)\)$/i);if(!i)return null;const s=i[1].split(",").map((t=>t.trim()));if(3!==s.length&&4!==s.length)return null;const e=s.slice(0,3).map((t=>Number(t)));if(e.some((t=>Number.isNaN(t))))return null;const[a,r,h]=e.map((t=>this.clamp(t,0,255))),n=void 0!==s[3]?this.roundAlpha(Number(s[3])):this.alpha;if(Number.isNaN(n))return null;const o=this.rgbToHsl(a,r,h);return{hex:`#${this.componentToHex(a)}${this.componentToHex(r)}${this.componentToHex(h)}`,alpha:n,...o}}parseHslColor(t){const i=t.trim().match(/^hsla?\(([^)]+)\)$/i);if(!i)return null;const s=i[1].split(",").map((t=>t.trim()));if(3!==s.length&&4!==s.length)return null;const e=Number(s[0]),a=Number(s[1].replace("%","")),r=Number(s[2].replace("%","")),h=void 0!==s[3]?this.roundAlpha(Number(s[3])):this.alpha;if([e,a,r,h].some((t=>Number.isNaN(t))))return null;const n=(e%360+360)%360,o=this.clamp(a,0,100),l=this.clamp(r,0,100);return{hex:this.hslToHex(n,o,l),alpha:h,h:Math.round(n),s:Math.round(o),l:Math.round(l)}}parseColorValue(t){return!t||t.startsWith("linear-gradient")?null:this.parseHex(t)||this.parseRgbColor(t)||this.parseHslColor(t)}syncParsedColor(t){this.hue=t.h,this.saturation=t.s,this.lightness=t.l,this.alpha=this.roundAlpha(t.alpha),this.hexInput=this.getHexInputValue(t.hex,t.alpha),this.isInvalid=!1,this.invalidField=null}syncValueToState(t){const i=this.parseColorValue(t);i&&this.syncParsedColor(i)}hslToHex(t,i,s){const e=t/360,a=i/100,r=s/100;let h,n,o;if(0===a)h=n=o=r;else{const t=(t,i,s)=>(s<0&&(s+=1),s>1&&(s-=1),s<1/6?t+6*(i-t)*s:s<.5?i:s<2/3?t+(i-t)*(2/3-s)*6:t),i=r<.5?r*(1+a):r+a-r*a,s=2*r-i;h=t(s,i,e+1/3),n=t(s,i,e),o=t(s,i,e-1/3)}const l=t=>Math.round(255*t).toString(16).padStart(2,"0");return`#${l(h)}${l(n)}${l(o)}`}getRgbValues(){const t=this.hslToHex(this.hue,this.saturation,this.lightness).replace("#","");return{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}}getHexValue(t=this.hslToHex(this.hue,this.saturation,this.lightness),i=this.alpha){return i<1?`${t}${this.componentToHex(255*i)}`:t}getHexInputValue(t=this.hslToHex(this.hue,this.saturation,this.lightness),i=this.alpha){return this.getHexValue(t,i).replace(/^#/,"")}getRgbString(t=!1){const{r:i,g:s,b:e}=this.getRgbValues();return t?`rgba(${i}, ${s}, ${e}, ${this.roundAlpha(this.alpha)})`:`rgb(${i}, ${s}, ${e})`}getHslString(t=!1){return t?`hsla(${this.hue}, ${this.saturation}%, ${this.lightness}%, ${this.roundAlpha(this.alpha)})`:`hsl(${this.hue}, ${this.saturation}%, ${this.lightness}%)`}getFormattedValue(){switch(this.format){case"rgb":return this.getRgbString(!1);case"rgba":return this.getRgbString(!0);case"hsl":return this.getHslString(!1);case"hsla":return this.getHslString(!0);default:return this.getHexValue()}}updateColorFromInput(t,i){"hex"===i&&(this.hexInput=t.replace(/^#/,""));const s="hex"===i?"#"+t.replace(/^#/,""):t,e=this.parseColorValue(s);if(!e)return this.isInvalid=!0,void(this.invalidField=i);this.syncParsedColor(e);const a=this.getFormattedValue();this.value=a,this.updateFormValue(),this.colorChange.emit(a)}emitChange(){const t=this.hslToHex(this.hue,this.saturation,this.lightness);if(this.isGradientMode){this.gradientStops[this.activeStopIndex]=t,this.gradientStops=[...this.gradientStops];const i=`linear-gradient(90deg, ${this.gradientStops[0]}, ${this.gradientStops[1]})`;this.value=i,this.colorChange.emit(i)}else this.value=this.getFormattedValue(),this.hexInput=this.getHexInputValue(t,this.alpha),this.isInvalid=!1,this.invalidField=null,this.updateFormValue(),this.colorChange.emit(this.value),this.saveHistory(t)}toggleGradientMode=()=>{this.isGradientMode=!this.isGradientMode,this.emitChange()};async handleEyeDropper(){if(!("EyeDropper"in window))return void alert("EyeDropper API is not supported in this browser.");const t=new EyeDropper;try{const i=await t.open();this.handleSwatch(i.sRGBHex)}catch(t){}}getColorName(t){const i=t.toLowerCase();return this.colorNames[i]||"Custom"}handleHexInput=t=>{this.updateColorFromInput(t.detail,"hex")};handleSwatch=t=>{const i=this.parseHex(t);i&&(this.syncParsedColor(i),this.value=this.getFormattedValue(),this.updateFormValue(),this.colorChange.emit(this.value),this.saveHistory(i.hex))};parseChannelValue(t){if(""===t||null==t)return null;const i=Number(t);return Number.isFinite(i)?i:null}setChannelValidation(t){this.isInvalid=!!t,this.invalidField=t}applyRgbColor(t,i,s,e=this.alpha){const a=Math.round(this.clamp(t,0,255)),r=Math.round(this.clamp(i,0,255)),h=Math.round(this.clamp(s,0,255)),n=this.roundAlpha(e),o=this.rgbToHsl(a,r,h);this.syncParsedColor({hex:`#${this.componentToHex(a)}${this.componentToHex(r)}${this.componentToHex(h)}`,alpha:n,...o}),this.value=this.getFormattedValue(),this.updateFormValue(),this.colorChange.emit(this.value)}applyHslColor(t,i,s,e=this.alpha){const a=Math.round(this.clamp(t,0,360)),r=Math.round(this.clamp(i,0,100)),h=Math.round(this.clamp(s,0,100)),n=this.roundAlpha(e);this.syncParsedColor({hex:this.hslToHex(a,r,h),alpha:n,h:a,s:r,l:h}),this.value=this.getFormattedValue(),this.updateFormValue(),this.colorChange.emit(this.value)}handleRgbChannelChange=(t,i)=>{const s=this.parseChannelValue(i.detail);if(null===s||s<0||s>255)return void this.setChannelValidation("rgb-"+t);const e=this.getRgbValues();e[t]=Math.round(s),this.setChannelValidation(null),this.applyRgbColor(e.r,e.g,e.b)};handleRgbaChannelChange=(t,i)=>{const s=this.parseChannelValue(i.detail),e="rgba-"+t;if(null===s)return void this.setChannelValidation(e);const a=this.getRgbValues();let r=this.alpha;if("a"===t){if(s<0||s>1)return void this.setChannelValidation(e);r=s}else{if(s<0||s>255)return void this.setChannelValidation(e);a[t]=Math.round(s)}this.setChannelValidation(null),this.applyRgbColor(a.r,a.g,a.b,r)};handleHslChannelChange=(t,i)=>{const s=this.parseChannelValue(i.detail);if(null===s||s<0||s>{h:360,s:100,l:100}[t])return void this.setChannelValidation("hsl-"+t);const e={h:this.hue,s:this.saturation,l:this.lightness,[t]:Math.round(s)};this.setChannelValidation(null),this.applyHslColor(e.h,e.s,e.l)};handleHslaChannelChange=(t,i)=>{const s=this.parseChannelValue(i.detail),e="hsla-"+t;if(null===s)return void this.setChannelValidation(e);const a={h:this.hue,s:this.saturation,l:this.lightness};let r=this.alpha;if("a"===t){if(s<0||s>1)return void this.setChannelValidation(e);r=s}else{if(s<0||s>{h:360,s:100,l:100}[t])return void this.setChannelValidation(e);a[t]=Math.round(s)}this.setChannelValidation(null),this.applyHslColor(a.h,a.s,a.l,r)};isHueVariant(){return"hue"===this.variant}isInputVariant(){return"input"===this.variant}showGradientSurface(){return!this.isHueVariant()&&!this.isInputVariant()}showSliderSection(){return!this.isInputVariant()}showInputSection(){return this.showHex||this.showRgb||this.showRgba||this.showHsl||this.showHsla||this.isInputVariant()}getPanelClasses(){return{"cp-panel":!0,"cp-panel-hue":this.isHueVariant(),"cp-panel-input":this.isInputVariant(),"cp-panel-multi-format":this.showInputSection()}}renderFormatInput(t,i,s,a){return e("div",{class:"cp-input-wrap cp-full cp-inline-row"},e("span",{class:"cp-sm-label"},t),e("ui-input",{class:{"cp-text-input":!0,"cp-input-error":this.isInvalid&&this.invalidField===a},type:"text",value:i,onInputChange:s,size:"sm"}))}renderChannelInput(t,i,s,a,r,h,n){return e("div",{class:"cp-channel-field"},e("span",{class:"cp-channel-label"},i),e("ui-input",{class:{"cp-text-input":!0,"cp-channel-input":!0,"cp-input-error":this.isInvalid&&this.invalidField===t},type:"number",min:a,max:r,step:h,value:s,onInputChange:n,size:"sm"}))}renderChannelGroup(t,i,s){return e("div",{class:"cp-input-wrap cp-full cp-channel-group cp-inline-row"},e("span",{class:"cp-sm-label"},t),e("div",{class:{"cp-channel-grid":!0,"cp-channel-grid-3":3===i,"cp-channel-grid-4":4===i}},s))}render(){const t=this.hslToHex(this.hue,this.saturation,this.lightness),i=this.getSwatches(),s=e("div",{key:"1e6a1eb368643f6e67d9804cce7bcfed32b1bd1d",class:this.getPanelClasses()},this.showGradientSurface()&&e("div",{key:"2970c7db9dde45a2f88ed3ede420df322c6556dc",class:"cp-gradient",role:"slider","aria-label":"Saturation and Lightness","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":this.saturation,"aria-valuetext":`Saturation ${this.saturation}%, Lightness ${this.lightness}%`,tabindex:"0",onKeyDown:t=>{const i=t.shiftKey?10:1;"ArrowLeft"===t.key&&(this.saturation=Math.max(0,this.saturation-i),this.emitChange()),"ArrowRight"===t.key&&(this.saturation=Math.min(100,this.saturation+i),this.emitChange()),"ArrowUp"===t.key&&(this.lightness=Math.min(100,this.lightness+i),this.emitChange()),"ArrowDown"===t.key&&(this.lightness=Math.max(0,this.lightness-i),this.emitChange())},style:{background:`linear-gradient(to bottom, transparent, #000), linear-gradient(to right, #fff, hsl(${this.hue}, 100%, 50%))`},onMouseDown:t=>{const i=t.currentTarget.getBoundingClientRect(),s=t=>{const s=Math.max(0,Math.min(1,(t.clientX-i.left)/i.width)),e=Math.max(0,Math.min(1,(t.clientY-i.top)/i.height));this.saturation=Math.round(100*s),this.lightness=Math.round((1-e)*(100-50*s)),this.emitChange()},e=()=>{window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",e)};window.addEventListener("mousemove",s),window.addEventListener("mouseup",e),s(t)}},e("div",{key:"4136b69d81619ce158f2988be19e3e866dfa4ae8",class:"cp-gradient-thumb",style:{left:this.saturation+"%",top:100-this.lightness+"%",background:t}})),this.showSliderSection()&&e("div",{key:"27572206380ad082b4c49a9652b171169d4d92c0",class:"cp-row"},e("div",{key:"c69c64ac7d1173add32d3c0541ac73fe70383d7e",class:"cp-preview",style:{background:t}}),e("div",{key:"54663ac5d49a43922b4a46587383b4ea3db54520",class:"cp-sliders"},e("ui-range-slider",{key:"058c8a3b800afafc80cb13c06cfb48462e8e8206",class:"cp-hue-slider",min:0,max:360,value:this.hue,onSliderChange:t=>{this.hue=Number(t.detail),this.emitChange()},"aria-label":"Hue",showTooltip:!1,showValue:!1,hideRange:!0,trackColor:"linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)"}),this.showAlpha&&e("ui-range-slider",{key:"ef3b5d6112c7040bb1910d8171c8dc84901b628b",class:"cp-alpha-slider",min:0,max:100,value:Math.round(100*this.alpha),onSliderChange:t=>{this.alpha=Number(t.detail)/100,this.emitChange()},"aria-label":"Alpha",showTooltip:!1,showValue:!1,hideRange:!0,trackColor:`linear-gradient(to right, transparent, ${this.hslToHex(this.hue,this.saturation,this.lightness)}), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Crect width='5' height='5' fill='%23ccc'/%3E%3Crect x='5' y='5' width='5' height='5' fill='%23ccc'/%3E%3C/svg%3E")`})),this.showEyeDropper&&"EyeDropper"in window&&e("ui-button",{key:"a3597f83c7b6e4293bd0975d07b8994e66580f87",variant:"ghost",onClick:()=>this.handleEyeDropper(),ariaLabel:"Sample color from screen",icon:"pipette",iconLibrary:"lucide",iconOnly:!0,size:"sm",title:"Sample color from screen"})),this.showInputSection()&&e("div",{key:"d3473eb493f2fda3167c506e8ff2470beb17bab9",class:"cp-inputs-grid"},this.showHex&&this.renderFormatInput("HEX",this.hexInput||this.getHexInputValue(),this.handleHexInput,"hex"),this.showRgb&&this.renderChannelGroup("RGB",3,[this.renderChannelInput("rgb-r","R",this.getRgbValues().r,0,255,1,(t=>this.handleRgbChannelChange("r",t))),this.renderChannelInput("rgb-g","G",this.getRgbValues().g,0,255,1,(t=>this.handleRgbChannelChange("g",t))),this.renderChannelInput("rgb-b","B",this.getRgbValues().b,0,255,1,(t=>this.handleRgbChannelChange("b",t)))]),this.showRgba&&this.renderChannelGroup("RGBA",4,[this.renderChannelInput("rgba-r","R",this.getRgbValues().r,0,255,1,(t=>this.handleRgbaChannelChange("r",t))),this.renderChannelInput("rgba-g","G",this.getRgbValues().g,0,255,1,(t=>this.handleRgbaChannelChange("g",t))),this.renderChannelInput("rgba-b","B",this.getRgbValues().b,0,255,1,(t=>this.handleRgbaChannelChange("b",t))),this.renderChannelInput("rgba-a","A",this.alpha,0,1,.01,(t=>this.handleRgbaChannelChange("a",t)))]),this.showHsl&&this.renderChannelGroup("HSL",3,[this.renderChannelInput("hsl-h","H",this.hue,0,360,1,(t=>this.handleHslChannelChange("h",t))),this.renderChannelInput("hsl-s","S",this.saturation,0,100,1,(t=>this.handleHslChannelChange("s",t))),this.renderChannelInput("hsl-l","L",this.lightness,0,100,1,(t=>this.handleHslChannelChange("l",t)))]),this.showHsla&&this.renderChannelGroup("HSLA",4,[this.renderChannelInput("hsla-h","H",this.hue,0,360,1,(t=>this.handleHslaChannelChange("h",t))),this.renderChannelInput("hsla-s","S",this.saturation,0,100,1,(t=>this.handleHslaChannelChange("s",t))),this.renderChannelInput("hsla-l","L",this.lightness,0,100,1,(t=>this.handleHslaChannelChange("l",t))),this.renderChannelInput("hsla-a","A",this.alpha,0,1,.01,(t=>this.handleHslaChannelChange("a",t)))]),this.showColorName&&e("div",{key:"e73f932f199ad98b6d0155e4f39fc6f731821e75",class:"cp-input-wrap cp-full"},e("span",{key:"c47ac8a26ae1f1db9cc2a6fa0888ed2568043b30",class:"cp-sm-label"},"NAME"),e("div",{key:"393f4e95fa277dc016f4c31291683973f4f0a48a",class:"cp-name-display"},this.getColorName(t))),this.showGradient&&e("div",{key:"9029146f00a030168b63ea55a9a1f9ec67ce7cfa",class:"cp-gradient-toggle-wrap cp-full"},e("ui-button",{key:"a6561f32b69e43b5651134b73a6ab195b721c2c9",variant:"outline",class:{"cp-gradient-toggle":!0,"cp-active":this.isGradientMode},onClick:this.toggleGradientMode,fullWidth:!0,label:this.isGradientMode?"Disable Gradient":"Enable Gradient",size:"sm"}),this.isGradientMode&&e("div",{key:"aabaa25bd9f75a7bec76e611b9d852b8918fd718",class:"cp-stop-selectors"},this.gradientStops.map(((t,i)=>e("button",{type:"button",class:{"cp-swatch":!0,"cp-swatch-active":this.activeStopIndex===i},style:{"background-color":t,"--swatch-color":t,"border-radius":"50%"},onClick:()=>this.activeStopIndex=i,"aria-label":"Gradient stop "+(i+1)})))))),!this.isInputVariant()&&(this.showSwatches||this.showRecent&&this.recentColors.length>0)&&e("div",{key:"b928b33063877a58493f56aa01a37efac5fade30",class:"cp-swatches-section"},e("div",{key:"02b8efedfdad4aa7bbe93b63bd3075395bef8f37",class:"cp-swatches"},i.map((i=>e("ui-button",{type:"button",style:{"background-color":i,"--swatch-color":i},class:{"cp-swatch":!0,"cp-swatch-active":i.toLowerCase()===t.toLowerCase()},onClick:()=>this.handleSwatch(i),title:this.getColorName(i),"aria-label":"Color "+this.getColorName(i)})))),this.showRecent&&this.recentColors.length>0&&e("div",{key:"68a6692afc4ae42ac02c8835fb65f40d64572ffd",class:"cp-history",style:{marginTop:"16px"}},e("div",{key:"c14af759e7380d18fa8b046bd91d97e0d4bb7b43",class:"cp-sm-label",style:{marginBottom:"8px"}},"RECENT"),e("div",{key:"a405d48643d7b452cb90dcfd5d2756a91a37585c",class:"cp-swatches"},this.recentColors.map((i=>e("ui-button",{type:"button",style:{"background-color":i,"--swatch-color":i,"border-radius":"50%"},class:{"cp-swatch":!0,"cp-history-swatch":!0,"cp-swatch-active":i.toLowerCase()===t.toLowerCase()},onClick:()=>this.handleSwatch(i),title:this.getColorName(i),"aria-label":"Recent color "+this.getColorName(i)})))))));return e(a,{key:"437644b794e0abc1a9a37f77641ef9edf0bc47d7",class:`cp-size-${this.size} cp-variant-${this.variant}`},this.label&&e("label",{key:"ba2bb236655f6eab50c62cd18d3b07bbc0cf37b1",class:"cp-label"},this.label),this.inline?s:e("div",{class:"cp-trigger-wrapper"},e("ui-button",{variant:"outline",disabled:this.disabled,onClick:()=>!this.disabled&&(this.isOpen=!this.isOpen),fullWidth:!0},e("span",{class:"cp-trigger-swatch",style:{background:this.value}}),e("span",{class:"cp-trigger-value",style:{marginLeft:"8px",flex:"1",textAlign:"left"}},this.isGradientMode?this.value:this.getFormattedValue()),e("ui-icon",{name:this.isOpen?"chevron-up":"chevron-down",size:"18",library:"lucide"})),this.isOpen&&e("div",{class:"cp-dropdown"},s)))}static get formAssociated(){return!0}static get watchers(){return{value:[{valueChanged:0}]}}static get style(){return".sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;font-family:inherit}.cp-label{display:block;font-size:13px;font-weight:600;color:var(--text-secondary, #374151);margin-bottom:6px}.cp-trigger-wrapper{position:relative;display:inline-block}.cp-trigger{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1.5px solid var(--border-strong, #d1d5db);border-radius:10px;background:var(--bg-primary, #ffffff);cursor:pointer;font-size:13px;font-weight:500;color:var(--text-secondary, #374151);transition:border-color 0.2s, box-shadow 0.2s;min-width:140px}.cp-trigger:hover:not(.cp-disabled){border-color:var(--color-primary, #10b981);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb, 59, 130, 246), 0.12)}.cp-trigger:hover:not(.cp-disabled).cp-disabled{opacity:0.5;cursor:not-allowed}.cp-trigger-swatch{width:20px;height:20px;border-radius:50%;border:2px solid rgba(0, 0, 0, 0.1);flex-shrink:0}.cp-trigger-value{flex:1;font-family:monospace}.cp-trigger-arrow{font-size:10px;color:var(--text-muted, #9ca3af)}.cp-dropdown{position:absolute;top:calc(100% + 6px);left:0;z-index:1000;background:var(--bg-primary, #ffffff);border:1px solid var(--border-default, #e5e7eb);border-radius:14px;box-shadow:0 20px 40px rgba(0, 0, 0, 0.15);overflow:hidden;animation:cp-drop-in 0.15s ease}@keyframes cp-drop-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.cp-panel{width:460px;padding:14px}.cp-panel-hue{width:280px}.cp-panel-input{width:480px}.cp-panel-input .cp-inputs-grid{grid-template-columns:1fr;gap:16px}.cp-panel-input .cp-input-wrap.cp-full{grid-column:span 1}.cp-gradient{width:100%;height:140px;border-radius:8px;position:relative;cursor:crosshair;margin-bottom:12px;user-select:none}.cp-gradient-thumb{position:absolute;width:14px;height:14px;border-radius:50%;border:2.5px solid var(--border-subtle, #fff);box-shadow:0 1px 4px rgba(0, 0, 0, 0.3);transform:translate(-50%, -50%);pointer-events:none}.cp-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.cp-preview{width:32px;height:32px;border-radius:8px;border:2px solid rgba(0, 0, 0, 0.1);flex-shrink:0}.cp-sliders{flex:1;display:flex;flex-direction:column;gap:12px}.cp-hue-slider,.cp-alpha-slider{width:100%;--slider-track-height:12px;--slider-thumb-size:20px}.cp-hue-slider::part(track),.cp-alpha-slider::part(track){height:12px;border-radius:6px;box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.2)}.cp-hue-slider::part(thumb),.cp-alpha-slider::part(thumb){width:20px;height:20px;border:3px solid #fff;box-shadow:0 4px 10px rgba(0, 0, 0, 0.3);background:transparent}.cp-inputs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.cp-panel-multi-format .cp-inputs-grid{grid-template-columns:1fr}.cp-panel-multi-format .cp-input-wrap.cp-full{grid-column:span 1}.cp-input-wrap{display:flex;flex-direction:column;gap:8px}.cp-input-wrap.cp-full{grid-column:span 2}.cp-sm-label{font-size:11px;font-weight:800;color:var(--text-muted, #94a3b8);text-transform:uppercase;letter-spacing:0.05em}.cp-input-wrap.cp-inline-row{display:grid;grid-template-columns:60px 1fr;align-items:center;gap:16px;background:rgba(var(--ui-input-bg-rgb, 248, 250, 252), 0.5);padding:12px 16px;border-radius:12px;border:1px solid var(--border-subtle, #f1f5f9);transition:all 0.2s ease}.cp-input-wrap.cp-inline-row:hover{background:#fff;border-color:var(--border-strong, #e2e8f0);box-shadow:0 4px 12px rgba(0, 0, 0, 0.03)}.cp-channel-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(64px, 1fr));gap:10px;width:100%}.cp-channel-field{display:flex;flex-direction:column;gap:6px;align-items:center}.cp-channel-field .cp-channel-label{font-size:10px;font-weight:700;color:var(--text-muted, #94a3b8);margin-bottom:2px}.cp-channel-field ui-input{width:100%;--ui-input-text-align:center}.cp-text-input{--ui-input-text-align:left}:host(.cp-variant-hue) .cp-panel{padding-block:12px}:host(.cp-variant-hue) .cp-row{margin-bottom:12px}:host(.cp-variant-input) .cp-panel{padding:12px}:host(.cp-variant-input) .cp-name-display,:host(.cp-variant-input) .cp-text-input{min-height:36px}.cp-name-display{width:100%;border:1.5px solid var(--border-subtle, #f3f4f6);background:var(--bg-primary, #f9fafb);border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;color:var(--text-secondary, #4b5563);box-sizing:border-box}.cp-swatches{display:flex;flex-wrap:wrap;gap:6px}.cp-swatch{width:22px;height:22px;border-radius:6px;border:2px solid transparent;cursor:pointer;transition:transform 0.1s, border-color 0.15s, box-shadow 0.15s;padding:0;margin:0;outline:none;box-sizing:border-box;flex-shrink:0}.cp-swatch:hover{transform:scale(1.15)}.cp-swatch.cp-swatch-active{border-color:var(--bg-primary, #ffffff);box-shadow:0 0 0 1px var(--bg-primary, #ffffff), 0 0 0 3px var(--swatch-color, var(--color-primary, #10b981))}"}},[577,"ui-color-picker",{value:[1025],label:[1],showHex:[4,"show-hex"],showRgb:[4,"show-rgb"],showRgba:[4,"show-rgba"],showHsl:[4,"show-hsl"],showHsla:[4,"show-hsla"],showAlpha:[4,"show-alpha"],showSwatches:[4,"show-swatches"],swatches:[1],format:[1],disabled:[4],inline:[4],size:[1],name:[1],required:[4],showRecent:[4,"show-recent"],showEyeDropper:[4,"show-eye-dropper"],showColorName:[4,"show-color-name"],showGradient:[4,"show-gradient"],variant:[1],isOpen:[32],hue:[32],saturation:[32],lightness:[32],alpha:[32],hexInput:[32],isInvalid:[32],invalidField:[32],recentColors:[32],isGradientMode:[32],gradientStops:[32],activeStopIndex:[32]},void 0,{value:[{valueChanged:0}]}]),u=d,b=function(){"undefined"!=typeof customElements&&["ui-color-picker","ui-badge","ui-button","ui-icon","ui-input","ui-loader","ui-range-slider"].forEach((t=>{switch(t){case"ui-color-picker":customElements.get(r(t))||customElements.define(r(t),d);break;case"ui-badge":customElements.get(r(t))||n();break;case"ui-button":customElements.get(r(t))||h();break;case"ui-icon":customElements.get(r(t))||o();break;case"ui-input":customElements.get(r(t))||l();break;case"ui-loader":customElements.get(r(t))||c();break;case"ui-range-slider":customElements.get(r(t))||p()}}))};export{u as UiColorPicker,b as defineCustomElement}
1
+ import{proxyCustomElement as t,HTMLElement as i,createEvent as s,h as e,Host as r,transformTag as a}from"@stencil/core/internal/client";import{d as h}from"./badge.js";import{d as o}from"./button.js";import{d as n}from"./icon.js";import{d as l}from"./input.js";import{d as c}from"./loader.js";import{d as p}from"./range-slider.js";const d=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.colorChange=s(this,"colorChange",7)}value="#3bf673";label="";showHex=!0;showRgb=!1;showRgba=!1;showHsl=!1;showHsla=!1;formats="";showAlpha=!1;showSwatches=!0;swatches=[];format="hex";disabled=!1;inline=!1;size="md";name="";required=!1;showRecent=!0;showEyeDropper=!0;showColorName=!0;showGradient=!1;variant="default";compact=!1;get el(){return this}internals;isOpen=!1;hue=220;saturation=80;lightness=60;alpha=1;hexInput="#3bf673";isInvalid=!1;invalidField=null;recentColors=[];isGradientMode=!1;gradientStops=["#3bf673","#10b981"];activeStopIndex=0;enabledFormatsSet=null;dropdownStyle={};_placementRefined=!1;colorChange;handleDocumentPointerDown=t=>{this.isOpen&&!this.inline&&(("function"==typeof t.composedPath?t.composedPath():[]).includes(this.el)||this.el.contains(t.target)||(this.isOpen=!1))};defaultSwatches=["#ef4444","#f97316","#f59e0b","#eab308","#84cc16","#22c55e","#10b981","#06b6d4","#3bf673","#8b5cf6","#ec4899","#f43f5e","#6b7280","#1f2937","#ffffff"];colorNames={"#ff0000":"Red","#00ff00":"Lime","#0000ff":"Blue","#ffffff":"White","#000000":"Black","#808080":"Gray","#ffff00":"Yellow","#00ffff":"Cyan","#ff00ff":"Magenta","#3bf673":"Royal Blue","#10b981":"Emerald","#ef4444":"Red Orange","#f59e0b":"Amber","#8b5cf6":"Violet","#6b7280":"Slate"};initializeInternals(){if(!this.internals&&"function"==typeof this.el?.attachInternals)try{this.internals=this.el.attachInternals()}catch(t){if(!(t instanceof DOMException)||"NotSupportedError"!==t.name)throw t}}handleFormatsChange(){this.parseFormats()}handleIsOpenChange(t){t?(this.hexInput=this.getHexInputValue(),this.isInvalid=!1,this.invalidField=null):(this.dropdownStyle={},this._placementRefined=!1)}componentDidUpdate(){this.isOpen&&!this._placementRefined&&(this._placementRefined=!0,this.refineDropdownPlacement())}preComputePlacement(){const t=this.isHueVariant()?340:this.isInputVariant()?320:580,i=this.isHueVariant()?280:this.isInputVariant()?480:460;this.dropdownStyle=this.buildPositionStyle(i,t)}refineDropdownPlacement(){const t=this.el.shadowRoot?.querySelector(".cp-dropdown");if(!t)return;const i=this.isHueVariant()?280:this.isInputVariant()?480:460,s=this.buildPositionStyle(i,t.scrollHeight||t.offsetHeight||580);Object.keys(s).some((t=>s[t]!==this.dropdownStyle[t]))&&(this.dropdownStyle=s)}buildPositionStyle(t,i){const s=this.el.getBoundingClientRect(),e=document.documentElement.clientWidth||window.innerWidth,r=document.documentElement.clientHeight||window.innerHeight,a=Math.min(t,e-16),h=r-s.bottom-6-8,o=s.top-6-8;let n,l;h>=i||h>=o?(n=s.bottom+6,l=Math.max(80,h)):(l=Math.max(80,o),n=s.top-6-Math.min(i,l));const c=Math.min(i,l);n=Math.max(8,Math.min(n,r-c-8));let p=s.left;p+a>e-8&&(p=s.right-a),p=Math.max(8,Math.min(p,e-a-8));const d={top:Math.round(n)+"px",left:Math.round(p)+"px",width:Math.round(a)+"px"};return i>l&&(d["max-height"]=Math.round(c)+"px",d["overflow-y"]="auto",d["overflow-x"]="hidden"),d}componentWillLoad(){this.initializeInternals(),this.parseFormats(),this.syncValueToState(this.value),this.value=this.getFormattedValue(),this.updateFormValue(),this.loadHistory()}parseFormats(){if(!this.formats||(Array.isArray(this.formats)?0===this.formats.length:""===this.formats.trim()))return void(this.enabledFormatsSet=null);const t=(Array.isArray(this.formats)?this.formats:this.formats.split(",")).map((t=>t.trim().toLowerCase())).filter(Boolean);this.enabledFormatsSet=t.length>0?new Set(t):null}isFormatEnabled(t){if(this.enabledFormatsSet)return this.enabledFormatsSet.has(t);switch(t){case"hex":return this.showHex;case"rgb":return this.showRgb;case"rgba":return this.showRgba;case"hsl":return this.showHsl;case"hsla":return this.showHsla;default:return!1}}connectedCallback(){document.addEventListener("pointerdown",this.handleDocumentPointerDown,!0)}disconnectedCallback(){document.removeEventListener("pointerdown",this.handleDocumentPointerDown,!0)}loadHistory(){if(this.showRecent)try{const t=localStorage.getItem("ui-color-history");t&&(this.recentColors=JSON.parse(t))}catch(t){console.error("Failed to load color history",t)}}saveHistory(t){if(!this.showRecent)return;const i=[t,...this.recentColors.filter((i=>i!==t))].slice(0,10);this.recentColors=i,localStorage.setItem("ui-color-history",JSON.stringify(i))}updateFormValue(){this.internals&&this.internals?.setFormValue(this.value)}valueChanged(t){this.syncValueToState(t)}getSwatches(){if("string"==typeof this.swatches)try{return JSON.parse(this.swatches)}catch{return this.defaultSwatches}return this.swatches.length>0?this.swatches:this.defaultSwatches}clamp(t,i,s){return Math.min(s,Math.max(i,t))}roundAlpha(t){return Math.round(100*this.clamp(t,0,1))/100}componentToHex(t){return Math.round(this.clamp(t,0,255)).toString(16).padStart(2,"0")}rgbToHsl(t,i,s){const e=this.clamp(t,0,255)/255,r=this.clamp(i,0,255)/255,a=this.clamp(s,0,255)/255,h=Math.max(e,r,a),o=Math.min(e,r,a),n=(h+o)/2;let l=0,c=0;if(h!==o){const t=h-o;switch(c=n>.5?t/(2-h-o):t/(h+o),h){case e:l=((r-a)/t+(r<a?6:0))/6;break;case r:l=((a-e)/t+2)/6;break;default:l=((e-r)/t+4)/6}}return{h:Math.round(360*l),s:Math.round(100*c),l:Math.round(100*n)}}parseHex(t){const i=t.trim().match(/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i);if(!i)return null;let s=i[1];3!==s.length&&4!==s.length||(s=s.split("").map((t=>`${t}${t}`)).join(""));const e=8===s.length,r=parseInt(s.slice(0,2),16),a=parseInt(s.slice(2,4),16),h=parseInt(s.slice(4,6),16),o=e?parseInt(s.slice(6,8),16)/255:this.alpha,n=this.rgbToHsl(r,a,h);return{hex:`#${this.componentToHex(r)}${this.componentToHex(a)}${this.componentToHex(h)}`,alpha:this.roundAlpha(o),...n}}parseRgbColor(t){const i=t.trim().match(/^rgba?\(([^)]+)\)$/i);if(!i)return null;const s=i[1].split(",").map((t=>t.trim()));if(3!==s.length&&4!==s.length)return null;const e=s.slice(0,3).map((t=>Number(t)));if(e.some((t=>Number.isNaN(t))))return null;const[r,a,h]=e.map((t=>this.clamp(t,0,255))),o=void 0!==s[3]?this.roundAlpha(Number(s[3])):this.alpha;if(Number.isNaN(o))return null;const n=this.rgbToHsl(r,a,h);return{hex:`#${this.componentToHex(r)}${this.componentToHex(a)}${this.componentToHex(h)}`,alpha:o,...n}}parseHslColor(t){const i=t.trim().match(/^hsla?\(([^)]+)\)$/i);if(!i)return null;const s=i[1].split(",").map((t=>t.trim()));if(3!==s.length&&4!==s.length)return null;const e=Number(s[0]),r=Number(s[1].replace("%","")),a=Number(s[2].replace("%","")),h=void 0!==s[3]?this.roundAlpha(Number(s[3])):this.alpha;if([e,r,a,h].some((t=>Number.isNaN(t))))return null;const o=(e%360+360)%360,n=this.clamp(r,0,100),l=this.clamp(a,0,100);return{hex:this.hslToHex(o,n,l),alpha:h,h:Math.round(o),s:Math.round(n),l:Math.round(l)}}parseColorValue(t){return!t||t.startsWith("linear-gradient")?null:this.parseHex(t)||this.parseRgbColor(t)||this.parseHslColor(t)}syncParsedColor(t){this.hue=t.h,this.saturation=t.s,this.lightness=t.l,this.alpha=this.roundAlpha(t.alpha),this.hexInput=this.getHexInputValue(t.hex,t.alpha),this.isInvalid=!1,this.invalidField=null}syncValueToState(t){const i=this.parseColorValue(t);i&&this.syncParsedColor(i)}hslToHex(t,i,s){const e=t/360,r=i/100,a=s/100;let h,o,n;if(0===r)h=o=n=a;else{const t=(t,i,s)=>(s<0&&(s+=1),s>1&&(s-=1),s<1/6?t+6*(i-t)*s:s<.5?i:s<2/3?t+(i-t)*(2/3-s)*6:t),i=a<.5?a*(1+r):a+r-a*r,s=2*a-i;h=t(s,i,e+1/3),o=t(s,i,e),n=t(s,i,e-1/3)}const l=t=>Math.round(255*t).toString(16).padStart(2,"0");return`#${l(h)}${l(o)}${l(n)}`}getRgbValues(){const t=this.hslToHex(this.hue,this.saturation,this.lightness).replace("#","");return{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}}getHexValue(t=this.hslToHex(this.hue,this.saturation,this.lightness),i=this.alpha){return i<1?`${t}${this.componentToHex(255*i)}`:t}getHexInputValue(t=this.hslToHex(this.hue,this.saturation,this.lightness),i=this.alpha){return this.getHexValue(t,i).replace(/^#/,"")}getRgbString(t=!1){const{r:i,g:s,b:e}=this.getRgbValues();return t?`rgba(${i}, ${s}, ${e}, ${this.roundAlpha(this.alpha)})`:`rgb(${i}, ${s}, ${e})`}getHslString(t=!1){return t?`hsla(${this.hue}, ${this.saturation}%, ${this.lightness}%, ${this.roundAlpha(this.alpha)})`:`hsl(${this.hue}, ${this.saturation}%, ${this.lightness}%)`}getFormattedValue(){switch(this.format){case"rgb":return this.getRgbString(!1);case"rgba":return this.getRgbString(!0);case"hsl":return this.getHslString(!1);case"hsla":return this.getHslString(!0);default:return this.getHexValue()}}updateColorFromInput(t,i){"hex"===i&&(this.hexInput=t.replace(/^#/,""));const s="hex"===i?"#"+t.replace(/^#/,""):t,e=this.parseColorValue(s);if(!e)return this.isInvalid=!0,void(this.invalidField=i);this.syncParsedColor(e);const r=this.getFormattedValue();this.value=r,this.updateFormValue(),this.colorChange.emit(r)}emitChange(){const t=this.hslToHex(this.hue,this.saturation,this.lightness);if(this.isGradientMode){this.gradientStops[this.activeStopIndex]=t,this.gradientStops=[...this.gradientStops];const i=`linear-gradient(90deg, ${this.gradientStops[0]}, ${this.gradientStops[1]})`;this.value=i,this.colorChange.emit(i)}else this.value=this.getFormattedValue(),this.hexInput=this.getHexInputValue(t,this.alpha),this.isInvalid=!1,this.invalidField=null,this.updateFormValue(),this.colorChange.emit(this.value),this.saveHistory(t)}toggleGradientMode=()=>{this.isGradientMode=!this.isGradientMode,this.emitChange()};async handleEyeDropper(){if(!("EyeDropper"in window))return void alert("EyeDropper API is not supported in this browser.");const t=new EyeDropper;try{const i=await t.open();this.handleSwatch(i.sRGBHex)}catch(t){}}getColorName(t){const i=t.toLowerCase();return this.colorNames[i]||"Custom"}handleHexInput=t=>{const i=((t.detail??"")+"").replace(/^#/,"").trim();if(this.hexInput=i,0===i.length)return this.isInvalid=!1,void(this.invalidField=null);const s=this.showAlpha?8:6;(this.showAlpha?[3,4,6,8]:[3,6]).includes(i.length)?this.updateColorFromInput(i,"hex"):i.length>s?(this.isInvalid=!0,this.invalidField="hex"):(this.isInvalid=!1,this.invalidField=null)};handleSwatch=t=>{const i=this.parseHex(t);i&&(this.syncParsedColor(i),this.value=this.getFormattedValue(),this.updateFormValue(),this.colorChange.emit(this.value),this.saveHistory(i.hex))};parseChannelValue(t){if(""===t||null==t)return null;const i=Number(t);return Number.isFinite(i)?i:null}setChannelValidation(t){this.isInvalid=!!t,this.invalidField=t}applyRgbColor(t,i,s,e=this.alpha){const r=Math.round(this.clamp(t,0,255)),a=Math.round(this.clamp(i,0,255)),h=Math.round(this.clamp(s,0,255)),o=this.roundAlpha(e),n=this.rgbToHsl(r,a,h);this.syncParsedColor({hex:`#${this.componentToHex(r)}${this.componentToHex(a)}${this.componentToHex(h)}`,alpha:o,...n}),this.value=this.getFormattedValue(),this.updateFormValue(),this.colorChange.emit(this.value)}applyHslColor(t,i,s,e=this.alpha){const r=Math.round(this.clamp(t,0,360)),a=Math.round(this.clamp(i,0,100)),h=Math.round(this.clamp(s,0,100)),o=this.roundAlpha(e);this.syncParsedColor({hex:this.hslToHex(r,a,h),alpha:o,h:r,s:a,l:h}),this.value=this.getFormattedValue(),this.updateFormValue(),this.colorChange.emit(this.value)}handleRgbChannelChange=(t,i)=>{const s=null==i.detail?"":(i.detail+"").trim(),e="rgb-"+t;if(""===s)return void this.setChannelValidation(null);const r=this.parseChannelValue(s);if(null===r||r<0||r>255)return void this.setChannelValidation(e);const a=this.getRgbValues();a[t]=Math.round(r),this.setChannelValidation(null),this.applyRgbColor(a.r,a.g,a.b)};handleRgbaChannelChange=(t,i)=>{const s=null==i.detail?"":(i.detail+"").trim(),e="rgba-"+t;if(""===s)return void this.setChannelValidation(null);const r=this.parseChannelValue(s);if(null===r)return void this.setChannelValidation(e);const a=this.getRgbValues();let h=this.alpha;if("a"===t){if(r<0||r>1)return void this.setChannelValidation(e);h=r}else{if(r<0||r>255)return void this.setChannelValidation(e);a[t]=Math.round(r)}this.setChannelValidation(null),this.applyRgbColor(a.r,a.g,a.b,h)};handleHslChannelChange=(t,i)=>{const s=null==i.detail?"":(i.detail+"").trim(),e="hsl-"+t;if(""===s)return void this.setChannelValidation(null);const r=this.parseChannelValue(s);if(null===r||r<0||r>{h:360,s:100,l:100}[t])return void this.setChannelValidation(e);const a={h:this.hue,s:this.saturation,l:this.lightness,[t]:Math.round(r)};this.setChannelValidation(null),this.applyHslColor(a.h,a.s,a.l)};handleHslaChannelChange=(t,i)=>{const s=null==i.detail?"":(i.detail+"").trim(),e="hsla-"+t;if(""===s)return void this.setChannelValidation(null);const r=this.parseChannelValue(s);if(null===r)return void this.setChannelValidation(e);const a={h:this.hue,s:this.saturation,l:this.lightness};let h=this.alpha;if("a"===t){if(r<0||r>1)return void this.setChannelValidation(e);h=r}else{if(r<0||r>{h:360,s:100,l:100}[t])return void this.setChannelValidation(e);a[t]=Math.round(r)}this.setChannelValidation(null),this.applyHslColor(a.h,a.s,a.l,h)};isHueVariant(){return"hue"===this.variant}isInputVariant(){return"input"===this.variant}showGradientSurface(){return!this.isHueVariant()&&!this.isInputVariant()}showSliderSection(){return!this.isInputVariant()}showInputSection(){return this.isFormatEnabled("hex")||this.isFormatEnabled("rgb")||this.isFormatEnabled("rgba")||this.isFormatEnabled("hsl")||this.isFormatEnabled("hsla")||this.isInputVariant()}getPanelClasses(){return{"cp-panel":!0,"cp-panel-hue":this.isHueVariant(),"cp-panel-input":this.isInputVariant(),"cp-panel-multi-format":this.showInputSection()}}renderFormatInput(t,i,s,r){const a=this.isInvalid&&this.invalidField===r,h=this.getFieldError(r);return e("div",{class:"cp-input-wrap cp-full cp-inline-row"},e("span",{class:"cp-sm-label"},t),e("div",{class:"cp-input-field-wrap"},e("ui-input",{class:{"cp-text-input":!0,"cp-input-error":a},type:"text",value:i,prefixText:"hex"===r?"#":void 0,onInputChange:s,size:"sm"}),h&&e("span",{class:"cp-field-error"},h)))}renderChannelInput(t,i,s,r,a,h,o){return e("div",{class:"cp-channel-field"},e("span",{class:"cp-channel-label"},i),e("ui-input",{class:{"cp-text-input":!0,"cp-channel-input":!0,"cp-input-error":this.isInvalid&&this.invalidField===t},type:"number",min:r,max:a,step:h,value:s,onInputChange:o,size:"sm"}))}renderChannelGroup(t,i,s){const r=t.toLowerCase()+"-",a=this.getFieldError(r);return e("div",{class:"cp-input-wrap cp-full cp-channel-group cp-inline-row"},e("span",{class:"cp-sm-label"},t),e("div",{class:"cp-channel-col"},e("div",{class:{"cp-channel-grid":!0,"cp-channel-grid-3":3===i,"cp-channel-grid-4":4===i}},s),a&&e("span",{class:"cp-field-error"},a)))}getFieldError(t){return this.isInvalid&&this.invalidField?"hex"===t?"hex"!==this.invalidField?"":this.showAlpha?"Enter 3, 6, or 8 hex characters (e.g. FF0000 or FF0000FF for alpha)":"Enter 3 or 6 hex characters (e.g. FF0000)":this.invalidField.startsWith(t)?this.invalidField.endsWith("-r")?"Red (R) must be 0–255":this.invalidField.endsWith("-g")?"Green (G) must be 0–255":this.invalidField.endsWith("-b")?"Blue (B) must be 0–255":this.invalidField.endsWith("-h")?"Hue (H) must be 0–360":this.invalidField.endsWith("-s")?"Saturation (S) must be 0–100":this.invalidField.endsWith("-l")?"Lightness (L) must be 0–100":this.invalidField.endsWith("-a")?"Alpha (A) must be 0–1 (e.g. 0.5 = 50%)":"Invalid value":"":""}render(){const t=this.hslToHex(this.hue,this.saturation,this.lightness),i=this.getSwatches(),s=e("div",{key:"947077dfe39fcd935bc97692b063b91d0fd06a9d",class:this.getPanelClasses()},this.showGradientSurface()&&e("div",{key:"a6c4878e2a6bca5c6b70af63da25dcd3457a8ec1",class:"cp-gradient",role:"slider","aria-label":"Saturation and Lightness","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":this.saturation,"aria-valuetext":`Saturation ${this.saturation}%, Lightness ${this.lightness}%`,tabindex:"0",onKeyDown:t=>{const i=t.shiftKey?10:1;"ArrowLeft"===t.key&&(this.saturation=Math.max(0,this.saturation-i),this.emitChange()),"ArrowRight"===t.key&&(this.saturation=Math.min(100,this.saturation+i),this.emitChange()),"ArrowUp"===t.key&&(this.lightness=Math.min(100,this.lightness+i),this.emitChange()),"ArrowDown"===t.key&&(this.lightness=Math.max(0,this.lightness-i),this.emitChange())},style:{background:`linear-gradient(to bottom, transparent, #000), linear-gradient(to right, #fff, hsl(${this.hue}, 100%, 50%))`},onMouseDown:t=>{const i=t.currentTarget.getBoundingClientRect(),s=t=>{const s=Math.max(0,Math.min(1,(t.clientX-i.left)/i.width)),e=Math.max(0,Math.min(1,(t.clientY-i.top)/i.height));this.saturation=Math.round(100*s),this.lightness=Math.round((1-e)*(100-50*s)),this.emitChange()},e=()=>{window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",e)};window.addEventListener("mousemove",s),window.addEventListener("mouseup",e),s(t)}},e("div",{key:"393bdcc90e400571ed7a51aaa25ac73868cd1c55",class:"cp-gradient-thumb",style:{left:this.saturation+"%",top:100-this.lightness+"%",background:t}})),this.showSliderSection()&&e("div",{key:"ede35ae4eb38c8b655c7f74075fcfaf8ee9cb7c0",class:"cp-row"},e("div",{key:"fda077df5270580b81cacd22b252d4acb9a770ed",class:"cp-preview",style:{background:t}}),e("div",{key:"f9f013ad09b24b5d42ac0d46fc60d473dcc699a1",class:"cp-sliders"},e("ui-range-slider",{key:"1a10770920b3d793635794a857fae6653f926757",class:"cp-hue-slider",min:0,max:360,value:this.hue,onSliderChange:t=>{this.hue=Number(t.detail),this.emitChange()},"aria-label":"Hue",showTooltip:!1,showValue:!1,hideRange:!0,trackColor:"linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)"}),this.showAlpha&&e("ui-range-slider",{key:"2ba506ea2e7ce927cee0d3da96ac894629832e8e",class:"cp-alpha-slider",min:0,max:100,value:Math.round(100*this.alpha),onSliderChange:t=>{this.alpha=Number(t.detail)/100,this.emitChange()},"aria-label":"Alpha",showTooltip:!1,showValue:!1,hideRange:!0,trackColor:`linear-gradient(to right, transparent, ${this.hslToHex(this.hue,this.saturation,this.lightness)}), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Crect width='5' height='5' fill='%23ccc'/%3E%3Crect x='5' y='5' width='5' height='5' fill='%23ccc'/%3E%3C/svg%3E")`})),this.showEyeDropper&&"EyeDropper"in window&&e("ui-button",{key:"5bca61232947d6ab735fc58e2a327849b947adda",variant:"ghost",onClick:()=>this.handleEyeDropper(),ariaLabel:"Sample color from screen",icon:"pipette",iconLibrary:"lucide",iconOnly:!0,size:"sm",title:"Sample color from screen"})),this.showInputSection()&&e("div",{key:"a7373dc01faaad4b1a29e2e58181121001355efc",class:"cp-inputs-grid"},this.isFormatEnabled("hex")&&this.renderFormatInput("HEX",this.hexInput||this.getHexInputValue(),this.handleHexInput,"hex"),this.isFormatEnabled("rgb")&&this.renderChannelGroup("RGB",3,[this.renderChannelInput("rgb-r","R",this.getRgbValues().r,0,255,1,(t=>this.handleRgbChannelChange("r",t))),this.renderChannelInput("rgb-g","G",this.getRgbValues().g,0,255,1,(t=>this.handleRgbChannelChange("g",t))),this.renderChannelInput("rgb-b","B",this.getRgbValues().b,0,255,1,(t=>this.handleRgbChannelChange("b",t)))]),this.isFormatEnabled("rgba")&&this.renderChannelGroup("RGBA",4,[this.renderChannelInput("rgba-r","R",this.getRgbValues().r,0,255,1,(t=>this.handleRgbaChannelChange("r",t))),this.renderChannelInput("rgba-g","G",this.getRgbValues().g,0,255,1,(t=>this.handleRgbaChannelChange("g",t))),this.renderChannelInput("rgba-b","B",this.getRgbValues().b,0,255,1,(t=>this.handleRgbaChannelChange("b",t))),this.renderChannelInput("rgba-a","A",this.alpha,0,1,.01,(t=>this.handleRgbaChannelChange("a",t)))]),this.isFormatEnabled("hsl")&&this.renderChannelGroup("HSL",3,[this.renderChannelInput("hsl-h","H",this.hue,0,360,1,(t=>this.handleHslChannelChange("h",t))),this.renderChannelInput("hsl-s","S",this.saturation,0,100,1,(t=>this.handleHslChannelChange("s",t))),this.renderChannelInput("hsl-l","L",this.lightness,0,100,1,(t=>this.handleHslChannelChange("l",t)))]),this.isFormatEnabled("hsla")&&this.renderChannelGroup("HSLA",4,[this.renderChannelInput("hsla-h","H",this.hue,0,360,1,(t=>this.handleHslaChannelChange("h",t))),this.renderChannelInput("hsla-s","S",this.saturation,0,100,1,(t=>this.handleHslaChannelChange("s",t))),this.renderChannelInput("hsla-l","L",this.lightness,0,100,1,(t=>this.handleHslaChannelChange("l",t))),this.renderChannelInput("hsla-a","A",this.alpha,0,1,.01,(t=>this.handleHslaChannelChange("a",t)))]),this.showColorName&&e("div",{key:"59c6affab34a5d5e8ac1bcbbbd6b596129fc8c01",class:"cp-input-wrap cp-full"},e("span",{key:"416b9dd86cd1b26d166f79799d988a0f31c94c0f",class:"cp-sm-label"},"NAME"),e("div",{key:"0580d021a17ef4791bb693e62ab81328b859e1e3",class:"cp-name-display"},this.getColorName(t))),this.showGradient&&e("div",{key:"36c26bcd60a6670b5db602cb64c28eb472831b34",class:"cp-gradient-toggle-wrap cp-full"},e("ui-button",{key:"d66bcf4f0079ebb0a674c4f72d29eddeab535748",variant:"outline",class:{"cp-gradient-toggle":!0,"cp-active":this.isGradientMode},onClick:this.toggleGradientMode,fullWidth:!0,label:this.isGradientMode?"Disable Gradient":"Enable Gradient",size:"sm"}),this.isGradientMode&&e("div",{key:"b5c68733d93b41955a8c869ec413306c4c249fa6",class:"cp-stop-selectors"},this.gradientStops.map(((t,i)=>e("button",{type:"button",class:{"cp-swatch":!0,"cp-swatch-active":this.activeStopIndex===i},style:{"background-color":t,"--swatch-color":t,"border-radius":"50%"},onClick:()=>this.activeStopIndex=i,"aria-label":"Gradient stop "+(i+1)})))))),!this.isInputVariant()&&(this.showSwatches||this.showRecent&&this.recentColors.length>0)&&e("div",{key:"5d0c7ae9c61d21bbc61c825c024cfd4a18969729",class:"cp-swatches-section"},e("div",{key:"561f17394b3e185dba5e0cd0ee33607b72853992",class:"cp-swatches"},i.map((i=>e("button",{type:"button",style:{"background-color":i,"--swatch-color":i},class:{"cp-swatch":!0,"cp-swatch-active":i.toLowerCase()===t.toLowerCase()},onClick:()=>this.handleSwatch(i),title:this.getColorName(i),"aria-label":"Color "+this.getColorName(i)})))),this.showRecent&&this.recentColors.length>0&&e("div",{key:"961bdc3ff4959328d340dad0eae2ea3ec8f0c6fd",class:"cp-history",style:{marginTop:"16px"}},e("div",{key:"2b0e31318c0be810b2ab1e0f2fa058e838488ce7",class:"cp-sm-label",style:{marginBottom:"8px"}},"RECENT"),e("div",{key:"72ace7d3af678623f196ace590027a3c8e8e4332",class:"cp-swatches"},this.recentColors.map((i=>e("button",{type:"button",style:{"background-color":i,"--swatch-color":i,"border-radius":"50%"},class:{"cp-swatch":!0,"cp-history-swatch":!0,"cp-swatch-active":i.toLowerCase()===t.toLowerCase()},onClick:()=>this.handleSwatch(i),title:this.getColorName(i),"aria-label":"Recent color "+this.getColorName(i)})))))));return e(r,{key:"ea389dfa80644128e47af4416097548127585782",class:`cp-size-${this.size} cp-variant-${this.variant}`},this.label&&e("label",{key:"36154620d4bfad250103eec666f4c6f7934edd14",class:"cp-label"},this.label),this.inline?s:e("div",{class:"cp-trigger-wrapper"+(this.compact?" cp-trigger-wrapper--compact":"")},this.compact?e("button",{class:{"cp-trigger-compact":!0,"cp-disabled":this.disabled,"cp-open":this.isOpen},disabled:this.disabled,"aria-label":"Color picker, current color "+this.getFormattedValue(),onClick:()=>{this.disabled||(this.isOpen||this.preComputePlacement(),this.isOpen=!this.isOpen)}},e("span",{class:"cp-trigger-compact-swatch",style:{background:this.value}})):e("ui-button",{variant:"outline",disabled:this.disabled,onClick:()=>{this.disabled||(this.isOpen||this.preComputePlacement(),this.isOpen=!this.isOpen)},fullWidth:!0},e("span",{class:"cp-trigger-swatch",style:{background:this.value}}),e("span",{class:"cp-trigger-value",style:{marginLeft:"8px",flex:"1",textAlign:"left"}},this.isGradientMode?this.value:this.getFormattedValue()),e("ui-icon",{name:this.isOpen?"chevron-up":"chevron-down",size:"18",library:"lucide"})),this.isOpen&&e("div",{class:"cp-dropdown",style:this.dropdownStyle},s)))}static get formAssociated(){return!0}static get watchers(){return{formats:[{handleFormatsChange:0}],isOpen:[{handleIsOpenChange:0}],value:[{valueChanged:0}]}}static get style(){return'@charset "UTF-8";.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}.a11y-sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border-width:0 !important}:host{display:block;font-family:inherit}.cp-label{display:block;font-size:13px;font-weight:600;color:var(--text-secondary, #374151);margin-bottom:6px}.cp-trigger-wrapper{position:relative;display:inline-block}.cp-trigger{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1.5px solid var(--border-strong, #d1d5db);border-radius:10px;background:var(--bg-primary, #ffffff);cursor:pointer;font-size:13px;font-weight:500;color:var(--text-secondary, #374151);transition:border-color 0.2s, box-shadow 0.2s;min-width:140px}.cp-trigger:hover:not(.cp-disabled){border-color:var(--color-primary, #10b981);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb, 59, 130, 246), 0.12)}.cp-trigger:hover:not(.cp-disabled).cp-disabled{opacity:0.5;cursor:not-allowed}.cp-trigger-swatch{width:20px;height:20px;border-radius:50%;border:2px solid rgba(0, 0, 0, 0.1);flex-shrink:0}.cp-trigger-value{flex:1;font-family:monospace}.cp-trigger-arrow{font-size:10px;color:var(--text-muted, #9ca3af)}.cp-trigger-compact{display:inline-flex;align-items:center;justify-content:center;padding:3px;border:1.5px solid var(--border-strong, #d1d5db);border-radius:8px;background:var(--bg-primary, #ffffff);cursor:pointer;transition:border-color 0.2s, box-shadow 0.2s}.cp-trigger-compact:hover:not(:disabled){border-color:var(--color-primary, #10b981);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb, 59, 130, 246), 0.12)}.cp-trigger-compact.cp-open{border-color:var(--color-primary, #10b981);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb, 59, 130, 246), 0.15)}.cp-trigger-compact:disabled,.cp-trigger-compact.cp-disabled{opacity:0.5;cursor:not-allowed}.cp-trigger-compact-swatch{width:26px;height:26px;border-radius:5px;border:1.5px solid rgba(0, 0, 0, 0.1);display:block}:host(.cp-size-sm) .cp-trigger-compact{border-radius:6px}:host(.cp-size-sm) .cp-trigger-compact-swatch{width:20px;height:20px;border-radius:3px}:host(.cp-size-lg) .cp-trigger-compact{border-radius:10px}:host(.cp-size-lg) .cp-trigger-compact-swatch{width:32px;height:32px;border-radius:7px}.cp-dropdown{position:fixed;z-index:9999;background:var(--bg-primary, #ffffff);border:1px solid var(--border-default, #e5e7eb);border-radius:14px;box-shadow:0 20px 40px rgba(0, 0, 0, 0.15);overflow-x:hidden;animation:cp-drop-in 0.15s ease}@keyframes cp-drop-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.cp-panel{width:430px;padding:14px}.cp-panel-hue{width:280px}.cp-panel-input{width:480px}.cp-panel-input .cp-inputs-grid{grid-template-columns:1fr;gap:16px}.cp-panel-input .cp-input-wrap.cp-full{grid-column:span 1}.cp-gradient{width:100%;height:140px;border-radius:8px;position:relative;cursor:crosshair;margin-bottom:12px;user-select:none}.cp-gradient-thumb{position:absolute;width:14px;height:14px;border-radius:50%;border:2.5px solid var(--border-subtle, #fff);box-shadow:0 1px 4px rgba(0, 0, 0, 0.3);transform:translate(-50%, -50%);pointer-events:none}.cp-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.cp-preview{width:32px;height:32px;border-radius:8px;border:2px solid rgba(0, 0, 0, 0.1);flex-shrink:0}.cp-sliders{flex:1;display:flex;flex-direction:column;gap:12px}.cp-hue-slider,.cp-alpha-slider{width:100%;--slider-track-height:12px;--slider-thumb-size:20px}.cp-hue-slider::part(track),.cp-alpha-slider::part(track){height:12px;border-radius:6px;box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.2)}.cp-hue-slider::part(thumb),.cp-alpha-slider::part(thumb){width:20px;height:20px;border:3px solid #fff;box-shadow:0 4px 10px rgba(0, 0, 0, 0.3);background:transparent}.cp-inputs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.cp-panel-multi-format .cp-inputs-grid{grid-template-columns:1fr}.cp-panel-multi-format .cp-input-wrap.cp-full{grid-column:span 1}.cp-input-wrap{display:flex;flex-direction:column;gap:8px}.cp-input-wrap.cp-full{grid-column:span 2}.cp-sm-label{font-size:11px;font-weight:800;color:var(--text-muted, #94a3b8);text-transform:uppercase;letter-spacing:0.05em}.cp-input-wrap.cp-inline-row{display:grid;grid-template-columns:60px 1fr;align-items:center;gap:16px;background:rgba(var(--ui-input-bg-rgb, 248, 250, 252), 0.5);padding:12px 16px;border-radius:12px;border:1px solid var(--border-subtle, #f1f5f9);transition:all 0.2s ease}.cp-input-wrap.cp-inline-row:hover{background:#fff;border-color:var(--border-strong, #e2e8f0);box-shadow:0 4px 12px rgba(0, 0, 0, 0.03)}.cp-channel-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(64px, 1fr));gap:10px;width:100%}.cp-channel-field{display:flex;flex-direction:column;gap:6px;align-items:center}.cp-channel-field .cp-channel-label{font-size:10px;font-weight:700;color:var(--text-muted, #94a3b8);margin-bottom:2px}.cp-channel-field ui-input{width:100%;--ui-input-text-align:center}.cp-text-input{--ui-input-text-align:left}.cp-input-field-wrap{display:flex;flex-direction:column;gap:0;flex:1}.cp-channel-col{display:flex;flex-direction:column;gap:0;flex:1}.cp-field-error{display:block;font-size:11px;font-weight:600;color:var(--color-danger, #ef4444);margin-top:5px;padding:3px 8px;background:rgba(239, 68, 68, 0.08);border-radius:6px;border-left:2px solid var(--color-danger, #ef4444);animation:cp-field-error-in 0.25s ease, cp-shake 0.3s ease}@keyframes cp-field-error-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes cp-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}:host(.cp-variant-hue) .cp-panel{padding-block:12px}:host(.cp-variant-hue) .cp-row{margin-bottom:12px}:host(.cp-variant-input) .cp-panel{padding:12px}:host(.cp-variant-input) .cp-name-display,:host(.cp-variant-input) .cp-text-input{min-height:36px}.cp-name-display{width:100%;border:1.5px solid var(--border-subtle, #f3f4f6);background:var(--bg-primary, #f9fafb);border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;color:var(--text-secondary, #4b5563);box-sizing:border-box}.cp-swatches{display:flex;flex-wrap:wrap;gap:6px}.cp-swatch{width:22px;height:22px;border-radius:6px;border:2px solid transparent;cursor:pointer;transition:transform 0.1s, border-color 0.15s, box-shadow 0.15s;padding:0;margin:0;outline:none;box-sizing:border-box;flex-shrink:0}.cp-swatch:hover{transform:scale(1.15)}.cp-swatch.cp-swatch-active{border-color:var(--bg-primary, #ffffff);box-shadow:0 0 0 1px var(--bg-primary, #ffffff), 0 0 0 3px var(--swatch-color, var(--color-primary, #10b981))}'}},[577,"ui-color-picker",{value:[1025],label:[1],showHex:[4,"show-hex"],showRgb:[4,"show-rgb"],showRgba:[4,"show-rgba"],showHsl:[4,"show-hsl"],showHsla:[4,"show-hsla"],formats:[1],showAlpha:[4,"show-alpha"],showSwatches:[4,"show-swatches"],swatches:[1],format:[1],disabled:[4],inline:[4],size:[1],name:[1],required:[4],showRecent:[4,"show-recent"],showEyeDropper:[4,"show-eye-dropper"],showColorName:[4,"show-color-name"],showGradient:[4,"show-gradient"],variant:[1],compact:[4],isOpen:[32],hue:[32],saturation:[32],lightness:[32],alpha:[32],hexInput:[32],isInvalid:[32],invalidField:[32],recentColors:[32],isGradientMode:[32],gradientStops:[32],activeStopIndex:[32],enabledFormatsSet:[32],dropdownStyle:[32]},void 0,{formats:[{handleFormatsChange:0}],isOpen:[{handleIsOpenChange:0}],value:[{valueChanged:0}]}]),u=d,b=function(){"undefined"!=typeof customElements&&["ui-color-picker","ui-badge","ui-button","ui-icon","ui-input","ui-loader","ui-range-slider"].forEach((t=>{switch(t){case"ui-color-picker":customElements.get(a(t))||customElements.define(a(t),d);break;case"ui-badge":customElements.get(a(t))||h();break;case"ui-button":customElements.get(a(t))||o();break;case"ui-icon":customElements.get(a(t))||n();break;case"ui-input":customElements.get(a(t))||l();break;case"ui-loader":customElements.get(a(t))||c();break;case"ui-range-slider":customElements.get(a(t))||p()}}))};export{u as UiColorPicker,b as defineCustomElement}