@xlabs-store/core 0.0.1

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 (1398) hide show
  1. package/LICENSE +21 -0
  2. package/components/index.d.ts +35 -0
  3. package/components/index.js +1 -0
  4. package/components/p-5c86X8JO.js +1 -0
  5. package/components/p-6KpqCGp9.js +1 -0
  6. package/components/p-ADwHM_jT.js +1 -0
  7. package/components/p-AgSyA7Ia.js +1 -0
  8. package/components/p-B-7Hwizp.js +1 -0
  9. package/components/p-B-ClGFfy.js +1 -0
  10. package/components/p-B4R9Mtmk.js +1 -0
  11. package/components/p-B4rO7Sgt.js +1 -0
  12. package/components/p-B5Syz0fw.js +1 -0
  13. package/components/p-B6p-mzW-.js +1 -0
  14. package/components/p-B8SZP5Xz.js +1 -0
  15. package/components/p-BBGHXZqR.js +1 -0
  16. package/components/p-BHLvuyOq.js +1 -0
  17. package/components/p-BM-ap7lt.js +1 -0
  18. package/components/p-BOCR5Zk0.js +1 -0
  19. package/components/p-BPeosvTA.js +1 -0
  20. package/components/p-BRBrLtOz.js +1 -0
  21. package/components/p-BSRP2TGa.js +1 -0
  22. package/components/p-BUjRcJoK.js +1 -0
  23. package/components/p-BVeQ5W_G.js +1 -0
  24. package/components/p-BVnVlCcd.js +1 -0
  25. package/components/p-BZQcq9R_.js +1 -0
  26. package/components/p-BeIFU-wn.js +1 -0
  27. package/components/p-BkEgl31q.js +1 -0
  28. package/components/p-BkPJ1Whr.js +1 -0
  29. package/components/p-BkevSugc.js +1 -0
  30. package/components/p-BkiOFW3H.js +1 -0
  31. package/components/p-BskMfHyY.js +1 -0
  32. package/components/p-Bu2JqZs8.js +1 -0
  33. package/components/p-BvjR2Q5Q.js +1 -0
  34. package/components/p-Bz7MhZ4K.js +1 -0
  35. package/components/p-C3gvR6nN.js +1 -0
  36. package/components/p-C70KKm8p.js +1 -0
  37. package/components/p-C7csgUoA.js +1 -0
  38. package/components/p-CAPfC5Vn.js +1 -0
  39. package/components/p-CEBSDVyp.js +1 -0
  40. package/components/p-CFB6xkAX.js +1 -0
  41. package/components/p-CGIxdOEm.js +1 -0
  42. package/components/p-CGYOWZnh.js +1 -0
  43. package/components/p-CHRrsVXB.js +1 -0
  44. package/components/p-CKUzvJue.js +1 -0
  45. package/components/p-CKVSyuIH.js +1 -0
  46. package/components/p-COpzIi1n.js +1 -0
  47. package/components/p-CRBPzT4B.js +1 -0
  48. package/components/p-CSfrs76m.js +1 -0
  49. package/components/p-C_ZBjXFP.js +1 -0
  50. package/components/p-Cd919NAP.js +1 -0
  51. package/components/p-Ce32Mo_Q.js +1 -0
  52. package/components/p-Ce5L9qbY.js +1 -0
  53. package/components/p-CeBfFEIa.js +1 -0
  54. package/components/p-CfhgoXyB.js +1 -0
  55. package/components/p-Ck6SW8G3.js +1 -0
  56. package/components/p-Co3Y9VjQ.js +1 -0
  57. package/components/p-D66tF8_2.js +1 -0
  58. package/components/p-D7ijqXRY.js +1 -0
  59. package/components/p-D7n-26Q5.js +1 -0
  60. package/components/p-D8ew7Rgv.js +1 -0
  61. package/components/p-DBk4T-b-.js +1 -0
  62. package/components/p-DD-W_fMF.js +1 -0
  63. package/components/p-DElCk9ta.js +1 -0
  64. package/components/p-DEumEVI3.js +1 -0
  65. package/components/p-DGqQ8PT4.js +1 -0
  66. package/components/p-DJ1WhSJ4.js +1 -0
  67. package/components/p-DOxXxhXb.js +1 -0
  68. package/components/p-DRa4o4c6.js +1 -0
  69. package/components/p-DTlSrH8_.js +1 -0
  70. package/components/p-DTvD0UO5.js +1 -0
  71. package/components/p-DVz50Dd3.js +1 -0
  72. package/components/p-DZFphzg1.js +1 -0
  73. package/components/p-DZPUUptR.js +1 -0
  74. package/components/p-D_xaGiZU.js +1 -0
  75. package/components/p-DaL42JUi.js +1 -0
  76. package/components/p-DbRpEXwX.js +1 -0
  77. package/components/p-DcRlYBIl.js +1 -0
  78. package/components/p-Dg0xgMke.js +1 -0
  79. package/components/p-Dgxy93Bg.js +1 -0
  80. package/components/p-Dky_8i8S.js +1 -0
  81. package/components/p-DlwlBBr4.js +1 -0
  82. package/components/p-DoTf8yXn.js +1 -0
  83. package/components/p-DphUq6Z5.js +1 -0
  84. package/components/p-DsgWQbJY.js +1 -0
  85. package/components/p-Dx3yBe39.js +1 -0
  86. package/components/p-DxKMnrS8.js +1 -0
  87. package/components/p-O88oQkR1.js +1 -0
  88. package/components/p-PlUkLT0A.js +1 -0
  89. package/components/p-QTSiPk0I.js +1 -0
  90. package/components/p-TC9DZAbC.js +1 -0
  91. package/components/p-XBF88YT_.js +1 -0
  92. package/components/p-bVsOg7S9.js +1 -0
  93. package/components/p-ccpcKv5U.js +1 -0
  94. package/components/p-en06CSUT.js +1 -0
  95. package/components/p-g6ZBqIze.js +1 -0
  96. package/components/p-noTpj1Kh.js +1 -0
  97. package/components/x-address.d.ts +11 -0
  98. package/components/x-address.js +1 -0
  99. package/components/x-affix.d.ts +11 -0
  100. package/components/x-affix.js +1 -0
  101. package/components/x-alert.d.ts +11 -0
  102. package/components/x-alert.js +1 -0
  103. package/components/x-anchor-link.d.ts +11 -0
  104. package/components/x-anchor-link.js +1 -0
  105. package/components/x-anchor.d.ts +11 -0
  106. package/components/x-anchor.js +1 -0
  107. package/components/x-app.d.ts +11 -0
  108. package/components/x-app.js +1 -0
  109. package/components/x-auto-complete-dropdown-content.d.ts +11 -0
  110. package/components/x-auto-complete-dropdown-content.js +1 -0
  111. package/components/x-auto-complete.d.ts +11 -0
  112. package/components/x-auto-complete.js +1 -0
  113. package/components/x-avatar.d.ts +11 -0
  114. package/components/x-avatar.js +1 -0
  115. package/components/x-back-top.d.ts +11 -0
  116. package/components/x-back-top.js +1 -0
  117. package/components/x-badge.d.ts +11 -0
  118. package/components/x-badge.js +1 -0
  119. package/components/x-breadcrumb-item.d.ts +11 -0
  120. package/components/x-breadcrumb-item.js +1 -0
  121. package/components/x-breadcrumb.d.ts +11 -0
  122. package/components/x-breadcrumb.js +1 -0
  123. package/components/x-button.d.ts +11 -0
  124. package/components/x-button.js +1 -0
  125. package/components/x-captcha.d.ts +11 -0
  126. package/components/x-captcha.js +1 -0
  127. package/components/x-card.d.ts +11 -0
  128. package/components/x-card.js +1 -0
  129. package/components/x-carousel.d.ts +11 -0
  130. package/components/x-carousel.js +1 -0
  131. package/components/x-cascader-dropdown-content.d.ts +11 -0
  132. package/components/x-cascader-dropdown-content.js +1 -0
  133. package/components/x-cascader.d.ts +11 -0
  134. package/components/x-cascader.js +1 -0
  135. package/components/x-checkbox.d.ts +11 -0
  136. package/components/x-checkbox.js +1 -0
  137. package/components/x-col.d.ts +11 -0
  138. package/components/x-col.js +1 -0
  139. package/components/x-collapse-panel.d.ts +11 -0
  140. package/components/x-collapse-panel.js +1 -0
  141. package/components/x-collapse.d.ts +11 -0
  142. package/components/x-collapse.js +1 -0
  143. package/components/x-color-picker-panel.d.ts +11 -0
  144. package/components/x-color-picker-panel.js +1 -0
  145. package/components/x-color-picker.d.ts +11 -0
  146. package/components/x-color-picker.js +1 -0
  147. package/components/x-comment.d.ts +11 -0
  148. package/components/x-comment.js +1 -0
  149. package/components/x-content.d.ts +11 -0
  150. package/components/x-content.js +1 -0
  151. package/components/x-date-picker-dropdown-content.d.ts +11 -0
  152. package/components/x-date-picker-dropdown-content.js +1 -0
  153. package/components/x-date-picker.d.ts +11 -0
  154. package/components/x-date-picker.js +1 -0
  155. package/components/x-descriptions-item.d.ts +11 -0
  156. package/components/x-descriptions-item.js +1 -0
  157. package/components/x-descriptions.d.ts +11 -0
  158. package/components/x-descriptions.js +1 -0
  159. package/components/x-divider.d.ts +11 -0
  160. package/components/x-divider.js +1 -0
  161. package/components/x-drawer-content.d.ts +11 -0
  162. package/components/x-drawer-content.js +1 -0
  163. package/components/x-drawer.d.ts +11 -0
  164. package/components/x-drawer.js +1 -0
  165. package/components/x-dropdown-content.d.ts +11 -0
  166. package/components/x-dropdown-content.js +1 -0
  167. package/components/x-dropdown.d.ts +11 -0
  168. package/components/x-dropdown.js +1 -0
  169. package/components/x-editor.d.ts +11 -0
  170. package/components/x-editor.js +1 -0
  171. package/components/x-empty.d.ts +11 -0
  172. package/components/x-empty.js +1 -0
  173. package/components/x-finder.d.ts +11 -0
  174. package/components/x-finder.js +1 -0
  175. package/components/x-flex.d.ts +11 -0
  176. package/components/x-flex.js +1 -0
  177. package/components/x-float-button.d.ts +11 -0
  178. package/components/x-float-button.js +1 -0
  179. package/components/x-footer.d.ts +11 -0
  180. package/components/x-footer.js +1 -0
  181. package/components/x-form-builder.d.ts +11 -0
  182. package/components/x-form-builder.js +1 -0
  183. package/components/x-form-item.d.ts +11 -0
  184. package/components/x-form-item.js +1 -0
  185. package/components/x-form.d.ts +11 -0
  186. package/components/x-form.js +1 -0
  187. package/components/x-header.d.ts +11 -0
  188. package/components/x-header.js +1 -0
  189. package/components/x-icon.d.ts +11 -0
  190. package/components/x-icon.js +1 -0
  191. package/components/x-image.d.ts +11 -0
  192. package/components/x-image.js +1 -0
  193. package/components/x-infinite-scroll.d.ts +11 -0
  194. package/components/x-infinite-scroll.js +1 -0
  195. package/components/x-input-number.d.ts +11 -0
  196. package/components/x-input-number.js +1 -0
  197. package/components/x-input.d.ts +11 -0
  198. package/components/x-input.js +1 -0
  199. package/components/x-layout.d.ts +11 -0
  200. package/components/x-layout.js +1 -0
  201. package/components/x-list-item.d.ts +11 -0
  202. package/components/x-list-item.js +1 -0
  203. package/components/x-list.d.ts +11 -0
  204. package/components/x-list.js +1 -0
  205. package/components/x-mentions.d.ts +11 -0
  206. package/components/x-mentions.js +1 -0
  207. package/components/x-menu-divider.d.ts +11 -0
  208. package/components/x-menu-divider.js +1 -0
  209. package/components/x-menu-item-group.d.ts +11 -0
  210. package/components/x-menu-item-group.js +1 -0
  211. package/components/x-menu-item.d.ts +11 -0
  212. package/components/x-menu-item.js +1 -0
  213. package/components/x-menu-submenu.d.ts +11 -0
  214. package/components/x-menu-submenu.js +1 -0
  215. package/components/x-menu.d.ts +11 -0
  216. package/components/x-menu.js +1 -0
  217. package/components/x-message.d.ts +11 -0
  218. package/components/x-message.js +1 -0
  219. package/components/x-modal-content.d.ts +11 -0
  220. package/components/x-modal-content.js +1 -0
  221. package/components/x-modal.d.ts +11 -0
  222. package/components/x-modal.js +1 -0
  223. package/components/x-notification.d.ts +11 -0
  224. package/components/x-notification.js +1 -0
  225. package/components/x-page-header.d.ts +11 -0
  226. package/components/x-page-header.js +1 -0
  227. package/components/x-pagination.d.ts +11 -0
  228. package/components/x-pagination.js +1 -0
  229. package/components/x-popconfirm-content.d.ts +11 -0
  230. package/components/x-popconfirm-content.js +1 -0
  231. package/components/x-popconfirm.d.ts +11 -0
  232. package/components/x-popconfirm.js +1 -0
  233. package/components/x-popover-content.d.ts +11 -0
  234. package/components/x-popover-content.js +1 -0
  235. package/components/x-popover.d.ts +11 -0
  236. package/components/x-popover.js +1 -0
  237. package/components/x-progress.d.ts +11 -0
  238. package/components/x-progress.js +1 -0
  239. package/components/x-qr-code.d.ts +11 -0
  240. package/components/x-qr-code.js +1 -0
  241. package/components/x-radio-group.d.ts +11 -0
  242. package/components/x-radio-group.js +1 -0
  243. package/components/x-radio.d.ts +11 -0
  244. package/components/x-radio.js +1 -0
  245. package/components/x-range-picker-dropdown-content.d.ts +11 -0
  246. package/components/x-range-picker-dropdown-content.js +1 -0
  247. package/components/x-range-picker.d.ts +11 -0
  248. package/components/x-range-picker.js +1 -0
  249. package/components/x-rate.d.ts +11 -0
  250. package/components/x-rate.js +1 -0
  251. package/components/x-result.d.ts +11 -0
  252. package/components/x-result.js +1 -0
  253. package/components/x-row.d.ts +11 -0
  254. package/components/x-row.js +1 -0
  255. package/components/x-segmented.d.ts +11 -0
  256. package/components/x-segmented.js +1 -0
  257. package/components/x-select-dropdown-content.d.ts +11 -0
  258. package/components/x-select-dropdown-content.js +1 -0
  259. package/components/x-select-option.d.ts +11 -0
  260. package/components/x-select-option.js +1 -0
  261. package/components/x-select.d.ts +11 -0
  262. package/components/x-select.js +1 -0
  263. package/components/x-sider.d.ts +11 -0
  264. package/components/x-sider.js +1 -0
  265. package/components/x-skeleton.d.ts +11 -0
  266. package/components/x-skeleton.js +1 -0
  267. package/components/x-slider.d.ts +11 -0
  268. package/components/x-slider.js +1 -0
  269. package/components/x-space.d.ts +11 -0
  270. package/components/x-space.js +1 -0
  271. package/components/x-spin.d.ts +11 -0
  272. package/components/x-spin.js +1 -0
  273. package/components/x-splitter-panel.d.ts +11 -0
  274. package/components/x-splitter-panel.js +1 -0
  275. package/components/x-splitter.d.ts +11 -0
  276. package/components/x-splitter.js +1 -0
  277. package/components/x-statistic.d.ts +11 -0
  278. package/components/x-statistic.js +1 -0
  279. package/components/x-step.d.ts +11 -0
  280. package/components/x-step.js +1 -0
  281. package/components/x-steps.d.ts +11 -0
  282. package/components/x-steps.js +1 -0
  283. package/components/x-switch.d.ts +11 -0
  284. package/components/x-switch.js +1 -0
  285. package/components/x-tab-pane.d.ts +11 -0
  286. package/components/x-tab-pane.js +1 -0
  287. package/components/x-table-cell.d.ts +11 -0
  288. package/components/x-table-cell.js +1 -0
  289. package/components/x-table-row.d.ts +11 -0
  290. package/components/x-table-row.js +1 -0
  291. package/components/x-table.d.ts +11 -0
  292. package/components/x-table.js +1 -0
  293. package/components/x-tabs.d.ts +11 -0
  294. package/components/x-tabs.js +1 -0
  295. package/components/x-tag.d.ts +11 -0
  296. package/components/x-tag.js +1 -0
  297. package/components/x-textarea.d.ts +11 -0
  298. package/components/x-textarea.js +1 -0
  299. package/components/x-time-picker-dropdown-content.d.ts +11 -0
  300. package/components/x-time-picker-dropdown-content.js +1 -0
  301. package/components/x-time-picker.d.ts +11 -0
  302. package/components/x-time-picker.js +1 -0
  303. package/components/x-timeline-item.d.ts +11 -0
  304. package/components/x-timeline-item.js +1 -0
  305. package/components/x-timeline.d.ts +11 -0
  306. package/components/x-timeline.js +1 -0
  307. package/components/x-tooltip-content.d.ts +11 -0
  308. package/components/x-tooltip-content.js +1 -0
  309. package/components/x-tooltip.d.ts +11 -0
  310. package/components/x-tooltip.js +1 -0
  311. package/components/x-tour-panel.d.ts +11 -0
  312. package/components/x-tour-panel.js +1 -0
  313. package/components/x-tour.d.ts +11 -0
  314. package/components/x-tour.js +1 -0
  315. package/components/x-transfer.d.ts +11 -0
  316. package/components/x-transfer.js +1 -0
  317. package/components/x-tree-select-dropdown-content.d.ts +11 -0
  318. package/components/x-tree-select-dropdown-content.js +1 -0
  319. package/components/x-tree-select.d.ts +11 -0
  320. package/components/x-tree-select.js +1 -0
  321. package/components/x-tree.d.ts +11 -0
  322. package/components/x-tree.js +1 -0
  323. package/components/x-typography.d.ts +11 -0
  324. package/components/x-typography.js +1 -0
  325. package/components/x-upload.d.ts +11 -0
  326. package/components/x-upload.js +1 -0
  327. package/components/x-virtual-scroll.d.ts +11 -0
  328. package/components/x-virtual-scroll.js +1 -0
  329. package/components/x-workflow-builder.d.ts +11 -0
  330. package/components/x-workflow-builder.js +1 -0
  331. package/components/x-workflow.d.ts +11 -0
  332. package/components/x-workflow.js +1 -0
  333. package/dist/cjs/abstract-control-C4D0eNCC.js +277 -0
  334. package/dist/cjs/config-BP9bROYD.js +63 -0
  335. package/dist/cjs/index-C7sKs9A2.js +2170 -0
  336. package/dist/cjs/index.cjs.js +14 -0
  337. package/dist/cjs/loader.cjs.js +12 -0
  338. package/dist/cjs/locale.service-Cz-aZQnr.js +8203 -0
  339. package/dist/cjs/modal-service-BtAF0mFq.js +399 -0
  340. package/dist/cjs/notification-service-m6I5U9aG.js +602 -0
  341. package/dist/cjs/portal-controller-CtYVbhXL.js +504 -0
  342. package/dist/cjs/schema-builder-CYnX7lKi.js +1505 -0
  343. package/dist/cjs/tree.service-fxLOCSpD.js +339 -0
  344. package/dist/cjs/types-DQ-V76ZQ.js +255 -0
  345. package/dist/cjs/x-address_14.cjs.entry.js +12577 -0
  346. package/dist/cjs/x-affix.cjs.entry.js +182 -0
  347. package/dist/cjs/x-alert_11.cjs.entry.js +3239 -0
  348. package/dist/cjs/x-anchor-link.cjs.entry.js +67 -0
  349. package/dist/cjs/x-anchor.cjs.entry.js +158 -0
  350. package/dist/cjs/x-app.cjs.entry.js +137 -0
  351. package/dist/cjs/x-auto-complete-dropdown-content.cjs.entry.js +69 -0
  352. package/dist/cjs/x-avatar.cjs.entry.js +269 -0
  353. package/dist/cjs/x-back-top.cjs.entry.js +89 -0
  354. package/dist/cjs/x-breadcrumb_5.cjs.entry.js +1554 -0
  355. package/dist/cjs/x-button.cjs.entry.js +174 -0
  356. package/dist/cjs/x-card_12.cjs.entry.js +1386 -0
  357. package/dist/cjs/x-carousel.cjs.entry.js +147 -0
  358. package/dist/cjs/x-cascader-dropdown-content.cjs.entry.js +364 -0
  359. package/dist/cjs/x-checkbox_5.cjs.entry.js +1376 -0
  360. package/dist/cjs/x-collapse-panel.cjs.entry.js +243 -0
  361. package/dist/cjs/x-collapse.cjs.entry.js +291 -0
  362. package/dist/cjs/x-color-picker-panel_2.cjs.entry.js +873 -0
  363. package/dist/cjs/x-color-picker_9.cjs.entry.js +3085 -0
  364. package/dist/cjs/x-comment.cjs.entry.js +189 -0
  365. package/dist/cjs/x-date-picker-dropdown-content.cjs.entry.js +757 -0
  366. package/dist/cjs/x-descriptions-item.cjs.entry.js +108 -0
  367. package/dist/cjs/x-drawer-content.cjs.entry.js +197 -0
  368. package/dist/cjs/x-drawer.cjs.entry.js +294 -0
  369. package/dist/cjs/x-dropdown_2.cjs.entry.js +735 -0
  370. package/dist/cjs/x-empty.cjs.entry.js +64 -0
  371. package/dist/cjs/x-finder.cjs.entry.js +647 -0
  372. package/dist/cjs/x-form-builder.cjs.entry.js +807 -0
  373. package/dist/cjs/x-icon.cjs.entry.js +144 -0
  374. package/dist/cjs/x-infinite-scroll.cjs.entry.js +129 -0
  375. package/dist/cjs/x-list-item.cjs.entry.js +27 -0
  376. package/dist/cjs/x-list.cjs.entry.js +138 -0
  377. package/dist/cjs/x-mentions.cjs.entry.js +275 -0
  378. package/dist/cjs/x-menu-divider.cjs.entry.js +49 -0
  379. package/dist/cjs/x-menu-item-group.cjs.entry.js +149 -0
  380. package/dist/cjs/x-menu-submenu.cjs.entry.js +373 -0
  381. package/dist/cjs/x-message.cjs.entry.js +219 -0
  382. package/dist/cjs/x-modal-content.cjs.entry.js +217 -0
  383. package/dist/cjs/x-notification.cjs.entry.js +325 -0
  384. package/dist/cjs/x-page-header.cjs.entry.js +67 -0
  385. package/dist/cjs/x-popconfirm-content.cjs.entry.js +72 -0
  386. package/dist/cjs/x-popconfirm.cjs.entry.js +181 -0
  387. package/dist/cjs/x-progress.cjs.entry.js +136 -0
  388. package/dist/cjs/x-qr-code.cjs.entry.js +446 -0
  389. package/dist/cjs/x-range-picker-dropdown-content.cjs.entry.js +821 -0
  390. package/dist/cjs/x-select_2.cjs.entry.js +1316 -0
  391. package/dist/cjs/x-skeleton.cjs.entry.js +75 -0
  392. package/dist/cjs/x-spin.cjs.entry.js +62 -0
  393. package/dist/cjs/x-splitter-panel.cjs.entry.js +91 -0
  394. package/dist/cjs/x-splitter.cjs.entry.js +612 -0
  395. package/dist/cjs/x-statistic.cjs.entry.js +104 -0
  396. package/dist/cjs/x-step.cjs.entry.js +179 -0
  397. package/dist/cjs/x-steps.cjs.entry.js +439 -0
  398. package/dist/cjs/x-tab-pane.cjs.entry.js +73 -0
  399. package/dist/cjs/x-table-cell.cjs.entry.js +45 -0
  400. package/dist/cjs/x-table-row.cjs.entry.js +85 -0
  401. package/dist/cjs/x-tabs.cjs.entry.js +609 -0
  402. package/dist/cjs/x-time-picker-dropdown-content.cjs.entry.js +389 -0
  403. package/dist/cjs/x-timeline-item.cjs.entry.js +50 -0
  404. package/dist/cjs/x-timeline.cjs.entry.js +52 -0
  405. package/dist/cjs/x-tour-panel.cjs.entry.js +89 -0
  406. package/dist/cjs/x-tour.cjs.entry.js +344 -0
  407. package/dist/cjs/x-tree-select-dropdown-content.cjs.entry.js +439 -0
  408. package/dist/cjs/x-virtual-scroll.cjs.entry.js +203 -0
  409. package/dist/cjs/x-workflow-builder.cjs.entry.js +366 -0
  410. package/dist/cjs/xlabs-store.cjs.js +24 -0
  411. package/dist/collection/collection-manifest.json +130 -0
  412. package/dist/collection/components/x-address/vietnam-data.js +28 -0
  413. package/dist/collection/components/x-address/x-address.css +367 -0
  414. package/dist/collection/components/x-address/x-address.js +403 -0
  415. package/dist/collection/components/x-affix/x-affix.css +27 -0
  416. package/dist/collection/components/x-affix/x-affix.js +299 -0
  417. package/dist/collection/components/x-alert/x-alert.css +475 -0
  418. package/dist/collection/components/x-alert/x-alert.js +273 -0
  419. package/dist/collection/components/x-anchor/x-anchor.css +74 -0
  420. package/dist/collection/components/x-anchor/x-anchor.js +371 -0
  421. package/dist/collection/components/x-anchor-link/x-anchor-link.css +43 -0
  422. package/dist/collection/components/x-anchor-link/x-anchor-link.js +145 -0
  423. package/dist/collection/components/x-app/x-app.css +14 -0
  424. package/dist/collection/components/x-app/x-app.js +308 -0
  425. package/dist/collection/components/x-auto-complete/auto-complete-dropdown-content/auto-complete-dropdown-content.css +410 -0
  426. package/dist/collection/components/x-auto-complete/auto-complete-dropdown-content/auto-complete-dropdown-content.js +166 -0
  427. package/dist/collection/components/x-auto-complete/auto-complete-dropdown-content/index.js +1 -0
  428. package/dist/collection/components/x-auto-complete/auto-complete-dropdown-content/types.js +1 -0
  429. package/dist/collection/components/x-auto-complete/types.js +61 -0
  430. package/dist/collection/components/x-auto-complete/x-auto-complete.css +535 -0
  431. package/dist/collection/components/x-auto-complete/x-auto-complete.js +1829 -0
  432. package/dist/collection/components/x-avatar/types.js +1 -0
  433. package/dist/collection/components/x-avatar/x-avatar.css +128 -0
  434. package/dist/collection/components/x-avatar/x-avatar.js +533 -0
  435. package/dist/collection/components/x-back-top/x-back-top.css +56 -0
  436. package/dist/collection/components/x-back-top/x-back-top.js +148 -0
  437. package/dist/collection/components/x-badge/types.js +1 -0
  438. package/dist/collection/components/x-badge/x-badge.css +233 -0
  439. package/dist/collection/components/x-badge/x-badge.js +618 -0
  440. package/dist/collection/components/x-breadcrumb/x-breadcrumb.css +44 -0
  441. package/dist/collection/components/x-breadcrumb/x-breadcrumb.js +96 -0
  442. package/dist/collection/components/x-breadcrumb-item/x-breadcrumb-item.css +63 -0
  443. package/dist/collection/components/x-breadcrumb-item/x-breadcrumb-item.js +147 -0
  444. package/dist/collection/components/x-button/x-button.css +278 -0
  445. package/dist/collection/components/x-button/x-button.js +488 -0
  446. package/dist/collection/components/x-captcha/x-captcha.css +125 -0
  447. package/dist/collection/components/x-captcha/x-captcha.js +408 -0
  448. package/dist/collection/components/x-card/x-card.css +523 -0
  449. package/dist/collection/components/x-card/x-card.js +389 -0
  450. package/dist/collection/components/x-carousel/x-carousel.css +417 -0
  451. package/dist/collection/components/x-carousel/x-carousel.js +257 -0
  452. package/dist/collection/components/x-cascader/cascader-dropdown-content/cascader-dropdown-content.css +529 -0
  453. package/dist/collection/components/x-cascader/cascader-dropdown-content/cascader-dropdown-content.js +771 -0
  454. package/dist/collection/components/x-cascader/cascader-dropdown-content/index.js +2 -0
  455. package/dist/collection/components/x-cascader/cascader-dropdown-content/types.js +1 -0
  456. package/dist/collection/components/x-cascader/types.js +1 -0
  457. package/dist/collection/components/x-cascader/x-cascader.css +691 -0
  458. package/dist/collection/components/x-cascader/x-cascader.js +1841 -0
  459. package/dist/collection/components/x-checkbox/types.js +1 -0
  460. package/dist/collection/components/x-checkbox/x-checkbox.css +541 -0
  461. package/dist/collection/components/x-checkbox/x-checkbox.js +681 -0
  462. package/dist/collection/components/x-col/x-col.css +1704 -0
  463. package/dist/collection/components/x-col/x-col.js +479 -0
  464. package/dist/collection/components/x-collapse/types.js +1 -0
  465. package/dist/collection/components/x-collapse/x-collapse.css +384 -0
  466. package/dist/collection/components/x-collapse/x-collapse.js +579 -0
  467. package/dist/collection/components/x-collapse-panel/x-collapse-panel.css +486 -0
  468. package/dist/collection/components/x-collapse-panel/x-collapse-panel.js +500 -0
  469. package/dist/collection/components/x-color-picker/types.js +251 -0
  470. package/dist/collection/components/x-color-picker/x-color-picker-panel.css +310 -0
  471. package/dist/collection/components/x-color-picker/x-color-picker-panel.js +575 -0
  472. package/dist/collection/components/x-color-picker/x-color-picker.css +446 -0
  473. package/dist/collection/components/x-color-picker/x-color-picker.js +1209 -0
  474. package/dist/collection/components/x-comment/types.js +1 -0
  475. package/dist/collection/components/x-comment/x-comment.css +442 -0
  476. package/dist/collection/components/x-comment/x-comment.js +306 -0
  477. package/dist/collection/components/x-content/types.js +1 -0
  478. package/dist/collection/components/x-content/x-content.css +361 -0
  479. package/dist/collection/components/x-content/x-content.js +402 -0
  480. package/dist/collection/components/x-date-picker/date-picker-dropdown-content/date-picker-dropdown-content.css +691 -0
  481. package/dist/collection/components/x-date-picker/date-picker-dropdown-content/date-picker-dropdown-content.js +1496 -0
  482. package/dist/collection/components/x-date-picker/date-picker-dropdown-content/index.js +1 -0
  483. package/dist/collection/components/x-date-picker/date-picker-dropdown-content/types.js +1 -0
  484. package/dist/collection/components/x-date-picker/types.js +1 -0
  485. package/dist/collection/components/x-date-picker/x-date-picker.css +804 -0
  486. package/dist/collection/components/x-date-picker/x-date-picker.js +2110 -0
  487. package/dist/collection/components/x-descriptions/types.js +1 -0
  488. package/dist/collection/components/x-descriptions/x-descriptions.css +417 -0
  489. package/dist/collection/components/x-descriptions/x-descriptions.js +494 -0
  490. package/dist/collection/components/x-descriptions-item/x-descriptions-item.css +387 -0
  491. package/dist/collection/components/x-descriptions-item/x-descriptions-item.js +238 -0
  492. package/dist/collection/components/x-divider/x-divider.css +417 -0
  493. package/dist/collection/components/x-divider/x-divider.js +263 -0
  494. package/dist/collection/components/x-drawer/x-drawer.css +333 -0
  495. package/dist/collection/components/x-drawer/x-drawer.js +623 -0
  496. package/dist/collection/components/x-drawer-content/x-drawer-content.css +481 -0
  497. package/dist/collection/components/x-drawer-content/x-drawer-content.js +579 -0
  498. package/dist/collection/components/x-dropdown/dropdown-content/dropdown-content.css +673 -0
  499. package/dist/collection/components/x-dropdown/dropdown-content/dropdown-content.js +294 -0
  500. package/dist/collection/components/x-dropdown/dropdown-content/types.js +1 -0
  501. package/dist/collection/components/x-dropdown/types.js +1 -0
  502. package/dist/collection/components/x-dropdown/x-dropdown.css +669 -0
  503. package/dist/collection/components/x-dropdown/x-dropdown.js +1004 -0
  504. package/dist/collection/components/x-editor/editor-history.js +118 -0
  505. package/dist/collection/components/x-editor/editor-normalizer.js +263 -0
  506. package/dist/collection/components/x-editor/editor-parser.js +326 -0
  507. package/dist/collection/components/x-editor/editor-selection.js +415 -0
  508. package/dist/collection/components/x-editor/types.js +33 -0
  509. package/dist/collection/components/x-editor/x-editor.css +599 -0
  510. package/dist/collection/components/x-editor/x-editor.js +1636 -0
  511. package/dist/collection/components/x-empty/x-empty.css +357 -0
  512. package/dist/collection/components/x-empty/x-empty.js +117 -0
  513. package/dist/collection/components/x-finder/services/finder-service.js +250 -0
  514. package/dist/collection/components/x-finder/types.js +1 -0
  515. package/dist/collection/components/x-finder/x-finder.css +633 -0
  516. package/dist/collection/components/x-finder/x-finder.js +540 -0
  517. package/dist/collection/components/x-flex/x-flex.css +344 -0
  518. package/dist/collection/components/x-flex/x-flex.js +285 -0
  519. package/dist/collection/components/x-float-button/x-float-button.css +389 -0
  520. package/dist/collection/components/x-float-button/x-float-button.js +265 -0
  521. package/dist/collection/components/x-footer/x-footer.css +346 -0
  522. package/dist/collection/components/x-footer/x-footer.js +29 -0
  523. package/dist/collection/components/x-form/x-form.css +365 -0
  524. package/dist/collection/components/x-form/x-form.js +355 -0
  525. package/dist/collection/components/x-form-builder/services/apis/api-client.js +240 -0
  526. package/dist/collection/components/x-form-builder/services/constants/index.js +33 -0
  527. package/dist/collection/components/x-form-builder/services/forms/abstract-control.js +175 -0
  528. package/dist/collection/components/x-form-builder/services/forms/form-array.js +92 -0
  529. package/dist/collection/components/x-form-builder/services/forms/form-builder.js +40 -0
  530. package/dist/collection/components/x-form-builder/services/forms/form-control.js +33 -0
  531. package/dist/collection/components/x-form-builder/services/forms/form-group.js +150 -0
  532. package/dist/collection/components/x-form-builder/services/forms/index.js +7 -0
  533. package/dist/collection/components/x-form-builder/services/forms/types.js +1 -0
  534. package/dist/collection/components/x-form-builder/services/forms/validators.js +83 -0
  535. package/dist/collection/components/x-form-builder/services/schema/condition-builder.js +337 -0
  536. package/dist/collection/components/x-form-builder/services/schema/default-registry.js +440 -0
  537. package/dist/collection/components/x-form-builder/services/schema/form-mapping.js +176 -0
  538. package/dist/collection/components/x-form-builder/services/schema/form-registry.js +30 -0
  539. package/dist/collection/components/x-form-builder/services/schema/schema-actions.js +3 -0
  540. package/dist/collection/components/x-form-builder/services/schema/schema-builder.js +52 -0
  541. package/dist/collection/components/x-form-builder/services/schema/schema-validator.js +53 -0
  542. package/dist/collection/components/x-form-builder/types/api/api-common-types.js +1 -0
  543. package/dist/collection/components/x-form-builder/types/api/api-interfaces.js +1 -0
  544. package/dist/collection/components/x-form-builder/types/api/index.js +2 -0
  545. package/dist/collection/components/x-form-builder/types/common/common-types.js +1 -0
  546. package/dist/collection/components/x-form-builder/types/common/condition-types.js +1 -0
  547. package/dist/collection/components/x-form-builder/types/common/field-types-enum.js +1 -0
  548. package/dist/collection/components/x-form-builder/types/common/index.js +7 -0
  549. package/dist/collection/components/x-form-builder/types/common/shared-interfaces.js +1 -0
  550. package/dist/collection/components/x-form-builder/types/common/validation-types.js +1 -0
  551. package/dist/collection/components/x-form-builder/types/common/value-types.js +1 -0
  552. package/dist/collection/components/x-form-builder/types/event/event-types.js +1 -0
  553. package/dist/collection/components/x-form-builder/types/event/index.js +1 -0
  554. package/dist/collection/components/x-form-builder/types/fields/advanced-fields.js +1 -0
  555. package/dist/collection/components/x-form-builder/types/fields/base-field.js +1 -0
  556. package/dist/collection/components/x-form-builder/types/fields/datetime-file-fields.js +1 -0
  557. package/dist/collection/components/x-form-builder/types/fields/display-fields.js +1 -0
  558. package/dist/collection/components/x-form-builder/types/fields/form-field-union.js +1 -0
  559. package/dist/collection/components/x-form-builder/types/fields/index.js +9 -0
  560. package/dist/collection/components/x-form-builder/types/fields/input-fields.js +1 -0
  561. package/dist/collection/components/x-form-builder/types/fields/layout-fields.js +1 -0
  562. package/dist/collection/components/x-form-builder/types/fields/selection-fields.js +10 -0
  563. package/dist/collection/components/x-form-builder/types/fields/special-input-fields.js +1 -0
  564. package/dist/collection/components/x-form-builder/types/form/events-types.js +1 -0
  565. package/dist/collection/components/x-form-builder/types/form/form-config.js +50 -0
  566. package/dist/collection/components/x-form-builder/types/form/index.js +2 -0
  567. package/dist/collection/components/x-form-builder/types/form/schema-types.js +1 -0
  568. package/dist/collection/components/x-form-builder/types/index.js +4 -0
  569. package/dist/collection/components/x-form-builder/utils/condition-engine.js +118 -0
  570. package/dist/collection/components/x-form-builder/utils/utils.js +138 -0
  571. package/dist/collection/components/x-form-builder/utils/values.js +36 -0
  572. package/dist/collection/components/x-form-builder/x-form-builder.css +3 -0
  573. package/dist/collection/components/x-form-builder/x-form-builder.js +1017 -0
  574. package/dist/collection/components/x-form-item/x-form-item.css +564 -0
  575. package/dist/collection/components/x-form-item/x-form-item.js +538 -0
  576. package/dist/collection/components/x-header/x-header.css +344 -0
  577. package/dist/collection/components/x-header/x-header.js +29 -0
  578. package/dist/collection/components/x-icon/fonts/xlabs-outlined.woff2 +0 -0
  579. package/dist/collection/components/x-icon/fonts/xlabs-rounded.woff2 +0 -0
  580. package/dist/collection/components/x-icon/fonts/xlabs-solided.woff2 +0 -0
  581. package/dist/collection/components/x-icon/icons.js +2716 -0
  582. package/dist/collection/components/x-icon/x-icon.css +378 -0
  583. package/dist/collection/components/x-icon/x-icon.js +353 -0
  584. package/dist/collection/components/x-image/types.js +1 -0
  585. package/dist/collection/components/x-image/x-image.css +556 -0
  586. package/dist/collection/components/x-image/x-image.js +628 -0
  587. package/dist/collection/components/x-infinite-scroll/x-infinite-scroll.css +345 -0
  588. package/dist/collection/components/x-infinite-scroll/x-infinite-scroll.js +294 -0
  589. package/dist/collection/components/x-input/types.js +1 -0
  590. package/dist/collection/components/x-input/x-input.css +640 -0
  591. package/dist/collection/components/x-input/x-input.js +1449 -0
  592. package/dist/collection/components/x-input-number/types.js +96 -0
  593. package/dist/collection/components/x-input-number/x-input-number.css +612 -0
  594. package/dist/collection/components/x-input-number/x-input-number.js +1488 -0
  595. package/dist/collection/components/x-layout/x-layout.css +361 -0
  596. package/dist/collection/components/x-layout/x-layout.js +188 -0
  597. package/dist/collection/components/x-list/x-list.css +382 -0
  598. package/dist/collection/components/x-list/x-list.js +373 -0
  599. package/dist/collection/components/x-list-item/x-list-item.css +351 -0
  600. package/dist/collection/components/x-list-item/x-list-item.js +31 -0
  601. package/dist/collection/components/x-mentions/types.js +1 -0
  602. package/dist/collection/components/x-mentions/x-mentions.css +388 -0
  603. package/dist/collection/components/x-mentions/x-mentions.js +528 -0
  604. package/dist/collection/components/x-menu/types.js +1 -0
  605. package/dist/collection/components/x-menu/x-menu.css +78 -0
  606. package/dist/collection/components/x-menu/x-menu.js +793 -0
  607. package/dist/collection/components/x-menu-divider/types.js +1 -0
  608. package/dist/collection/components/x-menu-divider/x-menu-divider.css +31 -0
  609. package/dist/collection/components/x-menu-divider/x-menu-divider.js +126 -0
  610. package/dist/collection/components/x-menu-item/types.js +1 -0
  611. package/dist/collection/components/x-menu-item/x-menu-item.css +183 -0
  612. package/dist/collection/components/x-menu-item/x-menu-item.js +449 -0
  613. package/dist/collection/components/x-menu-item-group/types.js +1 -0
  614. package/dist/collection/components/x-menu-item-group/x-menu-item-group.css +45 -0
  615. package/dist/collection/components/x-menu-item-group/x-menu-item-group.js +299 -0
  616. package/dist/collection/components/x-menu-submenu/types.js +1 -0
  617. package/dist/collection/components/x-menu-submenu/x-menu-submenu.css +236 -0
  618. package/dist/collection/components/x-menu-submenu/x-menu-submenu.js +775 -0
  619. package/dist/collection/components/x-message/message-service.js +263 -0
  620. package/dist/collection/components/x-message/types.js +1 -0
  621. package/dist/collection/components/x-message/x-message.css +402 -0
  622. package/dist/collection/components/x-message/x-message.js +487 -0
  623. package/dist/collection/components/x-modal/modal-service.js +402 -0
  624. package/dist/collection/components/x-modal/modal-service.types.js +1 -0
  625. package/dist/collection/components/x-modal/x-modal.css +468 -0
  626. package/dist/collection/components/x-modal/x-modal.js +683 -0
  627. package/dist/collection/components/x-modal-content/index.js +1 -0
  628. package/dist/collection/components/x-modal-content/types.js +1 -0
  629. package/dist/collection/components/x-modal-content/x-modal-content.css +749 -0
  630. package/dist/collection/components/x-modal-content/x-modal-content.js +701 -0
  631. package/dist/collection/components/x-notification/notification-service.js +335 -0
  632. package/dist/collection/components/x-notification/types.js +1 -0
  633. package/dist/collection/components/x-notification/x-notification.css +486 -0
  634. package/dist/collection/components/x-notification/x-notification.js +788 -0
  635. package/dist/collection/components/x-page-header/x-page-header.css +406 -0
  636. package/dist/collection/components/x-page-header/x-page-header.js +159 -0
  637. package/dist/collection/components/x-pagination/types.js +1 -0
  638. package/dist/collection/components/x-pagination/x-pagination.css +705 -0
  639. package/dist/collection/components/x-pagination/x-pagination.js +1241 -0
  640. package/dist/collection/components/x-popconfirm/popconfirm-content/popconfirm-content.css +456 -0
  641. package/dist/collection/components/x-popconfirm/popconfirm-content/popconfirm-content.js +244 -0
  642. package/dist/collection/components/x-popconfirm/x-popconfirm.css +412 -0
  643. package/dist/collection/components/x-popconfirm/x-popconfirm.js +355 -0
  644. package/dist/collection/components/x-popover/popover-content/popover-content.css +437 -0
  645. package/dist/collection/components/x-popover/popover-content/popover-content.js +261 -0
  646. package/dist/collection/components/x-popover/x-popover.css +442 -0
  647. package/dist/collection/components/x-popover/x-popover.js +390 -0
  648. package/dist/collection/components/x-portal/debug.js +42 -0
  649. package/dist/collection/components/x-portal/index.js +1 -0
  650. package/dist/collection/components/x-portal/portal-controller.js +146 -0
  651. package/dist/collection/components/x-portal/positioning.js +332 -0
  652. package/dist/collection/components/x-portal/types.js +1 -0
  653. package/dist/collection/components/x-portal/x-portal.js +21 -0
  654. package/dist/collection/components/x-progress/x-progress.css +424 -0
  655. package/dist/collection/components/x-progress/x-progress.js +326 -0
  656. package/dist/collection/components/x-qr-code/x-qr-code.css +37 -0
  657. package/dist/collection/components/x-qr-code/x-qr-code.js +292 -0
  658. package/dist/collection/components/x-radio/types.js +1 -0
  659. package/dist/collection/components/x-radio/x-radio.css +523 -0
  660. package/dist/collection/components/x-radio/x-radio.js +689 -0
  661. package/dist/collection/components/x-radio-group/types.js +1 -0
  662. package/dist/collection/components/x-radio-group/x-radio-group.css +326 -0
  663. package/dist/collection/components/x-radio-group/x-radio-group.js +531 -0
  664. package/dist/collection/components/x-range-picker/range-picker-dropdown-content/index.js +1 -0
  665. package/dist/collection/components/x-range-picker/range-picker-dropdown-content/range-picker-dropdown-content.css +609 -0
  666. package/dist/collection/components/x-range-picker/range-picker-dropdown-content/range-picker-dropdown-content.js +1497 -0
  667. package/dist/collection/components/x-range-picker/range-picker-dropdown-content/types.js +1 -0
  668. package/dist/collection/components/x-range-picker/types.js +1 -0
  669. package/dist/collection/components/x-range-picker/x-range-picker.css +775 -0
  670. package/dist/collection/components/x-range-picker/x-range-picker.js +1883 -0
  671. package/dist/collection/components/x-rate/x-rate.css +396 -0
  672. package/dist/collection/components/x-rate/x-rate.js +445 -0
  673. package/dist/collection/components/x-result/types.js +1 -0
  674. package/dist/collection/components/x-result/x-result.css +434 -0
  675. package/dist/collection/components/x-result/x-result.js +376 -0
  676. package/dist/collection/components/x-row/x-row.css +345 -0
  677. package/dist/collection/components/x-row/x-row.js +196 -0
  678. package/dist/collection/components/x-segmented/types.js +1 -0
  679. package/dist/collection/components/x-segmented/x-segmented.css +407 -0
  680. package/dist/collection/components/x-segmented/x-segmented.js +414 -0
  681. package/dist/collection/components/x-select/select-dropdown-content/index.js +1 -0
  682. package/dist/collection/components/x-select/select-dropdown-content/select-dropdown-content.css +827 -0
  683. package/dist/collection/components/x-select/select-dropdown-content/select-dropdown-content.js +163 -0
  684. package/dist/collection/components/x-select/select-dropdown-content/types.js +1 -0
  685. package/dist/collection/components/x-select/types.js +9 -0
  686. package/dist/collection/components/x-select/x-select.css +823 -0
  687. package/dist/collection/components/x-select/x-select.js +2247 -0
  688. package/dist/collection/components/x-select-option/x-select-option.css +379 -0
  689. package/dist/collection/components/x-select-option/x-select-option.js +207 -0
  690. package/dist/collection/components/x-sider/x-sider.css +379 -0
  691. package/dist/collection/components/x-sider/x-sider.js +379 -0
  692. package/dist/collection/components/x-skeleton/x-skeleton.css +400 -0
  693. package/dist/collection/components/x-skeleton/x-skeleton.js +221 -0
  694. package/dist/collection/components/x-slider/types.js +1 -0
  695. package/dist/collection/components/x-slider/x-slider.css +511 -0
  696. package/dist/collection/components/x-slider/x-slider.js +785 -0
  697. package/dist/collection/components/x-space/x-space.css +339 -0
  698. package/dist/collection/components/x-space/x-space.js +228 -0
  699. package/dist/collection/components/x-spin/x-spin.css +465 -0
  700. package/dist/collection/components/x-spin/x-spin.js +142 -0
  701. package/dist/collection/components/x-splitter/types.js +1 -0
  702. package/dist/collection/components/x-splitter/x-splitter.css +181 -0
  703. package/dist/collection/components/x-splitter/x-splitter.js +884 -0
  704. package/dist/collection/components/x-splitter-panel/types.js +1 -0
  705. package/dist/collection/components/x-splitter-panel/x-splitter-panel.css +25 -0
  706. package/dist/collection/components/x-splitter-panel/x-splitter-panel.js +292 -0
  707. package/dist/collection/components/x-statistic/x-statistic.css +366 -0
  708. package/dist/collection/components/x-statistic/x-statistic.js +291 -0
  709. package/dist/collection/components/x-step/types.js +1 -0
  710. package/dist/collection/components/x-step/x-step.css +801 -0
  711. package/dist/collection/components/x-step/x-step.js +539 -0
  712. package/dist/collection/components/x-steps/types.js +1 -0
  713. package/dist/collection/components/x-steps/x-steps.css +830 -0
  714. package/dist/collection/components/x-steps/x-steps.js +1032 -0
  715. package/dist/collection/components/x-switch/types.js +1 -0
  716. package/dist/collection/components/x-switch/x-switch.css +463 -0
  717. package/dist/collection/components/x-switch/x-switch.js +356 -0
  718. package/dist/collection/components/x-tab-pane/x-tab-pane.css +337 -0
  719. package/dist/collection/components/x-tab-pane/x-tab-pane.js +243 -0
  720. package/dist/collection/components/x-table/column-util.js +87 -0
  721. package/dist/collection/components/x-table/types.js +1 -0
  722. package/dist/collection/components/x-table/x-table.css +898 -0
  723. package/dist/collection/components/x-table/x-table.js +2464 -0
  724. package/dist/collection/components/x-table-cell/x-table-cell.css +337 -0
  725. package/dist/collection/components/x-table-cell/x-table-cell.js +167 -0
  726. package/dist/collection/components/x-table-row/x-table-row.css +336 -0
  727. package/dist/collection/components/x-table-row/x-table-row.js +172 -0
  728. package/dist/collection/components/x-tabs/types.js +1 -0
  729. package/dist/collection/components/x-tabs/x-tabs.css +664 -0
  730. package/dist/collection/components/x-tabs/x-tabs.js +1264 -0
  731. package/dist/collection/components/x-tag/types.js +1 -0
  732. package/dist/collection/components/x-tag/x-tag.css +1047 -0
  733. package/dist/collection/components/x-tag/x-tag.js +535 -0
  734. package/dist/collection/components/x-textarea/x-textarea.css +446 -0
  735. package/dist/collection/components/x-textarea/x-textarea.js +553 -0
  736. package/dist/collection/components/x-time-picker/time-picker-dropdown-content/index.js +1 -0
  737. package/dist/collection/components/x-time-picker/time-picker-dropdown-content/time-picker-dropdown-content.css +409 -0
  738. package/dist/collection/components/x-time-picker/time-picker-dropdown-content/time-picker-dropdown-content.js +855 -0
  739. package/dist/collection/components/x-time-picker/time-picker-dropdown-content/types.js +1 -0
  740. package/dist/collection/components/x-time-picker/types.js +1 -0
  741. package/dist/collection/components/x-time-picker/x-time-picker.css +653 -0
  742. package/dist/collection/components/x-time-picker/x-time-picker.js +1454 -0
  743. package/dist/collection/components/x-timeline/x-timeline.css +404 -0
  744. package/dist/collection/components/x-timeline/x-timeline.js +129 -0
  745. package/dist/collection/components/x-timeline-item/x-timeline-item.css +400 -0
  746. package/dist/collection/components/x-timeline-item/x-timeline-item.js +125 -0
  747. package/dist/collection/components/x-tooltip/types.js +1 -0
  748. package/dist/collection/components/x-tooltip/x-tooltip.css +528 -0
  749. package/dist/collection/components/x-tooltip/x-tooltip.js +1006 -0
  750. package/dist/collection/components/x-tooltip-content/index.js +1 -0
  751. package/dist/collection/components/x-tooltip-content/types.js +1 -0
  752. package/dist/collection/components/x-tooltip-content/x-tooltip-content.css +217 -0
  753. package/dist/collection/components/x-tooltip-content/x-tooltip-content.js +238 -0
  754. package/dist/collection/components/x-tour/index.js +1 -0
  755. package/dist/collection/components/x-tour/types.js +1 -0
  756. package/dist/collection/components/x-tour/x-tour-panel.css +467 -0
  757. package/dist/collection/components/x-tour/x-tour-panel.js +265 -0
  758. package/dist/collection/components/x-tour/x-tour.css +353 -0
  759. package/dist/collection/components/x-tour/x-tour.js +555 -0
  760. package/dist/collection/components/x-transfer/types.js +1 -0
  761. package/dist/collection/components/x-transfer/x-transfer.css +626 -0
  762. package/dist/collection/components/x-transfer/x-transfer.js +956 -0
  763. package/dist/collection/components/x-tree/types.js +1 -0
  764. package/dist/collection/components/x-tree/x-tree.css +703 -0
  765. package/dist/collection/components/x-tree/x-tree.js +1793 -0
  766. package/dist/collection/components/x-tree-select/tree-select-dropdown-content/index.js +2 -0
  767. package/dist/collection/components/x-tree-select/tree-select-dropdown-content/tree-select-dropdown-content.css +635 -0
  768. package/dist/collection/components/x-tree-select/tree-select-dropdown-content/tree-select-dropdown-content.js +890 -0
  769. package/dist/collection/components/x-tree-select/tree-select-dropdown-content/types.js +1 -0
  770. package/dist/collection/components/x-tree-select/types.js +2 -0
  771. package/dist/collection/components/x-tree-select/x-tree-select.css +790 -0
  772. package/dist/collection/components/x-tree-select/x-tree-select.js +2750 -0
  773. package/dist/collection/components/x-typography/x-typography.css +409 -0
  774. package/dist/collection/components/x-typography/x-typography.js +431 -0
  775. package/dist/collection/components/x-upload/types.js +1 -0
  776. package/dist/collection/components/x-upload/x-upload.css +774 -0
  777. package/dist/collection/components/x-upload/x-upload.js +1452 -0
  778. package/dist/collection/components/x-virtual-scroll/x-virtual-scroll.css +79 -0
  779. package/dist/collection/components/x-virtual-scroll/x-virtual-scroll.js +478 -0
  780. package/dist/collection/components/x-workflow/x-workflow.css +486 -0
  781. package/dist/collection/components/x-workflow/x-workflow.js +1403 -0
  782. package/dist/collection/components/x-workflow-builder/x-workflow-builder.css +538 -0
  783. package/dist/collection/components/x-workflow-builder/x-workflow-builder.js +468 -0
  784. package/dist/collection/index.js +5 -0
  785. package/dist/collection/locales/index.js +2 -0
  786. package/dist/collection/locales/languages/ar_EG.js +120 -0
  787. package/dist/collection/locales/languages/az_AZ.js +120 -0
  788. package/dist/collection/locales/languages/bg_BG.js +120 -0
  789. package/dist/collection/locales/languages/bn_BD.js +120 -0
  790. package/dist/collection/locales/languages/by_BY.js +120 -0
  791. package/dist/collection/locales/languages/ca_ES.js +120 -0
  792. package/dist/collection/locales/languages/cs_CZ.js +120 -0
  793. package/dist/collection/locales/languages/da_DK.js +120 -0
  794. package/dist/collection/locales/languages/de_DE.js +120 -0
  795. package/dist/collection/locales/languages/el_GR.js +120 -0
  796. package/dist/collection/locales/languages/en_AU.js +120 -0
  797. package/dist/collection/locales/languages/en_GB.js +120 -0
  798. package/dist/collection/locales/languages/en_US.js +120 -0
  799. package/dist/collection/locales/languages/es_ES.js +120 -0
  800. package/dist/collection/locales/languages/et_EE.js +120 -0
  801. package/dist/collection/locales/languages/fa_IR.js +120 -0
  802. package/dist/collection/locales/languages/fi_FI.js +120 -0
  803. package/dist/collection/locales/languages/fr_BE.js +120 -0
  804. package/dist/collection/locales/languages/fr_CA.js +120 -0
  805. package/dist/collection/locales/languages/fr_FR.js +120 -0
  806. package/dist/collection/locales/languages/ga_IE.js +120 -0
  807. package/dist/collection/locales/languages/gl_ES.js +120 -0
  808. package/dist/collection/locales/languages/he_IL.js +120 -0
  809. package/dist/collection/locales/languages/hi_IN.js +120 -0
  810. package/dist/collection/locales/languages/hr_HR.js +120 -0
  811. package/dist/collection/locales/languages/hu_HU.js +120 -0
  812. package/dist/collection/locales/languages/hy_AM.js +120 -0
  813. package/dist/collection/locales/languages/id_ID.js +120 -0
  814. package/dist/collection/locales/languages/index.js +137 -0
  815. package/dist/collection/locales/languages/is_IS.js +120 -0
  816. package/dist/collection/locales/languages/it_IT.js +120 -0
  817. package/dist/collection/locales/languages/ja_JP.js +120 -0
  818. package/dist/collection/locales/languages/ka_GE.js +120 -0
  819. package/dist/collection/locales/languages/kk_KZ.js +120 -0
  820. package/dist/collection/locales/languages/km_KH.js +120 -0
  821. package/dist/collection/locales/languages/kmr_IQ.js +120 -0
  822. package/dist/collection/locales/languages/kn_IN.js +120 -0
  823. package/dist/collection/locales/languages/ko_KR.js +120 -0
  824. package/dist/collection/locales/languages/ku_IQ.js +120 -0
  825. package/dist/collection/locales/languages/lt_LT.js +120 -0
  826. package/dist/collection/locales/languages/lv_LV.js +120 -0
  827. package/dist/collection/locales/languages/mk_MK.js +120 -0
  828. package/dist/collection/locales/languages/ml_IN.js +120 -0
  829. package/dist/collection/locales/languages/mn_MN.js +120 -0
  830. package/dist/collection/locales/languages/ms_MY.js +120 -0
  831. package/dist/collection/locales/languages/nb_NO.js +120 -0
  832. package/dist/collection/locales/languages/ne_NP.js +120 -0
  833. package/dist/collection/locales/languages/nl_BE.js +120 -0
  834. package/dist/collection/locales/languages/nl_NL.js +120 -0
  835. package/dist/collection/locales/languages/pl_PL.js +120 -0
  836. package/dist/collection/locales/languages/pt_BR.js +120 -0
  837. package/dist/collection/locales/languages/pt_PT.js +120 -0
  838. package/dist/collection/locales/languages/ro_RO.js +120 -0
  839. package/dist/collection/locales/languages/ru_RU.js +120 -0
  840. package/dist/collection/locales/languages/sk_SK.js +120 -0
  841. package/dist/collection/locales/languages/sl_SI.js +120 -0
  842. package/dist/collection/locales/languages/sr_RS.js +120 -0
  843. package/dist/collection/locales/languages/sv_SE.js +120 -0
  844. package/dist/collection/locales/languages/ta_IN.js +120 -0
  845. package/dist/collection/locales/languages/th_TH.js +120 -0
  846. package/dist/collection/locales/languages/tr_TR.js +120 -0
  847. package/dist/collection/locales/languages/uk_UA.js +120 -0
  848. package/dist/collection/locales/languages/ur_PK.js +120 -0
  849. package/dist/collection/locales/languages/vi_VN.js +120 -0
  850. package/dist/collection/locales/languages/zh_CN.js +120 -0
  851. package/dist/collection/locales/languages/zh_HK.js +120 -0
  852. package/dist/collection/locales/languages/zh_TW.js +120 -0
  853. package/dist/collection/locales/locale.service.js +179 -0
  854. package/dist/collection/types.js +11 -0
  855. package/dist/collection/utils/app-service.js +19 -0
  856. package/dist/collection/utils/cascader.service.js +142 -0
  857. package/dist/collection/utils/config.js +59 -0
  858. package/dist/collection/utils/form/core/abstract-control.js +273 -0
  859. package/dist/collection/utils/form/core/form-array.js +131 -0
  860. package/dist/collection/utils/form/core/form-builder.js +56 -0
  861. package/dist/collection/utils/form/core/form-control.js +69 -0
  862. package/dist/collection/utils/form/core/form-group.js +163 -0
  863. package/dist/collection/utils/form/frameworks.js +37 -0
  864. package/dist/collection/utils/form/types.js +1 -0
  865. package/dist/collection/utils/form/validators/validators.js +198 -0
  866. package/dist/collection/utils/index.js +3 -0
  867. package/dist/collection/utils/qr-code/cache/qr.cache.js +20 -0
  868. package/dist/collection/utils/qr-code/engine/qr.engine.js +130 -0
  869. package/dist/collection/utils/qr-code/engine/qr.gf.js +22 -0
  870. package/dist/collection/utils/qr-code/engine/qr.mask.js +54 -0
  871. package/dist/collection/utils/qr-code/engine/qr.rs.js +29 -0
  872. package/dist/collection/utils/qr-code/engine/qr.util.js +0 -0
  873. package/dist/collection/utils/qr-code/engine/qr.version.js +11 -0
  874. package/dist/collection/utils/qr-code/renderer/canvas.renderer.js +36 -0
  875. package/dist/collection/utils/qr-code/renderer/svg.renderer.js +33 -0
  876. package/dist/collection/utils/qr-code/worker/worker.manager.js +24 -0
  877. package/dist/collection/utils/table.service.js +150 -0
  878. package/dist/collection/utils/tree.service.js +335 -0
  879. package/dist/collection/utils/workflow/flow.service.js +382 -0
  880. package/dist/collection/utils/workflow/types.js +1 -0
  881. package/dist/esm/abstract-control-XBF88YT_.js +275 -0
  882. package/dist/esm/config-BPeosvTA.js +60 -0
  883. package/dist/esm/index-ig_mFsVk.js +2159 -0
  884. package/dist/esm/index.js +5 -0
  885. package/dist/esm/loader.js +10 -0
  886. package/dist/esm/locale.service-D66tF8_2.js +8199 -0
  887. package/dist/esm/modal-service-C_e0SaFZ.js +397 -0
  888. package/dist/esm/notification-service-DJTSPOq7.js +599 -0
  889. package/dist/esm/portal-controller-COpzIi1n.js +499 -0
  890. package/dist/esm/schema-builder-DBPGgJBx.js +1502 -0
  891. package/dist/esm/tree.service-Dgxy93Bg.js +337 -0
  892. package/dist/esm/types-C_QdJRdB.js +253 -0
  893. package/dist/esm/x-address_14.entry.js +12562 -0
  894. package/dist/esm/x-affix.entry.js +180 -0
  895. package/dist/esm/x-alert_11.entry.js +3227 -0
  896. package/dist/esm/x-anchor-link.entry.js +65 -0
  897. package/dist/esm/x-anchor.entry.js +156 -0
  898. package/dist/esm/x-app.entry.js +135 -0
  899. package/dist/esm/x-auto-complete-dropdown-content.entry.js +67 -0
  900. package/dist/esm/x-avatar.entry.js +267 -0
  901. package/dist/esm/x-back-top.entry.js +87 -0
  902. package/dist/esm/x-breadcrumb_5.entry.js +1548 -0
  903. package/dist/esm/x-button.entry.js +172 -0
  904. package/dist/esm/x-card_12.entry.js +1373 -0
  905. package/dist/esm/x-carousel.entry.js +145 -0
  906. package/dist/esm/x-cascader-dropdown-content.entry.js +362 -0
  907. package/dist/esm/x-checkbox_5.entry.js +1370 -0
  908. package/dist/esm/x-collapse-panel.entry.js +241 -0
  909. package/dist/esm/x-collapse.entry.js +289 -0
  910. package/dist/esm/x-color-picker-panel_2.entry.js +870 -0
  911. package/dist/esm/x-color-picker_9.entry.js +3075 -0
  912. package/dist/esm/x-comment.entry.js +187 -0
  913. package/dist/esm/x-date-picker-dropdown-content.entry.js +755 -0
  914. package/dist/esm/x-descriptions-item.entry.js +106 -0
  915. package/dist/esm/x-drawer-content.entry.js +195 -0
  916. package/dist/esm/x-drawer.entry.js +292 -0
  917. package/dist/esm/x-dropdown_2.entry.js +732 -0
  918. package/dist/esm/x-empty.entry.js +62 -0
  919. package/dist/esm/x-finder.entry.js +645 -0
  920. package/dist/esm/x-form-builder.entry.js +805 -0
  921. package/dist/esm/x-icon.entry.js +142 -0
  922. package/dist/esm/x-infinite-scroll.entry.js +127 -0
  923. package/dist/esm/x-list-item.entry.js +25 -0
  924. package/dist/esm/x-list.entry.js +136 -0
  925. package/dist/esm/x-mentions.entry.js +273 -0
  926. package/dist/esm/x-menu-divider.entry.js +47 -0
  927. package/dist/esm/x-menu-item-group.entry.js +147 -0
  928. package/dist/esm/x-menu-submenu.entry.js +371 -0
  929. package/dist/esm/x-message.entry.js +217 -0
  930. package/dist/esm/x-modal-content.entry.js +215 -0
  931. package/dist/esm/x-notification.entry.js +323 -0
  932. package/dist/esm/x-page-header.entry.js +65 -0
  933. package/dist/esm/x-popconfirm-content.entry.js +70 -0
  934. package/dist/esm/x-popconfirm.entry.js +179 -0
  935. package/dist/esm/x-progress.entry.js +134 -0
  936. package/dist/esm/x-qr-code.entry.js +444 -0
  937. package/dist/esm/x-range-picker-dropdown-content.entry.js +819 -0
  938. package/dist/esm/x-select_2.entry.js +1313 -0
  939. package/dist/esm/x-skeleton.entry.js +73 -0
  940. package/dist/esm/x-spin.entry.js +60 -0
  941. package/dist/esm/x-splitter-panel.entry.js +89 -0
  942. package/dist/esm/x-splitter.entry.js +610 -0
  943. package/dist/esm/x-statistic.entry.js +102 -0
  944. package/dist/esm/x-step.entry.js +177 -0
  945. package/dist/esm/x-steps.entry.js +437 -0
  946. package/dist/esm/x-tab-pane.entry.js +71 -0
  947. package/dist/esm/x-table-cell.entry.js +43 -0
  948. package/dist/esm/x-table-row.entry.js +83 -0
  949. package/dist/esm/x-tabs.entry.js +607 -0
  950. package/dist/esm/x-time-picker-dropdown-content.entry.js +387 -0
  951. package/dist/esm/x-timeline-item.entry.js +48 -0
  952. package/dist/esm/x-timeline.entry.js +50 -0
  953. package/dist/esm/x-tour-panel.entry.js +87 -0
  954. package/dist/esm/x-tour.entry.js +342 -0
  955. package/dist/esm/x-tree-select-dropdown-content.entry.js +437 -0
  956. package/dist/esm/x-virtual-scroll.entry.js +201 -0
  957. package/dist/esm/x-workflow-builder.entry.js +364 -0
  958. package/dist/esm/xlabs-store.js +20 -0
  959. package/dist/index.cjs.js +1 -0
  960. package/dist/index.js +1 -0
  961. package/dist/types/components/x-address/vietnam-data.d.ts +14 -0
  962. package/dist/types/components/x-address/x-address.d.ts +64 -0
  963. package/dist/types/components/x-affix/x-affix.d.ts +111 -0
  964. package/dist/types/components/x-alert/x-alert.d.ts +74 -0
  965. package/dist/types/components/x-anchor/x-anchor.d.ts +120 -0
  966. package/dist/types/components/x-anchor-link/x-anchor-link.d.ts +47 -0
  967. package/dist/types/components/x-app/x-app.d.ts +93 -0
  968. package/dist/types/components/x-auto-complete/auto-complete-dropdown-content/auto-complete-dropdown-content.d.ts +58 -0
  969. package/dist/types/components/x-auto-complete/auto-complete-dropdown-content/index.d.ts +2 -0
  970. package/dist/types/components/x-auto-complete/auto-complete-dropdown-content/types.d.ts +14 -0
  971. package/dist/types/components/x-auto-complete/types.d.ts +150 -0
  972. package/dist/types/components/x-auto-complete/x-auto-complete.d.ts +480 -0
  973. package/dist/types/components/x-avatar/types.d.ts +38 -0
  974. package/dist/types/components/x-avatar/x-avatar.d.ts +171 -0
  975. package/dist/types/components/x-back-top/x-back-top.d.ts +59 -0
  976. package/dist/types/components/x-badge/types.d.ts +23 -0
  977. package/dist/types/components/x-badge/x-badge.d.ts +184 -0
  978. package/dist/types/components/x-breadcrumb/x-breadcrumb.d.ts +43 -0
  979. package/dist/types/components/x-breadcrumb-item/x-breadcrumb-item.d.ts +43 -0
  980. package/dist/types/components/x-button/x-button.d.ts +121 -0
  981. package/dist/types/components/x-captcha/x-captcha.d.ts +78 -0
  982. package/dist/types/components/x-card/x-card.d.ts +139 -0
  983. package/dist/types/components/x-carousel/x-carousel.d.ts +104 -0
  984. package/dist/types/components/x-cascader/cascader-dropdown-content/cascader-dropdown-content.d.ts +255 -0
  985. package/dist/types/components/x-cascader/cascader-dropdown-content/index.d.ts +2 -0
  986. package/dist/types/components/x-cascader/cascader-dropdown-content/types.d.ts +20 -0
  987. package/dist/types/components/x-cascader/types.d.ts +143 -0
  988. package/dist/types/components/x-cascader/x-cascader.d.ts +520 -0
  989. package/dist/types/components/x-checkbox/types.d.ts +83 -0
  990. package/dist/types/components/x-checkbox/x-checkbox.d.ts +156 -0
  991. package/dist/types/components/x-col/x-col.d.ts +89 -0
  992. package/dist/types/components/x-collapse/types.d.ts +55 -0
  993. package/dist/types/components/x-collapse/x-collapse.d.ts +157 -0
  994. package/dist/types/components/x-collapse-panel/x-collapse-panel.d.ts +143 -0
  995. package/dist/types/components/x-color-picker/types.d.ts +135 -0
  996. package/dist/types/components/x-color-picker/x-color-picker-panel.d.ts +80 -0
  997. package/dist/types/components/x-color-picker/x-color-picker.d.ts +328 -0
  998. package/dist/types/components/x-comment/types.d.ts +20 -0
  999. package/dist/types/components/x-comment/x-comment.d.ts +111 -0
  1000. package/dist/types/components/x-content/types.d.ts +6 -0
  1001. package/dist/types/components/x-content/x-content.d.ts +64 -0
  1002. package/dist/types/components/x-date-picker/date-picker-dropdown-content/date-picker-dropdown-content.d.ts +376 -0
  1003. package/dist/types/components/x-date-picker/date-picker-dropdown-content/index.d.ts +2 -0
  1004. package/dist/types/components/x-date-picker/date-picker-dropdown-content/types.d.ts +61 -0
  1005. package/dist/types/components/x-date-picker/types.d.ts +28 -0
  1006. package/dist/types/components/x-date-picker/x-date-picker.d.ts +512 -0
  1007. package/dist/types/components/x-descriptions/types.d.ts +41 -0
  1008. package/dist/types/components/x-descriptions/x-descriptions.d.ts +141 -0
  1009. package/dist/types/components/x-descriptions-item/x-descriptions-item.d.ts +70 -0
  1010. package/dist/types/components/x-divider/x-divider.d.ts +82 -0
  1011. package/dist/types/components/x-drawer/x-drawer.d.ts +156 -0
  1012. package/dist/types/components/x-drawer-content/x-drawer-content.d.ts +142 -0
  1013. package/dist/types/components/x-dropdown/dropdown-content/dropdown-content.d.ts +83 -0
  1014. package/dist/types/components/x-dropdown/dropdown-content/types.d.ts +16 -0
  1015. package/dist/types/components/x-dropdown/types.d.ts +119 -0
  1016. package/dist/types/components/x-dropdown/x-dropdown.d.ts +292 -0
  1017. package/dist/types/components/x-editor/editor-history.d.ts +62 -0
  1018. package/dist/types/components/x-editor/editor-normalizer.d.ts +70 -0
  1019. package/dist/types/components/x-editor/editor-parser.d.ts +34 -0
  1020. package/dist/types/components/x-editor/editor-selection.d.ts +92 -0
  1021. package/dist/types/components/x-editor/types.d.ts +62 -0
  1022. package/dist/types/components/x-editor/x-editor.d.ts +279 -0
  1023. package/dist/types/components/x-empty/x-empty.d.ts +45 -0
  1024. package/dist/types/components/x-finder/services/finder-service.d.ts +38 -0
  1025. package/dist/types/components/x-finder/types.d.ts +63 -0
  1026. package/dist/types/components/x-finder/x-finder.d.ts +66 -0
  1027. package/dist/types/components/x-flex/x-flex.d.ts +62 -0
  1028. package/dist/types/components/x-float-button/x-float-button.d.ts +66 -0
  1029. package/dist/types/components/x-footer/x-footer.d.ts +11 -0
  1030. package/dist/types/components/x-form/x-form.d.ts +64 -0
  1031. package/dist/types/components/x-form-builder/services/apis/api-client.d.ts +63 -0
  1032. package/dist/types/components/x-form-builder/services/constants/index.d.ts +2 -0
  1033. package/dist/types/components/x-form-builder/services/forms/abstract-control.d.ts +59 -0
  1034. package/dist/types/components/x-form-builder/services/forms/form-array.d.ts +25 -0
  1035. package/dist/types/components/x-form-builder/services/forms/form-builder.d.ts +17 -0
  1036. package/dist/types/components/x-form-builder/services/forms/form-control.d.ts +14 -0
  1037. package/dist/types/components/x-form-builder/services/forms/form-group.d.ts +33 -0
  1038. package/dist/types/components/x-form-builder/services/forms/index.d.ts +11 -0
  1039. package/dist/types/components/x-form-builder/services/forms/types.d.ts +11 -0
  1040. package/dist/types/components/x-form-builder/services/forms/validators.d.ts +16 -0
  1041. package/dist/types/components/x-form-builder/services/schema/condition-builder.d.ts +39 -0
  1042. package/dist/types/components/x-form-builder/services/schema/default-registry.d.ts +1 -0
  1043. package/dist/types/components/x-form-builder/services/schema/form-mapping.d.ts +26 -0
  1044. package/dist/types/components/x-form-builder/services/schema/form-registry.d.ts +27 -0
  1045. package/dist/types/components/x-form-builder/services/schema/schema-actions.d.ts +3 -0
  1046. package/dist/types/components/x-form-builder/services/schema/schema-builder.d.ts +19 -0
  1047. package/dist/types/components/x-form-builder/services/schema/schema-validator.d.ts +9 -0
  1048. package/dist/types/components/x-form-builder/types/api/api-common-types.d.ts +5 -0
  1049. package/dist/types/components/x-form-builder/types/api/api-interfaces.d.ts +52 -0
  1050. package/dist/types/components/x-form-builder/types/api/index.d.ts +2 -0
  1051. package/dist/types/components/x-form-builder/types/common/common-types.d.ts +49 -0
  1052. package/dist/types/components/x-form-builder/types/common/condition-types.d.ts +53 -0
  1053. package/dist/types/components/x-form-builder/types/common/field-types-enum.d.ts +2 -0
  1054. package/dist/types/components/x-form-builder/types/common/index.d.ts +7 -0
  1055. package/dist/types/components/x-form-builder/types/common/shared-interfaces.d.ts +37 -0
  1056. package/dist/types/components/x-form-builder/types/common/validation-types.d.ts +36 -0
  1057. package/dist/types/components/x-form-builder/types/common/value-types.d.ts +15 -0
  1058. package/dist/types/components/x-form-builder/types/event/event-types.d.ts +16 -0
  1059. package/dist/types/components/x-form-builder/types/event/index.d.ts +1 -0
  1060. package/dist/types/components/x-form-builder/types/fields/advanced-fields.d.ts +125 -0
  1061. package/dist/types/components/x-form-builder/types/fields/base-field.d.ts +49 -0
  1062. package/dist/types/components/x-form-builder/types/fields/datetime-file-fields.d.ts +37 -0
  1063. package/dist/types/components/x-form-builder/types/fields/display-fields.d.ts +92 -0
  1064. package/dist/types/components/x-form-builder/types/fields/form-field-union.d.ts +9 -0
  1065. package/dist/types/components/x-form-builder/types/fields/index.d.ts +9 -0
  1066. package/dist/types/components/x-form-builder/types/fields/input-fields.d.ts +53 -0
  1067. package/dist/types/components/x-form-builder/types/fields/layout-fields.d.ts +55 -0
  1068. package/dist/types/components/x-form-builder/types/fields/selection-fields.d.ts +130 -0
  1069. package/dist/types/components/x-form-builder/types/fields/special-input-fields.d.ts +99 -0
  1070. package/dist/types/components/x-form-builder/types/form/events-types.d.ts +29 -0
  1071. package/dist/types/components/x-form-builder/types/form/form-config.d.ts +0 -0
  1072. package/dist/types/components/x-form-builder/types/form/index.d.ts +2 -0
  1073. package/dist/types/components/x-form-builder/types/form/schema-types.d.ts +134 -0
  1074. package/dist/types/components/x-form-builder/types/index.d.ts +4 -0
  1075. package/dist/types/components/x-form-builder/utils/condition-engine.d.ts +23 -0
  1076. package/dist/types/components/x-form-builder/utils/utils.d.ts +19 -0
  1077. package/dist/types/components/x-form-builder/utils/values.d.ts +8 -0
  1078. package/dist/types/components/x-form-builder/x-form-builder.d.ts +65 -0
  1079. package/dist/types/components/x-form-item/x-form-item.d.ts +94 -0
  1080. package/dist/types/components/x-header/x-header.d.ts +11 -0
  1081. package/dist/types/components/x-icon/icons.d.ts +2717 -0
  1082. package/dist/types/components/x-icon/x-icon.d.ts +89 -0
  1083. package/dist/types/components/x-image/types.d.ts +94 -0
  1084. package/dist/types/components/x-image/x-image.d.ts +150 -0
  1085. package/dist/types/components/x-infinite-scroll/x-infinite-scroll.d.ts +75 -0
  1086. package/dist/types/components/x-input/types.d.ts +14 -0
  1087. package/dist/types/components/x-input/x-input.d.ts +385 -0
  1088. package/dist/types/components/x-input-number/types.d.ts +98 -0
  1089. package/dist/types/components/x-input-number/x-input-number.d.ts +395 -0
  1090. package/dist/types/components/x-layout/x-layout.d.ts +61 -0
  1091. package/dist/types/components/x-list/x-list.d.ts +100 -0
  1092. package/dist/types/components/x-list-item/x-list-item.d.ts +13 -0
  1093. package/dist/types/components/x-mentions/types.d.ts +7 -0
  1094. package/dist/types/components/x-mentions/x-mentions.d.ts +159 -0
  1095. package/dist/types/components/x-menu/types.d.ts +83 -0
  1096. package/dist/types/components/x-menu/x-menu.d.ts +153 -0
  1097. package/dist/types/components/x-menu-divider/types.d.ts +6 -0
  1098. package/dist/types/components/x-menu-divider/x-menu-divider.d.ts +19 -0
  1099. package/dist/types/components/x-menu-item/types.d.ts +8 -0
  1100. package/dist/types/components/x-menu-item/x-menu-item.d.ts +80 -0
  1101. package/dist/types/components/x-menu-item-group/types.d.ts +6 -0
  1102. package/dist/types/components/x-menu-item-group/x-menu-item-group.d.ts +60 -0
  1103. package/dist/types/components/x-menu-submenu/types.d.ts +15 -0
  1104. package/dist/types/components/x-menu-submenu/x-menu-submenu.d.ts +135 -0
  1105. package/dist/types/components/x-message/message-service.d.ts +58 -0
  1106. package/dist/types/components/x-message/types.d.ts +90 -0
  1107. package/dist/types/components/x-message/x-message.d.ts +133 -0
  1108. package/dist/types/components/x-modal/modal-service.d.ts +6 -0
  1109. package/dist/types/components/x-modal/modal-service.types.d.ts +278 -0
  1110. package/dist/types/components/x-modal/x-modal.d.ts +160 -0
  1111. package/dist/types/components/x-modal-content/index.d.ts +1 -0
  1112. package/dist/types/components/x-modal-content/types.d.ts +83 -0
  1113. package/dist/types/components/x-modal-content/x-modal-content.d.ts +174 -0
  1114. package/dist/types/components/x-notification/notification-service.d.ts +83 -0
  1115. package/dist/types/components/x-notification/types.d.ts +112 -0
  1116. package/dist/types/components/x-notification/x-notification.d.ts +212 -0
  1117. package/dist/types/components/x-page-header/x-page-header.d.ts +51 -0
  1118. package/dist/types/components/x-pagination/types.d.ts +104 -0
  1119. package/dist/types/components/x-pagination/x-pagination.d.ts +274 -0
  1120. package/dist/types/components/x-popconfirm/popconfirm-content/popconfirm-content.d.ts +62 -0
  1121. package/dist/types/components/x-popconfirm/x-popconfirm.d.ts +97 -0
  1122. package/dist/types/components/x-popover/popover-content/popover-content.d.ts +71 -0
  1123. package/dist/types/components/x-popover/x-popover.d.ts +99 -0
  1124. package/dist/types/components/x-portal/debug.d.ts +5 -0
  1125. package/dist/types/components/x-portal/index.d.ts +2 -0
  1126. package/dist/types/components/x-portal/portal-controller.d.ts +20 -0
  1127. package/dist/types/components/x-portal/positioning.d.ts +102 -0
  1128. package/dist/types/components/x-portal/types.d.ts +43 -0
  1129. package/dist/types/components/x-portal/x-portal.d.ts +19 -0
  1130. package/dist/types/components/x-progress/x-progress.d.ts +85 -0
  1131. package/dist/types/components/x-qr-code/x-qr-code.d.ts +26 -0
  1132. package/dist/types/components/x-radio/types.d.ts +94 -0
  1133. package/dist/types/components/x-radio/x-radio.d.ts +186 -0
  1134. package/dist/types/components/x-radio-group/types.d.ts +20 -0
  1135. package/dist/types/components/x-radio-group/x-radio-group.d.ts +90 -0
  1136. package/dist/types/components/x-range-picker/range-picker-dropdown-content/index.d.ts +2 -0
  1137. package/dist/types/components/x-range-picker/range-picker-dropdown-content/range-picker-dropdown-content.d.ts +437 -0
  1138. package/dist/types/components/x-range-picker/range-picker-dropdown-content/types.d.ts +48 -0
  1139. package/dist/types/components/x-range-picker/types.d.ts +35 -0
  1140. package/dist/types/components/x-range-picker/x-range-picker.d.ts +457 -0
  1141. package/dist/types/components/x-rate/x-rate.d.ts +129 -0
  1142. package/dist/types/components/x-result/types.d.ts +45 -0
  1143. package/dist/types/components/x-result/x-result.d.ts +120 -0
  1144. package/dist/types/components/x-row/x-row.d.ts +44 -0
  1145. package/dist/types/components/x-segmented/types.d.ts +10 -0
  1146. package/dist/types/components/x-segmented/x-segmented.d.ts +128 -0
  1147. package/dist/types/components/x-select/select-dropdown-content/index.d.ts +2 -0
  1148. package/dist/types/components/x-select/select-dropdown-content/select-dropdown-content.d.ts +52 -0
  1149. package/dist/types/components/x-select/select-dropdown-content/types.d.ts +14 -0
  1150. package/dist/types/components/x-select/types.d.ts +41 -0
  1151. package/dist/types/components/x-select/x-select.d.ts +635 -0
  1152. package/dist/types/components/x-select-option/x-select-option.d.ts +51 -0
  1153. package/dist/types/components/x-sider/x-sider.d.ts +99 -0
  1154. package/dist/types/components/x-skeleton/x-skeleton.d.ts +54 -0
  1155. package/dist/types/components/x-slider/types.d.ts +1 -0
  1156. package/dist/types/components/x-slider/x-slider.d.ts +240 -0
  1157. package/dist/types/components/x-space/x-space.d.ts +54 -0
  1158. package/dist/types/components/x-spin/x-spin.d.ts +41 -0
  1159. package/dist/types/components/x-splitter/types.d.ts +41 -0
  1160. package/dist/types/components/x-splitter/x-splitter.d.ts +187 -0
  1161. package/dist/types/components/x-splitter-panel/types.d.ts +23 -0
  1162. package/dist/types/components/x-splitter-panel/x-splitter-panel.d.ts +67 -0
  1163. package/dist/types/components/x-statistic/x-statistic.d.ts +80 -0
  1164. package/dist/types/components/x-step/types.d.ts +14 -0
  1165. package/dist/types/components/x-step/x-step.d.ts +104 -0
  1166. package/dist/types/components/x-steps/types.d.ts +124 -0
  1167. package/dist/types/components/x-steps/x-steps.d.ts +270 -0
  1168. package/dist/types/components/x-switch/types.d.ts +5 -0
  1169. package/dist/types/components/x-switch/x-switch.d.ts +92 -0
  1170. package/dist/types/components/x-tab-pane/x-tab-pane.d.ts +55 -0
  1171. package/dist/types/components/x-table/column-util.d.ts +26 -0
  1172. package/dist/types/components/x-table/types.d.ts +386 -0
  1173. package/dist/types/components/x-table/x-table.d.ts +552 -0
  1174. package/dist/types/components/x-table-cell/x-table-cell.d.ts +27 -0
  1175. package/dist/types/components/x-table-row/x-table-row.d.ts +24 -0
  1176. package/dist/types/components/x-tabs/types.d.ts +190 -0
  1177. package/dist/types/components/x-tabs/x-tabs.d.ts +359 -0
  1178. package/dist/types/components/x-tag/types.d.ts +27 -0
  1179. package/dist/types/components/x-tag/x-tag.d.ts +148 -0
  1180. package/dist/types/components/x-textarea/x-textarea.d.ts +165 -0
  1181. package/dist/types/components/x-time-picker/time-picker-dropdown-content/index.d.ts +2 -0
  1182. package/dist/types/components/x-time-picker/time-picker-dropdown-content/time-picker-dropdown-content.d.ts +239 -0
  1183. package/dist/types/components/x-time-picker/time-picker-dropdown-content/types.d.ts +28 -0
  1184. package/dist/types/components/x-time-picker/types.d.ts +18 -0
  1185. package/dist/types/components/x-time-picker/x-time-picker.d.ts +378 -0
  1186. package/dist/types/components/x-timeline/x-timeline.d.ts +33 -0
  1187. package/dist/types/components/x-timeline-item/x-timeline-item.d.ts +33 -0
  1188. package/dist/types/components/x-tooltip/types.d.ts +53 -0
  1189. package/dist/types/components/x-tooltip/x-tooltip.d.ts +274 -0
  1190. package/dist/types/components/x-tooltip-content/index.d.ts +1 -0
  1191. package/dist/types/components/x-tooltip-content/types.d.ts +25 -0
  1192. package/dist/types/components/x-tooltip-content/x-tooltip-content.d.ts +57 -0
  1193. package/dist/types/components/x-tour/index.d.ts +1 -0
  1194. package/dist/types/components/x-tour/types.d.ts +71 -0
  1195. package/dist/types/components/x-tour/x-tour-panel.d.ts +73 -0
  1196. package/dist/types/components/x-tour/x-tour.d.ts +158 -0
  1197. package/dist/types/components/x-transfer/types.d.ts +89 -0
  1198. package/dist/types/components/x-transfer/x-transfer.d.ts +291 -0
  1199. package/dist/types/components/x-tree/types.d.ts +163 -0
  1200. package/dist/types/components/x-tree/x-tree.d.ts +406 -0
  1201. package/dist/types/components/x-tree-select/tree-select-dropdown-content/index.d.ts +2 -0
  1202. package/dist/types/components/x-tree-select/tree-select-dropdown-content/tree-select-dropdown-content.d.ts +268 -0
  1203. package/dist/types/components/x-tree-select/tree-select-dropdown-content/types.d.ts +24 -0
  1204. package/dist/types/components/x-tree-select/types.d.ts +100 -0
  1205. package/dist/types/components/x-tree-select/x-tree-select.d.ts +750 -0
  1206. package/dist/types/components/x-typography/x-typography.d.ts +89 -0
  1207. package/dist/types/components/x-upload/types.d.ts +177 -0
  1208. package/dist/types/components/x-upload/x-upload.d.ts +361 -0
  1209. package/dist/types/components/x-virtual-scroll/x-virtual-scroll.d.ts +127 -0
  1210. package/dist/types/components/x-workflow/x-workflow.d.ts +126 -0
  1211. package/dist/types/components/x-workflow-builder/x-workflow-builder.d.ts +69 -0
  1212. package/dist/types/components.d.ts +19048 -0
  1213. package/dist/types/index.d.ts +63 -0
  1214. package/dist/types/locales/index.d.ts +2 -0
  1215. package/dist/types/locales/languages/ar_EG.d.ts +119 -0
  1216. package/dist/types/locales/languages/az_AZ.d.ts +119 -0
  1217. package/dist/types/locales/languages/bg_BG.d.ts +119 -0
  1218. package/dist/types/locales/languages/bn_BD.d.ts +119 -0
  1219. package/dist/types/locales/languages/by_BY.d.ts +119 -0
  1220. package/dist/types/locales/languages/ca_ES.d.ts +119 -0
  1221. package/dist/types/locales/languages/cs_CZ.d.ts +119 -0
  1222. package/dist/types/locales/languages/da_DK.d.ts +119 -0
  1223. package/dist/types/locales/languages/de_DE.d.ts +119 -0
  1224. package/dist/types/locales/languages/el_GR.d.ts +119 -0
  1225. package/dist/types/locales/languages/en_AU.d.ts +119 -0
  1226. package/dist/types/locales/languages/en_GB.d.ts +119 -0
  1227. package/dist/types/locales/languages/en_US.d.ts +119 -0
  1228. package/dist/types/locales/languages/es_ES.d.ts +119 -0
  1229. package/dist/types/locales/languages/et_EE.d.ts +119 -0
  1230. package/dist/types/locales/languages/fa_IR.d.ts +119 -0
  1231. package/dist/types/locales/languages/fi_FI.d.ts +119 -0
  1232. package/dist/types/locales/languages/fr_BE.d.ts +119 -0
  1233. package/dist/types/locales/languages/fr_CA.d.ts +119 -0
  1234. package/dist/types/locales/languages/fr_FR.d.ts +119 -0
  1235. package/dist/types/locales/languages/ga_IE.d.ts +119 -0
  1236. package/dist/types/locales/languages/gl_ES.d.ts +119 -0
  1237. package/dist/types/locales/languages/he_IL.d.ts +119 -0
  1238. package/dist/types/locales/languages/hi_IN.d.ts +119 -0
  1239. package/dist/types/locales/languages/hr_HR.d.ts +119 -0
  1240. package/dist/types/locales/languages/hu_HU.d.ts +119 -0
  1241. package/dist/types/locales/languages/hy_AM.d.ts +119 -0
  1242. package/dist/types/locales/languages/id_ID.d.ts +119 -0
  1243. package/dist/types/locales/languages/index.d.ts +13 -0
  1244. package/dist/types/locales/languages/is_IS.d.ts +119 -0
  1245. package/dist/types/locales/languages/it_IT.d.ts +119 -0
  1246. package/dist/types/locales/languages/ja_JP.d.ts +119 -0
  1247. package/dist/types/locales/languages/ka_GE.d.ts +119 -0
  1248. package/dist/types/locales/languages/kk_KZ.d.ts +119 -0
  1249. package/dist/types/locales/languages/km_KH.d.ts +119 -0
  1250. package/dist/types/locales/languages/kmr_IQ.d.ts +119 -0
  1251. package/dist/types/locales/languages/kn_IN.d.ts +119 -0
  1252. package/dist/types/locales/languages/ko_KR.d.ts +119 -0
  1253. package/dist/types/locales/languages/ku_IQ.d.ts +119 -0
  1254. package/dist/types/locales/languages/lt_LT.d.ts +119 -0
  1255. package/dist/types/locales/languages/lv_LV.d.ts +119 -0
  1256. package/dist/types/locales/languages/mk_MK.d.ts +119 -0
  1257. package/dist/types/locales/languages/ml_IN.d.ts +119 -0
  1258. package/dist/types/locales/languages/mn_MN.d.ts +119 -0
  1259. package/dist/types/locales/languages/ms_MY.d.ts +119 -0
  1260. package/dist/types/locales/languages/nb_NO.d.ts +119 -0
  1261. package/dist/types/locales/languages/ne_NP.d.ts +119 -0
  1262. package/dist/types/locales/languages/nl_BE.d.ts +119 -0
  1263. package/dist/types/locales/languages/nl_NL.d.ts +119 -0
  1264. package/dist/types/locales/languages/pl_PL.d.ts +119 -0
  1265. package/dist/types/locales/languages/pt_BR.d.ts +119 -0
  1266. package/dist/types/locales/languages/pt_PT.d.ts +119 -0
  1267. package/dist/types/locales/languages/ro_RO.d.ts +119 -0
  1268. package/dist/types/locales/languages/ru_RU.d.ts +119 -0
  1269. package/dist/types/locales/languages/sk_SK.d.ts +119 -0
  1270. package/dist/types/locales/languages/sl_SI.d.ts +119 -0
  1271. package/dist/types/locales/languages/sr_RS.d.ts +119 -0
  1272. package/dist/types/locales/languages/sv_SE.d.ts +119 -0
  1273. package/dist/types/locales/languages/ta_IN.d.ts +119 -0
  1274. package/dist/types/locales/languages/th_TH.d.ts +119 -0
  1275. package/dist/types/locales/languages/tr_TR.d.ts +119 -0
  1276. package/dist/types/locales/languages/uk_UA.d.ts +119 -0
  1277. package/dist/types/locales/languages/ur_PK.d.ts +119 -0
  1278. package/dist/types/locales/languages/vi_VN.d.ts +119 -0
  1279. package/dist/types/locales/languages/zh_CN.d.ts +119 -0
  1280. package/dist/types/locales/languages/zh_HK.d.ts +119 -0
  1281. package/dist/types/locales/languages/zh_TW.d.ts +119 -0
  1282. package/dist/types/locales/locale.service.d.ts +93 -0
  1283. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  1284. package/dist/types/types.d.ts +59 -0
  1285. package/dist/types/utils/app-service.d.ts +20 -0
  1286. package/dist/types/utils/cascader.service.d.ts +45 -0
  1287. package/dist/types/utils/config.d.ts +47 -0
  1288. package/dist/types/utils/form/core/abstract-control.d.ts +121 -0
  1289. package/dist/types/utils/form/core/form-array.d.ts +51 -0
  1290. package/dist/types/utils/form/core/form-builder.d.ts +45 -0
  1291. package/dist/types/utils/form/core/form-control.d.ts +37 -0
  1292. package/dist/types/utils/form/core/form-group.d.ts +63 -0
  1293. package/dist/types/utils/form/frameworks.d.ts +18 -0
  1294. package/dist/types/utils/form/types.d.ts +8 -0
  1295. package/dist/types/utils/form/validators/validators.d.ts +39 -0
  1296. package/dist/types/utils/index.d.ts +10 -0
  1297. package/dist/types/utils/qr-code/cache/qr.cache.d.ts +7 -0
  1298. package/dist/types/utils/qr-code/engine/qr.engine.d.ts +15 -0
  1299. package/dist/types/utils/qr-code/engine/qr.gf.d.ts +4 -0
  1300. package/dist/types/utils/qr-code/engine/qr.mask.d.ts +2 -0
  1301. package/dist/types/utils/qr-code/engine/qr.rs.d.ts +1 -0
  1302. package/dist/types/utils/qr-code/engine/qr.util.d.ts +0 -0
  1303. package/dist/types/utils/qr-code/engine/qr.version.d.ts +16 -0
  1304. package/dist/types/utils/qr-code/renderer/canvas.renderer.d.ts +6 -0
  1305. package/dist/types/utils/qr-code/renderer/svg.renderer.d.ts +7 -0
  1306. package/dist/types/utils/qr-code/worker/worker.manager.d.ts +12 -0
  1307. package/dist/types/utils/table.service.d.ts +48 -0
  1308. package/dist/types/utils/tree.service.d.ts +85 -0
  1309. package/dist/types/utils/workflow/flow.service.d.ts +61 -0
  1310. package/dist/types/utils/workflow/types.d.ts +120 -0
  1311. package/dist/xlabs-store/fonts/xlabs-outlined.woff2 +0 -0
  1312. package/dist/xlabs-store/fonts/xlabs-rounded.woff2 +0 -0
  1313. package/dist/xlabs-store/fonts/xlabs-solided.woff2 +0 -0
  1314. package/dist/xlabs-store/index.esm.js +1 -0
  1315. package/dist/xlabs-store/p-016194dc.entry.js +1 -0
  1316. package/dist/xlabs-store/p-023259c9.entry.js +1 -0
  1317. package/dist/xlabs-store/p-04a3721a.entry.js +1 -0
  1318. package/dist/xlabs-store/p-072445b7.entry.js +1 -0
  1319. package/dist/xlabs-store/p-0ec21454.entry.js +1 -0
  1320. package/dist/xlabs-store/p-12b6a843.entry.js +1 -0
  1321. package/dist/xlabs-store/p-1a81cf09.entry.js +1 -0
  1322. package/dist/xlabs-store/p-1b019aeb.entry.js +1 -0
  1323. package/dist/xlabs-store/p-262a0673.entry.js +1 -0
  1324. package/dist/xlabs-store/p-34cce823.entry.js +1 -0
  1325. package/dist/xlabs-store/p-3a9fdefe.entry.js +1 -0
  1326. package/dist/xlabs-store/p-40036100.entry.js +1 -0
  1327. package/dist/xlabs-store/p-45f04e8d.entry.js +1 -0
  1328. package/dist/xlabs-store/p-48ba7c34.entry.js +1 -0
  1329. package/dist/xlabs-store/p-48e2c26e.entry.js +1 -0
  1330. package/dist/xlabs-store/p-4ac2e915.entry.js +1 -0
  1331. package/dist/xlabs-store/p-4d7c2a35.entry.js +1 -0
  1332. package/dist/xlabs-store/p-4f67cb33.entry.js +1 -0
  1333. package/dist/xlabs-store/p-502b345e.entry.js +1 -0
  1334. package/dist/xlabs-store/p-555c5e48.entry.js +1 -0
  1335. package/dist/xlabs-store/p-5878525f.entry.js +1 -0
  1336. package/dist/xlabs-store/p-5abbdca7.entry.js +1 -0
  1337. package/dist/xlabs-store/p-6243ca69.entry.js +1 -0
  1338. package/dist/xlabs-store/p-64e7a057.entry.js +1 -0
  1339. package/dist/xlabs-store/p-6530d2ef.entry.js +1 -0
  1340. package/dist/xlabs-store/p-675a39e1.entry.js +1 -0
  1341. package/dist/xlabs-store/p-689c52ef.entry.js +1 -0
  1342. package/dist/xlabs-store/p-69b8cb7d.entry.js +1 -0
  1343. package/dist/xlabs-store/p-6b121c60.entry.js +1 -0
  1344. package/dist/xlabs-store/p-6c75fc39.entry.js +1 -0
  1345. package/dist/xlabs-store/p-6f705deb.entry.js +1 -0
  1346. package/dist/xlabs-store/p-723d362c.entry.js +1 -0
  1347. package/dist/xlabs-store/p-783545e3.entry.js +1 -0
  1348. package/dist/xlabs-store/p-7a8f11b4.entry.js +1 -0
  1349. package/dist/xlabs-store/p-81fb4caf.entry.js +1 -0
  1350. package/dist/xlabs-store/p-863dd67d.entry.js +1 -0
  1351. package/dist/xlabs-store/p-8bcbb4e3.entry.js +1 -0
  1352. package/dist/xlabs-store/p-8bcc219a.entry.js +1 -0
  1353. package/dist/xlabs-store/p-914b0ae2.entry.js +1 -0
  1354. package/dist/xlabs-store/p-96b1939d.entry.js +1 -0
  1355. package/dist/xlabs-store/p-9ac291ea.entry.js +1 -0
  1356. package/dist/xlabs-store/p-9de03a07.entry.js +1 -0
  1357. package/dist/xlabs-store/p-BPeosvTA.js +1 -0
  1358. package/dist/xlabs-store/p-COpzIi1n.js +1 -0
  1359. package/dist/xlabs-store/p-C_QdJRdB.js +1 -0
  1360. package/dist/xlabs-store/p-Ce5L9qbY.js +1 -0
  1361. package/dist/xlabs-store/p-Co3Y9VjQ.js +1 -0
  1362. package/dist/xlabs-store/p-D66tF8_2.js +1 -0
  1363. package/dist/xlabs-store/p-DElCk9ta.js +1 -0
  1364. package/dist/xlabs-store/p-Dgxy93Bg.js +1 -0
  1365. package/dist/xlabs-store/p-XBF88YT_.js +1 -0
  1366. package/dist/xlabs-store/p-a4223feb.entry.js +1 -0
  1367. package/dist/xlabs-store/p-a8c2eca7.entry.js +1 -0
  1368. package/dist/xlabs-store/p-ac9ba3aa.entry.js +1 -0
  1369. package/dist/xlabs-store/p-bd5084b8.entry.js +1 -0
  1370. package/dist/xlabs-store/p-bda322db.entry.js +1 -0
  1371. package/dist/xlabs-store/p-c0ca6f7d.entry.js +1 -0
  1372. package/dist/xlabs-store/p-c4c8840c.entry.js +1 -0
  1373. package/dist/xlabs-store/p-c4d0ce0d.entry.js +1 -0
  1374. package/dist/xlabs-store/p-cd3c3374.entry.js +1 -0
  1375. package/dist/xlabs-store/p-cf4697bc.entry.js +1 -0
  1376. package/dist/xlabs-store/p-d2ec3d4a.entry.js +1 -0
  1377. package/dist/xlabs-store/p-d4d00aff.entry.js +1 -0
  1378. package/dist/xlabs-store/p-d9d0147b.entry.js +1 -0
  1379. package/dist/xlabs-store/p-dd930f2a.entry.js +1 -0
  1380. package/dist/xlabs-store/p-e04836e8.entry.js +1 -0
  1381. package/dist/xlabs-store/p-e14b5f6d.entry.js +1 -0
  1382. package/dist/xlabs-store/p-eb1dd3c2.entry.js +1 -0
  1383. package/dist/xlabs-store/p-f02155e4.entry.js +1 -0
  1384. package/dist/xlabs-store/p-f1331938.entry.js +1 -0
  1385. package/dist/xlabs-store/p-fac0b689.entry.js +1 -0
  1386. package/dist/xlabs-store/p-fd2e1d9c.entry.js +1 -0
  1387. package/dist/xlabs-store/p-fdec5d89.entry.js +1 -0
  1388. package/dist/xlabs-store/p-ffba56b2.entry.js +1 -0
  1389. package/dist/xlabs-store/p-ig_mFsVk.js +2 -0
  1390. package/dist/xlabs-store/xlabs-store.css +1 -0
  1391. package/dist/xlabs-store/xlabs-store.esm.js +1 -0
  1392. package/loader/cdn.js +1 -0
  1393. package/loader/index.cjs.js +1 -0
  1394. package/loader/index.d.ts +24 -0
  1395. package/loader/index.es2017.js +1 -0
  1396. package/loader/index.js +2 -0
  1397. package/package.json +69 -0
  1398. package/readme.md +50 -0
@@ -0,0 +1,3227 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-ig_mFsVk.js';
2
+ import { g as getIcon } from './config-BPeosvTA.js';
3
+ import { A as AbstractControl } from './abstract-control-XBF88YT_.js';
4
+
5
+ const xAlertCss = () => `@charset "UTF-8";:root{--x-color-primary:#1677ff;--x-color-primary-rgb:22, 119, 255;--x-color-primary-contrast:#ffffff;--x-color-primary-contrast-rgb:255, 255, 255;--x-color-primary-shade:#0958d9;--x-color-primary-tint:#4096ff;--x-color-primary-bg:#e6f4ff;--x-color-primary-bg-hover:#bae0ff;--x-color-primary-border:#91caff;--x-color-primary-border-hover:#69b1ff;--x-color-primary-hover:#4096ff;--x-color-primary-active:#0958d9;--x-color-primary-text:#1677ff;--x-color-primary-text-hover:#4096ff;--x-color-primary-text-active:#0958d9;--x-color-secondary:#3dc2ff;--x-color-secondary-rgb:61, 194, 255;--x-color-secondary-contrast:#ffffff;--x-color-secondary-contrast-rgb:255, 255, 255;--x-color-secondary-shade:#36abe0;--x-color-secondary-tint:#50c8ff;--x-color-success:#52c41a;--x-color-success-rgb:82, 196, 26;--x-color-success-contrast:#ffffff;--x-color-success-contrast-rgb:255, 255, 255;--x-color-success-shade:#389e0d;--x-color-success-tint:#73d13d;--x-color-success-bg:#f6ffed;--x-color-success-bg-hover:#d9f7be;--x-color-success-border:#b7eb8f;--x-color-success-border-hover:#95de64;--x-color-success-hover:#73d13d;--x-color-success-active:#389e0d;--x-color-success-text:#52c41a;--x-color-success-text-hover:#73d13d;--x-color-success-text-active:#389e0d;--x-color-warning:#faad14;--x-color-warning-rgb:250, 173, 20;--x-color-warning-contrast:#000000;--x-color-warning-contrast-rgb:0, 0, 0;--x-color-warning-shade:#d48806;--x-color-warning-tint:#ffc53d;--x-color-warning-bg:#fffbe6;--x-color-warning-bg-hover:#fff1b8;--x-color-warning-border:#ffe58f;--x-color-warning-border-hover:#ffd666;--x-color-warning-hover:#ffc53d;--x-color-warning-active:#d48806;--x-color-warning-text:#faad14;--x-color-warning-text-hover:#ffc53d;--x-color-warning-text-active:#d48806;--x-color-danger:#ff4d4f;--x-color-danger-rgb:255, 77, 79;--x-color-danger-contrast:#ffffff;--x-color-danger-contrast-rgb:255, 255, 255;--x-color-danger-shade:#cf1322;--x-color-danger-tint:#ff7875;--x-color-error:#ff4d4f;--x-color-error-rgb:255, 77, 79;--x-color-error-bg:#fff2f0;--x-color-error-bg-hover:#ffccc7;--x-color-error-border:#ffa39e;--x-color-error-border-hover:#ff7875;--x-color-error-hover:#ff7875;--x-color-error-active:#d9363e;--x-color-error-text:#ff4d4f;--x-color-error-text-hover:#ff7875;--x-color-error-text-active:#d9363e;--x-color-info:#1677ff;--x-color-info-rgb:22, 119, 255;--x-color-info-bg:#e6f4ff;--x-color-info-bg-hover:#bae0ff;--x-color-info-border:#91caff;--x-color-info-border-hover:#69b1ff;--x-color-info-hover:#69b1ff;--x-color-info-active:#0958d9;--x-color-info-text:#1677ff;--x-color-info-text-hover:#69b1ff;--x-color-info-text-active:#0958d9;--x-color-text:rgba(0, 0, 0, 0.88);--x-color-text-secondary:rgba(0, 0, 0, 0.65);--x-color-text-tertiary:rgba(0, 0, 0, 0.45);--x-color-text-quaternary:rgba(0, 0, 0, 0.25);--x-color-text-disabled:rgba(0, 0, 0, 0.25);--x-color-text-placeholder:rgba(0, 0, 0, 0.25);--x-color-text-heading:rgba(0, 0, 0, 0.88);--x-color-text-label:rgba(0, 0, 0, 0.65);--x-color-text-description:rgba(0, 0, 0, 0.45);--x-color-text-light-solid:#ffffff;--x-color-bg-container:#ffffff;--x-color-bg-elevated:#ffffff;--x-color-bg-layout:#f5f5f5;--x-color-bg-spotlight:rgba(0, 0, 0, 0.85);--x-color-bg-mask:rgba(0, 0, 0, 0.45);--x-color-bg-base:#ffffff;--x-color-bg-container-disabled:#f5f5f5;--x-color-bg-container-loading:rgba(255, 255, 255, 0.65);--x-color-white:#ffffff;--x-color-fill:rgba(0, 0, 0, 0.15);--x-color-fill-secondary:rgba(0, 0, 0, 0.06);--x-color-fill-tertiary:rgba(0, 0, 0, 0.04);--x-color-fill-quaternary:rgba(0, 0, 0, 0.02);--x-color-border:#d9d9d9;--x-color-border-secondary:#f0f0f0;--x-color-border-bg:#ffffff;--x-color-split:rgba(5, 5, 5, 0.06);--x-color-dark:#222428;--x-color-dark-rgb:34, 36, 40;--x-color-dark-contrast:#ffffff;--x-color-dark-contrast-rgb:255, 255, 255;--x-color-dark-shade:#1e2023;--x-color-dark-tint:#383a3e;--x-color-medium:#92949c;--x-color-medium-rgb:146, 148, 156;--x-color-medium-contrast:#ffffff;--x-color-medium-contrast-rgb:255, 255, 255;--x-color-medium-shade:#808289;--x-color-medium-tint:#9d9fa6;--x-color-light:#f4f5f8;--x-color-light-rgb:244, 245, 248;--x-color-light-contrast:#000000;--x-color-light-contrast-rgb:0, 0, 0;--x-color-light-shade:#d7d8da;--x-color-light-tint:#f5f6f9;--x-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--x-font-family-code:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--x-font-size:14px;--x-font-size-sm:12px;--x-font-size-lg:16px;--x-font-size-xl:20px;--x-font-size-heading-1:38px;--x-font-size-heading-2:30px;--x-font-size-heading-3:24px;--x-font-size-heading-4:20px;--x-font-size-heading-5:16px;--x-line-height:1.5714285714285714;--x-line-height-lg:1.5;--x-line-height-sm:1.6666666666666667;--x-line-height-heading-1:1.2105263157894737;--x-line-height-heading-2:1.2666666666666666;--x-line-height-heading-3:1.3333333333333333;--x-line-height-heading-4:1.4;--x-line-height-heading-5:1.5;--x-font-weight-normal:400;--x-font-weight-medium:500;--x-font-weight-semibold:600;--x-font-weight-strong:600;--x-font-size-base:14px;--x-font-size-xxl:24px;--x-line-height-base:1.5714285714285714;--x-spacing-xxs:4px;--x-spacing-xs:8px;--x-spacing-sm:12px;--x-spacing-md:16px;--x-spacing-lg:20px;--x-spacing-xl:24px;--x-spacing-xxl:32px;--x-spacing-xxxl:48px;--x-margin-xxs:4px;--x-margin-xs:8px;--x-margin-sm:12px;--x-margin-md:16px;--x-margin-lg:24px;--x-margin-xl:32px;--x-margin-xxl:48px;--x-padding-xxs:4px;--x-padding-xs:8px;--x-padding-sm:12px;--x-padding-md:16px;--x-padding-lg:24px;--x-padding-content-horizontal-lg:24px;--x-padding-content-vertical-lg:12px;--x-padding-content-horizontal:16px;--x-padding-content-vertical:12px;--x-padding-content-horizontal-sm:16px;--x-padding-content-vertical-sm:8px;--x-border-radius:6px;--x-border-radius-xs:2px;--x-border-radius-sm:4px;--x-border-radius-lg:8px;--x-border-radius-xl:12px;--x-border-radius-outer:4px;--x-border-radius-base:6px;--x-border-width:1px;--x-border-width-base:1px;--x-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-shadow-lg:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-box-shadow-popover-arrow:2px 2px 5px rgba(0, 0, 0, 0.05);--x-box-shadow-card:0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);--x-box-shadow-drawer-right:-6px 0 16px 0 rgba(0, 0, 0, 0.08), -3px 0 6px -4px rgba(0, 0, 0, 0.12), -9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-left:6px 0 16px 0 rgba(0, 0, 0, 0.08), 3px 0 6px -4px rgba(0, 0, 0, 0.12), 9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-up:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-down:0 -6px 16px 0 rgba(0, 0, 0, 0.08), 0 -3px 6px -4px rgba(0, 0, 0, 0.12), 0 -9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tabs-overflow-left:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-right:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-top:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-bottom:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);--x-motion-duration-fast:0.1s;--x-motion-duration-mid:0.2s;--x-motion-duration-slow:0.3s;--x-motion-ease-in-out:cubic-bezier(0.645, 0.045, 0.355, 1);--x-motion-ease-out:cubic-bezier(0.215, 0.61, 0.355, 1);--x-motion-ease-in:cubic-bezier(0.55, 0.055, 0.675, 0.19);--x-motion-ease-out-back:cubic-bezier(0.12, 0.4, 0.29, 1.46);--x-motion-ease-in-back:cubic-bezier(0.71, -0.46, 0.88, 0.6);--x-motion-ease-in-out-circle:cubic-bezier(0.78, 0.14, 0.15, 0.86);--x-motion-ease-out-circle:cubic-bezier(0.08, 0.82, 0.17, 1);--x-motion-ease-in-circle:cubic-bezier(0.6, 0.04, 0.98, 0.34);--x-motion-ease-in-quint:cubic-bezier(0.755, 0.05, 0.855, 0.06);--x-motion-ease-out-quint:cubic-bezier(0.23, 1, 0.32, 1);--x-z-index-base:0;--x-z-index-popup-base:1000;--x-z-index-popup:1030;--x-z-index-affix:10;--x-z-index-modal:1000;--x-z-index-modal-mask:1000;--x-z-index-drawer:1000;--x-z-index-popover:1030;--x-z-index-dropdown:1050;--x-z-index-tooltip:1070;--x-z-index-notification:1080;--x-z-index-message:1090;--x-z-index-popconfirm:1060;--x-z-index-table-fixed:10;--x-opacity-loading:0.65;--x-opacity-image:1;--x-opacity-disabled:0.5;--x-control-height:32px;--x-control-height-xs:24px;--x-control-height-sm:24px;--x-control-height-lg:40px;--x-control-radio-size:16px;--x-control-checkbox-size:16px;--x-control-padding-horizontal:12px;--x-control-padding-horizontal-sm:8px;--x-control-outline-width:2px;--x-control-outline:rgba(5, 145, 255, 0.1);--x-control-item-bg-hover:rgba(0, 0, 0, 0.04);--x-control-item-bg-active:#e6f4ff;--x-control-item-bg-active-hover:#bae0ff;--x-control-item-bg-active-disabled:rgba(0, 0, 0, 0.15);--x-control-tmp-outline:rgba(0, 0, 0, 0.02);--x-color-yellow:#fadb14;--x-color-yellow-rgb:250, 219, 20;--x-font-family-base:var(--x-font-family);--x-color-link:#1677ff;--x-color-link-hover:#69b1ff;--x-color-link-active:#0958d9;--x-color-icon:rgba(0, 0, 0, 0.45);--x-color-icon-hover:rgba(0, 0, 0, 0.88);--x-color-highlight:#ff4d4f;--x-color-bg-text-hover:rgba(0, 0, 0, 0.06);--x-color-bg-text-active:rgba(0, 0, 0, 0.15);--x-screen-xs:480px;--x-screen-xs-min:480px;--x-screen-xs-max:575px;--x-screen-sm:576px;--x-screen-sm-min:576px;--x-screen-sm-max:767px;--x-screen-md:768px;--x-screen-md-min:768px;--x-screen-md-max:991px;--x-screen-lg:992px;--x-screen-lg-min:992px;--x-screen-lg-max:1199px;--x-screen-xl:1200px;--x-screen-xl-min:1200px;--x-screen-xl-max:1599px;--x-screen-xxl:1600px;--x-screen-xxl-min:1600px;--x-color-fill-content:rgba(0, 0, 0, 0.06);--x-color-fill-content-hover:rgba(0, 0, 0, 0.15);--x-color-fill-alter:rgba(0, 0, 0, 0.02);--x-scrollbar-width:12px;--x-scrollbar-track-bg:rgba(0, 0, 0, 0.04);--x-scrollbar-thumb-bg:rgba(0, 0, 0, 0.25);--x-scrollbar-thumb-bg-hover:rgba(0, 0, 0, 0.35);--x-menu-dark-bg:#001529;--x-menu-dark-item-bg:#001529;--x-menu-dark-popup-bg:#001529;--x-menu-dark-submenu-item-bg:#000c17}:host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:var(--x-alert-spacing-sm, var(--x-spacing-sm, 8px)) var(--x-alert-spacing-lg, var(--x-spacing-lg, 16px));word-wrap:break-word;border-radius:var(--x-alert-border-radius-sm, var(--x-border-radius-sm, 4px));position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin-bottom:var(--x-alert-spacing-lg, var(--x-spacing-lg, 16px));color:var(--x-alert-color-text, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-alert-font-size, var(--x-font-size-base, 14px));font-family:var(--x-alert-font-family, var(--x-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif));line-height:var(--x-alert-line-height, var(--x-line-height-base, 1.5714));list-style:none;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";background-color:var(--x-alert-color-bg-layout, var(--x-color-bg-layout, #f5f5f5));border:var(--x-alert-border-width, var(--x-border-width-base, 1px)) solid transparent}.x-alert-content{-ms-flex:1;flex:1;min-width:0}.x-alert-icon{margin-right:var(--x-alert-spacing-xs, var(--x-spacing-xs, 8px));font-size:var(--x-alert-font-size, var(--x-font-size-base, 14px));height:var(--x-alert-font-size, var(--x-font-size-base, 14px));line-height:var(--x-alert-font-size, var(--x-font-size-base, 14px));display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}.x-alert-description{font-size:var(--x-alert-font-size, var(--x-font-size-base, 14px));line-height:22px;display:none}:host(.x-alert-success){background-color:var(--x-alert-color-success-bg, var(--x-color-success-bg, #f6ffed));border-color:var(--x-alert-color-success-border, var(--x-color-success-border, #b7eb8f))}:host(.x-alert-success) .x-alert-icon{color:var(--x-alert-color-success, var(--x-color-success, #52c41a))}:host(.x-alert-info){background-color:var(--x-alert-color-info-bg, var(--x-color-info-bg, #e6f4ff));border-color:var(--x-alert-color-info-border, var(--x-color-info-border, #91caff))}:host(.x-alert-info) .x-alert-icon{color:var(--x-alert-color-primary, var(--x-color-primary, #1677ff))}:host(.x-alert-warning){background-color:var(--x-alert-color-warning-bg, var(--x-color-warning-bg, #fffbe6));border-color:var(--x-alert-color-warning-border, var(--x-color-warning-border, #ffe58f))}:host(.x-alert-warning) .x-alert-icon{color:var(--x-alert-color-warning, var(--x-color-warning, #faad14))}:host(.x-alert-error){background-color:var(--x-alert-color-error-bg, var(--x-color-error-bg, #fff2f0));border-color:var(--x-alert-color-error-border, var(--x-color-error-border, #ffccc7))}:host(.x-alert-error) .x-alert-icon{color:var(--x-alert-color-error, var(--x-color-error, #ff4d4f))}.x-alert-close-icon{margin-left:var(--x-alert-spacing-xs, var(--x-spacing-xs, 8px));padding:0;overflow:hidden;font-size:var(--x-alert-font-size-sm, var(--x-font-size-sm, 12px));line-height:var(--x-alert-font-size-sm, var(--x-font-size-sm, 12px));background-color:transparent;border:none;outline:none;cursor:pointer;color:var(--x-alert-color-text-tertiary, var(--x-color-text-tertiary, rgba(0, 0, 0, 0.45)));-webkit-transition:color var(--x-alert-motion-duration-mid, var(--x-motion-duration-mid, 0.2s));transition:color var(--x-alert-motion-duration-mid, var(--x-motion-duration-mid, 0.2s));display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.x-alert-close-icon:hover{color:var(--x-alert-color-text-secondary, var(--x-color-text-secondary, rgba(0, 0, 0, 0.65)))}:host(.x-alert-with-description){-ms-flex-align:start;align-items:flex-start;padding:var(--x-alert-spacing-lg, var(--x-spacing-lg, 16px)) var(--x-alert-spacing-xl, var(--x-spacing-xl, 24px))}:host(.x-alert-with-description) .x-alert-icon{margin-right:var(--x-alert-spacing-md, var(--x-spacing-md, 16px));font-size:var(--x-alert-font-size-xxl, var(--x-font-size-xxl, 24px));height:var(--x-alert-font-size-xxl, var(--x-font-size-xxl, 24px));line-height:var(--x-alert-font-size-xxl, var(--x-font-size-xxl, 24px));margin-top:2px;}:host(.x-alert-with-description) .x-alert-message{display:block;margin-bottom:var(--x-alert-spacing-xxs, var(--x-spacing-xxs, 4px));color:var(--x-alert-color-text, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-alert-font-size-lg, var(--x-font-size-lg, 16px));font-weight:500;}:host(.x-alert-with-description) .x-alert-description{display:block;color:var(--x-alert-color-text, var(--x-color-text, rgba(0, 0, 0, 0.88)))}:host(.x-alert-with-description) .x-alert-close-icon{margin-top:4px;}:host(.x-alert-banner){margin-bottom:0;border:0;border-radius:0}`;
6
+
7
+ const XAlert = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ this.xClose = createEvent(this, "xClose", 7);
11
+ }
12
+ /**
13
+ * Content of Alert.
14
+ * @example
15
+ * <x-alert message="Info"></x-alert>
16
+ */
17
+ message;
18
+ /**
19
+ * Additional content of Alert.
20
+ * @example
21
+ * <x-alert description="Details"></x-alert>
22
+ */
23
+ description;
24
+ /**
25
+ * Type of Alert style, options: success, info, warning, error.
26
+ * @example
27
+ * <x-alert type="success" message="Saved"></x-alert>
28
+ */
29
+ type = 'info';
30
+ /**
31
+ * Whether Alert can be closed.
32
+ * @example
33
+ * <x-alert closable message="Closable"></x-alert>
34
+ */
35
+ closable = false;
36
+ /**
37
+ * Whether to show icon.
38
+ * @example
39
+ * <x-alert showIcon message="With icon"></x-alert>
40
+ */
41
+ showIcon = false;
42
+ /**
43
+ * Whether to show as banner.
44
+ * @example
45
+ * <x-alert banner message="Banner"></x-alert>
46
+ */
47
+ banner = false;
48
+ /**
49
+ * Internal closed state for dismissible alerts.
50
+ */
51
+ closed = false;
52
+ /**
53
+ * Emits when the alert is closed.
54
+ * @example
55
+ * <x-alert onXClose={() => console.log('closed')}></x-alert>
56
+ */
57
+ xClose;
58
+ /**
59
+ * Handle close action and emit close event.
60
+ * @param e - Mouse click event from close button.
61
+ * @returns void
62
+ * @example
63
+ * <x-alert closable onXClose={() => {}}></x-alert>
64
+ */
65
+ handleClose(e) {
66
+ e.preventDefault();
67
+ this.closed = true;
68
+ this.xClose.emit();
69
+ }
70
+ /**
71
+ * Render alert content, icon, and close button.
72
+ *
73
+ * Flow:
74
+ * 1. Checks if `closed` state is true; if so, returns null to remove from DOM.
75
+ * 2. Determines if description is present to adjust styling.
76
+ * 3. Constructs host classes based on type, icon presence, banner mode, and closability.
77
+ * 4. Renders the status icon if `showIcon` is true.
78
+ * - Selects the appropriate SVG based on `type` (success, info, warning, error).
79
+ * 5. Renders the message and description content.
80
+ * 6. Renders the close button if `closable` is true.
81
+ *
82
+ * @returns JSX.Element | null
83
+ * @example
84
+ * <x-alert type="warning" message="Warning"></x-alert>
85
+ */
86
+ render() {
87
+ // Hide alert entirely after it is closed.
88
+ if (this.closed)
89
+ return null;
90
+ const isDescription = !!this.description;
91
+ return (h(Host, { class: {
92
+ 'x-alert': true,
93
+ [`x-alert-${this.type}`]: true,
94
+ 'x-alert-with-description': isDescription,
95
+ 'x-alert-no-icon': !this.showIcon,
96
+ 'x-alert-banner': this.banner,
97
+ 'x-alert-closable': this.closable,
98
+ }, role: "alert" }, this.showIcon && (h("span", { class: "x-alert-icon" }, this.type === 'success' && (h("span", { role: "img", "aria-label": "check-circle", class: "anticon anticon-check-circle" }, h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "check-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z" })))), this.type === 'info' && (h("span", { role: "img", "aria-label": "info-circle", class: "anticon anticon-info-circle" }, h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "info-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v172zm-32-309.3c-28.7 0-52-23.3-52-52s23.3-52 52-52 52 23.3 52 52-23.3 52-52 52z" })))), this.type === 'warning' && (h("span", { role: "img", "aria-label": "exclamation-circle", class: "anticon anticon-exclamation-circle" }, h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "exclamation-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z" })))), this.type === 'error' && (h("span", { role: "img", "aria-label": "close-circle", class: "anticon anticon-close-circle" }, h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "close-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z" })))))), h("div", { class: "x-alert-content" }, this.message && h("div", { class: "x-alert-message" }, this.message), this.description && h("div", { class: "x-alert-description" }, this.description)), this.closable && (h("button", { type: "button", class: "x-alert-close-icon", onClick: (e) => this.handleClose(e) }, h("x-icon", { name: getIcon('close') })))));
99
+ }
100
+ };
101
+ XAlert.style = xAlertCss();
102
+
103
+ const xBadgeCss = () => `@charset "UTF-8";:host{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;color:var(--x-badge-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-badge-font-size, var(--x-font-size-base, 14px));font-variant:tabular-nums;line-height:var(--x-badge-line-height, var(--x-line-height-base, 1.5714285714));list-style:none;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";position:relative;display:inline-block;line-height:var(--x-badge-line-height-tight, 1);vertical-align:middle}:host(.x-badge-not-a-wrapper){vertical-align:middle}:host(.x-badge-not-a-wrapper) .x-badge-count,:host(.x-badge-not-a-wrapper) .x-badge-dot{-webkit-transform:none;transform:none;position:relative;top:auto;inset-inline-end:auto;display:block}.x-badge-count{z-index:auto;min-width:var(--x-badge-count-min-width, 20px);height:var(--x-badge-count-height, 20px);padding:0 var(--x-badge-count-padding, var(--x-padding-xxs, 6px));color:var(--x-badge-count-color, var(--x-color-white, #fff));font-weight:normal;font-size:var(--x-badge-count-font-size, var(--x-font-size-sm, 12px));line-height:var(--x-badge-count-height, 20px);white-space:nowrap;text-align:center;background:var(--x-badge-count-bg, var(--x-color-error, #ff4d4f));border-radius:var(--x-badge-count-border-radius, 10px);-webkit-box-shadow:0 0 0 1px var(--x-badge-shadow-color, var(--x-color-white, #fff));box-shadow:0 0 0 1px var(--x-badge-shadow-color, var(--x-color-white, #fff));-webkit-transition:background var(--x-badge-motion-duration, 0.1s);transition:background var(--x-badge-motion-duration, 0.1s);position:absolute;top:0;inset-inline-end:0;-webkit-transform:translate(50%, -50%);transform:translate(50%, -50%);-webkit-transform-origin:100% 0%;transform-origin:100% 0%}.x-badge-count-sm{min-width:var(--x-badge-count-min-width-sm, 14px);height:var(--x-badge-count-height-sm, 14px);padding:0 var(--x-badge-count-padding-sm, var(--x-padding-xxs, 4px));font-size:var(--x-badge-count-font-size-sm, var(--x-font-size-sm, 12px));line-height:var(--x-badge-count-height-sm, 14px);border-radius:var(--x-badge-count-border-radius-sm, 7px)}.x-badge-multiple-words{padding:0 var(--x-badge-count-padding, var(--x-padding-xxs, 6px))}.x-badge-dot{z-index:auto;width:var(--x-badge-dot-size, 6px);height:var(--x-badge-dot-size, 6px);background:var(--x-badge-dot-bg, var(--x-color-error, #ff4d4f));border-radius:100%;-webkit-box-shadow:0 0 0 1px var(--x-badge-shadow-color, var(--x-color-white, #fff));box-shadow:0 0 0 1px var(--x-badge-shadow-color, var(--x-color-white, #fff));position:absolute;top:0;inset-inline-end:0;-webkit-transform:translate(50%, -50%);transform:translate(50%, -50%);-webkit-transform-origin:100% 0%;transform-origin:100% 0%}:host(.x-badge-status){line-height:inherit;vertical-align:baseline;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}.x-badge-status-dot{position:relative;top:var(--x-badge-status-dot-top, -1px);display:inline-block;width:var(--x-badge-dot-size, 6px);height:var(--x-badge-dot-size, 6px);vertical-align:middle;border-radius:50%}.x-badge-status-success{background-color:var(--x-badge-status-success-bg, var(--x-color-success, #52c41a))}.x-badge-status-processing{position:relative;background-color:var(--x-badge-status-processing-bg, var(--x-color-primary, #1677ff))}.x-badge-status-processing::after{position:absolute;top:0;inset-inline-start:0;width:100%;height:100%;border:1px solid var(--x-badge-status-processing-bg, var(--x-color-primary, #1677ff));border-radius:50%;-webkit-animation:x-badge-status-processing 1.2s infinite ease-in-out;animation:x-badge-status-processing 1.2s infinite ease-in-out;content:""}.x-badge-status-default{background-color:var(--x-badge-status-default-bg, var(--x-color-text-placeholder, #d9d9d9))}.x-badge-status-error{background-color:var(--x-badge-status-error-bg, var(--x-color-error, #ff4d4f))}.x-badge-status-warning{background-color:var(--x-badge-status-warning-bg, var(--x-color-warning, #faad14))}.x-badge-status-text{-webkit-margin-start:var(--x-badge-status-text-margin, var(--x-spacing-xs, 8px));margin-inline-start:var(--x-badge-status-text-margin, var(--x-spacing-xs, 8px));color:var(--x-badge-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-badge-font-size, var(--x-font-size-base, 14px))}.x-badge-color-pink{background:#eb2f96}.x-badge-color-red{background:#f5222d}.x-badge-color-yellow{background:#fadb14}.x-badge-color-orange{background:#fa8c16}.x-badge-color-cyan{background:#13c2c2}.x-badge-color-green{background:#52c41a}.x-badge-color-blue{background:#1677ff}.x-badge-color-purple{background:#722ed1}.x-badge-color-geekblue{background:#2f54eb}.x-badge-color-magenta{background:#eb2f96}.x-badge-color-volcano{background:#fa541c}.x-badge-color-gold{background:#faad14}.x-badge-color-lime{background:#a0d911}@-webkit-keyframes x-badge-status-processing{0%{-webkit-transform:scale(0.8);transform:scale(0.8);opacity:0.5}100%{-webkit-transform:scale(2.4);transform:scale(2.4);opacity:0}}@keyframes x-badge-status-processing{0%{-webkit-transform:scale(0.8);transform:scale(0.8);opacity:0.5}100%{-webkit-transform:scale(2.4);transform:scale(2.4);opacity:0}}`;
104
+
105
+ const PRESET_COLORS$1 = [
106
+ 'pink', 'red', 'yellow', 'orange', 'cyan', 'green', 'blue', 'purple',
107
+ 'geekblue', 'magenta', 'volcano', 'gold', 'lime'
108
+ ];
109
+ const XBadge = class {
110
+ constructor(hostRef) {
111
+ registerInstance(this, hostRef);
112
+ }
113
+ get el() { return getElement(this); }
114
+ /**
115
+ * Number to show in badge.
116
+ * @example
117
+ * <x-badge count={3}></x-badge>
118
+ */
119
+ count;
120
+ /**
121
+ * Whether to display a red dot instead of count.
122
+ * @example
123
+ * <x-badge dot></x-badge>
124
+ */
125
+ dot = false;
126
+ /**
127
+ * Max count to show.
128
+ * @example
129
+ * <x-badge count={120} overflowCount={99}></x-badge>
130
+ */
131
+ overflowCount = 99;
132
+ /**
133
+ * Whether to show badge when count is 0.
134
+ * @example
135
+ * <x-badge count={0} showZero></x-badge>
136
+ */
137
+ showZero = false;
138
+ /**
139
+ * Set Badge as a status dot.
140
+ * @example
141
+ * <x-badge status="success" text="Done"></x-badge>
142
+ */
143
+ status;
144
+ /**
145
+ * If status is set, text sets the display text of the status dot.
146
+ * @example
147
+ * <x-badge status="warning" text="Pending"></x-badge>
148
+ */
149
+ text;
150
+ /**
151
+ * Customize Badge dot color (supports preset colors or custom hex/rgb).
152
+ * @example
153
+ * <x-badge color="#ff4d4f" count={1}></x-badge>
154
+ */
155
+ color;
156
+ /**
157
+ * Set offset of the badge dot [left, top].
158
+ * @example
159
+ * <x-badge offset={[10, -2]} count={5}></x-badge>
160
+ */
161
+ offset;
162
+ /**
163
+ * Size of the badge.
164
+ * @example
165
+ * <x-badge size="small" count={2}></x-badge>
166
+ */
167
+ size = 'default';
168
+ /**
169
+ * Text to show when hovering over the badge.
170
+ * @example
171
+ * <x-badge badgeTitle="Notifications" count={9}></x-badge>
172
+ */
173
+ badgeTitle;
174
+ /**
175
+ * Used to display the classNames of the badge.
176
+ * @example
177
+ * <x-badge classNames={{ root: 'my-badge' }} count={1}></x-badge>
178
+ */
179
+ classNames;
180
+ /**
181
+ * Used to display the styles of the badge.
182
+ * @example
183
+ * <x-badge styles={{ indicator: 'background: red;' }} count={1}></x-badge>
184
+ */
185
+ styles;
186
+ /**
187
+ * Track whether component has child content.
188
+ */
189
+ hasChildren = false;
190
+ /**
191
+ * Initialize child detection before render.
192
+ * @returns void
193
+ * @example
194
+ * <x-badge count={1}><button>Inbox</button></x-badge>
195
+ */
196
+ componentWillLoad() {
197
+ this.checkChildren();
198
+ }
199
+ countChanged() {
200
+ // Trigger re-render when count changes
201
+ }
202
+ /**
203
+ * Detect whether default slot has child nodes.
204
+ *
205
+ * Flow:
206
+ * 1. Queries the default `<slot>`.
207
+ * 2. If slot exists:
208
+ * - Gets `assignedNodes`.
209
+ * - Checks if any node is an Element or non-empty Text.
210
+ * 3. If slot doesn't exist (yet):
211
+ * - Checks `el.childNodes` length.
212
+ * 4. Updates `hasChildren` state, which toggles wrapper mode.
213
+ *
214
+ * @returns void
215
+ * @example
216
+ * <x-badge count={1}><span>Inbox</span></x-badge>
217
+ */
218
+ checkChildren() {
219
+ const slot = this.el.shadowRoot?.querySelector('slot');
220
+ if (slot) {
221
+ const assignedNodes = slot.assignedNodes({ flatten: true });
222
+ // Consider both element nodes and non-empty text nodes.
223
+ this.hasChildren = assignedNodes.some(node => node.nodeType === Node.ELEMENT_NODE ||
224
+ (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()));
225
+ }
226
+ else {
227
+ // Fallback when slot is not yet available.
228
+ this.hasChildren = this.el.childNodes.length > 0;
229
+ }
230
+ }
231
+ /**
232
+ * Check if color matches preset palette.
233
+ * @param color - Color to test.
234
+ * @returns boolean
235
+ * @example
236
+ * this.isPresetColor('red')
237
+ */
238
+ isPresetColor(color) {
239
+ return PRESET_COLORS$1.includes(color);
240
+ }
241
+ /**
242
+ * Compute display count text based on dot/overflow rules.
243
+ *
244
+ * Flow:
245
+ * 1. If `dot` is true, returns null (no text).
246
+ * 2. If `count` is string, returns as-is.
247
+ * 3. If `count` is number:
248
+ * - Checks against `overflowCount`.
249
+ * - Returns `${overflowCount}+` if exceeded.
250
+ * - Otherwise returns count.
251
+ *
252
+ * @returns string | number | null
253
+ * @example
254
+ * <x-badge count={120} overflowCount={99}></x-badge>
255
+ */
256
+ getDisplayCount() {
257
+ // Dot mode does not show any number.
258
+ if (this.dot) {
259
+ return null;
260
+ }
261
+ // String counts are displayed as-is.
262
+ if (typeof this.count === 'string') {
263
+ return this.count;
264
+ }
265
+ // Numeric counts respect overflowCount.
266
+ if (typeof this.count === 'number') {
267
+ if (this.count > this.overflowCount) {
268
+ return `${this.overflowCount}+`;
269
+ }
270
+ return this.count;
271
+ }
272
+ return null;
273
+ }
274
+ /**
275
+ * Compute inline offset styles for indicator.
276
+ * @returns Record<string, string>
277
+ * @example
278
+ * <x-badge offset={[8, -4]} count={1}></x-badge>
279
+ */
280
+ getOffsetStyle() {
281
+ if (!this.offset) {
282
+ return {};
283
+ }
284
+ const [left, top] = this.offset;
285
+ const leftValue = typeof left === 'number' ? `${left}px` : left;
286
+ const topValue = typeof top === 'number' ? `${top}px` : top;
287
+ return {
288
+ marginTop: topValue,
289
+ right: `calc(-100% + ${leftValue})`,
290
+ };
291
+ }
292
+ /**
293
+ * Compute custom color styles for indicator.
294
+ * @returns Record<string, string>
295
+ * @example
296
+ * <x-badge color="#52c41a" count={1}></x-badge>
297
+ */
298
+ getColorStyle() {
299
+ if (!this.color) {
300
+ return {};
301
+ }
302
+ // Preset colors use CSS classes instead of inline styles.
303
+ if (this.isPresetColor(this.color)) {
304
+ return {};
305
+ }
306
+ return {
307
+ background: this.color,
308
+ '--x-badge-color': this.color,
309
+ };
310
+ }
311
+ /**
312
+ * Decide if the badge indicator should be hidden.
313
+ * @returns boolean
314
+ * @example
315
+ * <x-badge count={0} showZero={false}></x-badge>
316
+ */
317
+ isHidden() {
318
+ const count = typeof this.count === 'number' ? this.count : null;
319
+ const isZero = count === 0 || count === null;
320
+ // Show if dot mode
321
+ if (this.dot) {
322
+ return false;
323
+ }
324
+ // Show if count is string (like "new")
325
+ if (typeof this.count === 'string') {
326
+ return false;
327
+ }
328
+ // Hide if zero and showZero is false
329
+ if (isZero && !this.showZero) {
330
+ return true;
331
+ }
332
+ return false;
333
+ }
334
+ /**
335
+ * Render status-style badge with dot and optional text.
336
+ * @returns JSX.Element
337
+ * @example
338
+ * <x-badge status="success" text="Done"></x-badge>
339
+ */
340
+ renderStatusBadge() {
341
+ const dotStyle = this.getColorStyle();
342
+ return (h(Host, { class: {
343
+ 'x-badge': true,
344
+ 'x-badge-status': true,
345
+ [this.classNames?.root || '']: !!this.classNames?.root,
346
+ }, style: this.styles?.root ? { cssText: this.styles.root } : undefined }, h("span", { class: {
347
+ 'x-badge-status-dot': true,
348
+ [`x-badge-status-${this.status}`]: !!this.status,
349
+ [`x-badge-color-${this.color}`]: !!this.color && this.isPresetColor(this.color),
350
+ [this.classNames?.indicator || '']: !!this.classNames?.indicator,
351
+ }, style: {
352
+ ...dotStyle,
353
+ ...(this.styles?.indicator ? { cssText: this.styles.indicator } : {}),
354
+ } }), this.text && h("span", { class: "x-badge-status-text" }, this.text)));
355
+ }
356
+ /**
357
+ * Render badge in count/dot mode or status mode.
358
+ *
359
+ * Flow:
360
+ * 1. If `status` prop is present, calls `renderStatusBadge` (standalone dot with text).
361
+ * 2. Otherwise (Count/Dot mode):
362
+ * - Calculates `displayCount` and `isHidden` status.
363
+ * - Renders host element with classes indicating wrapper mode (`hasChildren`).
364
+ * - Projects slot content.
365
+ * - If not hidden, renders `<sup>` element for the badge:
366
+ * - Applies classes for dot, count, size, color.
367
+ * - Applies offset styles.
368
+ *
369
+ * @returns JSX.Element
370
+ * @example
371
+ * <x-badge count={5}><button>Inbox</button></x-badge>
372
+ */
373
+ render() {
374
+ // Status Badge mode
375
+ if (this.status) {
376
+ return this.renderStatusBadge();
377
+ }
378
+ const displayCount = this.getDisplayCount();
379
+ const isHidden = this.isHidden();
380
+ const offsetStyle = this.getOffsetStyle();
381
+ const colorStyle = this.getColorStyle();
382
+ const titleText = this.badgeTitle ?? (typeof this.count === 'number' ? String(this.count) : undefined);
383
+ return (h(Host, { class: {
384
+ 'x-badge': true,
385
+ 'x-badge-not-a-wrapper': !this.hasChildren,
386
+ [this.classNames?.root || '']: !!this.classNames?.root,
387
+ }, style: this.styles?.root ? { cssText: this.styles.root } : undefined }, h("slot", null), !isHidden && (h("sup", { class: {
388
+ 'x-badge-count': !this.dot,
389
+ 'x-badge-dot': this.dot,
390
+ 'x-badge-multiple-words': !this.dot && String(displayCount || '').length > 1,
391
+ 'x-badge-count-sm': this.size === 'small',
392
+ [`x-badge-color-${this.color}`]: !!this.color && this.isPresetColor(this.color),
393
+ [this.classNames?.indicator || '']: !!this.classNames?.indicator,
394
+ }, style: {
395
+ ...offsetStyle,
396
+ ...colorStyle,
397
+ ...(this.styles?.indicator ? { cssText: this.styles.indicator } : {}),
398
+ }, title: titleText }, displayCount))));
399
+ }
400
+ static get watchers() { return {
401
+ "count": [{
402
+ "countChanged": 0
403
+ }]
404
+ }; }
405
+ };
406
+ XBadge.style = xBadgeCss();
407
+
408
+ const xFloatButtonCss = () => `@charset "UTF-8";:root{--x-color-primary:#1677ff;--x-color-primary-rgb:22, 119, 255;--x-color-primary-contrast:#ffffff;--x-color-primary-contrast-rgb:255, 255, 255;--x-color-primary-shade:#0958d9;--x-color-primary-tint:#4096ff;--x-color-primary-bg:#e6f4ff;--x-color-primary-bg-hover:#bae0ff;--x-color-primary-border:#91caff;--x-color-primary-border-hover:#69b1ff;--x-color-primary-hover:#4096ff;--x-color-primary-active:#0958d9;--x-color-primary-text:#1677ff;--x-color-primary-text-hover:#4096ff;--x-color-primary-text-active:#0958d9;--x-color-secondary:#3dc2ff;--x-color-secondary-rgb:61, 194, 255;--x-color-secondary-contrast:#ffffff;--x-color-secondary-contrast-rgb:255, 255, 255;--x-color-secondary-shade:#36abe0;--x-color-secondary-tint:#50c8ff;--x-color-success:#52c41a;--x-color-success-rgb:82, 196, 26;--x-color-success-contrast:#ffffff;--x-color-success-contrast-rgb:255, 255, 255;--x-color-success-shade:#389e0d;--x-color-success-tint:#73d13d;--x-color-success-bg:#f6ffed;--x-color-success-bg-hover:#d9f7be;--x-color-success-border:#b7eb8f;--x-color-success-border-hover:#95de64;--x-color-success-hover:#73d13d;--x-color-success-active:#389e0d;--x-color-success-text:#52c41a;--x-color-success-text-hover:#73d13d;--x-color-success-text-active:#389e0d;--x-color-warning:#faad14;--x-color-warning-rgb:250, 173, 20;--x-color-warning-contrast:#000000;--x-color-warning-contrast-rgb:0, 0, 0;--x-color-warning-shade:#d48806;--x-color-warning-tint:#ffc53d;--x-color-warning-bg:#fffbe6;--x-color-warning-bg-hover:#fff1b8;--x-color-warning-border:#ffe58f;--x-color-warning-border-hover:#ffd666;--x-color-warning-hover:#ffc53d;--x-color-warning-active:#d48806;--x-color-warning-text:#faad14;--x-color-warning-text-hover:#ffc53d;--x-color-warning-text-active:#d48806;--x-color-danger:#ff4d4f;--x-color-danger-rgb:255, 77, 79;--x-color-danger-contrast:#ffffff;--x-color-danger-contrast-rgb:255, 255, 255;--x-color-danger-shade:#cf1322;--x-color-danger-tint:#ff7875;--x-color-error:#ff4d4f;--x-color-error-rgb:255, 77, 79;--x-color-error-bg:#fff2f0;--x-color-error-bg-hover:#ffccc7;--x-color-error-border:#ffa39e;--x-color-error-border-hover:#ff7875;--x-color-error-hover:#ff7875;--x-color-error-active:#d9363e;--x-color-error-text:#ff4d4f;--x-color-error-text-hover:#ff7875;--x-color-error-text-active:#d9363e;--x-color-info:#1677ff;--x-color-info-rgb:22, 119, 255;--x-color-info-bg:#e6f4ff;--x-color-info-bg-hover:#bae0ff;--x-color-info-border:#91caff;--x-color-info-border-hover:#69b1ff;--x-color-info-hover:#69b1ff;--x-color-info-active:#0958d9;--x-color-info-text:#1677ff;--x-color-info-text-hover:#69b1ff;--x-color-info-text-active:#0958d9;--x-color-text:rgba(0, 0, 0, 0.88);--x-color-text-secondary:rgba(0, 0, 0, 0.65);--x-color-text-tertiary:rgba(0, 0, 0, 0.45);--x-color-text-quaternary:rgba(0, 0, 0, 0.25);--x-color-text-disabled:rgba(0, 0, 0, 0.25);--x-color-text-placeholder:rgba(0, 0, 0, 0.25);--x-color-text-heading:rgba(0, 0, 0, 0.88);--x-color-text-label:rgba(0, 0, 0, 0.65);--x-color-text-description:rgba(0, 0, 0, 0.45);--x-color-text-light-solid:#ffffff;--x-color-bg-container:#ffffff;--x-color-bg-elevated:#ffffff;--x-color-bg-layout:#f5f5f5;--x-color-bg-spotlight:rgba(0, 0, 0, 0.85);--x-color-bg-mask:rgba(0, 0, 0, 0.45);--x-color-bg-base:#ffffff;--x-color-bg-container-disabled:#f5f5f5;--x-color-bg-container-loading:rgba(255, 255, 255, 0.65);--x-color-white:#ffffff;--x-color-fill:rgba(0, 0, 0, 0.15);--x-color-fill-secondary:rgba(0, 0, 0, 0.06);--x-color-fill-tertiary:rgba(0, 0, 0, 0.04);--x-color-fill-quaternary:rgba(0, 0, 0, 0.02);--x-color-border:#d9d9d9;--x-color-border-secondary:#f0f0f0;--x-color-border-bg:#ffffff;--x-color-split:rgba(5, 5, 5, 0.06);--x-color-dark:#222428;--x-color-dark-rgb:34, 36, 40;--x-color-dark-contrast:#ffffff;--x-color-dark-contrast-rgb:255, 255, 255;--x-color-dark-shade:#1e2023;--x-color-dark-tint:#383a3e;--x-color-medium:#92949c;--x-color-medium-rgb:146, 148, 156;--x-color-medium-contrast:#ffffff;--x-color-medium-contrast-rgb:255, 255, 255;--x-color-medium-shade:#808289;--x-color-medium-tint:#9d9fa6;--x-color-light:#f4f5f8;--x-color-light-rgb:244, 245, 248;--x-color-light-contrast:#000000;--x-color-light-contrast-rgb:0, 0, 0;--x-color-light-shade:#d7d8da;--x-color-light-tint:#f5f6f9;--x-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--x-font-family-code:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--x-font-size:14px;--x-font-size-sm:12px;--x-font-size-lg:16px;--x-font-size-xl:20px;--x-font-size-heading-1:38px;--x-font-size-heading-2:30px;--x-font-size-heading-3:24px;--x-font-size-heading-4:20px;--x-font-size-heading-5:16px;--x-line-height:1.5714285714285714;--x-line-height-lg:1.5;--x-line-height-sm:1.6666666666666667;--x-line-height-heading-1:1.2105263157894737;--x-line-height-heading-2:1.2666666666666666;--x-line-height-heading-3:1.3333333333333333;--x-line-height-heading-4:1.4;--x-line-height-heading-5:1.5;--x-font-weight-normal:400;--x-font-weight-medium:500;--x-font-weight-semibold:600;--x-font-weight-strong:600;--x-font-size-base:14px;--x-font-size-xxl:24px;--x-line-height-base:1.5714285714285714;--x-spacing-xxs:4px;--x-spacing-xs:8px;--x-spacing-sm:12px;--x-spacing-md:16px;--x-spacing-lg:20px;--x-spacing-xl:24px;--x-spacing-xxl:32px;--x-spacing-xxxl:48px;--x-margin-xxs:4px;--x-margin-xs:8px;--x-margin-sm:12px;--x-margin-md:16px;--x-margin-lg:24px;--x-margin-xl:32px;--x-margin-xxl:48px;--x-padding-xxs:4px;--x-padding-xs:8px;--x-padding-sm:12px;--x-padding-md:16px;--x-padding-lg:24px;--x-padding-content-horizontal-lg:24px;--x-padding-content-vertical-lg:12px;--x-padding-content-horizontal:16px;--x-padding-content-vertical:12px;--x-padding-content-horizontal-sm:16px;--x-padding-content-vertical-sm:8px;--x-border-radius:6px;--x-border-radius-xs:2px;--x-border-radius-sm:4px;--x-border-radius-lg:8px;--x-border-radius-xl:12px;--x-border-radius-outer:4px;--x-border-radius-base:6px;--x-border-width:1px;--x-border-width-base:1px;--x-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-shadow-lg:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-box-shadow-popover-arrow:2px 2px 5px rgba(0, 0, 0, 0.05);--x-box-shadow-card:0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);--x-box-shadow-drawer-right:-6px 0 16px 0 rgba(0, 0, 0, 0.08), -3px 0 6px -4px rgba(0, 0, 0, 0.12), -9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-left:6px 0 16px 0 rgba(0, 0, 0, 0.08), 3px 0 6px -4px rgba(0, 0, 0, 0.12), 9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-up:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-down:0 -6px 16px 0 rgba(0, 0, 0, 0.08), 0 -3px 6px -4px rgba(0, 0, 0, 0.12), 0 -9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tabs-overflow-left:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-right:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-top:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-bottom:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);--x-motion-duration-fast:0.1s;--x-motion-duration-mid:0.2s;--x-motion-duration-slow:0.3s;--x-motion-ease-in-out:cubic-bezier(0.645, 0.045, 0.355, 1);--x-motion-ease-out:cubic-bezier(0.215, 0.61, 0.355, 1);--x-motion-ease-in:cubic-bezier(0.55, 0.055, 0.675, 0.19);--x-motion-ease-out-back:cubic-bezier(0.12, 0.4, 0.29, 1.46);--x-motion-ease-in-back:cubic-bezier(0.71, -0.46, 0.88, 0.6);--x-motion-ease-in-out-circle:cubic-bezier(0.78, 0.14, 0.15, 0.86);--x-motion-ease-out-circle:cubic-bezier(0.08, 0.82, 0.17, 1);--x-motion-ease-in-circle:cubic-bezier(0.6, 0.04, 0.98, 0.34);--x-motion-ease-in-quint:cubic-bezier(0.755, 0.05, 0.855, 0.06);--x-motion-ease-out-quint:cubic-bezier(0.23, 1, 0.32, 1);--x-z-index-base:0;--x-z-index-popup-base:1000;--x-z-index-popup:1030;--x-z-index-affix:10;--x-z-index-modal:1000;--x-z-index-modal-mask:1000;--x-z-index-drawer:1000;--x-z-index-popover:1030;--x-z-index-dropdown:1050;--x-z-index-tooltip:1070;--x-z-index-notification:1080;--x-z-index-message:1090;--x-z-index-popconfirm:1060;--x-z-index-table-fixed:10;--x-opacity-loading:0.65;--x-opacity-image:1;--x-opacity-disabled:0.5;--x-control-height:32px;--x-control-height-xs:24px;--x-control-height-sm:24px;--x-control-height-lg:40px;--x-control-radio-size:16px;--x-control-checkbox-size:16px;--x-control-padding-horizontal:12px;--x-control-padding-horizontal-sm:8px;--x-control-outline-width:2px;--x-control-outline:rgba(5, 145, 255, 0.1);--x-control-item-bg-hover:rgba(0, 0, 0, 0.04);--x-control-item-bg-active:#e6f4ff;--x-control-item-bg-active-hover:#bae0ff;--x-control-item-bg-active-disabled:rgba(0, 0, 0, 0.15);--x-control-tmp-outline:rgba(0, 0, 0, 0.02);--x-color-yellow:#fadb14;--x-color-yellow-rgb:250, 219, 20;--x-font-family-base:var(--x-font-family);--x-color-link:#1677ff;--x-color-link-hover:#69b1ff;--x-color-link-active:#0958d9;--x-color-icon:rgba(0, 0, 0, 0.45);--x-color-icon-hover:rgba(0, 0, 0, 0.88);--x-color-highlight:#ff4d4f;--x-color-bg-text-hover:rgba(0, 0, 0, 0.06);--x-color-bg-text-active:rgba(0, 0, 0, 0.15);--x-screen-xs:480px;--x-screen-xs-min:480px;--x-screen-xs-max:575px;--x-screen-sm:576px;--x-screen-sm-min:576px;--x-screen-sm-max:767px;--x-screen-md:768px;--x-screen-md-min:768px;--x-screen-md-max:991px;--x-screen-lg:992px;--x-screen-lg-min:992px;--x-screen-lg-max:1199px;--x-screen-xl:1200px;--x-screen-xl-min:1200px;--x-screen-xl-max:1599px;--x-screen-xxl:1600px;--x-screen-xxl-min:1600px;--x-color-fill-content:rgba(0, 0, 0, 0.06);--x-color-fill-content-hover:rgba(0, 0, 0, 0.15);--x-color-fill-alter:rgba(0, 0, 0, 0.02);--x-scrollbar-width:12px;--x-scrollbar-track-bg:rgba(0, 0, 0, 0.04);--x-scrollbar-thumb-bg:rgba(0, 0, 0, 0.25);--x-scrollbar-thumb-bg-hover:rgba(0, 0, 0, 0.35);--x-menu-dark-bg:#001529;--x-menu-dark-item-bg:#001529;--x-menu-dark-popup-bg:#001529;--x-menu-dark-submenu-item-bg:#000c17}:host{display:block;position:fixed;z-index:var(--x-float-button-z-index, var(--x-z-index-popup, 99));right:var(--x-float-button-right, var(--x-spacing-xl, 24px));bottom:var(--x-float-button-bottom, var(--x-spacing-xl, 24px))}.x-float-btn{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;width:var(--x-float-button-size, var(--x-control-height-lg, 40px));height:var(--x-float-button-size, var(--x-control-height-lg, 40px));background-color:var(--x-float-button-bg, var(--x-color-bg-container, #ffffff));color:var(--x-float-button-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));border-radius:var(--x-float-button-border-radius, 50%);-webkit-box-shadow:var(--x-float-button-shadow, var(--x-shadow-secondary, 0 6px 16px 0 rgba(0, 0, 0, 0.08)));box-shadow:var(--x-float-button-shadow, var(--x-shadow-secondary, 0 6px 16px 0 rgba(0, 0, 0, 0.08)));border:none;cursor:pointer;padding:0;-webkit-transition:all var(--x-float-button-motion-duration, var(--x-motion-duration-fast, 0.1s));transition:all var(--x-float-button-motion-duration, var(--x-motion-duration-fast, 0.1s));text-decoration:none;outline:none}.x-float-btn:hover{background-color:var(--x-float-button-bg-hover, var(--x-color-bg-layout, #f5f5f5))}.x-float-btn.x-float-btn-primary{background-color:var(--x-float-button-primary-bg, var(--x-color-primary, #1677ff));color:var(--x-float-button-primary-color, var(--x-color-white, #ffffff))}.x-float-btn.x-float-btn-primary:hover{background-color:var(--x-float-button-primary-bg-hover, var(--x-color-primary-hover, #4096ff))}.x-float-btn.x-float-btn-square{border-radius:var(--x-float-button-border-radius-square, var(--x-border-radius-base, 6px))}.x-float-btn-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%}.x-float-btn-icon{font-size:var(--x-float-button-icon-size, 20px);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.x-float-btn-description{font-size:var(--x-float-button-description-font-size, var(--x-font-size-sm, 12px));line-height:var(--x-float-button-description-line-height, var(--x-line-height-sm, 1.6666666667));margin-top:var(--x-float-button-description-margin-top, var(--x-spacing-xxs, 4px))}`;
409
+
410
+ const XFloatButton = class {
411
+ constructor(hostRef) {
412
+ registerInstance(this, hostRef);
413
+ this.xClick = createEvent(this, "xClick", 7);
414
+ }
415
+ /**
416
+ * Text or other element to display in the tooltip
417
+ * @example
418
+ * <x-float-button tooltip="Help"></x-float-button>
419
+ */
420
+ tooltip;
421
+ /**
422
+ * The type of the button
423
+ * @example
424
+ * <x-float-button type="primary"></x-float-button>
425
+ */
426
+ type = 'default';
427
+ /**
428
+ * The shape of the button
429
+ * @example
430
+ * <x-float-button shape="square"></x-float-button>
431
+ */
432
+ shape = 'circle';
433
+ /**
434
+ * The target of the link
435
+ * @example
436
+ * <x-float-button href="/docs"></x-float-button>
437
+ */
438
+ href;
439
+ /**
440
+ * The target attribute of the link
441
+ * @example
442
+ * <x-float-button href="https://example.com" target="_blank"></x-float-button>
443
+ */
444
+ target;
445
+ /**
446
+ * Description text
447
+ * @example
448
+ * <x-float-button description="Support"></x-float-button>
449
+ */
450
+ description;
451
+ /**
452
+ * Emitted when the button is clicked
453
+ * @example
454
+ * <x-float-button onXClick={(ev) => console.log(ev.detail)}></x-float-button>
455
+ */
456
+ xClick;
457
+ handleClick = (ev) => {
458
+ this.xClick.emit(ev);
459
+ };
460
+ /**
461
+ * Render float button with optional link and tooltip.
462
+ *
463
+ * Flow:
464
+ * 1. Determines tag type: `a` if href exists, otherwise `button`.
465
+ * 2. Constructs classes based on type (primary/default) and shape.
466
+ * 3. Renders button content:
467
+ * - Icon slot.
468
+ * - Description (if present).
469
+ * 4. Wraps in Host with `title` attribute for native tooltip.
470
+ *
471
+ * @returns JSX.Element
472
+ * @example
473
+ * <x-float-button tooltip="Top">
474
+ * <x-icon slot="icon" name="arrow_upward"></x-icon>
475
+ * </x-float-button>
476
+ */
477
+ render() {
478
+ const { type, shape, href, target, description, tooltip } = this;
479
+ const classes = {
480
+ 'x-float-btn': true,
481
+ [`x-float-btn-${type}`]: true,
482
+ [`x-float-btn-${shape}`]: true,
483
+ };
484
+ const content = (h("div", { key: '6578a1485b4ac4435173e705e70cf11443563681', class: "x-float-btn-body" }, h("div", { key: '718fe35102bed51d9444c5a9726efef149e2a4fe', class: "x-float-btn-content" }, h("div", { key: 'dcd91a0e83f2e973c88546525aafe2c8574c582e', class: "x-float-btn-icon" }, h("slot", { key: '4ea0892ea7e6135a206d4fb9fecb37ff2f73f12c', name: "icon" })), description && h("div", { key: '080657e737995cfd8389b350c0a0ce447594762b', class: "x-float-btn-description" }, description), h("slot", { key: '1bb44cab04c8d259c90bf7b52ccda9e88efb4884', name: "description" }))));
485
+ const Element = href ? 'a' : 'button';
486
+ const attrs = href ? { href, target } : { type: 'button' };
487
+ return (h(Host, { key: '1141e40b36259b15c3b8b57380e9d45f6a5f0bc9', title: tooltip }, h(Element, { key: '18f2891c388c8473db1d693a1557731bac8fbfdf', class: classes, ...attrs, onClick: this.handleClick }, content)));
488
+ }
489
+ };
490
+ XFloatButton.style = xFloatButtonCss();
491
+
492
+ /**
493
+ * FormGroup — Tracks values & validity of a group of controls
494
+ * Mirrors Angular's FormGroup API 100%
495
+ */
496
+ class FormGroup extends AbstractControl {
497
+ _controls;
498
+ constructor(controls, validatorsOrOptions, asyncValidators) {
499
+ super();
500
+ this._controls = controls;
501
+ this._setParentForControls();
502
+ this._applyValidators(validatorsOrOptions, asyncValidators);
503
+ this._updateValueAndValidity({ onlySelf: true, emitEvent: false });
504
+ }
505
+ get value() {
506
+ return this._reduceValue();
507
+ }
508
+ get controls() {
509
+ return this._controls;
510
+ }
511
+ // ─── Control Management ───────────────────────────────────────
512
+ registerControl(name, control) {
513
+ if (this._controls[name])
514
+ return this._controls[name];
515
+ this._controls[name] = control;
516
+ control.parent = this;
517
+ this._updateValueAndValidity();
518
+ return control;
519
+ }
520
+ addControl(name, control, opts = {}) {
521
+ this.registerControl(name, control);
522
+ if (opts.emitEvent !== false) {
523
+ this._emitValueChange(this.value);
524
+ }
525
+ }
526
+ removeControl(name, opts = {}) {
527
+ if (this._controls[name]) {
528
+ this._controls[name].parent = null;
529
+ delete this._controls[name];
530
+ }
531
+ this._updateValueAndValidity();
532
+ if (opts.emitEvent !== false) {
533
+ this._emitValueChange(this.value);
534
+ }
535
+ }
536
+ setControl(name, control, opts = {}) {
537
+ if (this._controls[name]) {
538
+ this._controls[name].parent = null;
539
+ }
540
+ this._controls[name] = control;
541
+ control.parent = this;
542
+ this._updateValueAndValidity();
543
+ if (opts.emitEvent !== false) {
544
+ this._emitValueChange(this.value);
545
+ }
546
+ }
547
+ contains(controlName) {
548
+ return controlName in this._controls && this._controls[controlName].enabled;
549
+ }
550
+ // ─── Value Operations ─────────────────────────────────────────
551
+ setValue(value, options = {}) {
552
+ this._checkAllValuesPresent(value);
553
+ Object.keys(value).forEach(name => {
554
+ this._throwIfControlMissing(name);
555
+ this._controls[name].setValue(value[name], {
556
+ onlySelf: true,
557
+ emitEvent: options.emitEvent
558
+ });
559
+ });
560
+ this._updateValueAndValidity(options);
561
+ if (options.emitEvent !== false) {
562
+ this._emitValueChange(this.value);
563
+ }
564
+ }
565
+ patchValue(value, options = {}) {
566
+ Object.keys(value).forEach(name => {
567
+ if (this._controls[name]) {
568
+ this._controls[name].patchValue(value[name], {
569
+ onlySelf: true,
570
+ emitEvent: options.emitEvent
571
+ });
572
+ }
573
+ });
574
+ this._updateValueAndValidity(options);
575
+ if (options.emitEvent !== false) {
576
+ this._emitValueChange(this.value);
577
+ }
578
+ }
579
+ reset(value, options = {}) {
580
+ this._forEachChild((control, name) => {
581
+ control.reset(value ? value[name] : undefined, { onlySelf: true, emitEvent: options.emitEvent });
582
+ });
583
+ this.markAsPristine(options);
584
+ this.markAsUntouched(options);
585
+ this._updateValueAndValidity(options);
586
+ }
587
+ getRawValue() {
588
+ return this._reduceChildren({}, (acc, control, name) => {
589
+ acc[name] = control.getRawValue();
590
+ return acc;
591
+ });
592
+ }
593
+ // ─── Internal ────────────────────────────────────────────────
594
+ _runValidation() {
595
+ if (this._status === 'DISABLED')
596
+ return;
597
+ this._status = this._computeStatus();
598
+ const groupErrors = this._runValidators(this.value);
599
+ const childErrors = this._collectChildErrors();
600
+ const errors = { ...(childErrors || {}), ...(groupErrors || {}) };
601
+ this._errors = Object.keys(errors).length ? errors : null;
602
+ this._status = this._calculateStatus();
603
+ }
604
+ _computeStatus() {
605
+ if (this._anyControlsHaveStatus('INVALID'))
606
+ return 'INVALID';
607
+ if (this._anyControlsHaveStatus('PENDING'))
608
+ return 'PENDING';
609
+ return 'VALID';
610
+ }
611
+ _collectChildErrors() {
612
+ return null; // group-level: child errors are surfaced via controls themselves
613
+ }
614
+ _anyControlsHaveStatus(status) {
615
+ return Object.values(this._controls).some((c) => c.status === status);
616
+ }
617
+ _forEachChild(fn) {
618
+ Object.keys(this._controls).forEach(name => fn(this._controls[name], name));
619
+ }
620
+ _anyControls(condition) {
621
+ return Object.values(this._controls).some((c) => condition(c));
622
+ }
623
+ _reduceValue() {
624
+ return this._reduceChildren({}, (acc, control, name) => {
625
+ if (control.enabled || this.disabled)
626
+ acc[name] = control.value;
627
+ return acc;
628
+ });
629
+ }
630
+ _reduceChildren(initValue, fn) {
631
+ let res = initValue;
632
+ this._forEachChild((control, name) => { res = fn(res, control, name); });
633
+ return res;
634
+ }
635
+ _setParentForControls() {
636
+ this._forEachChild((control) => { control.parent = this; });
637
+ }
638
+ _checkAllValuesPresent(value) {
639
+ this._forEachChild((_control, name) => {
640
+ if (!(name in value)) {
641
+ throw new Error(`Must supply a value for form control with name: '${name}'.`);
642
+ }
643
+ });
644
+ }
645
+ _throwIfControlMissing(name) {
646
+ if (!Object.keys(this._controls).length) {
647
+ throw new Error(`There are no form controls registered with this group yet.`);
648
+ }
649
+ if (!this._controls[name]) {
650
+ throw new Error(`Cannot find form control with name: ${name}.`);
651
+ }
652
+ }
653
+ }
654
+
655
+ const xFormCss = () => `@charset "UTF-8";:root{--x-color-primary:#1677ff;--x-color-primary-rgb:22, 119, 255;--x-color-primary-contrast:#ffffff;--x-color-primary-contrast-rgb:255, 255, 255;--x-color-primary-shade:#0958d9;--x-color-primary-tint:#4096ff;--x-color-primary-bg:#e6f4ff;--x-color-primary-bg-hover:#bae0ff;--x-color-primary-border:#91caff;--x-color-primary-border-hover:#69b1ff;--x-color-primary-hover:#4096ff;--x-color-primary-active:#0958d9;--x-color-primary-text:#1677ff;--x-color-primary-text-hover:#4096ff;--x-color-primary-text-active:#0958d9;--x-color-secondary:#3dc2ff;--x-color-secondary-rgb:61, 194, 255;--x-color-secondary-contrast:#ffffff;--x-color-secondary-contrast-rgb:255, 255, 255;--x-color-secondary-shade:#36abe0;--x-color-secondary-tint:#50c8ff;--x-color-success:#52c41a;--x-color-success-rgb:82, 196, 26;--x-color-success-contrast:#ffffff;--x-color-success-contrast-rgb:255, 255, 255;--x-color-success-shade:#389e0d;--x-color-success-tint:#73d13d;--x-color-success-bg:#f6ffed;--x-color-success-bg-hover:#d9f7be;--x-color-success-border:#b7eb8f;--x-color-success-border-hover:#95de64;--x-color-success-hover:#73d13d;--x-color-success-active:#389e0d;--x-color-success-text:#52c41a;--x-color-success-text-hover:#73d13d;--x-color-success-text-active:#389e0d;--x-color-warning:#faad14;--x-color-warning-rgb:250, 173, 20;--x-color-warning-contrast:#000000;--x-color-warning-contrast-rgb:0, 0, 0;--x-color-warning-shade:#d48806;--x-color-warning-tint:#ffc53d;--x-color-warning-bg:#fffbe6;--x-color-warning-bg-hover:#fff1b8;--x-color-warning-border:#ffe58f;--x-color-warning-border-hover:#ffd666;--x-color-warning-hover:#ffc53d;--x-color-warning-active:#d48806;--x-color-warning-text:#faad14;--x-color-warning-text-hover:#ffc53d;--x-color-warning-text-active:#d48806;--x-color-danger:#ff4d4f;--x-color-danger-rgb:255, 77, 79;--x-color-danger-contrast:#ffffff;--x-color-danger-contrast-rgb:255, 255, 255;--x-color-danger-shade:#cf1322;--x-color-danger-tint:#ff7875;--x-color-error:#ff4d4f;--x-color-error-rgb:255, 77, 79;--x-color-error-bg:#fff2f0;--x-color-error-bg-hover:#ffccc7;--x-color-error-border:#ffa39e;--x-color-error-border-hover:#ff7875;--x-color-error-hover:#ff7875;--x-color-error-active:#d9363e;--x-color-error-text:#ff4d4f;--x-color-error-text-hover:#ff7875;--x-color-error-text-active:#d9363e;--x-color-info:#1677ff;--x-color-info-rgb:22, 119, 255;--x-color-info-bg:#e6f4ff;--x-color-info-bg-hover:#bae0ff;--x-color-info-border:#91caff;--x-color-info-border-hover:#69b1ff;--x-color-info-hover:#69b1ff;--x-color-info-active:#0958d9;--x-color-info-text:#1677ff;--x-color-info-text-hover:#69b1ff;--x-color-info-text-active:#0958d9;--x-color-text:rgba(0, 0, 0, 0.88);--x-color-text-secondary:rgba(0, 0, 0, 0.65);--x-color-text-tertiary:rgba(0, 0, 0, 0.45);--x-color-text-quaternary:rgba(0, 0, 0, 0.25);--x-color-text-disabled:rgba(0, 0, 0, 0.25);--x-color-text-placeholder:rgba(0, 0, 0, 0.25);--x-color-text-heading:rgba(0, 0, 0, 0.88);--x-color-text-label:rgba(0, 0, 0, 0.65);--x-color-text-description:rgba(0, 0, 0, 0.45);--x-color-text-light-solid:#ffffff;--x-color-bg-container:#ffffff;--x-color-bg-elevated:#ffffff;--x-color-bg-layout:#f5f5f5;--x-color-bg-spotlight:rgba(0, 0, 0, 0.85);--x-color-bg-mask:rgba(0, 0, 0, 0.45);--x-color-bg-base:#ffffff;--x-color-bg-container-disabled:#f5f5f5;--x-color-bg-container-loading:rgba(255, 255, 255, 0.65);--x-color-white:#ffffff;--x-color-fill:rgba(0, 0, 0, 0.15);--x-color-fill-secondary:rgba(0, 0, 0, 0.06);--x-color-fill-tertiary:rgba(0, 0, 0, 0.04);--x-color-fill-quaternary:rgba(0, 0, 0, 0.02);--x-color-border:#d9d9d9;--x-color-border-secondary:#f0f0f0;--x-color-border-bg:#ffffff;--x-color-split:rgba(5, 5, 5, 0.06);--x-color-dark:#222428;--x-color-dark-rgb:34, 36, 40;--x-color-dark-contrast:#ffffff;--x-color-dark-contrast-rgb:255, 255, 255;--x-color-dark-shade:#1e2023;--x-color-dark-tint:#383a3e;--x-color-medium:#92949c;--x-color-medium-rgb:146, 148, 156;--x-color-medium-contrast:#ffffff;--x-color-medium-contrast-rgb:255, 255, 255;--x-color-medium-shade:#808289;--x-color-medium-tint:#9d9fa6;--x-color-light:#f4f5f8;--x-color-light-rgb:244, 245, 248;--x-color-light-contrast:#000000;--x-color-light-contrast-rgb:0, 0, 0;--x-color-light-shade:#d7d8da;--x-color-light-tint:#f5f6f9;--x-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--x-font-family-code:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--x-font-size:14px;--x-font-size-sm:12px;--x-font-size-lg:16px;--x-font-size-xl:20px;--x-font-size-heading-1:38px;--x-font-size-heading-2:30px;--x-font-size-heading-3:24px;--x-font-size-heading-4:20px;--x-font-size-heading-5:16px;--x-line-height:1.5714285714285714;--x-line-height-lg:1.5;--x-line-height-sm:1.6666666666666667;--x-line-height-heading-1:1.2105263157894737;--x-line-height-heading-2:1.2666666666666666;--x-line-height-heading-3:1.3333333333333333;--x-line-height-heading-4:1.4;--x-line-height-heading-5:1.5;--x-font-weight-normal:400;--x-font-weight-medium:500;--x-font-weight-semibold:600;--x-font-weight-strong:600;--x-font-size-base:14px;--x-font-size-xxl:24px;--x-line-height-base:1.5714285714285714;--x-spacing-xxs:4px;--x-spacing-xs:8px;--x-spacing-sm:12px;--x-spacing-md:16px;--x-spacing-lg:20px;--x-spacing-xl:24px;--x-spacing-xxl:32px;--x-spacing-xxxl:48px;--x-margin-xxs:4px;--x-margin-xs:8px;--x-margin-sm:12px;--x-margin-md:16px;--x-margin-lg:24px;--x-margin-xl:32px;--x-margin-xxl:48px;--x-padding-xxs:4px;--x-padding-xs:8px;--x-padding-sm:12px;--x-padding-md:16px;--x-padding-lg:24px;--x-padding-content-horizontal-lg:24px;--x-padding-content-vertical-lg:12px;--x-padding-content-horizontal:16px;--x-padding-content-vertical:12px;--x-padding-content-horizontal-sm:16px;--x-padding-content-vertical-sm:8px;--x-border-radius:6px;--x-border-radius-xs:2px;--x-border-radius-sm:4px;--x-border-radius-lg:8px;--x-border-radius-xl:12px;--x-border-radius-outer:4px;--x-border-radius-base:6px;--x-border-width:1px;--x-border-width-base:1px;--x-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-shadow-lg:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-box-shadow-popover-arrow:2px 2px 5px rgba(0, 0, 0, 0.05);--x-box-shadow-card:0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);--x-box-shadow-drawer-right:-6px 0 16px 0 rgba(0, 0, 0, 0.08), -3px 0 6px -4px rgba(0, 0, 0, 0.12), -9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-left:6px 0 16px 0 rgba(0, 0, 0, 0.08), 3px 0 6px -4px rgba(0, 0, 0, 0.12), 9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-up:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-down:0 -6px 16px 0 rgba(0, 0, 0, 0.08), 0 -3px 6px -4px rgba(0, 0, 0, 0.12), 0 -9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tabs-overflow-left:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-right:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-top:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-bottom:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);--x-motion-duration-fast:0.1s;--x-motion-duration-mid:0.2s;--x-motion-duration-slow:0.3s;--x-motion-ease-in-out:cubic-bezier(0.645, 0.045, 0.355, 1);--x-motion-ease-out:cubic-bezier(0.215, 0.61, 0.355, 1);--x-motion-ease-in:cubic-bezier(0.55, 0.055, 0.675, 0.19);--x-motion-ease-out-back:cubic-bezier(0.12, 0.4, 0.29, 1.46);--x-motion-ease-in-back:cubic-bezier(0.71, -0.46, 0.88, 0.6);--x-motion-ease-in-out-circle:cubic-bezier(0.78, 0.14, 0.15, 0.86);--x-motion-ease-out-circle:cubic-bezier(0.08, 0.82, 0.17, 1);--x-motion-ease-in-circle:cubic-bezier(0.6, 0.04, 0.98, 0.34);--x-motion-ease-in-quint:cubic-bezier(0.755, 0.05, 0.855, 0.06);--x-motion-ease-out-quint:cubic-bezier(0.23, 1, 0.32, 1);--x-z-index-base:0;--x-z-index-popup-base:1000;--x-z-index-popup:1030;--x-z-index-affix:10;--x-z-index-modal:1000;--x-z-index-modal-mask:1000;--x-z-index-drawer:1000;--x-z-index-popover:1030;--x-z-index-dropdown:1050;--x-z-index-tooltip:1070;--x-z-index-notification:1080;--x-z-index-message:1090;--x-z-index-popconfirm:1060;--x-z-index-table-fixed:10;--x-opacity-loading:0.65;--x-opacity-image:1;--x-opacity-disabled:0.5;--x-control-height:32px;--x-control-height-xs:24px;--x-control-height-sm:24px;--x-control-height-lg:40px;--x-control-radio-size:16px;--x-control-checkbox-size:16px;--x-control-padding-horizontal:12px;--x-control-padding-horizontal-sm:8px;--x-control-outline-width:2px;--x-control-outline:rgba(5, 145, 255, 0.1);--x-control-item-bg-hover:rgba(0, 0, 0, 0.04);--x-control-item-bg-active:#e6f4ff;--x-control-item-bg-active-hover:#bae0ff;--x-control-item-bg-active-disabled:rgba(0, 0, 0, 0.15);--x-control-tmp-outline:rgba(0, 0, 0, 0.02);--x-color-yellow:#fadb14;--x-color-yellow-rgb:250, 219, 20;--x-font-family-base:var(--x-font-family);--x-color-link:#1677ff;--x-color-link-hover:#69b1ff;--x-color-link-active:#0958d9;--x-color-icon:rgba(0, 0, 0, 0.45);--x-color-icon-hover:rgba(0, 0, 0, 0.88);--x-color-highlight:#ff4d4f;--x-color-bg-text-hover:rgba(0, 0, 0, 0.06);--x-color-bg-text-active:rgba(0, 0, 0, 0.15);--x-screen-xs:480px;--x-screen-xs-min:480px;--x-screen-xs-max:575px;--x-screen-sm:576px;--x-screen-sm-min:576px;--x-screen-sm-max:767px;--x-screen-md:768px;--x-screen-md-min:768px;--x-screen-md-max:991px;--x-screen-lg:992px;--x-screen-lg-min:992px;--x-screen-lg-max:1199px;--x-screen-xl:1200px;--x-screen-xl-min:1200px;--x-screen-xl-max:1599px;--x-screen-xxl:1600px;--x-screen-xxl-min:1600px;--x-color-fill-content:rgba(0, 0, 0, 0.06);--x-color-fill-content-hover:rgba(0, 0, 0, 0.15);--x-color-fill-alter:rgba(0, 0, 0, 0.02);--x-scrollbar-width:12px;--x-scrollbar-track-bg:rgba(0, 0, 0, 0.04);--x-scrollbar-thumb-bg:rgba(0, 0, 0, 0.25);--x-scrollbar-thumb-bg-hover:rgba(0, 0, 0, 0.35);--x-menu-dark-bg:#001529;--x-menu-dark-item-bg:#001529;--x-menu-dark-popup-bg:#001529;--x-menu-dark-submenu-item-bg:#000c17}:host{display:block;color:var(--x-form-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-form-font-size, var(--x-font-size, 14px));font-family:var(--x-form-font-family, var(--x-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif));font-variant:tabular-nums;line-height:var(--x-form-line-height, var(--x-line-height, 1.5715));-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.x-form{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;color:var(--x-form-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-form-font-size, var(--x-font-size, 14px));font-variant:tabular-nums;line-height:var(--x-form-line-height, var(--x-line-height, 1.5715));list-style:none;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.x-form.x-form-inline{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.x-form.x-form-inline ::slotted(x-form-item){-ms-flex:none;flex:none;margin-right:var(--x-form-inline-item-margin-right, var(--x-spacing-md, 16px));margin-bottom:0}.x-form.x-form-hide-required-mark ::slotted(x-form-item) .x-form-item-required::before{display:none !important}.x-form.x-form-hide-required-mark .x-form-item-required::before{display:none !important}`;
656
+
657
+ const XForm = class {
658
+ constructor(hostRef) {
659
+ registerInstance(this, hostRef);
660
+ this.xFinish = createEvent(this, "xFinish", 7);
661
+ this.xFinishFailed = createEvent(this, "xFinishFailed", 7);
662
+ }
663
+ /**
664
+ * Form layout
665
+ * @example
666
+ * <x-form layout="vertical"></x-form>
667
+ */
668
+ layout = 'horizontal';
669
+ /**
670
+ * The name of the form
671
+ * @example
672
+ * <x-form name="profile"></x-form>
673
+ */
674
+ name;
675
+ /**
676
+ * Whether to show colon after label
677
+ * @example
678
+ * <x-form colon={false}></x-form>
679
+ */
680
+ colon = true;
681
+ /**
682
+ * Form size
683
+ * @example
684
+ * <x-form size="small"></x-form>
685
+ */
686
+ size = 'middle';
687
+ /**
688
+ * Form instance
689
+ */
690
+ form;
691
+ /**
692
+ * Initial values of form
693
+ */
694
+ initialValues;
695
+ /**
696
+ * Hide required mark of all form items
697
+ */
698
+ hideRequiredMark = false;
699
+ /**
700
+ * Trigger after submitting the form and verifying data successfully
701
+ */
702
+ xFinish;
703
+ /**
704
+ * Trigger after submitting the form and verifying data failed
705
+ */
706
+ xFinishFailed;
707
+ /**
708
+ * Submit the form
709
+ */
710
+ async submit() {
711
+ if (this.form) {
712
+ this.form.markAllAsTouched();
713
+ if (this.form.valid) {
714
+ this.xFinish.emit(this.form.value);
715
+ }
716
+ else {
717
+ this.xFinishFailed.emit({
718
+ values: this.form.value,
719
+ errorFields: this.getErrorFields(),
720
+ outOfDate: false,
721
+ });
722
+ }
723
+ }
724
+ }
725
+ getErrorFields() {
726
+ if (!this.form)
727
+ return [];
728
+ const errorFields = [];
729
+ const controls = this.form.controls;
730
+ for (const name in controls) {
731
+ if (controls[name].invalid) {
732
+ errorFields.push({
733
+ name: [name],
734
+ errors: Object.values(controls[name].errors || {}),
735
+ });
736
+ }
737
+ }
738
+ return errorFields;
739
+ }
740
+ handleSubmit = (e) => {
741
+ e.preventDefault();
742
+ this.submit();
743
+ };
744
+ handleInitialValuesChange(newValue) {
745
+ if (this.form && newValue) {
746
+ this.form.patchValue(newValue, { emitEvent: true });
747
+ }
748
+ }
749
+ componentWillLoad() {
750
+ if (!this.form) {
751
+ this.form = new FormGroup({});
752
+ }
753
+ this.handleInitialValuesChange(this.initialValues);
754
+ }
755
+ render() {
756
+ return (h(Host, { key: 'ebb7831eae382b4924a330a515ce6fbcd5740a5e', class: {
757
+ 'x-form': true,
758
+ [`x-form-${this.layout}`]: true,
759
+ [`x-form-${this.size}`]: true,
760
+ 'x-form-hide-required-mark': this.hideRequiredMark,
761
+ } }, h("form", { key: 'fdce9f05232a5f9323bd10264d078cc6c6f25bcf', name: this.name, onSubmit: this.handleSubmit }, h("slot", { key: '12fbc506ce06538757fa6e51846108ddb886235a' }))));
762
+ }
763
+ static get watchers() { return {
764
+ "initialValues": [{
765
+ "handleInitialValuesChange": 0
766
+ }]
767
+ }; }
768
+ };
769
+ XForm.style = xFormCss();
770
+
771
+ const xMenuCss = () => `@charset "UTF-8";:host{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;color:var(--x-menu-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-menu-font-size, var(--x-font-size-base, 14px));font-family:var(--x-menu-font-family, var(--x-font-family-base, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif));line-height:var(--x-menu-line-height, var(--x-line-height-base, 1.5714285714));list-style:none;background:var(--x-menu-bg, var(--x-color-bg-container, #ffffff));outline:none;-webkit-transition:background var(--x-menu-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1))), width var(--x-menu-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)));transition:background var(--x-menu-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1))), width var(--x-menu-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)))}.x-menu-list{margin:0;padding:var(--x-menu-item-margin-block, var(--x-spacing-xxs, 4px)) 0;list-style:none;background:inherit;display:block}:host(.x-menu-horizontal){line-height:var(--x-menu-horizontal-line-height, 46px);border-bottom:var(--x-menu-border-width, var(--x-border-width-base, 1px)) solid var(--x-menu-border-color, var(--x-color-split, rgba(5, 5, 5, 0.06)))}:host(.x-menu-horizontal) .x-menu-list{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:0}:host(.x-menu-vertical){-webkit-border-end:var(--x-menu-border-width, var(--x-border-width-base, 1px)) solid var(--x-menu-border-color, var(--x-color-split, rgba(5, 5, 5, 0.06)));border-inline-end:var(--x-menu-border-width, var(--x-border-width-base, 1px)) solid var(--x-menu-border-color, var(--x-color-split, rgba(5, 5, 5, 0.06)))}:host(.x-menu-inline){-webkit-border-end:var(--x-menu-border-width, var(--x-border-width-base, 1px)) solid var(--x-menu-border-color, var(--x-color-split, rgba(5, 5, 5, 0.06)));border-inline-end:var(--x-menu-border-width, var(--x-border-width-base, 1px)) solid var(--x-menu-border-color, var(--x-color-split, rgba(5, 5, 5, 0.06)))}:host(.x-menu-inline-collapsed){width:var(--x-menu-collapsed-width, 80px)}:host(.x-menu-inline-collapsed) .x-menu-list{padding:var(--x-menu-item-margin-block, var(--x-spacing-xxs, 4px)) 0}:host(.x-menu-light){background:var(--x-menu-bg, var(--x-color-bg-container, #ffffff));color:var(--x-menu-color, var(--x-color-text, rgba(0, 0, 0, 0.88)))}:host(.x-menu-dark){background:var(--x-menu-dark-bg, var(--x-menu-dark-bg, #001529));color:var(--x-menu-dark-color, rgba(255, 255, 255, 0.65))}:host(.x-menu-dark) .x-menu-list{background:var(--x-menu-dark-bg, var(--x-menu-dark-bg, #001529))}:host([borderless]){border:none !important}`;
772
+
773
+ const XMenu = class {
774
+ constructor(hostRef) {
775
+ registerInstance(this, hostRef);
776
+ this.xSelect = createEvent(this, "xSelect", 7);
777
+ this.xDeselect = createEvent(this, "xDeselect", 7);
778
+ this.xClick = createEvent(this, "xClick", 7);
779
+ this.xOpenChange = createEvent(this, "xOpenChange", 7);
780
+ }
781
+ get el() { return getElement(this); }
782
+ // ========================================
783
+ // PROPS
784
+ // ========================================
785
+ /**
786
+ * Type of menu: vertical, horizontal, or inline
787
+ * @example
788
+ * <x-menu mode="horizontal"></x-menu>
789
+ */
790
+ mode = 'vertical';
791
+ /**
792
+ * Color theme of the menu
793
+ * @example
794
+ * <x-menu theme="dark"></x-menu>
795
+ */
796
+ theme = 'light';
797
+ /**
798
+ * Specifies the collapsed status when menu is inline mode
799
+ * @example
800
+ * <x-menu inlineCollapsed></x-menu>
801
+ */
802
+ inlineCollapsed = false;
803
+ /**
804
+ * Indent (in pixels) of inline menu items on each level
805
+ * @example
806
+ * <x-menu inlineIndent={32}></x-menu>
807
+ */
808
+ inlineIndent = 24;
809
+ /**
810
+ * Array with the keys of default selected menu items
811
+ * @example
812
+ * <x-menu defaultSelectedKeys={['home']}></x-menu>
813
+ */
814
+ defaultSelectedKeys = [];
815
+ /**
816
+ * Array with the keys of currently selected menu items (controlled)
817
+ * @example
818
+ * <x-menu selectedKeys={['settings']}></x-menu>
819
+ */
820
+ selectedKeys;
821
+ /**
822
+ * Array with the keys of default opened sub-menus
823
+ * @example
824
+ * <x-menu defaultOpenKeys={['sub-1']}></x-menu>
825
+ */
826
+ defaultOpenKeys = [];
827
+ /**
828
+ * Array with the keys of currently opened sub-menus (controlled)
829
+ * @example
830
+ * <x-menu openKeys={['sub-1']}></x-menu>
831
+ */
832
+ openKeys;
833
+ /**
834
+ * Allows selection of multiple items
835
+ * @example
836
+ * <x-menu multiple></x-menu>
837
+ */
838
+ multiple = false;
839
+ /**
840
+ * Allows selecting menu items
841
+ * @example
842
+ * <x-menu selectable={false}></x-menu>
843
+ */
844
+ selectable = true;
845
+ /**
846
+ * Which action can trigger submenu open/close
847
+ * @example
848
+ * <x-menu triggerSubMenuAction="click"></x-menu>
849
+ */
850
+ triggerSubMenuAction = 'hover';
851
+ /**
852
+ * Delay time to show submenu when mouse enters (in seconds)
853
+ * @example
854
+ * <x-menu subMenuOpenDelay={0.2}></x-menu>
855
+ */
856
+ subMenuOpenDelay = 0;
857
+ /**
858
+ * Delay time to hide submenu when mouse leaves (in seconds)
859
+ * @example
860
+ * <x-menu subMenuCloseDelay={0.2}></x-menu>
861
+ */
862
+ subMenuCloseDelay = 0.1;
863
+ // ========================================
864
+ // STATE
865
+ // ========================================
866
+ internalSelectedKeys = [];
867
+ internalOpenKeys = [];
868
+ // ========================================
869
+ // EVENTS
870
+ // ========================================
871
+ /**
872
+ * Called when a menu item is selected
873
+ * @example
874
+ * <x-menu onXSelect={(ev) => console.log(ev.detail)}></x-menu>
875
+ */
876
+ xSelect;
877
+ /**
878
+ * Called when a menu item is deselected (multiple mode only)
879
+ * @example
880
+ * <x-menu onXDeselect={(ev) => console.log(ev.detail)}></x-menu>
881
+ */
882
+ xDeselect;
883
+ /**
884
+ * Called when a menu item is clicked
885
+ * @example
886
+ * <x-menu onXClick={(ev) => console.log(ev.detail)}></x-menu>
887
+ */
888
+ xClick;
889
+ /**
890
+ * Called when sub-menus are opened or closed
891
+ * @example
892
+ * <x-menu onXOpenChange={(ev) => console.log(ev.detail)}></x-menu>
893
+ */
894
+ xOpenChange;
895
+ // ========================================
896
+ // LIFECYCLE
897
+ // ========================================
898
+ componentWillLoad() {
899
+ // Initialize internal state from default props
900
+ this.internalSelectedKeys = this.selectedKeys ?? [...this.defaultSelectedKeys];
901
+ this.internalOpenKeys = this.openKeys ?? [...this.defaultOpenKeys];
902
+ }
903
+ componentDidLoad() {
904
+ this.syncChildrenProps();
905
+ }
906
+ componentDidUpdate() {
907
+ this.syncChildrenProps();
908
+ }
909
+ // ========================================
910
+ // WATCHERS
911
+ // ========================================
912
+ handleSelectedKeysChange(newValue) {
913
+ if (newValue !== undefined) {
914
+ this.internalSelectedKeys = [...newValue];
915
+ }
916
+ }
917
+ handleOpenKeysChange(newValue) {
918
+ if (newValue !== undefined) {
919
+ this.internalOpenKeys = [...newValue];
920
+ }
921
+ }
922
+ handlePropsChange() {
923
+ this.syncChildrenProps();
924
+ }
925
+ // ========================================
926
+ // LISTENERS
927
+ // ========================================
928
+ handleItemClick(ev) {
929
+ ev.stopPropagation();
930
+ const { key, keyPath, domEvent } = ev.detail;
931
+ // Emit click event
932
+ this.xClick.emit({ key, keyPath, domEvent });
933
+ if (!this.selectable)
934
+ return;
935
+ const currentSelected = this.getSelectedKeys();
936
+ const isSelected = currentSelected.includes(key);
937
+ if (this.multiple) {
938
+ // Multiple selection mode
939
+ // Flow:
940
+ // 1. If already selected, remove from list (deselect).
941
+ // 2. If not selected, add to list (select).
942
+ // 3. Emit appropriate event (xSelect/xDeselect).
943
+ if (isSelected) {
944
+ // Deselect
945
+ const newSelected = currentSelected.filter(k => k !== key);
946
+ this.updateSelectedKeys(newSelected);
947
+ this.xDeselect.emit({ key, keyPath, selectedKeys: newSelected, domEvent });
948
+ }
949
+ else {
950
+ // Select
951
+ const newSelected = [...currentSelected, key];
952
+ this.updateSelectedKeys(newSelected);
953
+ this.xSelect.emit({ key, keyPath, selectedKeys: newSelected, domEvent });
954
+ }
955
+ }
956
+ else {
957
+ // Single selection mode
958
+ // Flow:
959
+ // 1. If not selected, replace current selection with new key.
960
+ // 2. Emit xSelect.
961
+ if (!isSelected) {
962
+ this.updateSelectedKeys([key]);
963
+ this.xSelect.emit({ key, keyPath, selectedKeys: [key], domEvent });
964
+ }
965
+ }
966
+ }
967
+ /**
968
+ * Listens for submenu toggle events.
969
+ * Updates the open keys state and emits change event.
970
+ *
971
+ * Flow:
972
+ * 1. Stops event propagation.
973
+ * 2. Retrieves the key and target open state from the event detail.
974
+ * 3. Updates the list of open keys:
975
+ * - If opening: Appends the key to the list.
976
+ * - If closing: Filters the key out of the list.
977
+ * 4. Updates internal state and emits `xOpenChange`.
978
+ *
979
+ * @param {CustomEvent<SubmenuToggleDetail>} ev - The toggle event.
980
+ */
981
+ handleSubmenuToggle(ev) {
982
+ ev.stopPropagation();
983
+ const { key, open } = ev.detail;
984
+ const currentOpen = this.getOpenKeys();
985
+ let newOpenKeys;
986
+ if (open) {
987
+ newOpenKeys = [...currentOpen, key];
988
+ }
989
+ else {
990
+ newOpenKeys = currentOpen.filter(k => k !== key);
991
+ }
992
+ this.updateOpenKeys(newOpenKeys);
993
+ this.xOpenChange.emit({ openKeys: newOpenKeys });
994
+ }
995
+ // ========================================
996
+ // PRIVATE METHODS
997
+ // ========================================
998
+ getSelectedKeys() {
999
+ return this.selectedKeys ?? this.internalSelectedKeys;
1000
+ }
1001
+ getOpenKeys() {
1002
+ return this.openKeys ?? this.internalOpenKeys;
1003
+ }
1004
+ updateSelectedKeys(keys) {
1005
+ if (this.selectedKeys === undefined) {
1006
+ // Uncontrolled mode
1007
+ this.internalSelectedKeys = keys;
1008
+ }
1009
+ // In controlled mode, parent should update via prop
1010
+ }
1011
+ updateOpenKeys(keys) {
1012
+ if (this.openKeys === undefined) {
1013
+ // Uncontrolled mode
1014
+ this.internalOpenKeys = keys;
1015
+ }
1016
+ // In controlled mode, parent should update via prop
1017
+ }
1018
+ syncChildrenProps() {
1019
+ const selectedKeys = this.getSelectedKeys();
1020
+ const openKeys = this.getOpenKeys();
1021
+ const effectiveMode = this.inlineCollapsed && this.mode === 'inline' ? 'vertical' : this.mode;
1022
+ // Sync props to direct children
1023
+ // Flow:
1024
+ // 1. Iterates over assigned elements in slot.
1025
+ // 2. Sets internal props (_menuMode, _menuTheme, _selected, etc.) on items/submenus.
1026
+ // 3. This ensures children react to parent state changes (like collapse/theme).
1027
+ const syncElement = (element, level = 0) => {
1028
+ const el = element;
1029
+ const tagName = element.tagName.toLowerCase();
1030
+ if (tagName === 'x-menu-item') {
1031
+ el._menuMode = effectiveMode;
1032
+ el._menuTheme = this.theme;
1033
+ el._inlineCollapsed = this.inlineCollapsed;
1034
+ el._level = level;
1035
+ el._inlineIndent = this.inlineIndent;
1036
+ el._selected = selectedKeys.includes(el.itemKey);
1037
+ }
1038
+ else if (tagName === 'x-menu-submenu') {
1039
+ el._menuMode = effectiveMode;
1040
+ el._menuTheme = this.theme;
1041
+ el._inlineCollapsed = this.inlineCollapsed;
1042
+ el._level = level;
1043
+ el._inlineIndent = this.inlineIndent;
1044
+ el._open = openKeys.includes(el.itemKey);
1045
+ el._triggerSubMenuAction = this.triggerSubMenuAction;
1046
+ el._subMenuOpenDelay = this.subMenuOpenDelay;
1047
+ el._subMenuCloseDelay = this.subMenuCloseDelay;
1048
+ el._selectedKeys = selectedKeys;
1049
+ }
1050
+ else if (tagName === 'x-menu-item-group') {
1051
+ el._menuMode = effectiveMode;
1052
+ el._menuTheme = this.theme;
1053
+ el._inlineCollapsed = this.inlineCollapsed;
1054
+ el._level = level;
1055
+ el._inlineIndent = this.inlineIndent;
1056
+ }
1057
+ else if (tagName === 'x-menu-divider') {
1058
+ el._menuTheme = this.theme;
1059
+ el._inlineCollapsed = this.inlineCollapsed;
1060
+ }
1061
+ };
1062
+ // Get all slotted children
1063
+ const slot = this.el.shadowRoot?.querySelector('slot');
1064
+ if (slot) {
1065
+ const assignedElements = slot.assignedElements();
1066
+ assignedElements.forEach(el => syncElement(el, 0));
1067
+ }
1068
+ }
1069
+ // ========================================
1070
+ // RENDER
1071
+ // ========================================
1072
+ /**
1073
+ * Main render method for the menu component.
1074
+ *
1075
+ * Flow:
1076
+ * 1. Determines the effective mode (handles inline collapsed state becoming vertical).
1077
+ * 2. Constructs the class map for the host element based on mode and theme.
1078
+ * 3. Renders the Host element with role="menu".
1079
+ * 4. Renders a `<ul>` list container.
1080
+ * 5. Renders the default slot for menu items and submenus.
1081
+ * 6. Listens to `slotchange` to sync props to new children.
1082
+ *
1083
+ * @returns {JSX.Element} The component tree.
1084
+ */
1085
+ render() {
1086
+ const effectiveMode = this.inlineCollapsed && this.mode === 'inline' ? 'vertical' : this.mode;
1087
+ const classes = {
1088
+ 'x-menu': true,
1089
+ 'x-menu-root': true,
1090
+ [`x-menu-${effectiveMode}`]: true,
1091
+ [`x-menu-${this.theme}`]: true,
1092
+ 'x-menu-inline-collapsed': this.inlineCollapsed && this.mode === 'inline',
1093
+ };
1094
+ return (h(Host, { key: '73e2102c66edbb6c14b89dbe2610e7d24ceaa1cb', class: classes, role: "menu" }, h("ul", { key: '28fdce7848e9b87b008accead28389e2511d460f', class: "x-menu-list", part: "list" }, h("slot", { key: 'f3b676f3d37836e5360d559533508e8047fba74f', onSlotchange: () => this.syncChildrenProps() }))));
1095
+ }
1096
+ static get watchers() { return {
1097
+ "selectedKeys": [{
1098
+ "handleSelectedKeysChange": 0
1099
+ }],
1100
+ "openKeys": [{
1101
+ "handleOpenKeysChange": 0
1102
+ }],
1103
+ "mode": [{
1104
+ "handlePropsChange": 0
1105
+ }],
1106
+ "theme": [{
1107
+ "handlePropsChange": 0
1108
+ }],
1109
+ "inlineCollapsed": [{
1110
+ "handlePropsChange": 0
1111
+ }],
1112
+ "inlineIndent": [{
1113
+ "handlePropsChange": 0
1114
+ }]
1115
+ }; }
1116
+ };
1117
+ XMenu.style = xMenuCss();
1118
+
1119
+ const xMenuItemCss = () => `@charset "UTF-8";:host{display:block;position:relative;margin:0 var(--x-menu-item-margin-inline, 4px) var(--x-menu-item-margin-block, 4px);font-family:var(--x-menu-item-font-family, var(--x-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif));font-size:var(--x-menu-item-font-size, var(--x-font-size, 14px));cursor:pointer;-webkit-transition:color var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1))), background var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)));transition:color var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1))), background var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)))}.x-menu-item-inner{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:var(--x-menu-item-height, 40px);padding:0 var(--x-menu-item-padding-inline, 16px);border-radius:var(--x-menu-item-border-radius, var(--x-border-radius-lg, 8px));color:var(--x-menu-item-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));line-height:var(--x-menu-item-height, 40px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:inherit;transition:inherit}.x-menu-item-icon{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;min-width:var(--x-menu-icon-size, 14px);-webkit-margin-end:var(--x-menu-icon-margin-inline-end, 10px);margin-inline-end:var(--x-menu-icon-margin-inline-end, 10px);font-size:var(--x-menu-icon-size, 14px);-webkit-transition:font-size var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1))), margin var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)));transition:font-size var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1))), margin var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)))}.x-menu-item-icon:empty{display:none}.x-menu-item-content{-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.x-menu-item-extra{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-padding-start:var(--x-menu-icon-margin-inline-end, 10px);padding-inline-start:var(--x-menu-icon-margin-inline-end, 10px);font-size:var(--x-menu-item-font-size, var(--x-font-size, 14px));color:inherit;opacity:0.65}.x-menu-item-extra:empty{display:none}:host(.x-menu-item-light) .x-menu-item-inner{color:var(--x-menu-item-color, var(--x-color-text, rgba(0, 0, 0, 0.88)))}:host(.x-menu-item-light):hover .x-menu-item-inner,:host(.x-menu-item-light).x-menu-item-hover .x-menu-item-inner{color:var(--x-menu-item-color-hover, var(--x-color-text, rgba(0, 0, 0, 0.88)));background-color:var(--x-menu-item-bg-hover, rgba(0, 0, 0, 0.06))}:host(.x-menu-item-light).x-menu-item-selected .x-menu-item-inner{color:var(--x-menu-item-color-selected, var(--x-color-primary, #1677ff));background-color:var(--x-menu-item-bg-selected, var(--x-color-primary-bg, #e6f4ff))}:host(.x-menu-item-light).x-menu-item-disabled{cursor:not-allowed}:host(.x-menu-item-light).x-menu-item-disabled .x-menu-item-inner{color:var(--x-menu-item-color-disabled, var(--x-color-text-disabled, rgba(0, 0, 0, 0.25)));background:none}:host(.x-menu-item-light).x-menu-item-danger .x-menu-item-inner{color:var(--x-menu-item-danger-color, var(--x-color-error, #ff4d4f))}:host(.x-menu-item-light).x-menu-item-danger:hover .x-menu-item-inner{color:var(--x-menu-item-danger-color-hover, var(--x-color-error, #ff4d4f))}:host(.x-menu-item-light).x-menu-item-danger.x-menu-item-selected .x-menu-item-inner{color:var(--x-menu-item-danger-color-selected, var(--x-color-error, #ff4d4f));background-color:var(--x-menu-item-danger-bg-selected, var(--x-color-error-bg, #fff2f0))}:host(.x-menu-item-dark) .x-menu-item-inner{color:var(--x-menu-item-dark-color, rgba(255, 255, 255, 0.65))}:host(.x-menu-item-dark):hover .x-menu-item-inner,:host(.x-menu-item-dark).x-menu-item-hover .x-menu-item-inner{color:var(--x-menu-item-dark-color-hover, #ffffff);background-color:var(--x-menu-item-dark-bg-hover, rgba(255, 255, 255, 0.08))}:host(.x-menu-item-dark).x-menu-item-selected .x-menu-item-inner{color:var(--x-menu-item-dark-color-selected, #ffffff);background-color:var(--x-menu-item-dark-bg-selected, var(--x-color-primary, #1677ff))}:host(.x-menu-item-dark).x-menu-item-disabled{cursor:not-allowed}:host(.x-menu-item-dark).x-menu-item-disabled .x-menu-item-inner{color:var(--x-menu-item-dark-color-disabled, rgba(255, 255, 255, 0.25));background:none}:host(.x-menu-item-dark).x-menu-item-danger .x-menu-item-inner{color:var(--x-menu-item-dark-danger-color, var(--x-color-error, #ff4d4f))}:host(.x-menu-item-dark).x-menu-item-danger:hover .x-menu-item-inner{color:var(--x-menu-item-dark-danger-color-hover, #ff7875)}:host(.x-menu-item-dark).x-menu-item-danger.x-menu-item-selected .x-menu-item-inner{color:var(--x-menu-item-dark-danger-color-selected, #ffffff);background-color:var(--x-menu-item-dark-danger-bg-selected, var(--x-color-error, #ff4d4f))}:host(.x-menu-item-collapsed){margin:0 auto var(--x-menu-item-margin-block, 4px);width:calc(100% - var(--x-menu-item-margin-inline, 4px) * 2)}:host(.x-menu-item-collapsed) .x-menu-item-inner{-ms-flex-pack:center;justify-content:center;padding:0}:host(.x-menu-item-collapsed) .x-menu-item-icon{-webkit-margin-end:0;margin-inline-end:0;font-size:var(--x-menu-icon-size, 14px)}:host(.x-menu-item-collapsed) .x-menu-item-content,:host(.x-menu-item-collapsed) .x-menu-item-extra{display:none;width:0;opacity:0;overflow:hidden}:host(.x-menu-item-collapsed-hidden){display:none !important}:host(.x-menu-item-horizontal){margin:0}:host(.x-menu-item-horizontal) .x-menu-item-inner{height:var(--x-menu-horizontal-line-height, 46px);line-height:var(--x-menu-horizontal-line-height, 46px);padding:0 var(--x-menu-item-padding-inline, 16px);border-radius:0}:host(.x-menu-item-horizontal) .x-menu-item-inner::after{content:"";position:absolute;right:var(--x-menu-item-padding-inline, 16px);bottom:0;left:var(--x-menu-item-padding-inline, 16px);border-bottom:var(--x-menu-active-bar-height, 2px) solid transparent;-webkit-transition:border-color var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)));transition:border-color var(--x-menu-item-motion-duration, var(--x-motion-duration-mid, 0.2s)) var(--x-menu-item-motion-ease, var(--x-motion-ease-in-out, cubic-bezier(0.645, 0.045, 0.355, 1)))}:host(.x-menu-item-horizontal).x-menu-item-light:hover .x-menu-item-inner,:host(.x-menu-item-horizontal).x-menu-item-light.x-menu-item-hover .x-menu-item-inner{background-color:transparent;color:var(--x-menu-horizontal-item-color-hover, var(--x-color-primary, #1677ff))}:host(.x-menu-item-horizontal).x-menu-item-light:hover .x-menu-item-inner::after,:host(.x-menu-item-horizontal).x-menu-item-light.x-menu-item-hover .x-menu-item-inner::after{border-bottom-color:var(--x-menu-horizontal-item-color-hover, var(--x-color-primary, #1677ff))}:host(.x-menu-item-horizontal).x-menu-item-light.x-menu-item-selected .x-menu-item-inner{background-color:transparent;color:var(--x-menu-horizontal-item-color-selected, var(--x-color-primary, #1677ff))}:host(.x-menu-item-horizontal).x-menu-item-light.x-menu-item-selected .x-menu-item-inner::after{border-bottom-color:var(--x-menu-horizontal-item-color-selected, var(--x-color-primary, #1677ff))}`;
1120
+
1121
+ const XMenuItem = class {
1122
+ constructor(hostRef) {
1123
+ registerInstance(this, hostRef);
1124
+ this.xMenuItemClick = createEvent(this, "xMenuItemClick", 7);
1125
+ }
1126
+ get el() { return getElement(this); }
1127
+ // ========================================
1128
+ // PROPS
1129
+ // ========================================
1130
+ /**
1131
+ * Unique ID of the menu item
1132
+ * @example
1133
+ * <x-menu-item itemKey="home">Home</x-menu-item>
1134
+ */
1135
+ itemKey = '';
1136
+ /**
1137
+ * Display the danger style
1138
+ * @example
1139
+ * <x-menu-item danger>Delete</x-menu-item>
1140
+ */
1141
+ danger = false;
1142
+ /**
1143
+ * Whether menu item is disabled
1144
+ * @example
1145
+ * <x-menu-item disabled>Disabled</x-menu-item>
1146
+ */
1147
+ disabled = false;
1148
+ /**
1149
+ * Set display title for collapsed item
1150
+ * @example
1151
+ * <x-menu-item itemTitle="Dashboard">Dashboard</x-menu-item>
1152
+ */
1153
+ itemTitle;
1154
+ // ========================================
1155
+ // INTERNAL PROPS (set by parent menu)
1156
+ // ========================================
1157
+ /** @internal */
1158
+ _menuMode = 'vertical';
1159
+ /** @internal */
1160
+ _menuTheme = 'light';
1161
+ /** @internal */
1162
+ _inlineCollapsed = false;
1163
+ /** @internal */
1164
+ _level = 0;
1165
+ /** @internal */
1166
+ _inlineIndent = 24;
1167
+ /** @internal */
1168
+ _selected = false;
1169
+ /** @internal */
1170
+ _keyPath = [];
1171
+ // ========================================
1172
+ // STATE
1173
+ // ========================================
1174
+ isHovered = false;
1175
+ // ========================================
1176
+ // EVENTS
1177
+ // ========================================
1178
+ /**
1179
+ * Emitted when the menu item is clicked (internal)
1180
+ * @example
1181
+ * <x-menu-item onXMenuItemClick={(ev) => console.log(ev.detail)}>Item</x-menu-item>
1182
+ */
1183
+ xMenuItemClick;
1184
+ // ========================================
1185
+ // WATCHERS
1186
+ // ========================================
1187
+ handleSelectedChange() {
1188
+ // Force re-render when selection changes
1189
+ }
1190
+ // ========================================
1191
+ // HANDLERS
1192
+ // ========================================
1193
+ /**
1194
+ * Handle click event.
1195
+ *
1196
+ * Flow:
1197
+ * 1. Checks if disabled.
1198
+ * 2. Constructs key path including self.
1199
+ * 3. Emits `xMenuItemClick` event with key, keyPath, and original event.
1200
+ *
1201
+ * @param e - Mouse event.
1202
+ */
1203
+ handleClick = (e) => {
1204
+ if (this.disabled) {
1205
+ e.preventDefault();
1206
+ e.stopPropagation();
1207
+ return;
1208
+ }
1209
+ const keyPath = [...this._keyPath, this.itemKey];
1210
+ this.xMenuItemClick.emit({
1211
+ key: this.itemKey,
1212
+ keyPath,
1213
+ domEvent: e
1214
+ });
1215
+ };
1216
+ handleMouseEnter = () => {
1217
+ if (!this.disabled) {
1218
+ this.isHovered = true;
1219
+ }
1220
+ };
1221
+ handleMouseLeave = () => {
1222
+ this.isHovered = false;
1223
+ };
1224
+ // ========================================
1225
+ // RENDER
1226
+ // ========================================
1227
+ getInlinePadding() {
1228
+ if (this._menuMode === 'inline' && !this._inlineCollapsed) {
1229
+ const paddingLeft = this._level * this._inlineIndent + 16;
1230
+ return `${paddingLeft}px`;
1231
+ }
1232
+ return '';
1233
+ }
1234
+ /**
1235
+ * Render menu item content.
1236
+ *
1237
+ * Flow:
1238
+ * 1. Calculates inline padding based on level and indent (for inline mode).
1239
+ * 2. Determines collapsed state logic (level 0 vs nested).
1240
+ * 3. Constructs CSS classes for state (selected, disabled, danger, hover, mode, theme).
1241
+ * 4. Renders host element with accessibility attributes.
1242
+ * 5. Renders inner content with icon, default slot, and extra slot.
1243
+ *
1244
+ * @returns JSX.Element
1245
+ * @example
1246
+ * <x-menu-item itemKey="settings">Settings</x-menu-item>
1247
+ */
1248
+ render() {
1249
+ const paddingInlineStart = this.getInlinePadding();
1250
+ const isCollapsedLevel0 = this._inlineCollapsed && this._level === 0;
1251
+ const isCollapsedNested = this._inlineCollapsed && this._level > 0;
1252
+ const classes = {
1253
+ 'x-menu-item': true,
1254
+ 'x-menu-item-selected': this._selected,
1255
+ 'x-menu-item-disabled': this.disabled,
1256
+ 'x-menu-item-danger': this.danger,
1257
+ 'x-menu-item-hover': this.isHovered,
1258
+ 'x-menu-item-collapsed': isCollapsedLevel0,
1259
+ 'x-menu-item-collapsed-hidden': isCollapsedNested,
1260
+ [`x-menu-item-${this._menuMode}`]: true,
1261
+ [`x-menu-item-${this._menuTheme}`]: true,
1262
+ };
1263
+ const style = paddingInlineStart ? { paddingInlineStart } : {};
1264
+ return (h(Host, { key: '38c7aae0e39e2628d883438d7d3e0e8d681900e5', class: classes, role: "menuitem", tabindex: this.disabled ? -1 : 0, "aria-disabled": this.disabled ? 'true' : null, "aria-selected": this._selected ? 'true' : 'false', title: this._inlineCollapsed ? (this.itemTitle || undefined) : undefined, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("div", { key: 'b27f3fb688f88c48fb3baa3f40d5251540798b6c', class: "x-menu-item-inner", style: style, part: "item" }, h("span", { key: '396a77ca5b7a398b27c83c2795e951ceef30cbbb', class: "x-menu-item-icon", part: "icon" }, h("slot", { key: 'f8b487dbc754c1098b204cfdb022aa727a17eba3', name: "icon" })), h("span", { key: 'e6c07cc9395b4903d66ff4ab7082cf07ee1aff8c', class: "x-menu-item-content", part: "content" }, h("slot", { key: 'edab4b78560ccca9d7d5288cf786915bf2b55cde' })), h("span", { key: 'fb72ccd1adb27052ba5205ba71e799976625e505', class: "x-menu-item-extra", part: "extra" }, h("slot", { key: '2dc6adf026655a2cd960eabcd9dd7494cc3fe522', name: "extra" })))));
1265
+ }
1266
+ static get watchers() { return {
1267
+ "_selected": [{
1268
+ "handleSelectedChange": 0
1269
+ }]
1270
+ }; }
1271
+ };
1272
+ XMenuItem.style = xMenuItemCss();
1273
+
1274
+ const xResultCss = () => `@charset "UTF-8";:root{--x-color-primary:#1677ff;--x-color-primary-rgb:22, 119, 255;--x-color-primary-contrast:#ffffff;--x-color-primary-contrast-rgb:255, 255, 255;--x-color-primary-shade:#0958d9;--x-color-primary-tint:#4096ff;--x-color-primary-bg:#e6f4ff;--x-color-primary-bg-hover:#bae0ff;--x-color-primary-border:#91caff;--x-color-primary-border-hover:#69b1ff;--x-color-primary-hover:#4096ff;--x-color-primary-active:#0958d9;--x-color-primary-text:#1677ff;--x-color-primary-text-hover:#4096ff;--x-color-primary-text-active:#0958d9;--x-color-secondary:#3dc2ff;--x-color-secondary-rgb:61, 194, 255;--x-color-secondary-contrast:#ffffff;--x-color-secondary-contrast-rgb:255, 255, 255;--x-color-secondary-shade:#36abe0;--x-color-secondary-tint:#50c8ff;--x-color-success:#52c41a;--x-color-success-rgb:82, 196, 26;--x-color-success-contrast:#ffffff;--x-color-success-contrast-rgb:255, 255, 255;--x-color-success-shade:#389e0d;--x-color-success-tint:#73d13d;--x-color-success-bg:#f6ffed;--x-color-success-bg-hover:#d9f7be;--x-color-success-border:#b7eb8f;--x-color-success-border-hover:#95de64;--x-color-success-hover:#73d13d;--x-color-success-active:#389e0d;--x-color-success-text:#52c41a;--x-color-success-text-hover:#73d13d;--x-color-success-text-active:#389e0d;--x-color-warning:#faad14;--x-color-warning-rgb:250, 173, 20;--x-color-warning-contrast:#000000;--x-color-warning-contrast-rgb:0, 0, 0;--x-color-warning-shade:#d48806;--x-color-warning-tint:#ffc53d;--x-color-warning-bg:#fffbe6;--x-color-warning-bg-hover:#fff1b8;--x-color-warning-border:#ffe58f;--x-color-warning-border-hover:#ffd666;--x-color-warning-hover:#ffc53d;--x-color-warning-active:#d48806;--x-color-warning-text:#faad14;--x-color-warning-text-hover:#ffc53d;--x-color-warning-text-active:#d48806;--x-color-danger:#ff4d4f;--x-color-danger-rgb:255, 77, 79;--x-color-danger-contrast:#ffffff;--x-color-danger-contrast-rgb:255, 255, 255;--x-color-danger-shade:#cf1322;--x-color-danger-tint:#ff7875;--x-color-error:#ff4d4f;--x-color-error-rgb:255, 77, 79;--x-color-error-bg:#fff2f0;--x-color-error-bg-hover:#ffccc7;--x-color-error-border:#ffa39e;--x-color-error-border-hover:#ff7875;--x-color-error-hover:#ff7875;--x-color-error-active:#d9363e;--x-color-error-text:#ff4d4f;--x-color-error-text-hover:#ff7875;--x-color-error-text-active:#d9363e;--x-color-info:#1677ff;--x-color-info-rgb:22, 119, 255;--x-color-info-bg:#e6f4ff;--x-color-info-bg-hover:#bae0ff;--x-color-info-border:#91caff;--x-color-info-border-hover:#69b1ff;--x-color-info-hover:#69b1ff;--x-color-info-active:#0958d9;--x-color-info-text:#1677ff;--x-color-info-text-hover:#69b1ff;--x-color-info-text-active:#0958d9;--x-color-text:rgba(0, 0, 0, 0.88);--x-color-text-secondary:rgba(0, 0, 0, 0.65);--x-color-text-tertiary:rgba(0, 0, 0, 0.45);--x-color-text-quaternary:rgba(0, 0, 0, 0.25);--x-color-text-disabled:rgba(0, 0, 0, 0.25);--x-color-text-placeholder:rgba(0, 0, 0, 0.25);--x-color-text-heading:rgba(0, 0, 0, 0.88);--x-color-text-label:rgba(0, 0, 0, 0.65);--x-color-text-description:rgba(0, 0, 0, 0.45);--x-color-text-light-solid:#ffffff;--x-color-bg-container:#ffffff;--x-color-bg-elevated:#ffffff;--x-color-bg-layout:#f5f5f5;--x-color-bg-spotlight:rgba(0, 0, 0, 0.85);--x-color-bg-mask:rgba(0, 0, 0, 0.45);--x-color-bg-base:#ffffff;--x-color-bg-container-disabled:#f5f5f5;--x-color-bg-container-loading:rgba(255, 255, 255, 0.65);--x-color-white:#ffffff;--x-color-fill:rgba(0, 0, 0, 0.15);--x-color-fill-secondary:rgba(0, 0, 0, 0.06);--x-color-fill-tertiary:rgba(0, 0, 0, 0.04);--x-color-fill-quaternary:rgba(0, 0, 0, 0.02);--x-color-border:#d9d9d9;--x-color-border-secondary:#f0f0f0;--x-color-border-bg:#ffffff;--x-color-split:rgba(5, 5, 5, 0.06);--x-color-dark:#222428;--x-color-dark-rgb:34, 36, 40;--x-color-dark-contrast:#ffffff;--x-color-dark-contrast-rgb:255, 255, 255;--x-color-dark-shade:#1e2023;--x-color-dark-tint:#383a3e;--x-color-medium:#92949c;--x-color-medium-rgb:146, 148, 156;--x-color-medium-contrast:#ffffff;--x-color-medium-contrast-rgb:255, 255, 255;--x-color-medium-shade:#808289;--x-color-medium-tint:#9d9fa6;--x-color-light:#f4f5f8;--x-color-light-rgb:244, 245, 248;--x-color-light-contrast:#000000;--x-color-light-contrast-rgb:0, 0, 0;--x-color-light-shade:#d7d8da;--x-color-light-tint:#f5f6f9;--x-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--x-font-family-code:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--x-font-size:14px;--x-font-size-sm:12px;--x-font-size-lg:16px;--x-font-size-xl:20px;--x-font-size-heading-1:38px;--x-font-size-heading-2:30px;--x-font-size-heading-3:24px;--x-font-size-heading-4:20px;--x-font-size-heading-5:16px;--x-line-height:1.5714285714285714;--x-line-height-lg:1.5;--x-line-height-sm:1.6666666666666667;--x-line-height-heading-1:1.2105263157894737;--x-line-height-heading-2:1.2666666666666666;--x-line-height-heading-3:1.3333333333333333;--x-line-height-heading-4:1.4;--x-line-height-heading-5:1.5;--x-font-weight-normal:400;--x-font-weight-medium:500;--x-font-weight-semibold:600;--x-font-weight-strong:600;--x-font-size-base:14px;--x-font-size-xxl:24px;--x-line-height-base:1.5714285714285714;--x-spacing-xxs:4px;--x-spacing-xs:8px;--x-spacing-sm:12px;--x-spacing-md:16px;--x-spacing-lg:20px;--x-spacing-xl:24px;--x-spacing-xxl:32px;--x-spacing-xxxl:48px;--x-margin-xxs:4px;--x-margin-xs:8px;--x-margin-sm:12px;--x-margin-md:16px;--x-margin-lg:24px;--x-margin-xl:32px;--x-margin-xxl:48px;--x-padding-xxs:4px;--x-padding-xs:8px;--x-padding-sm:12px;--x-padding-md:16px;--x-padding-lg:24px;--x-padding-content-horizontal-lg:24px;--x-padding-content-vertical-lg:12px;--x-padding-content-horizontal:16px;--x-padding-content-vertical:12px;--x-padding-content-horizontal-sm:16px;--x-padding-content-vertical-sm:8px;--x-border-radius:6px;--x-border-radius-xs:2px;--x-border-radius-sm:4px;--x-border-radius-lg:8px;--x-border-radius-xl:12px;--x-border-radius-outer:4px;--x-border-radius-base:6px;--x-border-width:1px;--x-border-width-base:1px;--x-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-shadow-lg:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-box-shadow-popover-arrow:2px 2px 5px rgba(0, 0, 0, 0.05);--x-box-shadow-card:0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);--x-box-shadow-drawer-right:-6px 0 16px 0 rgba(0, 0, 0, 0.08), -3px 0 6px -4px rgba(0, 0, 0, 0.12), -9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-left:6px 0 16px 0 rgba(0, 0, 0, 0.08), 3px 0 6px -4px rgba(0, 0, 0, 0.12), 9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-up:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-down:0 -6px 16px 0 rgba(0, 0, 0, 0.08), 0 -3px 6px -4px rgba(0, 0, 0, 0.12), 0 -9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tabs-overflow-left:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-right:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-top:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-bottom:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);--x-motion-duration-fast:0.1s;--x-motion-duration-mid:0.2s;--x-motion-duration-slow:0.3s;--x-motion-ease-in-out:cubic-bezier(0.645, 0.045, 0.355, 1);--x-motion-ease-out:cubic-bezier(0.215, 0.61, 0.355, 1);--x-motion-ease-in:cubic-bezier(0.55, 0.055, 0.675, 0.19);--x-motion-ease-out-back:cubic-bezier(0.12, 0.4, 0.29, 1.46);--x-motion-ease-in-back:cubic-bezier(0.71, -0.46, 0.88, 0.6);--x-motion-ease-in-out-circle:cubic-bezier(0.78, 0.14, 0.15, 0.86);--x-motion-ease-out-circle:cubic-bezier(0.08, 0.82, 0.17, 1);--x-motion-ease-in-circle:cubic-bezier(0.6, 0.04, 0.98, 0.34);--x-motion-ease-in-quint:cubic-bezier(0.755, 0.05, 0.855, 0.06);--x-motion-ease-out-quint:cubic-bezier(0.23, 1, 0.32, 1);--x-z-index-base:0;--x-z-index-popup-base:1000;--x-z-index-popup:1030;--x-z-index-affix:10;--x-z-index-modal:1000;--x-z-index-modal-mask:1000;--x-z-index-drawer:1000;--x-z-index-popover:1030;--x-z-index-dropdown:1050;--x-z-index-tooltip:1070;--x-z-index-notification:1080;--x-z-index-message:1090;--x-z-index-popconfirm:1060;--x-z-index-table-fixed:10;--x-opacity-loading:0.65;--x-opacity-image:1;--x-opacity-disabled:0.5;--x-control-height:32px;--x-control-height-xs:24px;--x-control-height-sm:24px;--x-control-height-lg:40px;--x-control-radio-size:16px;--x-control-checkbox-size:16px;--x-control-padding-horizontal:12px;--x-control-padding-horizontal-sm:8px;--x-control-outline-width:2px;--x-control-outline:rgba(5, 145, 255, 0.1);--x-control-item-bg-hover:rgba(0, 0, 0, 0.04);--x-control-item-bg-active:#e6f4ff;--x-control-item-bg-active-hover:#bae0ff;--x-control-item-bg-active-disabled:rgba(0, 0, 0, 0.15);--x-control-tmp-outline:rgba(0, 0, 0, 0.02);--x-color-yellow:#fadb14;--x-color-yellow-rgb:250, 219, 20;--x-font-family-base:var(--x-font-family);--x-color-link:#1677ff;--x-color-link-hover:#69b1ff;--x-color-link-active:#0958d9;--x-color-icon:rgba(0, 0, 0, 0.45);--x-color-icon-hover:rgba(0, 0, 0, 0.88);--x-color-highlight:#ff4d4f;--x-color-bg-text-hover:rgba(0, 0, 0, 0.06);--x-color-bg-text-active:rgba(0, 0, 0, 0.15);--x-screen-xs:480px;--x-screen-xs-min:480px;--x-screen-xs-max:575px;--x-screen-sm:576px;--x-screen-sm-min:576px;--x-screen-sm-max:767px;--x-screen-md:768px;--x-screen-md-min:768px;--x-screen-md-max:991px;--x-screen-lg:992px;--x-screen-lg-min:992px;--x-screen-lg-max:1199px;--x-screen-xl:1200px;--x-screen-xl-min:1200px;--x-screen-xl-max:1599px;--x-screen-xxl:1600px;--x-screen-xxl-min:1600px;--x-color-fill-content:rgba(0, 0, 0, 0.06);--x-color-fill-content-hover:rgba(0, 0, 0, 0.15);--x-color-fill-alter:rgba(0, 0, 0, 0.02);--x-scrollbar-width:12px;--x-scrollbar-track-bg:rgba(0, 0, 0, 0.04);--x-scrollbar-thumb-bg:rgba(0, 0, 0, 0.25);--x-scrollbar-thumb-bg-hover:rgba(0, 0, 0, 0.35);--x-menu-dark-bg:#001529;--x-menu-dark-item-bg:#001529;--x-menu-dark-popup-bg:#001529;--x-menu-dark-submenu-item-bg:#000c17}:host{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding:var(--x-result-padding-vertical, var(--x-spacing-xxl, 48px)) var(--x-result-padding-horizontal, var(--x-spacing-xl, 32px));text-align:center}:host(.x-result-success) .x-result-icon{color:var(--x-result-icon-color-success, var(--x-color-success, #52c41a))}:host(.x-result-error) .x-result-icon{color:var(--x-result-icon-color-error, var(--x-color-error, #ff4d4f))}:host(.x-result-info) .x-result-icon{color:var(--x-result-icon-color-info, var(--x-color-primary, #1677ff))}:host(.x-result-warning) .x-result-icon{color:var(--x-result-icon-color-warning, var(--x-color-warning, #faad14))}:host(.x-result-403) .x-result-icon,:host(.x-result-404) .x-result-icon,:host(.x-result-500) .x-result-icon{color:var(--x-result-icon-color-image, var(--x-color-fill-content, rgba(0, 0, 0, 0.06)))}.x-result-icon{margin-bottom:var(--x-result-icon-margin-bottom, var(--x-spacing-lg, 24px));text-align:center}.x-result-icon svg{width:1em;height:1em;font-size:var(--x-result-icon-font-size, 72px)}.x-result-icon-success svg,.x-result-icon-error svg,.x-result-icon-info svg,.x-result-icon-warning svg{font-size:var(--x-result-icon-font-size, 72px)}.x-result-icon-403 svg.x-result-image,.x-result-icon-404 svg.x-result-image,.x-result-icon-500 svg.x-result-image{width:250px;height:auto}.x-result-title{color:var(--x-result-title-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-result-title-font-size, var(--x-font-size-xxl, 24px));line-height:var(--x-result-title-line-height, 1.8);font-weight:var(--x-result-title-font-weight, var(--x-font-weight-medium, 500));margin-bottom:8px;text-align:center}.x-result-subtitle{color:var(--x-result-subtitle-color, var(--x-color-text-secondary, rgba(0, 0, 0, 0.45)));font-size:var(--x-result-subtitle-font-size, var(--x-font-size-base, 14px));line-height:var(--x-result-subtitle-line-height, 1.6);text-align:center}.x-result-extra{margin:var(--x-result-extra-margin-top, var(--x-spacing-xl, 32px)) 0 0 0;text-align:center}.x-result-extra>::slotted(*){-webkit-margin-end:8px;margin-inline-end:8px}.x-result-extra>::slotted(*:last-child){-webkit-margin-end:0;margin-inline-end:0}.x-result-content{margin-top:var(--x-result-content-margin-top, var(--x-spacing-lg, 24px));padding:var(--x-result-content-padding-vertical, var(--x-spacing-lg, 24px)) var(--x-result-content-padding-horizontal, var(--x-spacing-xl, 32px));background-color:var(--x-result-content-bg, var(--x-color-fill-quaternary, rgba(0, 0, 0, 0.02)));text-align:left;border-radius:var(--x-border-radius, 6px)}`;
1275
+
1276
+ const XResult = class {
1277
+ constructor(hostRef) {
1278
+ registerInstance(this, hostRef);
1279
+ }
1280
+ get el() { return getElement(this); }
1281
+ // ========================================
1282
+ // PROPS
1283
+ // ========================================
1284
+ /**
1285
+ * Result status, decides icons and colors.
1286
+ * @example
1287
+ * <x-result status="success"></x-result>
1288
+ */
1289
+ status = 'info';
1290
+ /**
1291
+ * The title of the result.
1292
+ * @example
1293
+ * <x-result resultTitle="Success"></x-result>
1294
+ */
1295
+ resultTitle;
1296
+ /**
1297
+ * The subTitle of the result.
1298
+ * @example
1299
+ * <x-result subTitle="All done"></x-result>
1300
+ */
1301
+ subTitle;
1302
+ /**
1303
+ * Customize class for each semantic structure.
1304
+ * @example
1305
+ * <x-result classNames={{ title: 'my-title' }}></x-result>
1306
+ */
1307
+ classNames;
1308
+ /**
1309
+ * Customize inline style for each semantic structure.
1310
+ * @example
1311
+ * <x-result styles={{ title: 'color: red;' }}></x-result>
1312
+ */
1313
+ styles;
1314
+ /**
1315
+ * Customize the icon size.
1316
+ * @example
1317
+ * <x-result iconSize={100}></x-result>
1318
+ */
1319
+ iconSize = 72;
1320
+ // ========================================
1321
+ // PRIVATE METHODS
1322
+ // ========================================
1323
+ /**
1324
+ * Renders the success icon (check-circle).
1325
+ * @returns JSX.Element - The SVG element for success status.
1326
+ */
1327
+ renderSuccessIcon() {
1328
+ return h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: getIcon('success') });
1329
+ }
1330
+ /**
1331
+ * Renders the error icon (close-circle).
1332
+ * @returns JSX.Element - The SVG element for error status.
1333
+ */
1334
+ renderErrorIcon() {
1335
+ return h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: getIcon('error') });
1336
+ }
1337
+ /**
1338
+ * Renders the info icon (exclamation-circle).
1339
+ * @returns JSX.Element - The SVG element for info status.
1340
+ */
1341
+ renderInfoIcon() {
1342
+ return h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: getIcon('info') });
1343
+ }
1344
+ /**
1345
+ * Renders the warning icon (warning triangle).
1346
+ * @returns JSX.Element - The SVG element for warning status.
1347
+ */
1348
+ renderWarningIcon() {
1349
+ return h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: getIcon('warning') });
1350
+ }
1351
+ /**
1352
+ * Renders the 403 status illustration.
1353
+ * @returns JSX.Element - The SVG illustration for 403 Forbidden.
1354
+ */
1355
+ render403Icon() {
1356
+ return (h("svg", { class: "x-result-image", viewBox: "0 0 251 294" }, h("g", { fill: "none", "fill-rule": "evenodd" }, h("path", { d: "M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023", fill: "#E4EBF7" }), h("path", { d: "M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", fill: "#FFF" }), h("path", { d: "M37.793 128.246c-2.745.088-4.97 2.45-4.97 5.227s2.225 5.01 4.97 4.922c2.745-.088 4.97-2.45 4.97-5.227s-2.225-5.01-4.97-4.922", fill: "#FFF" }), h("path", { d: "M212.906 121.005a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", fill: "#FFF" }), h("path", { d: "M209.282 116.331c-2.745.088-4.97 2.45-4.97 5.227s2.225 5.01 4.97 4.922c2.745-.088 4.97-2.45 4.97-5.227s-2.225-5.01-4.97-4.922", fill: "#FFF" }), h("g", null, h("path", { d: "M125.25 110.503c8.825 0 15.975 7.15 15.975 15.975 0 8.825-7.15 15.975-15.975 15.975-8.825 0-15.975-7.15-15.975-15.975 0-8.825 7.15-15.975 15.975-15.975", fill: "#FFF" }), h("text", { fill: "#A3B1BF", "font-family": "sans-serif", "font-size": "80", "font-weight": "600", x: "70", y: "170" }, "403")))));
1357
+ }
1358
+ /**
1359
+ * Renders the 404 status illustration.
1360
+ * @returns JSX.Element - The SVG illustration for 404 Not Found.
1361
+ */
1362
+ render404Icon() {
1363
+ return (h("svg", { class: "x-result-image", viewBox: "0 0 252 294" }, h("g", { fill: "none", "fill-rule": "evenodd" }, h("path", { d: "M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023", fill: "#E4EBF7" }), h("path", { d: "M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", fill: "#FFF" }), h("path", { d: "M37.793 128.246c-2.745.088-4.97 2.45-4.97 5.227s2.225 5.01 4.97 4.922c2.745-.088 4.97-2.45 4.97-5.227s-2.225-5.01-4.97-4.922", fill: "#FFF" }), h("path", { d: "M212.906 121.005a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", fill: "#FFF" }), h("path", { d: "M209.282 116.331c-2.745.088-4.97 2.45-4.97 5.227s2.225 5.01 4.97 4.922c2.745-.088 4.97-2.45 4.97-5.227s-2.225-5.01-4.97-4.922", fill: "#FFF" }), h("g", null, h("path", { d: "M125.25 110.503c8.825 0 15.975 7.15 15.975 15.975 0 8.825-7.15 15.975-15.975 15.975-8.825 0-15.975-7.15-15.975-15.975 0-8.825 7.15-15.975 15.975-15.975", fill: "#FFF" }), h("text", { fill: "#A3B1BF", "font-family": "sans-serif", "font-size": "80", "font-weight": "600", x: "70", y: "170" }, "404")))));
1364
+ }
1365
+ /**
1366
+ * Renders the 500 status illustration.
1367
+ * @returns JSX.Element - The SVG illustration for 500 Server Error.
1368
+ */
1369
+ render500Icon() {
1370
+ return (h("svg", { class: "x-result-image", viewBox: "0 0 254 294" }, h("g", { fill: "none", "fill-rule": "evenodd" }, h("path", { d: "M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023", fill: "#E4EBF7" }), h("path", { d: "M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", fill: "#FFF" }), h("path", { d: "M37.793 128.246c-2.745.088-4.97 2.45-4.97 5.227s2.225 5.01 4.97 4.922c2.745-.088 4.97-2.45 4.97-5.227s-2.225-5.01-4.97-4.922", fill: "#FFF" }), h("path", { d: "M212.906 121.005a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", fill: "#FFF" }), h("path", { d: "M209.282 116.331c-2.745.088-4.97 2.45-4.97 5.227s2.225 5.01 4.97 4.922c2.745-.088 4.97-2.45 4.97-5.227s-2.225-5.01-4.97-4.922", fill: "#FFF" }), h("g", null, h("path", { d: "M125.25 110.503c8.825 0 15.975 7.15 15.975 15.975 0 8.825-7.15 15.975-15.975 15.975-8.825 0-15.975-7.15-15.975-15.975 0-8.825 7.15-15.975 15.975-15.975", fill: "#FFF" }), h("text", { fill: "#A3B1BF", "font-family": "sans-serif", "font-size": "80", "font-weight": "600", x: "70", y: "170" }, "500")))));
1371
+ }
1372
+ /**
1373
+ * Selects and renders the appropriate icon based on the `status` prop.
1374
+ *
1375
+ * Flow:
1376
+ * 1. Constructs class and style maps for the icon container.
1377
+ * 2. Switches on `this.status` to determine which SVG/Illustration to render.
1378
+ * - Supports 'success', 'error', 'warning', 'info', '403', '404', '500'.
1379
+ * 3. Wraps the icon in a div with proper classes.
1380
+ *
1381
+ * @returns JSX.Element - The rendered icon container.
1382
+ */
1383
+ renderIcon() {
1384
+ const iconClass = {
1385
+ 'x-result-icon': true,
1386
+ [`x-result-icon-${this.status}`]: true,
1387
+ [this.classNames?.icon || '']: !!this.classNames?.icon,
1388
+ };
1389
+ const iconStyle = this.styles?.icon ? { cssText: this.styles.icon } : undefined;
1390
+ let iconContent;
1391
+ switch (this.status) {
1392
+ case 'success':
1393
+ iconContent = this.renderSuccessIcon();
1394
+ break;
1395
+ case 'error':
1396
+ iconContent = this.renderErrorIcon();
1397
+ break;
1398
+ case 'warning':
1399
+ iconContent = this.renderWarningIcon();
1400
+ break;
1401
+ case '403':
1402
+ iconContent = this.render403Icon();
1403
+ break;
1404
+ case '404':
1405
+ iconContent = this.render404Icon();
1406
+ break;
1407
+ case '500':
1408
+ iconContent = this.render500Icon();
1409
+ break;
1410
+ case 'info':
1411
+ default:
1412
+ iconContent = this.renderInfoIcon();
1413
+ break;
1414
+ }
1415
+ return (h("div", { class: iconClass, style: iconStyle }, h("slot", { name: "icon" }, iconContent)));
1416
+ }
1417
+ /**
1418
+ * Checks if a specific slot has content assigned to it.
1419
+ *
1420
+ * @param slotName - The name of the slot to check.
1421
+ * @returns boolean - True if an element with slot="slotName" exists in children.
1422
+ */
1423
+ hasSlotContent(slotName) {
1424
+ return Array.from(this.el.children).some(child => child.getAttribute('slot') === slotName);
1425
+ }
1426
+ /**
1427
+ * Generates the class map for the host element.
1428
+ * Includes base class, status modifier, and custom root class.
1429
+ *
1430
+ * @returns Record<string, boolean> - The class map object.
1431
+ */
1432
+ getHostClasses() {
1433
+ return {
1434
+ 'x-result': true,
1435
+ [`x-result-${this.status}`]: true,
1436
+ [this.classNames?.root || '']: !!this.classNames?.root,
1437
+ };
1438
+ }
1439
+ // ========================================
1440
+ // RENDER
1441
+ // ========================================
1442
+ /**
1443
+ * Main render method for the Result component.
1444
+ *
1445
+ * Flow:
1446
+ * 1. Checks for presence of title, subtitle, extra content, and main content via props or slots.
1447
+ * 2. Renders the host element with appropriate classes and styles.
1448
+ * 3. Renders sections in order:
1449
+ * - Icon/Image
1450
+ * - Title
1451
+ * - Subtitle
1452
+ * - Extra (Action buttons)
1453
+ * - Content (Main body)
1454
+ *
1455
+ * @returns JSX.Element
1456
+ */
1457
+ render() {
1458
+ const hasTitle = this.resultTitle || this.hasSlotContent('title');
1459
+ const hasSubTitle = this.subTitle || this.hasSlotContent('subTitle');
1460
+ const hasExtra = this.hasSlotContent('extra');
1461
+ const hasContent = this.hasSlotContent(null) || Array.from(this.el.childNodes).some(node => !node['slot'] && (node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.textContent?.trim())));
1462
+ const hostStyle = this.styles?.root ? { cssText: this.styles.root } : undefined;
1463
+ return (h(Host, { key: '815f4027d20d5cde949e983cf3b827f71a4f94e4', class: this.getHostClasses(), style: hostStyle }, this.renderIcon(), hasTitle && (h("div", { key: '46263db169a9441f28b763cb5cda7398b948076d', class: {
1464
+ 'x-result-title': true,
1465
+ [this.classNames?.title || '']: !!this.classNames?.title,
1466
+ }, style: this.styles?.title ? { cssText: this.styles.title } : undefined }, h("slot", { key: 'aea1e4bffbbc13385cbc5578a9eb5ed2b95489e8', name: "title" }, this.resultTitle))), hasSubTitle && (h("div", { key: 'ebe5149df5e0767d9f9c97c3c66dd78c9179b065', class: {
1467
+ 'x-result-subtitle': true,
1468
+ [this.classNames?.subTitle || '']: !!this.classNames?.subTitle,
1469
+ }, style: this.styles?.subTitle ? { cssText: this.styles.subTitle } : undefined }, h("slot", { key: '6d12de2cdb988925e0ae3c1f1676026c9b027f72', name: "subTitle" }, this.subTitle))), hasExtra && (h("div", { key: 'ce4880488c3d2f169f70a08c557e8c0d36920030', class: {
1470
+ 'x-result-extra': true,
1471
+ [this.classNames?.extra || '']: !!this.classNames?.extra,
1472
+ }, style: this.styles?.extra ? { cssText: this.styles.extra } : undefined }, h("slot", { key: 'aabf4df9d72924b0ddc23df5fad6af5cca7f2e8d', name: "extra" }))), hasContent && (h("div", { key: 'f54e568aec6abad6c31c5c3858bbd854708aa2f1', class: {
1473
+ 'x-result-content': true,
1474
+ [this.classNames?.content || '']: !!this.classNames?.content,
1475
+ }, style: this.styles?.content ? { cssText: this.styles.content } : undefined }, h("slot", { key: 'd47bd66d66453c5a576142ddbb1c6ad6f2036e95' })))));
1476
+ }
1477
+ };
1478
+ XResult.style = xResultCss();
1479
+
1480
+ const xSelectOptionCss = () => `@charset "UTF-8";:root{--x-color-primary:#1677ff;--x-color-primary-rgb:22, 119, 255;--x-color-primary-contrast:#ffffff;--x-color-primary-contrast-rgb:255, 255, 255;--x-color-primary-shade:#0958d9;--x-color-primary-tint:#4096ff;--x-color-primary-bg:#e6f4ff;--x-color-primary-bg-hover:#bae0ff;--x-color-primary-border:#91caff;--x-color-primary-border-hover:#69b1ff;--x-color-primary-hover:#4096ff;--x-color-primary-active:#0958d9;--x-color-primary-text:#1677ff;--x-color-primary-text-hover:#4096ff;--x-color-primary-text-active:#0958d9;--x-color-secondary:#3dc2ff;--x-color-secondary-rgb:61, 194, 255;--x-color-secondary-contrast:#ffffff;--x-color-secondary-contrast-rgb:255, 255, 255;--x-color-secondary-shade:#36abe0;--x-color-secondary-tint:#50c8ff;--x-color-success:#52c41a;--x-color-success-rgb:82, 196, 26;--x-color-success-contrast:#ffffff;--x-color-success-contrast-rgb:255, 255, 255;--x-color-success-shade:#389e0d;--x-color-success-tint:#73d13d;--x-color-success-bg:#f6ffed;--x-color-success-bg-hover:#d9f7be;--x-color-success-border:#b7eb8f;--x-color-success-border-hover:#95de64;--x-color-success-hover:#73d13d;--x-color-success-active:#389e0d;--x-color-success-text:#52c41a;--x-color-success-text-hover:#73d13d;--x-color-success-text-active:#389e0d;--x-color-warning:#faad14;--x-color-warning-rgb:250, 173, 20;--x-color-warning-contrast:#000000;--x-color-warning-contrast-rgb:0, 0, 0;--x-color-warning-shade:#d48806;--x-color-warning-tint:#ffc53d;--x-color-warning-bg:#fffbe6;--x-color-warning-bg-hover:#fff1b8;--x-color-warning-border:#ffe58f;--x-color-warning-border-hover:#ffd666;--x-color-warning-hover:#ffc53d;--x-color-warning-active:#d48806;--x-color-warning-text:#faad14;--x-color-warning-text-hover:#ffc53d;--x-color-warning-text-active:#d48806;--x-color-danger:#ff4d4f;--x-color-danger-rgb:255, 77, 79;--x-color-danger-contrast:#ffffff;--x-color-danger-contrast-rgb:255, 255, 255;--x-color-danger-shade:#cf1322;--x-color-danger-tint:#ff7875;--x-color-error:#ff4d4f;--x-color-error-rgb:255, 77, 79;--x-color-error-bg:#fff2f0;--x-color-error-bg-hover:#ffccc7;--x-color-error-border:#ffa39e;--x-color-error-border-hover:#ff7875;--x-color-error-hover:#ff7875;--x-color-error-active:#d9363e;--x-color-error-text:#ff4d4f;--x-color-error-text-hover:#ff7875;--x-color-error-text-active:#d9363e;--x-color-info:#1677ff;--x-color-info-rgb:22, 119, 255;--x-color-info-bg:#e6f4ff;--x-color-info-bg-hover:#bae0ff;--x-color-info-border:#91caff;--x-color-info-border-hover:#69b1ff;--x-color-info-hover:#69b1ff;--x-color-info-active:#0958d9;--x-color-info-text:#1677ff;--x-color-info-text-hover:#69b1ff;--x-color-info-text-active:#0958d9;--x-color-text:rgba(0, 0, 0, 0.88);--x-color-text-secondary:rgba(0, 0, 0, 0.65);--x-color-text-tertiary:rgba(0, 0, 0, 0.45);--x-color-text-quaternary:rgba(0, 0, 0, 0.25);--x-color-text-disabled:rgba(0, 0, 0, 0.25);--x-color-text-placeholder:rgba(0, 0, 0, 0.25);--x-color-text-heading:rgba(0, 0, 0, 0.88);--x-color-text-label:rgba(0, 0, 0, 0.65);--x-color-text-description:rgba(0, 0, 0, 0.45);--x-color-text-light-solid:#ffffff;--x-color-bg-container:#ffffff;--x-color-bg-elevated:#ffffff;--x-color-bg-layout:#f5f5f5;--x-color-bg-spotlight:rgba(0, 0, 0, 0.85);--x-color-bg-mask:rgba(0, 0, 0, 0.45);--x-color-bg-base:#ffffff;--x-color-bg-container-disabled:#f5f5f5;--x-color-bg-container-loading:rgba(255, 255, 255, 0.65);--x-color-white:#ffffff;--x-color-fill:rgba(0, 0, 0, 0.15);--x-color-fill-secondary:rgba(0, 0, 0, 0.06);--x-color-fill-tertiary:rgba(0, 0, 0, 0.04);--x-color-fill-quaternary:rgba(0, 0, 0, 0.02);--x-color-border:#d9d9d9;--x-color-border-secondary:#f0f0f0;--x-color-border-bg:#ffffff;--x-color-split:rgba(5, 5, 5, 0.06);--x-color-dark:#222428;--x-color-dark-rgb:34, 36, 40;--x-color-dark-contrast:#ffffff;--x-color-dark-contrast-rgb:255, 255, 255;--x-color-dark-shade:#1e2023;--x-color-dark-tint:#383a3e;--x-color-medium:#92949c;--x-color-medium-rgb:146, 148, 156;--x-color-medium-contrast:#ffffff;--x-color-medium-contrast-rgb:255, 255, 255;--x-color-medium-shade:#808289;--x-color-medium-tint:#9d9fa6;--x-color-light:#f4f5f8;--x-color-light-rgb:244, 245, 248;--x-color-light-contrast:#000000;--x-color-light-contrast-rgb:0, 0, 0;--x-color-light-shade:#d7d8da;--x-color-light-tint:#f5f6f9;--x-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--x-font-family-code:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--x-font-size:14px;--x-font-size-sm:12px;--x-font-size-lg:16px;--x-font-size-xl:20px;--x-font-size-heading-1:38px;--x-font-size-heading-2:30px;--x-font-size-heading-3:24px;--x-font-size-heading-4:20px;--x-font-size-heading-5:16px;--x-line-height:1.5714285714285714;--x-line-height-lg:1.5;--x-line-height-sm:1.6666666666666667;--x-line-height-heading-1:1.2105263157894737;--x-line-height-heading-2:1.2666666666666666;--x-line-height-heading-3:1.3333333333333333;--x-line-height-heading-4:1.4;--x-line-height-heading-5:1.5;--x-font-weight-normal:400;--x-font-weight-medium:500;--x-font-weight-semibold:600;--x-font-weight-strong:600;--x-font-size-base:14px;--x-font-size-xxl:24px;--x-line-height-base:1.5714285714285714;--x-spacing-xxs:4px;--x-spacing-xs:8px;--x-spacing-sm:12px;--x-spacing-md:16px;--x-spacing-lg:20px;--x-spacing-xl:24px;--x-spacing-xxl:32px;--x-spacing-xxxl:48px;--x-margin-xxs:4px;--x-margin-xs:8px;--x-margin-sm:12px;--x-margin-md:16px;--x-margin-lg:24px;--x-margin-xl:32px;--x-margin-xxl:48px;--x-padding-xxs:4px;--x-padding-xs:8px;--x-padding-sm:12px;--x-padding-md:16px;--x-padding-lg:24px;--x-padding-content-horizontal-lg:24px;--x-padding-content-vertical-lg:12px;--x-padding-content-horizontal:16px;--x-padding-content-vertical:12px;--x-padding-content-horizontal-sm:16px;--x-padding-content-vertical-sm:8px;--x-border-radius:6px;--x-border-radius-xs:2px;--x-border-radius-sm:4px;--x-border-radius-lg:8px;--x-border-radius-xl:12px;--x-border-radius-outer:4px;--x-border-radius-base:6px;--x-border-width:1px;--x-border-width-base:1px;--x-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-shadow-lg:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-box-shadow-popover-arrow:2px 2px 5px rgba(0, 0, 0, 0.05);--x-box-shadow-card:0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);--x-box-shadow-drawer-right:-6px 0 16px 0 rgba(0, 0, 0, 0.08), -3px 0 6px -4px rgba(0, 0, 0, 0.12), -9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-left:6px 0 16px 0 rgba(0, 0, 0, 0.08), 3px 0 6px -4px rgba(0, 0, 0, 0.12), 9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-up:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-down:0 -6px 16px 0 rgba(0, 0, 0, 0.08), 0 -3px 6px -4px rgba(0, 0, 0, 0.12), 0 -9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tabs-overflow-left:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-right:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-top:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-bottom:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);--x-motion-duration-fast:0.1s;--x-motion-duration-mid:0.2s;--x-motion-duration-slow:0.3s;--x-motion-ease-in-out:cubic-bezier(0.645, 0.045, 0.355, 1);--x-motion-ease-out:cubic-bezier(0.215, 0.61, 0.355, 1);--x-motion-ease-in:cubic-bezier(0.55, 0.055, 0.675, 0.19);--x-motion-ease-out-back:cubic-bezier(0.12, 0.4, 0.29, 1.46);--x-motion-ease-in-back:cubic-bezier(0.71, -0.46, 0.88, 0.6);--x-motion-ease-in-out-circle:cubic-bezier(0.78, 0.14, 0.15, 0.86);--x-motion-ease-out-circle:cubic-bezier(0.08, 0.82, 0.17, 1);--x-motion-ease-in-circle:cubic-bezier(0.6, 0.04, 0.98, 0.34);--x-motion-ease-in-quint:cubic-bezier(0.755, 0.05, 0.855, 0.06);--x-motion-ease-out-quint:cubic-bezier(0.23, 1, 0.32, 1);--x-z-index-base:0;--x-z-index-popup-base:1000;--x-z-index-popup:1030;--x-z-index-affix:10;--x-z-index-modal:1000;--x-z-index-modal-mask:1000;--x-z-index-drawer:1000;--x-z-index-popover:1030;--x-z-index-dropdown:1050;--x-z-index-tooltip:1070;--x-z-index-notification:1080;--x-z-index-message:1090;--x-z-index-popconfirm:1060;--x-z-index-table-fixed:10;--x-opacity-loading:0.65;--x-opacity-image:1;--x-opacity-disabled:0.5;--x-control-height:32px;--x-control-height-xs:24px;--x-control-height-sm:24px;--x-control-height-lg:40px;--x-control-radio-size:16px;--x-control-checkbox-size:16px;--x-control-padding-horizontal:12px;--x-control-padding-horizontal-sm:8px;--x-control-outline-width:2px;--x-control-outline:rgba(5, 145, 255, 0.1);--x-control-item-bg-hover:rgba(0, 0, 0, 0.04);--x-control-item-bg-active:#e6f4ff;--x-control-item-bg-active-hover:#bae0ff;--x-control-item-bg-active-disabled:rgba(0, 0, 0, 0.15);--x-control-tmp-outline:rgba(0, 0, 0, 0.02);--x-color-yellow:#fadb14;--x-color-yellow-rgb:250, 219, 20;--x-font-family-base:var(--x-font-family);--x-color-link:#1677ff;--x-color-link-hover:#69b1ff;--x-color-link-active:#0958d9;--x-color-icon:rgba(0, 0, 0, 0.45);--x-color-icon-hover:rgba(0, 0, 0, 0.88);--x-color-highlight:#ff4d4f;--x-color-bg-text-hover:rgba(0, 0, 0, 0.06);--x-color-bg-text-active:rgba(0, 0, 0, 0.15);--x-screen-xs:480px;--x-screen-xs-min:480px;--x-screen-xs-max:575px;--x-screen-sm:576px;--x-screen-sm-min:576px;--x-screen-sm-max:767px;--x-screen-md:768px;--x-screen-md-min:768px;--x-screen-md-max:991px;--x-screen-lg:992px;--x-screen-lg-min:992px;--x-screen-lg-max:1199px;--x-screen-xl:1200px;--x-screen-xl-min:1200px;--x-screen-xl-max:1599px;--x-screen-xxl:1600px;--x-screen-xxl-min:1600px;--x-color-fill-content:rgba(0, 0, 0, 0.06);--x-color-fill-content-hover:rgba(0, 0, 0, 0.15);--x-color-fill-alter:rgba(0, 0, 0, 0.02);--x-scrollbar-width:12px;--x-scrollbar-track-bg:rgba(0, 0, 0, 0.04);--x-scrollbar-thumb-bg:rgba(0, 0, 0, 0.25);--x-scrollbar-thumb-bg-hover:rgba(0, 0, 0, 0.35);--x-menu-dark-bg:#001529;--x-menu-dark-item-bg:#001529;--x-menu-dark-popup-bg:#001529;--x-menu-dark-submenu-item-bg:#000c17}.x-select-option{display:block;position:relative;min-height:var(--x-select-option-min-height, var(--x-control-height, 15px));padding:var(--x-select-option-padding-block, var(--x-spacing-xs, 8px)) var(--x-select-option-padding-inline, var(--x-spacing-xs, 8px));color:var(--x-select-option-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-weight:var(--x-select-option-font-weight, var(--x-font-weight-normal, 400));font-size:var(--x-select-option-font-size, var(--x-font-size-base, 14px));line-height:var(--x-select-option-line-height, var(--x-line-height-base, 1));cursor:pointer;-webkit-transition:background var(--x-select-option-motion-duration, var(--x-motion-duration-mid, 0.2s)) ease;transition:background var(--x-select-option-motion-duration, var(--x-motion-duration-mid, 0.2s)) ease}.x-select-option.x-select-option-active{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.x-select-option:hover,.x-select-option.x-select-option-active{background-color:var(--x-select-option-bg-hover, var(--x-color-bg-text-hover, rgba(0, 0, 0, 0.06)))}.x-select-option.x-select-option-selected{color:var(--x-select-option-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-weight:var(--x-select-option-font-weight-selected, var(--x-font-weight-semibold, 600));background-color:var(--x-select-option-bg-selected, var(--x-color-primary-bg, #e6f4ff))}.x-select-option.x-select-option-selected:hover,.x-select-option.x-select-option-selected.x-select-option-active{background-color:var(--x-select-option-bg-selected-hover, var(--x-color-primary-bg-hover, #bae0ff))}.x-select-option.x-select-option-disabled{color:var(--x-select-option-color-disabled, var(--x-color-text-disabled, rgba(0, 0, 0, 0.25)));cursor:not-allowed;background-color:transparent}.x-select-option.x-select-option-disabled:hover,.x-select-option.x-select-option-disabled.x-select-option-active{background-color:transparent}.x-select-option-content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex:auto;flex:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-select-option-state{-ms-flex:none;flex:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding-left:var(--x-select-option-state-padding-left, var(--x-spacing-sm, 12px));color:var(--x-select-option-state-color, var(--x-color-primary, #1677ff))}`;
1481
+
1482
+ const XSelectOption = class {
1483
+ constructor(hostRef) {
1484
+ registerInstance(this, hostRef);
1485
+ }
1486
+ get el() { return getElement(this); }
1487
+ /**
1488
+ * Whether the option is disabled.
1489
+ * @example
1490
+ * <x-select-option disabled></x-select-option>
1491
+ */
1492
+ disabled = false;
1493
+ /**
1494
+ * The value of the option.
1495
+ * @example
1496
+ * <x-select-option value="us"></x-select-option>
1497
+ */
1498
+ value;
1499
+ /**
1500
+ * The label of the option (used for display in the select box when selected)
1501
+ * If not provided, will try to use the text content.
1502
+ * @example
1503
+ * <x-select-option label="United States"></x-select-option>
1504
+ */
1505
+ label;
1506
+ /**
1507
+ * Title attribute.
1508
+ * @example
1509
+ * <x-select-option optionTitle="Tooltip"></x-select-option>
1510
+ */
1511
+ optionTitle;
1512
+ /**
1513
+ * Internal: whether this option is selected.
1514
+ */
1515
+ selected = false;
1516
+ /**
1517
+ * Internal: whether this option is active (hovered/focused via keyboard).
1518
+ */
1519
+ active = false;
1520
+ /**
1521
+ * Renders the Select Option component.
1522
+ *
1523
+ * Flow:
1524
+ * 1. Applies classes based on state (selected, active, disabled).
1525
+ * 2. Sets ARIA roles for accessibility.
1526
+ * 3. Renders the option content (projected via slot).
1527
+ * 4. Renders a checkmark icon if the option is selected.
1528
+ *
1529
+ * @returns JSX.Element - The host element representing an option.
1530
+ */
1531
+ render() {
1532
+ return (h(Host, { key: 'b75e12cc85f999090a9d9eb574c1b43aa6ae9efa', class: {
1533
+ 'x-select-option': true,
1534
+ 'x-select-option-selected': this.selected,
1535
+ 'x-select-option-active': this.active,
1536
+ 'x-select-option-disabled': this.disabled,
1537
+ }, title: this.optionTitle, role: "option", "aria-selected": this.selected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }, h("div", { key: '3d1c1ae207aa4b141397b85bfd125f8e2f3a5f44', class: "x-select-option-content" }, h("slot", { key: 'dbce7dfb1f1191b5d5c7ef8dde91cdfecf09d835' })), this.selected && (h("div", { key: 'd21e3a536ab6cf8620e23980c7b8190c3d136d58', class: "x-select-option-state" }, h("span", { key: '7af063874895dac03505c74ad8170c2a0a1d167b', role: "img", "aria-label": "check", class: "anticon anticon-check x-select-selected-icon" }, h("svg", { key: '075e667053ece6734193ca634fa45fa7e6696789', viewBox: "64 64 896 896", focusable: "false", "data-icon": "check", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { key: '2a3d658eb3695351173e899b62e00ba82d6d3b57', d: "M912 190h-69c-4.4 0-8 3.6-8 8v27.1c0 1.8.7 3.6 2 4.9l376 474c2.5 3.2 6.4 5 10.5 5h54c4.1 0 8-1.8 10.5-5L910 202.9c1.3-1.3 2-3.1 2-4.9V198c0-4.4-3.6-8-8-8z" }), h("path", { key: '3e90191a7ef5a60245d81217fa0b707d56d42e82', d: "M912 190h-69c-4.4 0-8 3.6-8 8v27.1c0 1.8.7 3.6 2 4.9l376 474c2.5 3.2 6.4 5 10.5 5h54c4.1 0 8-1.8 10.5-5L910 202.9c1.3-1.3 2-3.1 2-4.9V198c0-4.4-3.6-8-8-8z", opacity: "0" }), h("path", { key: '90da6aa15798242c541d003cbcaca1f0da74bed3', d: "M433.1 657.7a31.8 31.8 0 0051.7 0l206.8-271.6c6.6-8.6 3.7-21.4-5.9-24.1l-42.4-11.9c-3.4-1-7.1.2-9.3 3.1L459 554.5l-86.6-97.4c-2.2-2.5-5.8-3.5-9.1-2.5l-43 12.1c-9.6 2.7-12.5 15.5-5.9 24.1l118.7 166.9z" })))))));
1538
+ }
1539
+ };
1540
+ XSelectOption.style = xSelectOptionCss();
1541
+
1542
+ const xTagCss = () => `@charset "UTF-8";:root{--x-color-primary:#1677ff;--x-color-primary-rgb:22, 119, 255;--x-color-primary-contrast:#ffffff;--x-color-primary-contrast-rgb:255, 255, 255;--x-color-primary-shade:#0958d9;--x-color-primary-tint:#4096ff;--x-color-primary-bg:#e6f4ff;--x-color-primary-bg-hover:#bae0ff;--x-color-primary-border:#91caff;--x-color-primary-border-hover:#69b1ff;--x-color-primary-hover:#4096ff;--x-color-primary-active:#0958d9;--x-color-primary-text:#1677ff;--x-color-primary-text-hover:#4096ff;--x-color-primary-text-active:#0958d9;--x-color-secondary:#3dc2ff;--x-color-secondary-rgb:61, 194, 255;--x-color-secondary-contrast:#ffffff;--x-color-secondary-contrast-rgb:255, 255, 255;--x-color-secondary-shade:#36abe0;--x-color-secondary-tint:#50c8ff;--x-color-success:#52c41a;--x-color-success-rgb:82, 196, 26;--x-color-success-contrast:#ffffff;--x-color-success-contrast-rgb:255, 255, 255;--x-color-success-shade:#389e0d;--x-color-success-tint:#73d13d;--x-color-success-bg:#f6ffed;--x-color-success-bg-hover:#d9f7be;--x-color-success-border:#b7eb8f;--x-color-success-border-hover:#95de64;--x-color-success-hover:#73d13d;--x-color-success-active:#389e0d;--x-color-success-text:#52c41a;--x-color-success-text-hover:#73d13d;--x-color-success-text-active:#389e0d;--x-color-warning:#faad14;--x-color-warning-rgb:250, 173, 20;--x-color-warning-contrast:#000000;--x-color-warning-contrast-rgb:0, 0, 0;--x-color-warning-shade:#d48806;--x-color-warning-tint:#ffc53d;--x-color-warning-bg:#fffbe6;--x-color-warning-bg-hover:#fff1b8;--x-color-warning-border:#ffe58f;--x-color-warning-border-hover:#ffd666;--x-color-warning-hover:#ffc53d;--x-color-warning-active:#d48806;--x-color-warning-text:#faad14;--x-color-warning-text-hover:#ffc53d;--x-color-warning-text-active:#d48806;--x-color-danger:#ff4d4f;--x-color-danger-rgb:255, 77, 79;--x-color-danger-contrast:#ffffff;--x-color-danger-contrast-rgb:255, 255, 255;--x-color-danger-shade:#cf1322;--x-color-danger-tint:#ff7875;--x-color-error:#ff4d4f;--x-color-error-rgb:255, 77, 79;--x-color-error-bg:#fff2f0;--x-color-error-bg-hover:#ffccc7;--x-color-error-border:#ffa39e;--x-color-error-border-hover:#ff7875;--x-color-error-hover:#ff7875;--x-color-error-active:#d9363e;--x-color-error-text:#ff4d4f;--x-color-error-text-hover:#ff7875;--x-color-error-text-active:#d9363e;--x-color-info:#1677ff;--x-color-info-rgb:22, 119, 255;--x-color-info-bg:#e6f4ff;--x-color-info-bg-hover:#bae0ff;--x-color-info-border:#91caff;--x-color-info-border-hover:#69b1ff;--x-color-info-hover:#69b1ff;--x-color-info-active:#0958d9;--x-color-info-text:#1677ff;--x-color-info-text-hover:#69b1ff;--x-color-info-text-active:#0958d9;--x-color-text:rgba(0, 0, 0, 0.88);--x-color-text-secondary:rgba(0, 0, 0, 0.65);--x-color-text-tertiary:rgba(0, 0, 0, 0.45);--x-color-text-quaternary:rgba(0, 0, 0, 0.25);--x-color-text-disabled:rgba(0, 0, 0, 0.25);--x-color-text-placeholder:rgba(0, 0, 0, 0.25);--x-color-text-heading:rgba(0, 0, 0, 0.88);--x-color-text-label:rgba(0, 0, 0, 0.65);--x-color-text-description:rgba(0, 0, 0, 0.45);--x-color-text-light-solid:#ffffff;--x-color-bg-container:#ffffff;--x-color-bg-elevated:#ffffff;--x-color-bg-layout:#f5f5f5;--x-color-bg-spotlight:rgba(0, 0, 0, 0.85);--x-color-bg-mask:rgba(0, 0, 0, 0.45);--x-color-bg-base:#ffffff;--x-color-bg-container-disabled:#f5f5f5;--x-color-bg-container-loading:rgba(255, 255, 255, 0.65);--x-color-white:#ffffff;--x-color-fill:rgba(0, 0, 0, 0.15);--x-color-fill-secondary:rgba(0, 0, 0, 0.06);--x-color-fill-tertiary:rgba(0, 0, 0, 0.04);--x-color-fill-quaternary:rgba(0, 0, 0, 0.02);--x-color-border:#d9d9d9;--x-color-border-secondary:#f0f0f0;--x-color-border-bg:#ffffff;--x-color-split:rgba(5, 5, 5, 0.06);--x-color-dark:#222428;--x-color-dark-rgb:34, 36, 40;--x-color-dark-contrast:#ffffff;--x-color-dark-contrast-rgb:255, 255, 255;--x-color-dark-shade:#1e2023;--x-color-dark-tint:#383a3e;--x-color-medium:#92949c;--x-color-medium-rgb:146, 148, 156;--x-color-medium-contrast:#ffffff;--x-color-medium-contrast-rgb:255, 255, 255;--x-color-medium-shade:#808289;--x-color-medium-tint:#9d9fa6;--x-color-light:#f4f5f8;--x-color-light-rgb:244, 245, 248;--x-color-light-contrast:#000000;--x-color-light-contrast-rgb:0, 0, 0;--x-color-light-shade:#d7d8da;--x-color-light-tint:#f5f6f9;--x-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--x-font-family-code:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--x-font-size:14px;--x-font-size-sm:12px;--x-font-size-lg:16px;--x-font-size-xl:20px;--x-font-size-heading-1:38px;--x-font-size-heading-2:30px;--x-font-size-heading-3:24px;--x-font-size-heading-4:20px;--x-font-size-heading-5:16px;--x-line-height:1.5714285714285714;--x-line-height-lg:1.5;--x-line-height-sm:1.6666666666666667;--x-line-height-heading-1:1.2105263157894737;--x-line-height-heading-2:1.2666666666666666;--x-line-height-heading-3:1.3333333333333333;--x-line-height-heading-4:1.4;--x-line-height-heading-5:1.5;--x-font-weight-normal:400;--x-font-weight-medium:500;--x-font-weight-semibold:600;--x-font-weight-strong:600;--x-font-size-base:14px;--x-font-size-xxl:24px;--x-line-height-base:1.5714285714285714;--x-spacing-xxs:4px;--x-spacing-xs:8px;--x-spacing-sm:12px;--x-spacing-md:16px;--x-spacing-lg:20px;--x-spacing-xl:24px;--x-spacing-xxl:32px;--x-spacing-xxxl:48px;--x-margin-xxs:4px;--x-margin-xs:8px;--x-margin-sm:12px;--x-margin-md:16px;--x-margin-lg:24px;--x-margin-xl:32px;--x-margin-xxl:48px;--x-padding-xxs:4px;--x-padding-xs:8px;--x-padding-sm:12px;--x-padding-md:16px;--x-padding-lg:24px;--x-padding-content-horizontal-lg:24px;--x-padding-content-vertical-lg:12px;--x-padding-content-horizontal:16px;--x-padding-content-vertical:12px;--x-padding-content-horizontal-sm:16px;--x-padding-content-vertical-sm:8px;--x-border-radius:6px;--x-border-radius-xs:2px;--x-border-radius-sm:4px;--x-border-radius-lg:8px;--x-border-radius-xl:12px;--x-border-radius-outer:4px;--x-border-radius-base:6px;--x-border-width:1px;--x-border-width-base:1px;--x-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-shadow-lg:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-box-shadow-popover-arrow:2px 2px 5px rgba(0, 0, 0, 0.05);--x-box-shadow-card:0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);--x-box-shadow-drawer-right:-6px 0 16px 0 rgba(0, 0, 0, 0.08), -3px 0 6px -4px rgba(0, 0, 0, 0.12), -9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-left:6px 0 16px 0 rgba(0, 0, 0, 0.08), 3px 0 6px -4px rgba(0, 0, 0, 0.12), 9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-up:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-down:0 -6px 16px 0 rgba(0, 0, 0, 0.08), 0 -3px 6px -4px rgba(0, 0, 0, 0.12), 0 -9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tabs-overflow-left:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-right:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-top:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-bottom:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);--x-motion-duration-fast:0.1s;--x-motion-duration-mid:0.2s;--x-motion-duration-slow:0.3s;--x-motion-ease-in-out:cubic-bezier(0.645, 0.045, 0.355, 1);--x-motion-ease-out:cubic-bezier(0.215, 0.61, 0.355, 1);--x-motion-ease-in:cubic-bezier(0.55, 0.055, 0.675, 0.19);--x-motion-ease-out-back:cubic-bezier(0.12, 0.4, 0.29, 1.46);--x-motion-ease-in-back:cubic-bezier(0.71, -0.46, 0.88, 0.6);--x-motion-ease-in-out-circle:cubic-bezier(0.78, 0.14, 0.15, 0.86);--x-motion-ease-out-circle:cubic-bezier(0.08, 0.82, 0.17, 1);--x-motion-ease-in-circle:cubic-bezier(0.6, 0.04, 0.98, 0.34);--x-motion-ease-in-quint:cubic-bezier(0.755, 0.05, 0.855, 0.06);--x-motion-ease-out-quint:cubic-bezier(0.23, 1, 0.32, 1);--x-z-index-base:0;--x-z-index-popup-base:1000;--x-z-index-popup:1030;--x-z-index-affix:10;--x-z-index-modal:1000;--x-z-index-modal-mask:1000;--x-z-index-drawer:1000;--x-z-index-popover:1030;--x-z-index-dropdown:1050;--x-z-index-tooltip:1070;--x-z-index-notification:1080;--x-z-index-message:1090;--x-z-index-popconfirm:1060;--x-z-index-table-fixed:10;--x-opacity-loading:0.65;--x-opacity-image:1;--x-opacity-disabled:0.5;--x-control-height:32px;--x-control-height-xs:24px;--x-control-height-sm:24px;--x-control-height-lg:40px;--x-control-radio-size:16px;--x-control-checkbox-size:16px;--x-control-padding-horizontal:12px;--x-control-padding-horizontal-sm:8px;--x-control-outline-width:2px;--x-control-outline:rgba(5, 145, 255, 0.1);--x-control-item-bg-hover:rgba(0, 0, 0, 0.04);--x-control-item-bg-active:#e6f4ff;--x-control-item-bg-active-hover:#bae0ff;--x-control-item-bg-active-disabled:rgba(0, 0, 0, 0.15);--x-control-tmp-outline:rgba(0, 0, 0, 0.02);--x-color-yellow:#fadb14;--x-color-yellow-rgb:250, 219, 20;--x-font-family-base:var(--x-font-family);--x-color-link:#1677ff;--x-color-link-hover:#69b1ff;--x-color-link-active:#0958d9;--x-color-icon:rgba(0, 0, 0, 0.45);--x-color-icon-hover:rgba(0, 0, 0, 0.88);--x-color-highlight:#ff4d4f;--x-color-bg-text-hover:rgba(0, 0, 0, 0.06);--x-color-bg-text-active:rgba(0, 0, 0, 0.15);--x-screen-xs:480px;--x-screen-xs-min:480px;--x-screen-xs-max:575px;--x-screen-sm:576px;--x-screen-sm-min:576px;--x-screen-sm-max:767px;--x-screen-md:768px;--x-screen-md-min:768px;--x-screen-md-max:991px;--x-screen-lg:992px;--x-screen-lg-min:992px;--x-screen-lg-max:1199px;--x-screen-xl:1200px;--x-screen-xl-min:1200px;--x-screen-xl-max:1599px;--x-screen-xxl:1600px;--x-screen-xxl-min:1600px;--x-color-fill-content:rgba(0, 0, 0, 0.06);--x-color-fill-content-hover:rgba(0, 0, 0, 0.15);--x-color-fill-alter:rgba(0, 0, 0, 0.02);--x-scrollbar-width:12px;--x-scrollbar-track-bg:rgba(0, 0, 0, 0.04);--x-scrollbar-thumb-bg:rgba(0, 0, 0, 0.25);--x-scrollbar-thumb-bg-hover:rgba(0, 0, 0, 0.35);--x-menu-dark-bg:#001529;--x-menu-dark-item-bg:#001529;--x-menu-dark-popup-bg:#001529;--x-menu-dark-submenu-item-bg:#000c17}:host{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;-webkit-margin-end:var(--x-tag-margin-right, var(--x-spacing-xs, 8px));margin-inline-end:var(--x-tag-margin-right, var(--x-spacing-xs, 8px));padding:0 var(--x-tag-padding-inline, 7px);color:var(--x-tag-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));font-size:var(--x-tag-font-size, var(--x-font-size-sm, 12px));font-variant:tabular-nums;line-height:var(--x-tag-line-height, 20px);list-style:none;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:auto;white-space:nowrap;background:var(--x-tag-bg, var(--x-color-fill-quaternary, rgba(0, 0, 0, 0.02)));border:var(--x-tag-border-width, var(--x-border-width-base, 1px)) solid var(--x-tag-border-color, var(--x-color-border, #d9d9d9));border-radius:var(--x-tag-border-radius, var(--x-border-radius-sm, 4px));opacity:1;-webkit-transition:all var(--x-tag-motion-duration, var(--x-motion-duration-mid, 0.2s));transition:all var(--x-tag-motion-duration, var(--x-motion-duration-mid, 0.2s));cursor:default;text-decoration:none}:host:focus{outline:none}:host(.x-tag-hidden){display:none}:host(.x-tag-closing){opacity:0;-webkit-transform:scale(0.8);transform:scale(0.8)}:host(.x-tag-borderless){background:var(--x-tag-borderless-bg, transparent);border-color:transparent}:host(.x-tag-disabled){cursor:not-allowed;opacity:0.65;pointer-events:none}:host(.x-tag-closable){-webkit-padding-end:calc(var(--x-tag-padding-inline, 7px) - var(--x-tag-close-padding-offset, 2px));padding-inline-end:calc(var(--x-tag-padding-inline, 7px) - var(--x-tag-close-padding-offset, 2px))}:host(.x-tag-outlined){background:transparent;border-color:var(--x-tag-border-color, var(--x-color-border, #d9d9d9))}:host(.x-tag-filled){background:var(--x-tag-bg, var(--x-color-fill-quaternary, rgba(0, 0, 0, 0.02)));border-color:transparent}:host(.x-tag-solid){background:var(--x-tag-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));border-color:var(--x-tag-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));color:var(--x-color-text-light-solid, #fff)}.x-tag-content{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;color:inherit;text-decoration:none}a.x-tag-content{cursor:pointer}a.x-tag-content:hover{opacity:0.85}::slotted([slot=icon]){-webkit-margin-end:var(--x-tag-icon-margin, 4px);margin-inline-end:var(--x-tag-icon-margin, 4px);font-size:inherit}.x-tag-close-icon{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-webkit-margin-start:var(--x-tag-close-margin-left, 3px);margin-inline-start:var(--x-tag-close-margin-left, 3px);padding:0;color:var(--x-tag-close-color, var(--x-color-icon, rgba(0, 0, 0, 0.45)));font-size:var(--x-tag-close-icon-size, 10px);line-height:var(--x-tag-close-line-height, 1);cursor:pointer;border:none;background:transparent;-webkit-transition:all var(--x-tag-motion-duration, var(--x-motion-duration-mid, 0.2s));transition:all var(--x-tag-motion-duration, var(--x-motion-duration-mid, 0.2s))}.x-tag-close-icon:hover{color:var(--x-tag-close-color-hover, var(--x-color-icon-hover, rgba(0, 0, 0, 0.88)))}.x-tag-close-icon:focus{outline:none}.x-tag-close-icon svg{width:1em;height:1em;fill:currentColor}:host(.x-tag-magenta.x-tag-outlined){color:#c41d7f;background:transparent;border-color:#ffadd2}:host(.x-tag-magenta.x-tag-outlined) .x-tag-close-icon{color:#c41d7f;opacity:0.65}:host(.x-tag-magenta.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-magenta.x-tag-filled){color:#c41d7f;background:#fff0f6;border-color:transparent}:host(.x-tag-magenta.x-tag-filled) .x-tag-close-icon{color:#c41d7f;opacity:0.65}:host(.x-tag-magenta.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-magenta.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#c41d7f;border-color:#c41d7f}:host(.x-tag-magenta.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-magenta.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-red.x-tag-outlined){color:#cf1322;background:transparent;border-color:#ffa39e}:host(.x-tag-red.x-tag-outlined) .x-tag-close-icon{color:#cf1322;opacity:0.65}:host(.x-tag-red.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-red.x-tag-filled){color:#cf1322;background:#fff1f0;border-color:transparent}:host(.x-tag-red.x-tag-filled) .x-tag-close-icon{color:#cf1322;opacity:0.65}:host(.x-tag-red.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-red.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#cf1322;border-color:#cf1322}:host(.x-tag-red.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-red.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-volcano.x-tag-outlined){color:#d4380d;background:transparent;border-color:#ffbb96}:host(.x-tag-volcano.x-tag-outlined) .x-tag-close-icon{color:#d4380d;opacity:0.65}:host(.x-tag-volcano.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-volcano.x-tag-filled){color:#d4380d;background:#fff2e8;border-color:transparent}:host(.x-tag-volcano.x-tag-filled) .x-tag-close-icon{color:#d4380d;opacity:0.65}:host(.x-tag-volcano.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-volcano.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#d4380d;border-color:#d4380d}:host(.x-tag-volcano.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-volcano.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-orange.x-tag-outlined){color:#d46b08;background:transparent;border-color:#ffd591}:host(.x-tag-orange.x-tag-outlined) .x-tag-close-icon{color:#d46b08;opacity:0.65}:host(.x-tag-orange.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-orange.x-tag-filled){color:#d46b08;background:#fff7e6;border-color:transparent}:host(.x-tag-orange.x-tag-filled) .x-tag-close-icon{color:#d46b08;opacity:0.65}:host(.x-tag-orange.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-orange.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#d46b08;border-color:#d46b08}:host(.x-tag-orange.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-orange.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-gold.x-tag-outlined){color:#d48806;background:transparent;border-color:#ffe58f}:host(.x-tag-gold.x-tag-outlined) .x-tag-close-icon{color:#d48806;opacity:0.65}:host(.x-tag-gold.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-gold.x-tag-filled){color:#d48806;background:#fffbe6;border-color:transparent}:host(.x-tag-gold.x-tag-filled) .x-tag-close-icon{color:#d48806;opacity:0.65}:host(.x-tag-gold.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-gold.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#d48806;border-color:#d48806}:host(.x-tag-gold.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-gold.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-lime.x-tag-outlined){color:#7cb305;background:transparent;border-color:#eaff8f}:host(.x-tag-lime.x-tag-outlined) .x-tag-close-icon{color:#7cb305;opacity:0.65}:host(.x-tag-lime.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-lime.x-tag-filled){color:#7cb305;background:#fcffe6;border-color:transparent}:host(.x-tag-lime.x-tag-filled) .x-tag-close-icon{color:#7cb305;opacity:0.65}:host(.x-tag-lime.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-lime.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#7cb305;border-color:#7cb305}:host(.x-tag-lime.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-lime.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-green.x-tag-outlined){color:#389e0d;background:transparent;border-color:#b7eb8f}:host(.x-tag-green.x-tag-outlined) .x-tag-close-icon{color:#389e0d;opacity:0.65}:host(.x-tag-green.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-green.x-tag-filled){color:#389e0d;background:#f6ffed;border-color:transparent}:host(.x-tag-green.x-tag-filled) .x-tag-close-icon{color:#389e0d;opacity:0.65}:host(.x-tag-green.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-green.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#389e0d;border-color:#389e0d}:host(.x-tag-green.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-green.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-cyan.x-tag-outlined){color:#08979c;background:transparent;border-color:#87e8de}:host(.x-tag-cyan.x-tag-outlined) .x-tag-close-icon{color:#08979c;opacity:0.65}:host(.x-tag-cyan.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-cyan.x-tag-filled){color:#08979c;background:#e6fffb;border-color:transparent}:host(.x-tag-cyan.x-tag-filled) .x-tag-close-icon{color:#08979c;opacity:0.65}:host(.x-tag-cyan.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-cyan.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#08979c;border-color:#08979c}:host(.x-tag-cyan.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-cyan.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-blue.x-tag-outlined){color:#1677ff;background:transparent;border-color:#91caff}:host(.x-tag-blue.x-tag-outlined) .x-tag-close-icon{color:#1677ff;opacity:0.65}:host(.x-tag-blue.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-blue.x-tag-filled){color:#1677ff;background:#e6f4ff;border-color:transparent}:host(.x-tag-blue.x-tag-filled) .x-tag-close-icon{color:#1677ff;opacity:0.65}:host(.x-tag-blue.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-blue.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#1677ff;border-color:#1677ff}:host(.x-tag-blue.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-blue.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-geekblue.x-tag-outlined){color:#1d39c4;background:transparent;border-color:#adc6ff}:host(.x-tag-geekblue.x-tag-outlined) .x-tag-close-icon{color:#1d39c4;opacity:0.65}:host(.x-tag-geekblue.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-geekblue.x-tag-filled){color:#1d39c4;background:#f0f5ff;border-color:transparent}:host(.x-tag-geekblue.x-tag-filled) .x-tag-close-icon{color:#1d39c4;opacity:0.65}:host(.x-tag-geekblue.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-geekblue.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#1d39c4;border-color:#1d39c4}:host(.x-tag-geekblue.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-geekblue.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-purple.x-tag-outlined){color:#531dab;background:transparent;border-color:#d3adf7}:host(.x-tag-purple.x-tag-outlined) .x-tag-close-icon{color:#531dab;opacity:0.65}:host(.x-tag-purple.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-purple.x-tag-filled){color:#531dab;background:#f9f0ff;border-color:transparent}:host(.x-tag-purple.x-tag-filled) .x-tag-close-icon{color:#531dab;opacity:0.65}:host(.x-tag-purple.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-purple.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#531dab;border-color:#531dab}:host(.x-tag-purple.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-purple.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-pink.x-tag-outlined){color:#c41d7f;background:transparent;border-color:#ffadd2}:host(.x-tag-pink.x-tag-outlined) .x-tag-close-icon{color:#c41d7f;opacity:0.65}:host(.x-tag-pink.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-pink.x-tag-filled){color:#c41d7f;background:#fff0f6;border-color:transparent}:host(.x-tag-pink.x-tag-filled) .x-tag-close-icon{color:#c41d7f;opacity:0.65}:host(.x-tag-pink.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-pink.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#c41d7f;border-color:#c41d7f}:host(.x-tag-pink.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-pink.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-yellow.x-tag-outlined){color:#d4b106;background:transparent;border-color:#fffb8f}:host(.x-tag-yellow.x-tag-outlined) .x-tag-close-icon{color:#d4b106;opacity:0.65}:host(.x-tag-yellow.x-tag-outlined) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-yellow.x-tag-filled){color:#d4b106;background:#feffe6;border-color:transparent}:host(.x-tag-yellow.x-tag-filled) .x-tag-close-icon{color:#d4b106;opacity:0.65}:host(.x-tag-yellow.x-tag-filled) .x-tag-close-icon:hover{opacity:1}:host(.x-tag-yellow.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:#d4b106;border-color:#d4b106}:host(.x-tag-yellow.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-yellow.x-tag-solid) .x-tag-close-icon:hover{color:#fff}:host(.x-tag-success.x-tag-outlined){color:var(--x-tag-success-color, var(--x-color-success, #52c41a));background:transparent;border-color:var(--x-tag-success-border-color, var(--x-color-success-border, #b7eb8f))}:host(.x-tag-success.x-tag-filled){color:var(--x-tag-success-color, var(--x-color-success, #52c41a));background:var(--x-tag-success-bg, var(--x-color-success-bg, #f6ffed));border-color:transparent}:host(.x-tag-success.x-tag-solid){color:var(--x-color-text-light-solid, #fff);background:var(--x-tag-success-color, var(--x-color-success, #52c41a));border-color:var(--x-tag-success-color, var(--x-color-success, #52c41a))}:host(.x-tag-processing.x-tag-outlined){color:var(--x-tag-processing-color, var(--x-color-primary, #1677ff));background:transparent;border-color:var(--x-tag-processing-border-color, var(--x-color-primary-border, #91caff))}:host(.x-tag-processing.x-tag-filled){color:var(--x-tag-processing-color, var(--x-color-primary, #1677ff));background:var(--x-tag-processing-bg, var(--x-color-primary-bg, #e6f4ff));border-color:transparent}:host(.x-tag-processing.x-tag-solid){color:var(--x-tag-processing-color, var(--x-color-primary, #1677ff));background:var(--x-tag-processing-color, var(--x-color-primary, #1677ff));border-color:var(--x-tag-processing-color, var(--x-color-primary, #1677ff))}:host(.x-tag-error.x-tag-outlined){color:var(--x-tag-error-color, var(--x-color-error, #ff4d4f));background:transparent;border-color:var(--x-tag-error-border-color, var(--x-color-error-border, #ffccc7))}:host(.x-tag-error.x-tag-filled){color:var(--x-tag-error-color, var(--x-color-error, #ff4d4f));background:var(--x-tag-error-bg, var(--x-color-error-bg, #fff2f0));border-color:transparent}:host(.x-tag-error.x-tag-solid){color:var(--x-tag-error-color, var(--x-color-error, #ff4d4f));background:var(--x-tag-error-color, var(--x-color-error, #ff4d4f));border-color:var(--x-tag-error-color, var(--x-color-error, #ff4d4f))}:host(.x-tag-warning.x-tag-outlined){color:var(--x-tag-warning-color, var(--x-color-warning, #faad14));background:transparent;border-color:var(--x-tag-warning-border-color, var(--x-color-warning-border, #ffe58f))}:host(.x-tag-warning.x-tag-filled){color:var(--x-tag-warning-color, var(--x-color-warning, #faad14));background:var(--x-tag-warning-bg, var(--x-color-warning-bg, #fffbe6));border-color:transparent}:host(.x-tag-warning.x-tag-solid){color:var(--x-tag-warning-color, var(--x-color-warning, #faad14));background:var(--x-tag-warning-color, var(--x-color-warning, #faad14));border-color:var(--x-tag-warning-color, var(--x-color-warning, #faad14))}:host(.x-tag-default){color:var(--x-tag-default-color, var(--x-color-text, rgba(0, 0, 0, 0.88)));background:var(--x-tag-default-bg, var(--x-color-fill-quaternary, rgba(0, 0, 0, 0.02)));border-color:var(--x-tag-default-border-color, var(--x-color-border, #d9d9d9))}:host(.x-tag-solid) .x-tag-close-icon{color:rgba(255, 255, 255, 0.75)}:host(.x-tag-solid) .x-tag-close-icon:hover{color:var(--x-color-text-light-solid, #fff)}`;
1543
+
1544
+ /* eslint-disable @typescript-eslint/no-inferrable-types */
1545
+ // Preset colors list
1546
+ const PRESET_COLORS = [
1547
+ 'magenta', 'red', 'volcano', 'orange', 'gold', 'lime', 'green',
1548
+ 'cyan', 'blue', 'geekblue', 'purple', 'pink'
1549
+ ];
1550
+ // Status colors
1551
+ const STATUS_COLORS = ['success', 'processing', 'error', 'warning', 'default'];
1552
+ const XTag = class {
1553
+ constructor(hostRef) {
1554
+ registerInstance(this, hostRef);
1555
+ this.xClose = createEvent(this, "xClose", 7);
1556
+ this.xClick = createEvent(this, "xClick", 7);
1557
+ }
1558
+ get el() { return getElement(this); }
1559
+ // ========================================
1560
+ // PROPS
1561
+ // ========================================
1562
+ /**
1563
+ * Whether the Tag can be closed.
1564
+ * @example
1565
+ * <x-tag closable>Closable</x-tag>
1566
+ */
1567
+ closable = false;
1568
+ /**
1569
+ * Custom close icon. Set to null or false to hide close button.
1570
+ * @example
1571
+ * <x-tag closable closeIcon={false}></x-tag>
1572
+ */
1573
+ closeIcon = true;
1574
+ /**
1575
+ * Color of the Tag (preset color or custom hex/rgb).
1576
+ * @example
1577
+ * <x-tag color="magenta"></x-tag>
1578
+ */
1579
+ color;
1580
+ /**
1581
+ * Whether the Tag is disabled.
1582
+ * @example
1583
+ * <x-tag disabled></x-tag>
1584
+ */
1585
+ disabled = false;
1586
+ /**
1587
+ * The address to jump when clicking (renders as <a> tag).
1588
+ * @example
1589
+ * <x-tag href="/docs" target="_blank">Docs</x-tag>
1590
+ */
1591
+ href;
1592
+ /**
1593
+ * Target for href link.
1594
+ * @example
1595
+ * <x-tag href="/docs" target="_blank">Docs</x-tag>
1596
+ */
1597
+ target;
1598
+ /**
1599
+ * Whether the Tag is visible.
1600
+ * @example
1601
+ * <x-tag visible={false}></x-tag>
1602
+ */
1603
+ visible = true;
1604
+ /**
1605
+ * Variant style of the tag: outlined (default), filled, or solid.
1606
+ * @example
1607
+ * <x-tag variant="solid" color="green"></x-tag>
1608
+ */
1609
+ variant = 'outlined';
1610
+ /**
1611
+ * Whether the tag is bordered.
1612
+ * @example
1613
+ * <x-tag bordered={false}></x-tag>
1614
+ */
1615
+ bordered = true;
1616
+ // ========================================
1617
+ // STATE
1618
+ // ========================================
1619
+ /**
1620
+ * Whether tag is in closing animation.
1621
+ */
1622
+ isClosing = false;
1623
+ // ========================================
1624
+ // EVENTS
1625
+ // ========================================
1626
+ /**
1627
+ * Callback executed when tag is closed.
1628
+ * @example
1629
+ * <x-tag closable onXClose={(ev) => console.log(ev.detail)}></x-tag>
1630
+ */
1631
+ xClose;
1632
+ /**
1633
+ * Callback when tag is clicked.
1634
+ * @example
1635
+ * <x-tag onXClick={(ev) => console.log(ev.detail)}></x-tag>
1636
+ */
1637
+ xClick;
1638
+ // ========================================
1639
+ // PRIVATE METHODS
1640
+ // ========================================
1641
+ /**
1642
+ * Handles the close interaction to hide the tag.
1643
+ *
1644
+ * Flow:
1645
+ * 1. Stops event propagation.
1646
+ * 2. Checks if disabled; if so, returns.
1647
+ * 3. Emits `xClose` event with the mouse event.
1648
+ * 4. If the event was not prevented by the consumer:
1649
+ * - Sets `isClosing` to true to trigger exit animation.
1650
+ * - Uses `setTimeout` to wait for animation to finish.
1651
+ * - Sets `visible` to false, removing the tag from view.
1652
+ *
1653
+ * @param e - The mouse event from the close button.
1654
+ */
1655
+ handleClose = (e) => {
1656
+ e.stopPropagation();
1657
+ if (this.disabled)
1658
+ return;
1659
+ // Emit event with original event.
1660
+ this.xClose.emit(e);
1661
+ // If not prevented, hide the tag after animation.
1662
+ if (!e.defaultPrevented) {
1663
+ this.isClosing = true;
1664
+ // Wait for animation
1665
+ setTimeout(() => {
1666
+ this.visible = false;
1667
+ }, 200);
1668
+ }
1669
+ };
1670
+ /**
1671
+ * Handles click events on the tag itself.
1672
+ * Emits `xClick` if not disabled.
1673
+ *
1674
+ * @param e - The mouse event.
1675
+ */
1676
+ handleClick = (e) => {
1677
+ if (this.disabled)
1678
+ return;
1679
+ this.xClick.emit(e);
1680
+ };
1681
+ /**
1682
+ * Checks if the current color is one of the predefined preset colors.
1683
+ * @returns {boolean} True if the color is a preset.
1684
+ */
1685
+ isPresetColor() {
1686
+ return !!this.color && PRESET_COLORS.includes(this.color);
1687
+ }
1688
+ /**
1689
+ * Checks if the current color is one of the predefined status colors.
1690
+ * @returns {boolean} True if the color is a status color.
1691
+ */
1692
+ isStatusColor() {
1693
+ return !!this.color && STATUS_COLORS.includes(this.color);
1694
+ }
1695
+ /**
1696
+ * Checks if the current color is a custom color (e.g., hex or rgb)
1697
+ * that is not part of the preset or status color sets.
1698
+ * @returns {boolean} True if the color is a custom color.
1699
+ */
1700
+ isCustomColor() {
1701
+ return !!this.color && !this.isPresetColor() && !this.isStatusColor();
1702
+ }
1703
+ /**
1704
+ * Returns a style object for custom colors, adjusting background, border,
1705
+ * and text colors based on the tag's variant.
1706
+ * @returns {Object} An object with CSS property-value pairs.
1707
+ */
1708
+ getCustomStyle() {
1709
+ if (!this.isCustomColor())
1710
+ return {};
1711
+ const style = {};
1712
+ if (this.variant === 'solid') {
1713
+ // Solid: dark background, white text
1714
+ style.backgroundColor = this.color;
1715
+ style.borderColor = this.color;
1716
+ style.color = '#fff';
1717
+ }
1718
+ else if (this.variant === 'filled') {
1719
+ // Filled: light background (we can't auto-lighten, so use same as solid)
1720
+ style.backgroundColor = this.color;
1721
+ style.borderColor = 'transparent';
1722
+ style.color = '#fff';
1723
+ }
1724
+ else {
1725
+ // Outlined (default): transparent bg, colored border & text
1726
+ style.borderColor = this.color;
1727
+ style.color = this.color;
1728
+ style.backgroundColor = 'transparent';
1729
+ }
1730
+ return style;
1731
+ }
1732
+ // ========================================
1733
+ // RENDER
1734
+ // ========================================
1735
+ /**
1736
+ * Renders the close icon if the tag is configured to be closable.
1737
+ * @returns {JSX.Element | null} The close icon element or null if not closable.
1738
+ */
1739
+ renderCloseIcon() {
1740
+ if (!this.closable || this.closeIcon === false)
1741
+ return null;
1742
+ return (h("span", { class: "x-tag-close-icon", onClick: this.handleClose, role: "button", tabindex: this.disabled ? -1 : 0, "aria-label": "close" }, h("x-icon", { name: getIcon('close') })));
1743
+ }
1744
+ /**
1745
+ * Calculates the CSS classes for the tag based on its properties and state.
1746
+ * @returns {Object} An object mapping class names to boolean values.
1747
+ */
1748
+ getHostClasses() {
1749
+ const isPreset = this.isPresetColor();
1750
+ const isStatus = this.isStatusColor();
1751
+ const isCustom = this.isCustomColor();
1752
+ return {
1753
+ 'x-tag': true,
1754
+ 'x-tag-hidden': !this.visible,
1755
+ 'x-tag-closing': this.isClosing,
1756
+ 'x-tag-disabled': this.disabled,
1757
+ 'x-tag-borderless': !this.bordered,
1758
+ [`x-tag-${this.variant}`]: true,
1759
+ [`x-tag-${this.color}`]: isPreset || isStatus,
1760
+ 'x-tag-has-color': isCustom,
1761
+ 'x-tag-closable': this.closable,
1762
+ };
1763
+ }
1764
+ /**
1765
+ * Renders the Tag component.
1766
+ *
1767
+ * Flow:
1768
+ * 1. Checks `visible` state; if false, renders nothing.
1769
+ * 2. Determines tag element type: `<a>` if `href` is present, otherwise `<span>`.
1770
+ * 3. Calculates host classes based on props (color, variant, bordered, closable).
1771
+ * 4. Calculates custom styles for non-preset colors.
1772
+ * 5. Renders:
1773
+ * - Icon slot.
1774
+ * - Main content wrapper (text/children).
1775
+ * - Close icon (if `closable` is true).
1776
+ *
1777
+ * @returns JSX.Element | null
1778
+ */
1779
+ render() {
1780
+ if (!this.visible)
1781
+ return null;
1782
+ const TagElement = this.href ? 'a' : 'span';
1783
+ const linkProps = this.href ? { href: this.href, target: this.target } : {};
1784
+ return (h(Host, { class: this.getHostClasses(), style: this.getCustomStyle(), onClick: this.handleClick }, h("slot", { name: "icon" }), h(TagElement, { class: "x-tag-content", ...linkProps }, h("slot", null)), this.renderCloseIcon()));
1785
+ }
1786
+ };
1787
+ XTag.style = xTagCss();
1788
+
1789
+ const xTextareaCss = () => `@charset "UTF-8";:root{--x-color-primary:#1677ff;--x-color-primary-rgb:22, 119, 255;--x-color-primary-contrast:#ffffff;--x-color-primary-contrast-rgb:255, 255, 255;--x-color-primary-shade:#0958d9;--x-color-primary-tint:#4096ff;--x-color-primary-bg:#e6f4ff;--x-color-primary-bg-hover:#bae0ff;--x-color-primary-border:#91caff;--x-color-primary-border-hover:#69b1ff;--x-color-primary-hover:#4096ff;--x-color-primary-active:#0958d9;--x-color-primary-text:#1677ff;--x-color-primary-text-hover:#4096ff;--x-color-primary-text-active:#0958d9;--x-color-secondary:#3dc2ff;--x-color-secondary-rgb:61, 194, 255;--x-color-secondary-contrast:#ffffff;--x-color-secondary-contrast-rgb:255, 255, 255;--x-color-secondary-shade:#36abe0;--x-color-secondary-tint:#50c8ff;--x-color-success:#52c41a;--x-color-success-rgb:82, 196, 26;--x-color-success-contrast:#ffffff;--x-color-success-contrast-rgb:255, 255, 255;--x-color-success-shade:#389e0d;--x-color-success-tint:#73d13d;--x-color-success-bg:#f6ffed;--x-color-success-bg-hover:#d9f7be;--x-color-success-border:#b7eb8f;--x-color-success-border-hover:#95de64;--x-color-success-hover:#73d13d;--x-color-success-active:#389e0d;--x-color-success-text:#52c41a;--x-color-success-text-hover:#73d13d;--x-color-success-text-active:#389e0d;--x-color-warning:#faad14;--x-color-warning-rgb:250, 173, 20;--x-color-warning-contrast:#000000;--x-color-warning-contrast-rgb:0, 0, 0;--x-color-warning-shade:#d48806;--x-color-warning-tint:#ffc53d;--x-color-warning-bg:#fffbe6;--x-color-warning-bg-hover:#fff1b8;--x-color-warning-border:#ffe58f;--x-color-warning-border-hover:#ffd666;--x-color-warning-hover:#ffc53d;--x-color-warning-active:#d48806;--x-color-warning-text:#faad14;--x-color-warning-text-hover:#ffc53d;--x-color-warning-text-active:#d48806;--x-color-danger:#ff4d4f;--x-color-danger-rgb:255, 77, 79;--x-color-danger-contrast:#ffffff;--x-color-danger-contrast-rgb:255, 255, 255;--x-color-danger-shade:#cf1322;--x-color-danger-tint:#ff7875;--x-color-error:#ff4d4f;--x-color-error-rgb:255, 77, 79;--x-color-error-bg:#fff2f0;--x-color-error-bg-hover:#ffccc7;--x-color-error-border:#ffa39e;--x-color-error-border-hover:#ff7875;--x-color-error-hover:#ff7875;--x-color-error-active:#d9363e;--x-color-error-text:#ff4d4f;--x-color-error-text-hover:#ff7875;--x-color-error-text-active:#d9363e;--x-color-info:#1677ff;--x-color-info-rgb:22, 119, 255;--x-color-info-bg:#e6f4ff;--x-color-info-bg-hover:#bae0ff;--x-color-info-border:#91caff;--x-color-info-border-hover:#69b1ff;--x-color-info-hover:#69b1ff;--x-color-info-active:#0958d9;--x-color-info-text:#1677ff;--x-color-info-text-hover:#69b1ff;--x-color-info-text-active:#0958d9;--x-color-text:rgba(0, 0, 0, 0.88);--x-color-text-secondary:rgba(0, 0, 0, 0.65);--x-color-text-tertiary:rgba(0, 0, 0, 0.45);--x-color-text-quaternary:rgba(0, 0, 0, 0.25);--x-color-text-disabled:rgba(0, 0, 0, 0.25);--x-color-text-placeholder:rgba(0, 0, 0, 0.25);--x-color-text-heading:rgba(0, 0, 0, 0.88);--x-color-text-label:rgba(0, 0, 0, 0.65);--x-color-text-description:rgba(0, 0, 0, 0.45);--x-color-text-light-solid:#ffffff;--x-color-bg-container:#ffffff;--x-color-bg-elevated:#ffffff;--x-color-bg-layout:#f5f5f5;--x-color-bg-spotlight:rgba(0, 0, 0, 0.85);--x-color-bg-mask:rgba(0, 0, 0, 0.45);--x-color-bg-base:#ffffff;--x-color-bg-container-disabled:#f5f5f5;--x-color-bg-container-loading:rgba(255, 255, 255, 0.65);--x-color-white:#ffffff;--x-color-fill:rgba(0, 0, 0, 0.15);--x-color-fill-secondary:rgba(0, 0, 0, 0.06);--x-color-fill-tertiary:rgba(0, 0, 0, 0.04);--x-color-fill-quaternary:rgba(0, 0, 0, 0.02);--x-color-border:#d9d9d9;--x-color-border-secondary:#f0f0f0;--x-color-border-bg:#ffffff;--x-color-split:rgba(5, 5, 5, 0.06);--x-color-dark:#222428;--x-color-dark-rgb:34, 36, 40;--x-color-dark-contrast:#ffffff;--x-color-dark-contrast-rgb:255, 255, 255;--x-color-dark-shade:#1e2023;--x-color-dark-tint:#383a3e;--x-color-medium:#92949c;--x-color-medium-rgb:146, 148, 156;--x-color-medium-contrast:#ffffff;--x-color-medium-contrast-rgb:255, 255, 255;--x-color-medium-shade:#808289;--x-color-medium-tint:#9d9fa6;--x-color-light:#f4f5f8;--x-color-light-rgb:244, 245, 248;--x-color-light-contrast:#000000;--x-color-light-contrast-rgb:0, 0, 0;--x-color-light-shade:#d7d8da;--x-color-light-tint:#f5f6f9;--x-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--x-font-family-code:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--x-font-size:14px;--x-font-size-sm:12px;--x-font-size-lg:16px;--x-font-size-xl:20px;--x-font-size-heading-1:38px;--x-font-size-heading-2:30px;--x-font-size-heading-3:24px;--x-font-size-heading-4:20px;--x-font-size-heading-5:16px;--x-line-height:1.5714285714285714;--x-line-height-lg:1.5;--x-line-height-sm:1.6666666666666667;--x-line-height-heading-1:1.2105263157894737;--x-line-height-heading-2:1.2666666666666666;--x-line-height-heading-3:1.3333333333333333;--x-line-height-heading-4:1.4;--x-line-height-heading-5:1.5;--x-font-weight-normal:400;--x-font-weight-medium:500;--x-font-weight-semibold:600;--x-font-weight-strong:600;--x-font-size-base:14px;--x-font-size-xxl:24px;--x-line-height-base:1.5714285714285714;--x-spacing-xxs:4px;--x-spacing-xs:8px;--x-spacing-sm:12px;--x-spacing-md:16px;--x-spacing-lg:20px;--x-spacing-xl:24px;--x-spacing-xxl:32px;--x-spacing-xxxl:48px;--x-margin-xxs:4px;--x-margin-xs:8px;--x-margin-sm:12px;--x-margin-md:16px;--x-margin-lg:24px;--x-margin-xl:32px;--x-margin-xxl:48px;--x-padding-xxs:4px;--x-padding-xs:8px;--x-padding-sm:12px;--x-padding-md:16px;--x-padding-lg:24px;--x-padding-content-horizontal-lg:24px;--x-padding-content-vertical-lg:12px;--x-padding-content-horizontal:16px;--x-padding-content-vertical:12px;--x-padding-content-horizontal-sm:16px;--x-padding-content-vertical-sm:8px;--x-border-radius:6px;--x-border-radius-xs:2px;--x-border-radius-sm:4px;--x-border-radius-lg:8px;--x-border-radius-xl:12px;--x-border-radius-outer:4px;--x-border-radius-base:6px;--x-border-width:1px;--x-border-width-base:1px;--x-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-shadow-lg:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-secondary:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tertiary:0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);--x-box-shadow-popover-arrow:2px 2px 5px rgba(0, 0, 0, 0.05);--x-box-shadow-card:0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);--x-box-shadow-drawer-right:-6px 0 16px 0 rgba(0, 0, 0, 0.08), -3px 0 6px -4px rgba(0, 0, 0, 0.12), -9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-left:6px 0 16px 0 rgba(0, 0, 0, 0.08), 3px 0 6px -4px rgba(0, 0, 0, 0.12), 9px 0 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-up:0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-drawer-down:0 -6px 16px 0 rgba(0, 0, 0, 0.08), 0 -3px 6px -4px rgba(0, 0, 0, 0.12), 0 -9px 28px 8px rgba(0, 0, 0, 0.05);--x-box-shadow-tabs-overflow-left:inset 10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-right:inset -10px 0 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-top:inset 0 10px 8px -8px rgba(0, 0, 0, 0.08);--x-box-shadow-tabs-overflow-bottom:inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08);--x-motion-duration-fast:0.1s;--x-motion-duration-mid:0.2s;--x-motion-duration-slow:0.3s;--x-motion-ease-in-out:cubic-bezier(0.645, 0.045, 0.355, 1);--x-motion-ease-out:cubic-bezier(0.215, 0.61, 0.355, 1);--x-motion-ease-in:cubic-bezier(0.55, 0.055, 0.675, 0.19);--x-motion-ease-out-back:cubic-bezier(0.12, 0.4, 0.29, 1.46);--x-motion-ease-in-back:cubic-bezier(0.71, -0.46, 0.88, 0.6);--x-motion-ease-in-out-circle:cubic-bezier(0.78, 0.14, 0.15, 0.86);--x-motion-ease-out-circle:cubic-bezier(0.08, 0.82, 0.17, 1);--x-motion-ease-in-circle:cubic-bezier(0.6, 0.04, 0.98, 0.34);--x-motion-ease-in-quint:cubic-bezier(0.755, 0.05, 0.855, 0.06);--x-motion-ease-out-quint:cubic-bezier(0.23, 1, 0.32, 1);--x-z-index-base:0;--x-z-index-popup-base:1000;--x-z-index-popup:1030;--x-z-index-affix:10;--x-z-index-modal:1000;--x-z-index-modal-mask:1000;--x-z-index-drawer:1000;--x-z-index-popover:1030;--x-z-index-dropdown:1050;--x-z-index-tooltip:1070;--x-z-index-notification:1080;--x-z-index-message:1090;--x-z-index-popconfirm:1060;--x-z-index-table-fixed:10;--x-opacity-loading:0.65;--x-opacity-image:1;--x-opacity-disabled:0.5;--x-control-height:32px;--x-control-height-xs:24px;--x-control-height-sm:24px;--x-control-height-lg:40px;--x-control-radio-size:16px;--x-control-checkbox-size:16px;--x-control-padding-horizontal:12px;--x-control-padding-horizontal-sm:8px;--x-control-outline-width:2px;--x-control-outline:rgba(5, 145, 255, 0.1);--x-control-item-bg-hover:rgba(0, 0, 0, 0.04);--x-control-item-bg-active:#e6f4ff;--x-control-item-bg-active-hover:#bae0ff;--x-control-item-bg-active-disabled:rgba(0, 0, 0, 0.15);--x-control-tmp-outline:rgba(0, 0, 0, 0.02);--x-color-yellow:#fadb14;--x-color-yellow-rgb:250, 219, 20;--x-font-family-base:var(--x-font-family);--x-color-link:#1677ff;--x-color-link-hover:#69b1ff;--x-color-link-active:#0958d9;--x-color-icon:rgba(0, 0, 0, 0.45);--x-color-icon-hover:rgba(0, 0, 0, 0.88);--x-color-highlight:#ff4d4f;--x-color-bg-text-hover:rgba(0, 0, 0, 0.06);--x-color-bg-text-active:rgba(0, 0, 0, 0.15);--x-screen-xs:480px;--x-screen-xs-min:480px;--x-screen-xs-max:575px;--x-screen-sm:576px;--x-screen-sm-min:576px;--x-screen-sm-max:767px;--x-screen-md:768px;--x-screen-md-min:768px;--x-screen-md-max:991px;--x-screen-lg:992px;--x-screen-lg-min:992px;--x-screen-lg-max:1199px;--x-screen-xl:1200px;--x-screen-xl-min:1200px;--x-screen-xl-max:1599px;--x-screen-xxl:1600px;--x-screen-xxl-min:1600px;--x-color-fill-content:rgba(0, 0, 0, 0.06);--x-color-fill-content-hover:rgba(0, 0, 0, 0.15);--x-color-fill-alter:rgba(0, 0, 0, 0.02);--x-scrollbar-width:12px;--x-scrollbar-track-bg:rgba(0, 0, 0, 0.04);--x-scrollbar-thumb-bg:rgba(0, 0, 0, 0.25);--x-scrollbar-thumb-bg-hover:rgba(0, 0, 0, 0.35);--x-menu-dark-bg:#001529;--x-menu-dark-item-bg:#001529;--x-menu-dark-popup-bg:#001529;--x-menu-dark-submenu-item-bg:#000c17}:host{display:inline-block;width:100%;position:relative;font-family:inherit;vertical-align:bottom}.x-textarea{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%;min-width:0;padding:0 var(--x-control-padding-horizontal, var(--x-spacing-md, 12px));min-height:var(--x-control-height, var(--x-size-control-height, 32px));background-color:var(--x-control-bg, var(--x-color-bg-container, #ffffff));border:var(--x-control-border-width, var(--x-border-width-base, 1px)) solid var(--x-control-border-color, var(--x-color-border, #d9d9d9));border-radius:var(--x-control-border-radius, var(--x-border-radius-base, 6px));-webkit-transition:all 0.1s cubic-bezier(0.645, 0.045, 0.355, 1);transition:all 0.1s cubic-bezier(0.645, 0.045, 0.355, 1);-webkit-box-sizing:border-box;box-sizing:border-box}.x-textarea:hover:not(.disabled):not([disabled]):not([class*=-disabled]){border-color:var(--x-control-border-color-hover, var(--x-color-primary-hover, #4096ff))}.x-textarea.focused:not(.disabled):not([disabled]):not([class*=-disabled]),.x-textarea:focus-within:not(.disabled):not([disabled]):not([class*=-disabled]){border-color:var(--x-control-border-color-focus, var(--x-color-primary, #1677ff)) !important;-webkit-box-shadow:0 0 0 3px var(--x-color-primary-bg, rgba(22, 119, 255, 0.06));box-shadow:0 0 0 3px var(--x-color-primary-bg, rgba(22, 119, 255, 0.06));z-index:1;outline:none}.x-textarea.disabled,.x-textarea[disabled],.x-textarea[class*=-disabled]{background-color:var(--x-control-bg-disabled, var(--x-color-bg-container-disabled, rgba(0, 0, 0, 0.04)));border-color:var(--x-control-border-color-disabled, var(--x-color-border, #d9d9d9));color:var(--x-control-color-disabled, var(--x-color-text-disabled, rgba(0, 0, 0, 0.25)));cursor:not-allowed}.x-textarea.disabled:hover,.x-textarea[disabled]:hover,.x-textarea[class*=-disabled]:hover{border-color:var(--x-control-border-color-disabled, var(--x-color-border, #d9d9d9)) !important}.x-textarea{display:block;padding:var(--x-textarea-padding-vertical, var(--x-spacing-xxs, 4px)) var(--x-textarea-padding-horizontal, var(--x-spacing-md, 12px));line-height:var(--x-textarea-line-height, var(--x-control-line-height, var(--x-line-height-base, 1.5714285714)));min-height:auto;resize:vertical}.x-textarea::-webkit-input-placeholder{color:var(--x-textarea-placeholder-color, var(--x-control-placeholder-color, var(--x-color-text-placeholder, rgba(0, 0, 0, 0.25))))}.x-textarea::-moz-placeholder{color:var(--x-textarea-placeholder-color, var(--x-control-placeholder-color, var(--x-color-text-placeholder, rgba(0, 0, 0, 0.25))))}.x-textarea:-ms-input-placeholder{color:var(--x-textarea-placeholder-color, var(--x-control-placeholder-color, var(--x-color-text-placeholder, rgba(0, 0, 0, 0.25))))}.x-textarea::-ms-input-placeholder{color:var(--x-textarea-placeholder-color, var(--x-control-placeholder-color, var(--x-color-text-placeholder, rgba(0, 0, 0, 0.25))))}.x-textarea::placeholder{color:var(--x-textarea-placeholder-color, var(--x-control-placeholder-color, var(--x-color-text-placeholder, rgba(0, 0, 0, 0.25))))}:host(.x-textarea-wrapper-error) .x-textarea{border-color:var(--x-control-border-color-error, var(--x-color-error, #ff4d4f))}:host(.x-textarea-wrapper-error) .x-textarea:hover:not(.disabled):not([disabled]){border-color:var(--x-control-border-color-error-hover, var(--x-color-error-hover, #ff7875))}:host(.x-textarea-wrapper-error) .x-textarea.focused,:host(.x-textarea-wrapper-error) .x-textarea:focus-within{border-color:var(--x-control-border-color-error, var(--x-color-error, #ff4d4f));-webkit-box-shadow:0 0 0 3px var(--x-control-focus-shadow-error-color, var(--x-color-error-bg, rgba(255, 38, 5, 0.06)));box-shadow:0 0 0 3px var(--x-control-focus-shadow-error-color, var(--x-color-error-bg, rgba(255, 38, 5, 0.06)))}:host(.x-textarea-wrapper-warning) .x-textarea{border-color:var(--x-control-border-color-warning, var(--x-color-warning, #faad14))}:host(.x-textarea-wrapper-warning) .x-textarea:hover:not(.disabled):not([disabled]){border-color:var(--x-control-border-color-warning-hover, var(--x-color-warning-hover, #ffc53d))}:host(.x-textarea-wrapper-warning) .x-textarea.focused,:host(.x-textarea-wrapper-warning) .x-textarea:focus-within{border-color:var(--x-control-border-color-warning, var(--x-color-warning, #faad14));-webkit-box-shadow:0 0 0 3px var(--x-control-focus-shadow-warning-color, var(--x-color-warning-bg, rgba(255, 215, 5, 0.1)));box-shadow:0 0 0 3px var(--x-control-focus-shadow-warning-color, var(--x-color-warning-bg, rgba(255, 215, 5, 0.1)))}:host(.x-textarea-wrapper-borderless) .x-textarea{background-color:transparent;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}:host(.x-textarea-wrapper-borderless) .x-textarea:hover{border-color:transparent}:host(.x-textarea-wrapper-borderless) .x-textarea.focused,:host(.x-textarea-wrapper-borderless) .x-textarea:focus-within{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}:host(.x-textarea-wrapper-borderless) .x-textarea{padding:0}.x-textarea-clear-icon{position:absolute;top:var(--x-textarea-padding-vertical, var(--x-spacing-xxs, 4px));right:var(--x-textarea-padding-vertical, var(--x-spacing-xxs, 4px));z-index:1;color:var(--x-textarea-clear-icon-color, var(--x-color-text-quaternary, rgba(0, 0, 0, 0.25)));font-size:var(--x-textarea-clear-icon-size, var(--x-font-size-sm, 12px));cursor:pointer;-webkit-transition:color var(--x-textarea-motion-duration-mid, var(--x-motion-duration-mid, 0.2s));transition:color var(--x-textarea-motion-duration-mid, var(--x-motion-duration-mid, 0.2s));background:var(--x-textarea-bg, var(--x-control-bg, var(--x-color-bg-container, #ffffff)))}.x-textarea-clear-icon:hover{color:var(--x-textarea-clear-icon-color-hover, var(--x-color-text-secondary, rgba(0, 0, 0, 0.45)))}:host(.x-textarea-show-count) .x-textarea{padding-bottom:var(--x-textarea-padding-bottom-count, var(--x-spacing-xl, 20px))}.x-textarea-data-count{position:absolute;bottom:var(--x-textarea-padding-vertical, var(--x-spacing-xxs, 4px));right:var(--x-textarea-padding-horizontal, var(--x-spacing-md, 12px));color:var(--x-textarea-count-color, var(--x-color-text-secondary, rgba(0, 0, 0, 0.45)));font-size:var(--x-textarea-count-font-size, var(--x-font-size-sm, 12px));white-space:nowrap;pointer-events:none}`;
1790
+
1791
+ const XTextarea = class {
1792
+ constructor(hostRef) {
1793
+ registerInstance(this, hostRef);
1794
+ this.xChange = createEvent(this, "xChange", 7);
1795
+ this.xInput = createEvent(this, "xInput", 7);
1796
+ this.xPressEnter = createEvent(this, "xPressEnter", 7);
1797
+ this.xResize = createEvent(this, "xResize", 7);
1798
+ }
1799
+ get el() { return getElement(this); }
1800
+ /**
1801
+ * If allow to remove input content with clear icon
1802
+ * @example
1803
+ * <x-textarea allowClear></x-textarea>
1804
+ */
1805
+ allowClear = false;
1806
+ /**
1807
+ * Height autosize feature, can be set to true | false or an object { minRows: 2, maxRows: 6 }
1808
+ * @example
1809
+ * <x-textarea autoSize={{ minRows: 2, maxRows: 6 }}></x-textarea>
1810
+ */
1811
+ autoSize = false;
1812
+ /**
1813
+ * Whether has border style
1814
+ * @example
1815
+ * <x-textarea bordered={false}></x-textarea>
1816
+ */
1817
+ bordered = true;
1818
+ /**
1819
+ * The initial input content
1820
+ * @example
1821
+ * <x-textarea defaultValue="hello"></x-textarea>
1822
+ */
1823
+ defaultValue = '';
1824
+ /**
1825
+ * Whether the input is disabled
1826
+ * @example
1827
+ * <x-textarea disabled></x-textarea>
1828
+ */
1829
+ disabled = false;
1830
+ /**
1831
+ * The max length
1832
+ * @example
1833
+ * <x-textarea maxLength={200}></x-textarea>
1834
+ */
1835
+ maxLength;
1836
+ /**
1837
+ * Whether show text count
1838
+ * @example
1839
+ * <x-textarea showCount></x-textarea>
1840
+ */
1841
+ showCount = false;
1842
+ /**
1843
+ * Set validation status
1844
+ * @example
1845
+ * <x-textarea status="error"></x-textarea>
1846
+ */
1847
+ status;
1848
+ /**
1849
+ * The input content
1850
+ * @example
1851
+ * <x-textarea value="demo"></x-textarea>
1852
+ */
1853
+ value;
1854
+ /**
1855
+ * Placeholder
1856
+ * @example
1857
+ * <x-textarea placeholder="Type here"></x-textarea>
1858
+ */
1859
+ placeholder;
1860
+ /**
1861
+ * Rows
1862
+ * @example
1863
+ * <x-textarea rows={4}></x-textarea>
1864
+ */
1865
+ rows = 2;
1866
+ /**
1867
+ * Focus state.
1868
+ */
1869
+ focused = false;
1870
+ /**
1871
+ * Emitted when value changes.
1872
+ * @example
1873
+ * <x-textarea onXChange={(ev) => console.log(ev.detail)}></x-textarea>
1874
+ */
1875
+ xChange;
1876
+ /**
1877
+ * Emitted on input.
1878
+ * @example
1879
+ * <x-textarea onXInput={(ev) => console.log(ev.detail)}></x-textarea>
1880
+ */
1881
+ xInput;
1882
+ /**
1883
+ * Emitted when pressing Enter.
1884
+ * @example
1885
+ * <x-textarea onXPressEnter={(ev) => console.log(ev.key)}></x-textarea>
1886
+ */
1887
+ xPressEnter;
1888
+ /**
1889
+ * Emitted when textarea resizes.
1890
+ * @example
1891
+ * <x-textarea onXResize={(ev) => console.log(ev.detail)}></x-textarea>
1892
+ */
1893
+ xResize;
1894
+ /**
1895
+ * Component lifecycle method called before loading.
1896
+ * Initializes the internal value from `defaultValue` if `value` is undefined.
1897
+ */
1898
+ componentWillLoad() {
1899
+ if (this.value === undefined) {
1900
+ this.value = this.defaultValue;
1901
+ }
1902
+ }
1903
+ /**
1904
+ * Handles input events from the textarea element.
1905
+ *
1906
+ * Flow:
1907
+ * 1. Updates the internal `value` state with the new input value.
1908
+ * 2. Emits `xInput` event with the native input event.
1909
+ * 3. Emits `xChange` event with the new string value.
1910
+ * 4. If `autoSize` is enabled, triggers resize logic.
1911
+ *
1912
+ * @param e - The input event.
1913
+ */
1914
+ handleInput(e) {
1915
+ const target = e.target;
1916
+ this.value = target.value;
1917
+ this.xInput.emit(e);
1918
+ this.xChange.emit(this.value);
1919
+ if (this.autoSize) {
1920
+ this.resizeTextarea(target);
1921
+ }
1922
+ }
1923
+ /**
1924
+ * Resizes the textarea based on its content height.
1925
+ *
1926
+ * Flow:
1927
+ * 1. Temporarily resets height to 'auto' to correctly measure `scrollHeight`.
1928
+ * 2. Sets the height to `scrollHeight` to fit content.
1929
+ * 3. (Note: Full implementation would respect `minRows` and `maxRows` constraints here).
1930
+ *
1931
+ * @param target - The textarea element to resize.
1932
+ */
1933
+ resizeTextarea(target) {
1934
+ target.style.height = 'auto';
1935
+ target.style.height = `${target.scrollHeight}px`;
1936
+ // Logic for minRows/maxRows would go here
1937
+ }
1938
+ /**
1939
+ * Handles keydown events.
1940
+ * Emits `xPressEnter` when the Enter key is pressed.
1941
+ *
1942
+ * @param e - The keyboard event.
1943
+ */
1944
+ handleKeyDown(e) {
1945
+ if (e.key === 'Enter') {
1946
+ this.xPressEnter.emit(e);
1947
+ }
1948
+ }
1949
+ /**
1950
+ * Handles click on the clear icon.
1951
+ *
1952
+ * Flow:
1953
+ * 1. Stops event propagation to avoid triggering parent clicks.
1954
+ * 2. Resets `value` to an empty string.
1955
+ * 3. Emits `xChange` with empty string.
1956
+ *
1957
+ * @param e - The mouse event.
1958
+ */
1959
+ handleClear(e) {
1960
+ e.stopPropagation();
1961
+ this.value = '';
1962
+ this.xChange.emit('');
1963
+ }
1964
+ /**
1965
+ * Renders the Textarea component.
1966
+ *
1967
+ * Flow:
1968
+ * 1. Constructs wrapper classes based on state (disabled, focused, status, bordered).
1969
+ * 2. Renders the native `<textarea>` element with bound props and event listeners.
1970
+ * 3. Renders the clear icon if `allowClear` is true and value exists.
1971
+ * 4. Renders the character count if `showCount` is true.
1972
+ *
1973
+ * @returns JSX.Element
1974
+ */
1975
+ render() {
1976
+ return (h(Host, { key: '7336e2d3945d33f7a4ee8d18966d49c7dffff769', class: {
1977
+ 'x-textarea-wrapper': true,
1978
+ 'x-textarea-wrapper-disabled': this.disabled,
1979
+ 'x-textarea-wrapper-focused': this.focused,
1980
+ 'x-textarea-wrapper-error': this.status === 'error',
1981
+ 'x-textarea-wrapper-warning': this.status === 'warning',
1982
+ 'x-textarea-wrapper-borderless': !this.bordered,
1983
+ 'x-textarea-show-count': this.showCount,
1984
+ } }, h("textarea", { key: '662c51000b0f313ebba4cefe5249a32a6e4225a4', class: {
1985
+ 'x-textarea': true,
1986
+ 'disabled': this.disabled,
1987
+ }, disabled: this.disabled, maxLength: this.maxLength, value: this.value, placeholder: this.placeholder, rows: this.rows, onInput: (e) => this.handleInput(e), onKeyDown: (e) => this.handleKeyDown(e), onFocus: () => this.focused = true, onBlur: () => this.focused = false }), this.allowClear && this.value && (h("span", { key: '03d488cc303a172cffd64fe85f653f0f8a2620b7', class: "x-textarea-clear-icon", onClick: (e) => this.handleClear(e) }, h("span", { key: '88a02fb55371f35bc0a45159aee3bd324d706f7c', role: "img", "aria-label": "close-circle", class: "anticon anticon-close-circle" }, h("x-icon", { key: '976c1ef0428afb40a70fde38446d52952b37d57c', name: getIcon('clear') })))), this.showCount && (h("span", { key: '07e2ff90d325eba478d87f24305032194417c64c', class: "x-textarea-data-count", "data-count": `${this.value ? this.value.length : 0}${this.maxLength ? ` / ${this.maxLength}` : ''}` }, this.value ? this.value.length : 0, this.maxLength ? ` / ${this.maxLength}` : ''))));
1988
+ }
1989
+ };
1990
+ XTextarea.style = xTextareaCss();
1991
+
1992
+ class FlowService {
1993
+ nodes = [];
1994
+ edges = [];
1995
+ viewport = { x: 0, y: 0, zoom: 1 };
1996
+ selectedNodeIds = [];
1997
+ selectedEdgeIds = [];
1998
+ nodeValues = {};
1999
+ clipboardNodes = [];
2000
+ clipboardEdges = [];
2001
+ history = [];
2002
+ historyIndex = -1;
2003
+ listeners = [];
2004
+ constructor(initialNodes = [], initialEdges = []) {
2005
+ this.nodes = initialNodes;
2006
+ this.edges = initialEdges;
2007
+ this.saveToHistory();
2008
+ }
2009
+ subscribe(listener) {
2010
+ this.listeners.push(listener);
2011
+ return () => {
2012
+ this.listeners = this.listeners.filter(l => l !== listener);
2013
+ };
2014
+ }
2015
+ notify() {
2016
+ this.listeners.forEach(l => l());
2017
+ }
2018
+ forceLayout() {
2019
+ // Basic force layout implementation or trigger
2020
+ this.notify();
2021
+ }
2022
+ saveToHistory() {
2023
+ const last = this.history[this.historyIndex];
2024
+ if (last && JSON.stringify(last.nodes) === JSON.stringify(this.nodes) && JSON.stringify(last.edges) === JSON.stringify(this.edges))
2025
+ return;
2026
+ this.history = this.history.slice(0, this.historyIndex + 1);
2027
+ this.history.push({ nodes: JSON.parse(JSON.stringify(this.nodes)), edges: JSON.parse(JSON.stringify(this.edges)) });
2028
+ this.historyIndex = this.history.length - 1;
2029
+ if (this.history.length > 50) {
2030
+ this.history.shift();
2031
+ this.historyIndex--;
2032
+ }
2033
+ }
2034
+ undo() {
2035
+ if (this.historyIndex > 0) {
2036
+ this.historyIndex--;
2037
+ const snapshot = this.history[this.historyIndex];
2038
+ this.nodes = JSON.parse(JSON.stringify(snapshot.nodes));
2039
+ this.edges = JSON.parse(JSON.stringify(snapshot.edges));
2040
+ this.notify();
2041
+ }
2042
+ }
2043
+ redo() {
2044
+ if (this.historyIndex < this.history.length - 1) {
2045
+ this.historyIndex++;
2046
+ const snapshot = this.history[this.historyIndex];
2047
+ this.nodes = JSON.parse(JSON.stringify(snapshot.nodes));
2048
+ this.edges = JSON.parse(JSON.stringify(snapshot.edges));
2049
+ this.notify();
2050
+ }
2051
+ }
2052
+ getNodes() { return this.nodes.filter(n => this.isNodeVisible(n.id)); }
2053
+ isNodeVisible(nodeId) {
2054
+ const node = this.nodes.find(n => n.id === nodeId);
2055
+ if (!node)
2056
+ return false;
2057
+ if (node.hidden)
2058
+ return false;
2059
+ let parent = this.nodes.find(n => n.id === node.parentId);
2060
+ while (parent) {
2061
+ if (parent.isCollapsed)
2062
+ return false;
2063
+ parent = this.nodes.find(n => n.id === parent.parentId);
2064
+ }
2065
+ return true;
2066
+ }
2067
+ getEdges() { return this.edges.filter(e => this.isNodeVisible(e.source) && this.isNodeVisible(e.target)); }
2068
+ getViewport() { return this.viewport; }
2069
+ getSelectedNodes() { return this.selectedNodeIds; }
2070
+ getSelectedEdges() { return this.selectedEdgeIds; }
2071
+ setNodes(nodes) {
2072
+ // Preserve width and height if not provided in the new array, keeping the service as the source of truth for these
2073
+ this.nodes = nodes.map(newNode => {
2074
+ const existingNode = this.nodes.find(n => n.id === newNode.id);
2075
+ if (existingNode) {
2076
+ return {
2077
+ ...newNode,
2078
+ width: newNode.width || existingNode.width,
2079
+ height: newNode.height || existingNode.height,
2080
+ shape: newNode.shape || existingNode.shape
2081
+ };
2082
+ }
2083
+ return newNode;
2084
+ });
2085
+ this.notify();
2086
+ }
2087
+ setEdges(edges) { this.edges = edges; this.notify(); }
2088
+ setViewport(viewport) { this.viewport = viewport; this.notify(); }
2089
+ updateNodeValue(nodeId, value) { this.nodeValues[nodeId] = value; this.propagate(nodeId); this.notify(); }
2090
+ propagate(nodeId) {
2091
+ const value = this.nodeValues[nodeId];
2092
+ this.edges.filter(e => e.source === nodeId).forEach(edge => {
2093
+ if (this.nodes.find(n => n.id === edge.target))
2094
+ console.log(`Propagating from ${nodeId} to ${edge.target}:`, value);
2095
+ });
2096
+ }
2097
+ addNode(node) { this.nodes = [...this.nodes, node]; this.saveToHistory(); this.notify(); }
2098
+ updateNodePosition(nodeId, x, y, snapToGridSize = 0) {
2099
+ const node = this.nodes.find(n => n.id === nodeId);
2100
+ if (!node)
2101
+ return;
2102
+ let finalX = snapToGridSize > 0 ? Math.round(x / snapToGridSize) * snapToGridSize : x;
2103
+ let finalY = snapToGridSize > 0 ? Math.round(y / snapToGridSize) * snapToGridSize : y;
2104
+ // Boundary constraints for children
2105
+ if (node.parentId) {
2106
+ const parent = this.nodes.find(n => n.id === node.parentId);
2107
+ if (parent) {
2108
+ finalX = Math.max(0, Math.min(finalX, (parent.width || 400) - (node.width || 150)));
2109
+ finalY = Math.max(0, Math.min(finalY, (parent.height || 300) - (node.height || 48)));
2110
+ }
2111
+ }
2112
+ // Helper Line Snapping
2113
+ const threshold = 10;
2114
+ this.nodes.forEach(other => {
2115
+ if (other.id === nodeId || other.parentId === nodeId)
2116
+ return;
2117
+ if (Math.abs(finalX - other.position.x) < threshold)
2118
+ finalX = other.position.x;
2119
+ if (Math.abs(finalY - other.position.y) < threshold)
2120
+ finalY = other.position.y;
2121
+ });
2122
+ const dx = finalX - node.position.x, dy = finalY - node.position.y;
2123
+ if (dx === 0 && dy === 0)
2124
+ return;
2125
+ const idsToMove = this.selectedNodeIds.includes(nodeId) ? this.selectedNodeIds : [nodeId];
2126
+ const movedNodesSet = new Set();
2127
+ // Find all nodes in the hierarchy to move
2128
+ const nodesToUpdate = new Map();
2129
+ idsToMove.forEach(id => {
2130
+ this.collectNodesToMove(id, dx, dy, movedNodesSet, nodesToUpdate);
2131
+ });
2132
+ // Single pass update
2133
+ this.nodes = this.nodes.map(n => {
2134
+ const update = nodesToUpdate.get(n.id);
2135
+ return update ? { ...n, position: update } : n;
2136
+ });
2137
+ this.notify();
2138
+ }
2139
+ collectNodesToMove(id, dx, dy, movedNodesSet, map) {
2140
+ if (movedNodesSet.has(id))
2141
+ return;
2142
+ const node = this.nodes.find(n => n.id === id);
2143
+ if (!node)
2144
+ return;
2145
+ movedNodesSet.add(id);
2146
+ map.set(id, { x: node.position.x + dx, y: node.position.y + dy });
2147
+ this.nodes.filter(n => n.parentId === id).forEach(child => this.collectNodesToMove(child.id, dx, dy, movedNodesSet, map));
2148
+ }
2149
+ onConnect(connection) {
2150
+ if (!this.isValidConnection(connection))
2151
+ return null;
2152
+ // STRICT: Only one connection between the same pair of nodes in the same direction
2153
+ // (regardless of handles if user just wants "1 line")
2154
+ // Or at least catch if handles are effectively the same.
2155
+ const isDuplicate = this.edges.some(e => e.source === connection.source &&
2156
+ e.target === connection.target &&
2157
+ (e.sourceHandle || 'floating') === (connection.sourceHandle || 'floating') &&
2158
+ (e.targetHandle || 'floating') === (connection.targetHandle || 'floating'));
2159
+ if (isDuplicate)
2160
+ return null;
2161
+ const id = `e-${connection.source}-${connection.target}-${Date.now()}-${Math.floor(Math.random() * 1000)}`;
2162
+ this.edges = [...this.edges, {
2163
+ id,
2164
+ ...connection,
2165
+ type: 'default',
2166
+ animated: false,
2167
+ sourceHandle: connection.sourceHandle || 'floating',
2168
+ targetHandle: connection.targetHandle || 'floating'
2169
+ }];
2170
+ this.saveToHistory();
2171
+ this.notify();
2172
+ return id;
2173
+ }
2174
+ toggleNodeCollapse(nodeId) { this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, isCollapsed: !n.isCollapsed } : n); this.saveToHistory(); this.notify(); }
2175
+ isValidConnection(connection) {
2176
+ if (connection.source === connection.target)
2177
+ return false;
2178
+ if (this.isCycle(connection.source, connection.target))
2179
+ return false;
2180
+ // Check if any connection already exists between these two nodes in this direction
2181
+ // to strictly enforce "one line per pair" as requested.
2182
+ const alreadyConnected = this.edges.some(e => e.source === connection.source && e.target === connection.target);
2183
+ if (alreadyConnected)
2184
+ return false;
2185
+ const sourceNode = this.nodes.find(n => n.id === connection.source), targetNode = this.nodes.find(n => n.id === connection.target);
2186
+ if (sourceNode?.maxConnections !== undefined && this.edges.filter(e => e.source === connection.source).length >= sourceNode.maxConnections)
2187
+ return false;
2188
+ if (targetNode?.maxConnections !== undefined && this.edges.filter(e => e.target === connection.target).length >= targetNode.maxConnections)
2189
+ return false;
2190
+ return true;
2191
+ }
2192
+ updateEdge(edgeId, updates) { this.edges = this.edges.map(e => e.id === edgeId ? { ...e, ...updates } : e); this.saveToHistory(); this.notify(); }
2193
+ isCycle(source, target) {
2194
+ if (source === target)
2195
+ return true;
2196
+ const visited = new Set(), queue = [target];
2197
+ while (queue.length > 0) {
2198
+ const current = queue.shift();
2199
+ if (!current)
2200
+ continue;
2201
+ if (current === source)
2202
+ return true;
2203
+ if (visited.has(current))
2204
+ continue;
2205
+ visited.add(current);
2206
+ this.edges.filter(e => e.source === current).forEach(e => queue.push(e.target));
2207
+ }
2208
+ return false;
2209
+ }
2210
+ deleteSelected() {
2211
+ this.nodes = this.nodes.filter(n => !this.selectedNodeIds.includes(n.id));
2212
+ this.edges = this.edges.filter(e => !this.selectedEdgeIds.includes(e.id) && !this.selectedNodeIds.includes(e.source) && !this.selectedNodeIds.includes(e.target));
2213
+ this.selectedNodeIds = [];
2214
+ this.selectedEdgeIds = [];
2215
+ this.saveToHistory();
2216
+ this.notify();
2217
+ }
2218
+ groupSelected() {
2219
+ if (this.selectedNodeIds.length < 2)
2220
+ return;
2221
+ const selectedNodes = this.nodes.filter(n => this.selectedNodeIds.includes(n.id));
2222
+ const minX = Math.min(...selectedNodes.map(n => n.position.x)), minY = Math.min(...selectedNodes.map(n => n.position.y)), maxX = Math.max(...selectedNodes.map(n => n.position.x + (n.width || 150))), maxY = Math.max(...selectedNodes.map(n => n.position.y + (n.height || 48)));
2223
+ const groupId = `group-${Date.now()}`;
2224
+ const groupNode = { id: groupId, type: 'group', position: { x: minX - 20, y: minY - 40 }, width: maxX - minX + 40, height: maxY - minY + 60, data: { label: 'New Group' }, zIndex: 1, style: { background: 'rgba(0,0,0,0.02)', border: '1px dashed #ccc' } };
2225
+ this.nodes = [...this.nodes.map(n => this.selectedNodeIds.includes(n.id) ? { ...n, parentId: groupId } : n), groupNode];
2226
+ this.selectedNodeIds = [groupId];
2227
+ this.saveToHistory();
2228
+ this.notify();
2229
+ }
2230
+ autoLayout(direction = 'LR') {
2231
+ const visited = new Set(), levelMap = {}, rootNodes = this.nodes.filter(n => !this.edges.some(e => e.target === n.id));
2232
+ const assignLevels = (nodeId, level) => {
2233
+ levelMap[nodeId] = Math.max(levelMap[nodeId] || 0, level);
2234
+ if (visited.has(nodeId))
2235
+ return;
2236
+ visited.add(nodeId);
2237
+ this.edges.filter(e => e.source === nodeId).forEach(e => assignLevels(e.target, level + 1));
2238
+ };
2239
+ rootNodes.forEach(n => assignLevels(n.id, 0));
2240
+ this.nodes.forEach(n => {
2241
+ if (levelMap[n.id] === undefined)
2242
+ assignLevels(n.id, 0);
2243
+ });
2244
+ const nodesByLevel = {};
2245
+ Object.entries(levelMap).forEach(([id, level]) => { nodesByLevel[level] = [...(nodesByLevel[level] || []), id]; });
2246
+ const gapX = 250, gapY = 100;
2247
+ this.nodes = this.nodes.map(n => { const level = levelMap[n.id], index = nodesByLevel[level].indexOf(n.id); return { ...n, position: direction === 'LR' ? { x: level * gapX, y: index * gapY + 100 } : { x: index * gapX + 200, y: level * gapY + 100 } }; });
2248
+ this.saveToHistory();
2249
+ this.notify();
2250
+ }
2251
+ selectNode(nodeId, multi = false) {
2252
+ if (multi) {
2253
+ if (this.selectedNodeIds.includes(nodeId))
2254
+ this.selectedNodeIds = this.selectedNodeIds.filter(id => id !== nodeId);
2255
+ else
2256
+ this.selectedNodeIds = [...this.selectedNodeIds, nodeId];
2257
+ }
2258
+ else {
2259
+ this.selectedNodeIds = [nodeId];
2260
+ this.selectedEdgeIds = [];
2261
+ }
2262
+ this.notify();
2263
+ }
2264
+ setParent(nodeId, parentId) {
2265
+ const node = this.nodes.find(n => n.id === nodeId);
2266
+ if (!node || node.parentId === parentId)
2267
+ return;
2268
+ if (parentId) {
2269
+ const parent = this.nodes.find(n => n.id === parentId);
2270
+ if (parent) {
2271
+ // Move to relative coordinates
2272
+ const relX = node.position.x - parent.position.x;
2273
+ const relY = node.position.y - parent.position.y;
2274
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, parentId, position: { x: relX, y: relY } } : n);
2275
+ }
2276
+ }
2277
+ else {
2278
+ // Move back to absolute coordinates if it has a parent
2279
+ const parent = node.parentId ? this.nodes.find(n => n.id === node.parentId) : null;
2280
+ if (parent) {
2281
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, parentId: null, position: { x: node.position.x + parent.position.x, y: node.position.y + parent.position.y } } : n);
2282
+ }
2283
+ else {
2284
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, parentId: null } : n);
2285
+ }
2286
+ }
2287
+ this.saveToHistory();
2288
+ this.notify();
2289
+ }
2290
+ updateNode(nodeId, updates) {
2291
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, ...updates, data: { ...n.data, ...updates.data } } : n);
2292
+ this.notify();
2293
+ }
2294
+ rotateNode(nodeId, angle) {
2295
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, rotation: angle } : n);
2296
+ this.notify(); // Don't save to history every drag step, maybe on up
2297
+ }
2298
+ selectEdge(edgeId, multi = false) {
2299
+ if (multi) {
2300
+ if (this.selectedEdgeIds.includes(edgeId))
2301
+ this.selectedEdgeIds = this.selectedEdgeIds.filter(id => id !== edgeId);
2302
+ else
2303
+ this.selectedEdgeIds = [...this.selectedEdgeIds, edgeId];
2304
+ }
2305
+ else {
2306
+ this.selectedEdgeIds = [edgeId];
2307
+ this.selectedNodeIds = [];
2308
+ }
2309
+ this.notify();
2310
+ }
2311
+ clearSelection() { this.selectedNodeIds = []; this.selectedEdgeIds = []; this.notify(); }
2312
+ deleteEdge(edgeId) { this.edges = this.edges.filter(e => e.id !== edgeId); this.saveToHistory(); this.notify(); }
2313
+ deleteNode(nodeId) {
2314
+ const inEdges = this.edges.filter(e => e.target === nodeId);
2315
+ const outEdges = this.edges.filter(e => e.source === nodeId);
2316
+ // Delete Middle Node logic: If exactly one in and one out, reconnect them
2317
+ if (inEdges.length === 1 && outEdges.length === 1) {
2318
+ const sourceId = inEdges[0].source;
2319
+ const targetId = outEdges[0].target;
2320
+ this.addEdge({
2321
+ id: `reconnect-${Date.now()}`,
2322
+ source: sourceId,
2323
+ target: targetId,
2324
+ sourceHandle: inEdges[0].sourceHandle,
2325
+ targetHandle: outEdges[0].targetHandle,
2326
+ type: inEdges[0].type
2327
+ });
2328
+ }
2329
+ this.nodes = this.nodes.filter(n => n.id !== nodeId);
2330
+ this.edges = this.edges.filter(e => e.source !== nodeId && e.target !== nodeId);
2331
+ this.selectedNodeIds = this.selectedNodeIds.filter(id => id !== nodeId);
2332
+ this.saveToHistory();
2333
+ this.notify();
2334
+ }
2335
+ addEdge(edge) { this.edges = [...this.edges, edge]; this.saveToHistory(); this.notify(); }
2336
+ copySelected() {
2337
+ this.clipboardNodes = this.nodes.filter(n => this.selectedNodeIds.includes(n.id)).map(n => ({ ...n }));
2338
+ this.clipboardEdges = this.edges.filter(e => this.selectedNodeIds.includes(e.source) && this.selectedNodeIds.includes(e.target)).map(e => ({ ...e }));
2339
+ }
2340
+ paste(x, y) {
2341
+ if (this.clipboardNodes.length === 0)
2342
+ return;
2343
+ const idMap = {};
2344
+ const minX = Math.min(...this.clipboardNodes.map(n => n.position.x)), minY = Math.min(...this.clipboardNodes.map(n => n.position.y));
2345
+ const targetX = x === undefined ? minX + 20 : x, targetY = y === undefined ? minY + 20 : y;
2346
+ const dx = targetX - minX, dy = targetY - minY;
2347
+ const newNodes = this.clipboardNodes.map(n => {
2348
+ const newId = `node-${Date.now()}-${Math.random()}`;
2349
+ idMap[n.id] = newId;
2350
+ return { ...n, id: newId, position: { x: n.position.x + dx, y: n.position.y + dy }, selected: true };
2351
+ });
2352
+ const newEdges = this.clipboardEdges.map(e => ({ ...e, id: `edge-${Date.now()}-${Math.random()}`, source: idMap[e.source], target: idMap[e.target] }));
2353
+ this.nodes = [...this.nodes.map(n => ({ ...n, selected: false })), ...newNodes];
2354
+ this.edges = [...this.edges, ...newEdges];
2355
+ this.selectedNodeIds = newNodes.map(n => n.id);
2356
+ this.saveToHistory();
2357
+ this.notify();
2358
+ }
2359
+ generateStressTest(count) {
2360
+ const newNodes = [];
2361
+ for (let i = 0; i < count; i++) {
2362
+ newNodes.push({
2363
+ id: `stress-${i}`,
2364
+ position: { x: Math.random() * 2000, y: Math.random() * 2000 },
2365
+ data: { label: `Node ${i}` },
2366
+ zIndex: 10
2367
+ });
2368
+ }
2369
+ this.nodes = [...this.nodes, ...newNodes];
2370
+ this.notify();
2371
+ }
2372
+ getFullState() { return { nodes: this.nodes, edges: this.edges, viewport: this.viewport, nodeValues: this.nodeValues }; }
2373
+ }
2374
+
2375
+ const xWorkflowCss = () => `:host{display:block;width:100%;height:100%;overflow:hidden}.workflow-container{position:relative;width:100%;height:100%;background:#f8f9fa;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none;outline:none}.background-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.dots-bg{width:100%;height:100%;background-image:radial-gradient(#d1d5db 1px, transparent 1px);background-size:20px 20px}.flow-renderer{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-transform-origin:0 0;transform-origin:0 0;will-change:transform}.nodes-layer,.edges-svg,.drawings-layer{position:absolute;top:0;left:0;width:100%;height:100%}.edges-svg{overflow:visible;pointer-events:none}.node{position:absolute;background:#ffffff;border:1px solid #d1d5db;border-radius:6px;-webkit-box-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.1);box-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.1);-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:-webkit-transform 0.1s ease-out;transition:-webkit-transform 0.1s ease-out;transition:transform 0.1s ease-out;transition:transform 0.1s ease-out, -webkit-transform 0.1s ease-out}.node.dragging{-webkit-transition:none;transition:none;cursor:-webkit-grabbing;cursor:grabbing;-webkit-box-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1);box-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1);z-index:100}.node{color:#1f2937;font-family:inherit;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:8px 12px;min-width:100px;min-height:40px;z-index:10;-webkit-transform-origin:center center;transform-origin:center center}.node.shape-circle{border-radius:50%}.node.shape-diamond{background:transparent !important;border:none !important;-webkit-box-shadow:none !important;box-shadow:none !important;-webkit-clip-path:none !important;clip-path:none !important}.node.shape-diamond .node-shape-wrapper{position:absolute;inset:0;z-index:0;pointer-events:none}.node.shape-diamond .node-shape-svg{width:100%;height:100%;overflow:visible}.node.shape-diamond .node-shape-svg .shape-path{fill:#ffffff;stroke:#d1d5db;stroke-width:1.5px;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;vector-effect:non-scaling-stroke}.node.shape-diamond .node-shape-svg .shape-path.selected{stroke:#3b82f6;stroke-width:3px;-webkit-filter:drop-shadow(0 0 4px rgba(59, 130, 246, 0.3));filter:drop-shadow(0 0 4px rgba(59, 130, 246, 0.3))}.node.shape-diamond .node-content{position:relative;z-index:1;-webkit-transform:scale(0.7);transform:scale(0.7);pointer-events:auto}.node-content{pointer-events:none;font-size:14px;font-weight:500;text-align:center;width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;gap:8px}.node-content>*{pointer-events:auto}.node.dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-box-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1);box-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1);z-index:100;-webkit-transition:none;transition:none}.node.selected{border-color:#3b82f6;-webkit-box-shadow:0 0 0 2px #3b82f6;box-shadow:0 0 0 2px #3b82f6}.handle{position:absolute;width:12px;height:12px;background:white;border:2px solid #3b82f6;border-radius:50%;cursor:crosshair;z-index:20}.handle::after{content:"";position:absolute;top:-10px;left:-10px;right:-10px;bottom:-10px}.handle:hover{background:#2563eb;border-color:#2563eb}.handle.top{top:-6px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.handle.right{right:-6px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.handle.bottom{bottom:-6px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.handle.left{left:-6px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.edge-path{fill:none;stroke:#b1b1b7;stroke-width:2px;pointer-events:auto;cursor:pointer;-webkit-transition:stroke 0.2s;transition:stroke 0.2s}.edge-path:hover{stroke-width:3px;stroke:#3b82f6}.edge-path.selected{stroke:#3b82f6;stroke-width:3px}.edge-path.animated{stroke-dasharray:5;-webkit-animation:dash 1s linear infinite;animation:dash 1s linear infinite}.edge-path.turbo{stroke:#ff00ff;stroke-width:3px;-webkit-filter:drop-shadow(0 0 5px rgba(255, 0, 255, 0.8));filter:drop-shadow(0 0 5px rgba(255, 0, 255, 0.8));stroke-dasharray:10;-webkit-animation:turbo-dash 0.5s linear infinite;animation:turbo-dash 0.5s linear infinite}@-webkit-keyframes turbo-dash{from{stroke-dashoffset:20}to{stroke-dashoffset:0}}@keyframes turbo-dash{from{stroke-dashoffset:20}to{stroke-dashoffset:0}}@-webkit-keyframes dash{from{stroke-dashoffset:10}to{stroke-dashoffset:0}}@keyframes dash{from{stroke-dashoffset:10}to{stroke-dashoffset:0}}.node-toolbar{position:absolute;top:-45px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);background:white;border:1px solid #ddd;border-radius:6px;padding:4px;display:-ms-flexbox;display:flex;gap:4px;-webkit-box-shadow:0 2px 8px rgba(0, 0, 0, 0.15);box-shadow:0 2px 8px rgba(0, 0, 0, 0.15);z-index:100}.node-toolbar .color-picker{display:-ms-flexbox;display:flex;gap:2px;padding:0 4px}.node-toolbar .color-picker .color-swatch{width:16px;height:16px;border-radius:2px;border:1px solid #eee;cursor:pointer;-webkit-transition:-webkit-transform 0.1s;transition:-webkit-transform 0.1s;transition:transform 0.1s;transition:transform 0.1s, -webkit-transform 0.1s}.node-toolbar .color-picker .color-swatch:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.node-toolbar button{background:transparent;border:none;color:#333;cursor:pointer;padding:4px;border-radius:2px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:14px}.toolbar-btn{background:transparent;border:none;color:white;cursor:pointer;padding:4px;border-radius:2px;display:-ms-flexbox;display:flex}.toolbar-btn:hover{background:rgba(255, 255, 255, 0.1)}.edge-toolbar{display:-ms-flexbox;display:flex;background:#333;padding:4px;border-radius:4px;gap:4px}.edge-toolbar-btn{background:transparent;border:none;color:white;cursor:pointer;padding:4px}.node-resizer{position:absolute;right:0;bottom:0;width:10px;height:10px;background:#3b82f6;cursor:nwse-resize;border-radius:2px 0 0 0}.node-rotator{position:absolute;top:-24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:20px;height:20px;background:white;border:1px solid #3b82f6;border-radius:50%;cursor:-webkit-grab;cursor:grab;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1)}.node-rotator::before{content:"";position:absolute;bottom:-15px;left:50%;width:1px;height:15px;background:#3b82f6}.node-collapse-btn{background:transparent;border:none;padding:2px;cursor:pointer;display:-ms-flexbox;display:flex;color:inherit;opacity:0.6}.node-collapse-btn:hover{opacity:1}.context-menu{position:fixed;background:white;border:1px solid #ddd;-webkit-box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);border-radius:4px;padding:4px 0;z-index:100000;min-width:150px}.menu-item{padding:8px 16px;cursor:pointer;font-size:13px}.menu-item:hover{background:#f3f4f6}.divider{height:1px;background:#eee;margin:4px 0}.selection-rect{position:absolute;background:rgba(59, 130, 246, 0.1);border:1px solid rgba(59, 130, 246, 0.5);pointer-events:none;z-index:10000}.user-cursor{position:absolute;pointer-events:none;z-index:10000;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-webkit-transition:all 0.1s linear;transition:all 0.1s linear}.user-cursor svg{-webkit-filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3))}.user-cursor .user-name{margin-top:2px;padding:2px 6px;border-radius:4px;color:white;font-size:10px;font-weight:500;white-space:nowrap;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.edge-handle{fill:white;stroke:#3b82f6;stroke-width:2px;cursor:crosshair;pointer-events:auto}.edge-path.proximity-preview{stroke:#b1b1b7;stroke-width:2px;pointer-events:none}.edge-label{background:white;padding:2px 4px;border-radius:4px;border:1px solid #b1b1b7;font-size:10px;color:#333;text-align:center;white-space:nowrap;pointer-events:none}.workflow-container.theme-dark{background:#141414}.workflow-container.theme-dark .dots-bg{background-image:radial-gradient(#333 1px, transparent 1px)}.workflow-container.theme-dark .node{background:#222;border-color:#333;color:#eee;-webkit-box-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.5);box-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.5)}.workflow-container.theme-dark .handle{background:#222}.workflow-container.theme-dark .context-menu{background:#222;border-color:#444;color:#eee}.workflow-container.theme-dark .context-menu .menu-item:hover{background:#333}.workflow-container.theme-dark .context-menu .divider{background:#444}.workflow-container.theme-dark .edge-label{background:#333;color:#eee;border-color:#444}`;
2376
+
2377
+ const XWorkflow = class {
2378
+ constructor(hostRef) {
2379
+ registerInstance(this, hostRef);
2380
+ this.xNodesChange = createEvent(this, "xNodesChange", 7);
2381
+ this.xEdgesChange = createEvent(this, "xEdgesChange", 7);
2382
+ this.xViewportChange = createEvent(this, "xViewportChange", 7);
2383
+ this.xNodeClick = createEvent(this, "xNodeClick", 7);
2384
+ this.xEdgeClick = createEvent(this, "xEdgeClick", 7);
2385
+ this.xConnect = createEvent(this, "xConnect", 7);
2386
+ this.xWorkflowChange = createEvent(this, "xWorkflowChange", 7);
2387
+ }
2388
+ get el() { return getElement(this); }
2389
+ nodes = [];
2390
+ edges = [];
2391
+ fitView = false;
2392
+ interactive = true;
2393
+ viewportValue = { x: 0, y: 0, zoom: 1 };
2394
+ snapToGridValue = 0;
2395
+ background = { variant: 'dots' };
2396
+ tool = 'select';
2397
+ theme = 'light';
2398
+ turboMode = false;
2399
+ displayMode = 'advanced';
2400
+ users = [];
2401
+ nodeToolbarVisible = true;
2402
+ nodeToolbarMode = 'selected';
2403
+ edgeRoutingMode = 'fixed';
2404
+ flowNodes = [];
2405
+ flowEdges = [];
2406
+ flowViewport = { x: 0, y: 0, zoom: 1 };
2407
+ pendingConnection = null;
2408
+ selectedNodes = [];
2409
+ draggingNodeId = null;
2410
+ proximityPreview = null;
2411
+ helperLines = [];
2412
+ contextMenu = null;
2413
+ selectionRect = null;
2414
+ drawings = [];
2415
+ activeDrawing = null;
2416
+ editingEdgeId = null;
2417
+ focusedNodeId = null;
2418
+ xNodesChange;
2419
+ xEdgesChange;
2420
+ xViewportChange;
2421
+ xNodeClick;
2422
+ xEdgeClick;
2423
+ xConnect;
2424
+ xWorkflowChange;
2425
+ service;
2426
+ isDraggingCanvas = false;
2427
+ isUpdatingFromProp = false;
2428
+ isInteracting = false;
2429
+ lastMousePos = { x: 0, y: 0 };
2430
+ container;
2431
+ throttleTimer = null;
2432
+ async forceLayout() {
2433
+ this.service.forceLayout();
2434
+ }
2435
+ componentWillLoad() {
2436
+ this.service = new FlowService(this.nodes, this.edges);
2437
+ this.service.setViewport(this.viewportValue);
2438
+ this.updateState();
2439
+ this.service.subscribe(() => {
2440
+ this.updateState();
2441
+ this.throttleEmitWorkflowChange();
2442
+ });
2443
+ }
2444
+ throttleEmitWorkflowChange() {
2445
+ if (this.throttleTimer)
2446
+ return;
2447
+ this.throttleTimer = setTimeout(() => {
2448
+ this.xWorkflowChange.emit(this.service.getFullState());
2449
+ this.throttleTimer = null;
2450
+ }, 100);
2451
+ }
2452
+ handleNodesPropChange(nodes) {
2453
+ this.isUpdatingFromProp = true;
2454
+ this.service.setNodes(nodes);
2455
+ this.isUpdatingFromProp = false;
2456
+ }
2457
+ handleEdgesPropChange(edges) {
2458
+ this.isUpdatingFromProp = true;
2459
+ this.service.setEdges(edges);
2460
+ this.isUpdatingFromProp = false;
2461
+ }
2462
+ handleViewportChange(vp) {
2463
+ this.isUpdatingFromProp = true;
2464
+ this.service.setViewport(vp);
2465
+ this.isUpdatingFromProp = false;
2466
+ }
2467
+ updateState() {
2468
+ this.flowNodes = [...this.service.getNodes()];
2469
+ this.flowEdges = [...this.service.getEdges()];
2470
+ this.flowViewport = { ...this.service.getViewport() };
2471
+ this.selectedNodes = [...this.service.getSelectedNodes()];
2472
+ // During active interaction (drag/pan), suppress heavy external sync to prevent parent re-renders.
2473
+ // We will emit the final state on mouseup.
2474
+ if (!this.isUpdatingFromProp && !this.isInteracting) {
2475
+ this.xViewportChange.emit(this.flowViewport);
2476
+ this.xNodesChange.emit(this.flowNodes);
2477
+ this.xEdgesChange.emit(this.flowEdges);
2478
+ }
2479
+ }
2480
+ handleMouseDown = (e) => {
2481
+ if (!this.interactive)
2482
+ return;
2483
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
2484
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2485
+ const target = e.target;
2486
+ // Check if we're clicking on a node or edge
2487
+ if (target.closest('.node') || target.closest('.edge-group'))
2488
+ return;
2489
+ if (target === this.container || target.closest('.background-canvas')) {
2490
+ const rect = this.container.getBoundingClientRect();
2491
+ const lx = (clientX - rect.left - this.flowViewport.x) / this.flowViewport.zoom, ly = (clientY - rect.top - this.flowViewport.y) / this.flowViewport.zoom;
2492
+ if (this.tool === 'rectangle' || this.tool === 'freehand') {
2493
+ this.startDrawing(lx, ly);
2494
+ return;
2495
+ }
2496
+ this.lastMousePos = { x: clientX, y: clientY };
2497
+ if ('shiftKey' in e && e.shiftKey) {
2498
+ this.selectionRect = { x: (clientX - rect.left), y: (clientY - rect.top), width: 0, height: 0 };
2499
+ this.isInteracting = true;
2500
+ }
2501
+ else {
2502
+ this.isDraggingCanvas = true;
2503
+ this.isInteracting = true;
2504
+ this.service.clearSelection();
2505
+ }
2506
+ this.contextMenu = null;
2507
+ }
2508
+ };
2509
+ handleMove(e) {
2510
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX, clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2511
+ const { x, y, zoom } = this.flowViewport, rect = this.container.getBoundingClientRect();
2512
+ if (this.isDraggingCanvas) {
2513
+ const dx = clientX - this.lastMousePos.x, dy = clientY - this.lastMousePos.y;
2514
+ this.lastMousePos = { x: clientX, y: clientY };
2515
+ this.service.setViewport({ x: x + dx, y: y + dy, zoom });
2516
+ }
2517
+ if (this.pendingConnection) {
2518
+ this.pendingConnection = { ...this.pendingConnection, mouseX: (clientX - rect.left - x) / zoom, mouseY: (clientY - rect.top - y) / zoom };
2519
+ }
2520
+ if (this.tool === 'eraser' && (('buttons' in e && e.buttons === 1) || 'touches' in e)) {
2521
+ this.handleEraserAt(clientX, clientY);
2522
+ }
2523
+ if (this.activeDrawing) {
2524
+ const lx = (clientX - rect.left - x) / zoom, ly = (clientY - rect.top - y) / zoom;
2525
+ if (this.activeDrawing.type === 'rectangle')
2526
+ this.activeDrawing = { ...this.activeDrawing, width: lx - this.activeDrawing.position.x, height: ly - this.activeDrawing.position.y };
2527
+ else if (this.activeDrawing.type === 'freehand')
2528
+ this.activeDrawing = { ...this.activeDrawing, points: [...this.activeDrawing.points, { x: lx, y: ly }] };
2529
+ }
2530
+ }
2531
+ handleEraserAt(clientX, clientY) {
2532
+ const rect = this.container.getBoundingClientRect(), { x: vx, y: vy, zoom } = this.flowViewport;
2533
+ const lx = (clientX - rect.left - vx) / zoom, ly = (clientY - rect.top - vy) / zoom;
2534
+ const node = this.flowNodes.find(n => { const w = n.width || 150, h = n.height || 48; return lx >= n.position.x && lx <= n.position.x + w && ly >= n.position.y && ly <= n.position.y + h; });
2535
+ if (node)
2536
+ this.service.deleteNode(node.id);
2537
+ this.drawings = this.drawings.filter(d => {
2538
+ if (d.type === 'rectangle') {
2539
+ const rx = Math.min(d.position.x, d.position.x + (d.width || 0)), ry = Math.min(d.position.y, d.position.y + (d.height || 0)), rw = Math.abs(d.width || 0), rh = Math.abs(d.height || 0);
2540
+ return !(lx >= rx && lx <= rx + rw && ly >= ry && ly <= ry + rh);
2541
+ }
2542
+ return true;
2543
+ });
2544
+ }
2545
+ handleUp() {
2546
+ if (this.isInteracting) {
2547
+ this.isInteracting = false;
2548
+ // Sync final state once interaction ends
2549
+ this.updateState();
2550
+ }
2551
+ this.isDraggingCanvas = false;
2552
+ if (this.activeDrawing) {
2553
+ this.drawings = [...this.drawings, this.activeDrawing];
2554
+ this.activeDrawing = null;
2555
+ }
2556
+ if (this.selectionRect) {
2557
+ this.applyLassoSelection();
2558
+ this.selectionRect = null;
2559
+ }
2560
+ // REMOVED premature clearing of pendingConnection which was causing errors in startConnectionHandler
2561
+ // Drop-to-Group Logic
2562
+ if (this.draggingNodeId) {
2563
+ const node = this.flowNodes.find(n => n.id === this.draggingNodeId);
2564
+ if (node) {
2565
+ // const containerBox = this.container.getBoundingClientRect(); // This line was unused and removed
2566
+ // const absX = node.position.x * this.flowViewport.zoom + this.flowViewport.x; // This line was unused and removed
2567
+ // const absY = node.position.y * this.flowViewport.zoom + this.flowViewport.y; // This line was unused and removed
2568
+ // Find potential parent node (type: group) under the drop position
2569
+ const potentialParent = this.flowNodes.find(n => {
2570
+ if (n.id === node.id || n.type !== 'group')
2571
+ return false;
2572
+ const nw = n.width || 400, nh = n.height || 300;
2573
+ return node.position.x >= n.position.x && node.position.x + (node.width || 150) <= n.position.x + nw &&
2574
+ node.position.y >= n.position.y && node.position.y + (node.height || 48) <= n.position.y + nh;
2575
+ });
2576
+ if (potentialParent)
2577
+ this.service.setParent(node.id, potentialParent.id);
2578
+ else if (node.parentId)
2579
+ this.service.setParent(node.id, null);
2580
+ }
2581
+ }
2582
+ this.isDraggingCanvas = false;
2583
+ this.draggingNodeId = null;
2584
+ this.helperLines = [];
2585
+ }
2586
+ handleKeyDown(e) {
2587
+ if (!this.interactive || e.target.tagName === 'INPUT')
2588
+ return;
2589
+ if ((e.ctrlKey || e.metaKey) && e.key === 'c') {
2590
+ e.preventDefault();
2591
+ this.service.copySelected();
2592
+ }
2593
+ if ((e.ctrlKey || e.metaKey) && e.key === 'v') {
2594
+ e.preventDefault();
2595
+ this.service.paste();
2596
+ }
2597
+ if ((e.ctrlKey || e.metaKey) && e.key === 'z') {
2598
+ e.preventDefault();
2599
+ if (e.shiftKey)
2600
+ this.service.redo();
2601
+ else
2602
+ this.service.undo();
2603
+ }
2604
+ if (e.key === 'Delete' || e.key === 'Backspace') {
2605
+ e.preventDefault();
2606
+ this.service.deleteSelected();
2607
+ }
2608
+ }
2609
+ handleWheel = (e) => {
2610
+ if (!this.interactive)
2611
+ return;
2612
+ e.preventDefault();
2613
+ const zoomSpeed = 0.001, v = this.service.getViewport(), zoomDelta = -e.deltaY * zoomSpeed, newZoom = Math.min(Math.max(v.zoom + zoomDelta, 0.1), 5);
2614
+ if (newZoom === v.zoom)
2615
+ return;
2616
+ const rect = this.container.getBoundingClientRect(), mouseX = e.clientX - rect.left, mouseY = e.clientY - rect.top, cx = (mouseX - v.x) / v.zoom, cy = (mouseY - v.y) / v.zoom;
2617
+ this.service.setViewport({ x: mouseX - cx * newZoom, y: mouseY - cy * newZoom, zoom: newZoom });
2618
+ };
2619
+ render() {
2620
+ const { x, y, zoom } = this.flowViewport, transform = `translate(${x}px, ${y}px) scale(${zoom})`;
2621
+ return (h("div", { key: 'db1bff3ac7ea27720be9a937afc0ee78a1c7ddb3', class: { 'workflow-container': true, 'theme-dark': this.theme === 'dark' }, onMouseDown: this.handleMouseDown, onTouchStart: this.handleMouseDown, onWheel: this.handleWheel, ref: (el) => this.container = el }, h("div", { key: '24c5d1a846646f25d6ae1ace14f38e7d939d0348', class: "background-canvas" }, this.renderBackground()), h("div", { key: 'd96eb3b0188cb0c6f16e2e093873c56fd471ca37', class: "flow-renderer", style: { transform } }, h("svg", { key: '2801eb1d3d4fb082be5057f0b1500fbc3ac53583', class: "edges-svg" }, h("defs", { key: 'b797372dac820c84edc52087d07805bfb7155126' }, h("marker", { key: '8b0584a343dcbbc40a43767e4a6ab0733a0243d3', id: "arrowhead", markerWidth: "10", markerHeight: "7", refX: "9", refY: "3.5", orient: "auto" }, h("polygon", { key: 'dfe7c9ad6eeaccba3cd560b891021dad77c32b34', points: "0 0, 10 3.5, 0 7", fill: "currentColor" })), h("marker", { key: 'e098834ed3919e64aea097f9d9b2326781841e8e', id: "arrowhead-selected", markerWidth: "10", markerHeight: "7", refX: "9", refY: "3.5", orient: "auto" }, h("polygon", { key: '5c99c575d24f2f6cffddc71ecb3fc29c592416ec', points: "0 0, 10 3.5, 0 7", fill: "var(--x-primary-color)" }))), this.flowEdges
2622
+ .sort((a, b) => (a.selected ? 1 : 0) - (b.selected ? 1 : 0))
2623
+ .map(edge => this.renderEdge(edge)), this.renderPendingLine(), this.renderProximityPreview(), this.renderEdgeHandles()), h("div", { key: 'cd1699a7dd5a41e238be3d94329686e9e8975253', class: "nodes-layer" }, this.flowNodes.map(node => this.renderNode(node))), h("svg", { key: 'bd722c1ce4e18b83b5e954af15162c4fa6bbb44e', class: "drawings-layer" }, this.drawings.map(d => this.renderDrawing(d)), this.activeDrawing && this.renderDrawing(this.activeDrawing)), this.renderHelperLines(), this.renderUsers()), this.renderContextMenu(), this.renderSelectionRect()));
2624
+ }
2625
+ renderBackground() {
2626
+ if (this.background.variant === 'dots') {
2627
+ return (h("div", { class: "dots-bg", style: { backgroundSize: `${20 * this.flowViewport.zoom}px ${20 * this.flowViewport.zoom}px` } }));
2628
+ }
2629
+ return null;
2630
+ }
2631
+ renderUsers() {
2632
+ return this.users.map(u => (h("div", { class: "user-cursor", style: { left: `${u.position.x}px`, top: `${u.position.y}px` } }, h("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: u.color }, h("path", { d: "M5 1v22l6-6h11z" })), h("span", { class: "user-name", style: { backgroundColor: u.color } }, u.name))));
2633
+ }
2634
+ renderPendingLine() {
2635
+ if (!this.pendingConnection)
2636
+ return null;
2637
+ return (h("path", { d: `M${this.pendingConnection.startX},${this.pendingConnection.startY} L${this.pendingConnection.mouseX},${this.pendingConnection.mouseY}`, class: "edge-path pending" }));
2638
+ }
2639
+ renderProximityPreview() {
2640
+ if (!this.proximityPreview)
2641
+ return null;
2642
+ const s = this.flowNodes.find(n => n.id === this.proximityPreview.source);
2643
+ const t = this.flowNodes.find(n => n.id === this.proximityPreview.target);
2644
+ if (!s || !t)
2645
+ return null;
2646
+ const sp = this.getHandlePos(s, this.proximityPreview.sourceHandle, t);
2647
+ const tp = this.getHandlePos(t, this.proximityPreview.targetHandle, s);
2648
+ return (h("path", { d: `M${sp.x},${sp.y} L${tp.x},${tp.y}`, class: "edge-path proximity-preview", "stroke-dasharray": "5,5", opacity: "0.5" }));
2649
+ }
2650
+ handleNodeClick(e, nodeId) {
2651
+ const node = this.flowNodes.find(n => n.id === nodeId);
2652
+ if (!node)
2653
+ return;
2654
+ if (e.shiftKey || e.ctrlKey || e.metaKey) {
2655
+ this.service.selectNode(nodeId, true);
2656
+ }
2657
+ else {
2658
+ this.service.selectNode(nodeId, false);
2659
+ }
2660
+ this.xNodeClick.emit(node);
2661
+ }
2662
+ handleEdgeLabelDblClick(e, edgeId) {
2663
+ e.stopPropagation();
2664
+ this.editingEdgeId = edgeId;
2665
+ }
2666
+ handleEdgeLabelChange(e, edgeId) {
2667
+ const newLabel = e.target.value;
2668
+ this.service.updateEdge(edgeId, { label: newLabel });
2669
+ }
2670
+ renderEdgeLabel(edge, x, y) {
2671
+ return (h("foreignObject", { x: x - 50, y: y - 12, width: 100, height: 24, class: "edge-label-container" }, h("div", { class: "edge-label", onDblClick: (e) => this.handleEdgeLabelDblClick(e, edge.id) }, this.editingEdgeId === edge.id ? (h("input", { value: edge.label, onInput: (e) => this.handleEdgeLabelChange(e, edge.id), onKeyDown: (e) => e.key === 'Enter' && (this.editingEdgeId = null), onBlur: () => this.editingEdgeId = null, autoFocus: true, style: { width: '100%', background: 'white', border: '1px solid #ccc', borderRadius: '4px' } })) : (edge.label || ''))));
2672
+ }
2673
+ renderEdge(edge) {
2674
+ const s = this.flowNodes.find(n => n.id === edge.source);
2675
+ const t = this.flowNodes.find(n => n.id === edge.target);
2676
+ if (!s || !t)
2677
+ return null;
2678
+ const sPos = this.getHandlePos(s, edge.sourceHandle, t);
2679
+ const tPos = this.getHandlePos(t, edge.targetHandle, s);
2680
+ let x1 = sPos.x;
2681
+ let y1 = sPos.y;
2682
+ let x2 = tPos.x;
2683
+ let y2 = tPos.y;
2684
+ // ✅ Multi-edge offset
2685
+ const siblings = this.flowEdges.filter(e => e.source === edge.source && e.target === edge.target);
2686
+ const index = siblings.findIndex(e => e.id === edge.id);
2687
+ const offset = siblings.length > 1
2688
+ ? (index - (siblings.length - 1) / 2) * 20
2689
+ : 0;
2690
+ // apply offset theo normal vector
2691
+ if (edge.type !== 'straight') {
2692
+ const dx = x2 - x1;
2693
+ const dy = y2 - y1;
2694
+ const len = Math.hypot(dx, dy) || 1;
2695
+ const nx = -dy / len;
2696
+ const ny = dx / len;
2697
+ x1 += nx * offset;
2698
+ y1 += ny * offset;
2699
+ x2 += nx * offset;
2700
+ y2 += ny * offset;
2701
+ }
2702
+ let path = '';
2703
+ // =========================================================
2704
+ // 1. STRAIGHT
2705
+ // =========================================================
2706
+ if (edge.type === 'straight') {
2707
+ path = `M${x1},${y1} L${x2},${y2}`;
2708
+ }
2709
+ // =========================================================
2710
+ // 2. STEP / SMOOTHSTEP (FIXED VERSION)
2711
+ // =========================================================
2712
+ else if (edge.type === 'step' || edge.type === 'smoothstep') {
2713
+ const isSmooth = edge.type === 'smoothstep';
2714
+ const radius = isSmooth ? 8 : 0;
2715
+ const points = [];
2716
+ const midX = x1 + (x2 - x1) / 2;
2717
+ const midY = y1 + (y2 - y1) / 2;
2718
+ // routing basic
2719
+ if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {
2720
+ // horizontal first
2721
+ points.push({ x: x1, y: y1 });
2722
+ points.push({ x: midX, y: y1 });
2723
+ points.push({ x: midX, y: y2 });
2724
+ points.push({ x: x2, y: y2 });
2725
+ }
2726
+ else {
2727
+ // vertical first
2728
+ points.push({ x: x1, y: y1 });
2729
+ points.push({ x: x1, y: midY });
2730
+ points.push({ x: x2, y: midY });
2731
+ points.push({ x: x2, y: y2 });
2732
+ }
2733
+ const parts = [];
2734
+ parts.push(`M${points[0].x},${points[0].y}`);
2735
+ for (let i = 1; i < points.length - 1; i++) {
2736
+ const prev = points[i - 1];
2737
+ const curr = points[i];
2738
+ const next = points[i + 1];
2739
+ if (radius === 0) {
2740
+ parts.push(`L${curr.x},${curr.y}`);
2741
+ continue;
2742
+ }
2743
+ const dx1 = curr.x - prev.x;
2744
+ const dy1 = curr.y - prev.y;
2745
+ const dx2 = next.x - curr.x;
2746
+ const dy2 = next.y - curr.y;
2747
+ const len1 = Math.hypot(dx1, dy1);
2748
+ const len2 = Math.hypot(dx2, dy2);
2749
+ const r = Math.min(radius, len1 / 2, len2 / 2);
2750
+ const p1x = curr.x - (dx1 / len1) * r;
2751
+ const p1y = curr.y - (dy1 / len1) * r;
2752
+ const p2x = curr.x + (dx2 / len2) * r;
2753
+ const p2y = curr.y + (dy2 / len2) * r;
2754
+ parts.push(`L${p1x},${p1y}`);
2755
+ parts.push(`Q${curr.x},${curr.y} ${p2x},${p2y}`);
2756
+ }
2757
+ const last = points[points.length - 1];
2758
+ parts.push(`L${last.x},${last.y}`);
2759
+ path = parts.join(' ');
2760
+ }
2761
+ // =========================================================
2762
+ // 3. DEFAULT (Bezier)
2763
+ // =========================================================
2764
+ else {
2765
+ const dx = x2 - x1;
2766
+ const curvature = 0.5;
2767
+ path = `
2768
+ M${x1},${y1}
2769
+ C${x1 + dx * curvature},${y1}
2770
+ ${x2 - dx * curvature},${y2}
2771
+ ${x2},${y2}
2772
+ `;
2773
+ }
2774
+ const isSelected = this.selectedNodes.includes(edge.id); // Assuming edges can be selected
2775
+ return (h("g", { key: edge.id, class: { 'edge-group': true } }, h("path", { d: path, stroke: "transparent", "stroke-width": "20", fill: "none", style: { cursor: 'pointer', pointerEvents: 'stroke' }, onClick: (e) => {
2776
+ e.stopPropagation();
2777
+ this.service.selectEdge(edge.id, e.ctrlKey || e.metaKey);
2778
+ this.xEdgeClick.emit(edge);
2779
+ } }), h("path", { d: path, class: {
2780
+ 'edge-path': true,
2781
+ 'selected': isSelected,
2782
+ 'animated': edge.animated,
2783
+ }, "marker-end": isSelected ? 'url(#arrowhead-selected)' : 'url(#arrowhead)', style: {
2784
+ pointerEvents: 'none',
2785
+ stroke: isSelected
2786
+ ? 'var(--x-primary-color)'
2787
+ : (edge.style?.['stroke'] || '#b1b1b7'),
2788
+ strokeDasharray: edge.style?.['strokeDasharray'],
2789
+ } }), edge.selected && (h("foreignObject", { x: (x1 + x2) / 2 - 30, y: (y1 + y2) / 2 - 50, width: "60", height: "40" }, h("div", { class: "edge-toolbar" }, h("button", { class: "edge-toolbar-btn", onClick: (e) => {
2790
+ e.stopPropagation();
2791
+ this.service.updateEdge(edge.id, {
2792
+ animated: !edge.animated,
2793
+ });
2794
+ } }, "\u26A1"), h("button", { class: "edge-toolbar-btn", onClick: (e) => {
2795
+ e.stopPropagation();
2796
+ this.service.deleteEdge(edge.id);
2797
+ } }, "\uD83D\uDDD1")))), edge.label &&
2798
+ this.renderEdgeLabel(edge, (x1 + x2) / 2, (y1 + y2) / 2)));
2799
+ }
2800
+ getHandlePos(node, handle, targetNode) {
2801
+ // Ensure we have a width and height to calculate the midpoint/edges
2802
+ const x = Math.round(node.position.x);
2803
+ const y = Math.round(node.position.y);
2804
+ const w = node.width ? Math.round(node.width) : (node.shape === 'diamond' ? 100 : 150);
2805
+ const h = node.height ? Math.round(node.height) : (node.shape === 'diamond' ? 100 : 48);
2806
+ if (handle === 'floating' && targetNode)
2807
+ return this.getFloatingHandlePos(node, targetNode);
2808
+ if (this.edgeRoutingMode === 'auto' && targetNode) {
2809
+ const sc = { x: x + w / 2, y: y + h / 2 };
2810
+ const tc = { x: targetNode.position.x + (targetNode.width || 150) / 2, y: targetNode.position.y + (targetNode.height || 48) / 2 };
2811
+ const dx = tc.x - sc.x;
2812
+ const dy = tc.y - sc.y;
2813
+ if (Math.abs(dx) > Math.abs(dy))
2814
+ handle = dx > 0 ? 'right' : 'left';
2815
+ else
2816
+ handle = dy > 0 ? 'bottom' : 'top';
2817
+ }
2818
+ else if (!handle && targetNode) {
2819
+ const sc = { x: x + w / 2, y: y + h / 2 };
2820
+ const tc = { x: targetNode.position.x + (targetNode.width || 150) / 2, y: targetNode.position.y + (targetNode.height || 48) / 2 };
2821
+ const dx = tc.x - sc.x;
2822
+ const dy = tc.y - sc.y;
2823
+ if (Math.abs(dx) > Math.abs(dy))
2824
+ handle = dx > 0 ? 'right' : 'left';
2825
+ else
2826
+ handle = dy > 0 ? 'bottom' : 'top';
2827
+ }
2828
+ else if (!handle) {
2829
+ handle = 'floating';
2830
+ }
2831
+ // Offset slightly for handle markers (r=4)
2832
+ switch (handle) {
2833
+ case 'top': return { x: x + w / 2, y };
2834
+ case 'right': return { x: x + w, y: y + h / 2 };
2835
+ case 'bottom': return { x: x + w / 2, y: y + h };
2836
+ case 'left': return { x: x, y: y + h / 2 };
2837
+ default: return { x: x + w / 2, y: y + h / 2 };
2838
+ }
2839
+ }
2840
+ getFloatingHandlePos(source, target) {
2841
+ const sw = (source.width || 150) / 2, sh = (source.height || 48) / 2;
2842
+ const sc = { x: source.position.x + sw, y: source.position.y + sh };
2843
+ const tc = { x: target.position.x + (target.width || 150) / 2, y: target.position.y + (target.height || 48) / 2 };
2844
+ const dx = tc.x - sc.x, dy = tc.y - sc.y;
2845
+ const angle = Math.atan2(dy, dx);
2846
+ // Diamond Shape Correction
2847
+ if (source.shape === 'diamond') {
2848
+ const absCos = Math.abs(Math.cos(angle)), absSin = Math.abs(Math.sin(angle));
2849
+ const d = (sw * sh) / (sh * absCos + sw * absSin);
2850
+ return { x: sc.x + d * Math.cos(angle), y: sc.y + d * Math.sin(angle) };
2851
+ }
2852
+ // Circle Shape Correction
2853
+ if (source.shape === 'circle') {
2854
+ const r = Math.min(sw, sh);
2855
+ return { x: sc.x + r * Math.cos(angle), y: sc.y + r * Math.sin(angle) };
2856
+ }
2857
+ if (Math.abs(dx) * sh > Math.abs(dy) * sw)
2858
+ return { x: sc.x + sw * Math.sign(dx), y: sc.y + (dy * sw / Math.abs(dx)) };
2859
+ else
2860
+ return { x: sc.x + (dx * sh / Math.abs(dy)), y: sc.y + sh * Math.sign(dy) };
2861
+ }
2862
+ renderEdgeHandles() {
2863
+ return this.flowEdges
2864
+ .filter(e => e.selected)
2865
+ .map(edge => {
2866
+ const s = this.flowNodes.find(n => n.id === edge.source);
2867
+ const t = this.flowNodes.find(n => n.id === edge.target);
2868
+ if (!s || !t)
2869
+ return null;
2870
+ const sPos = this.getHandlePos(s, edge.sourceHandle, t);
2871
+ const tPos = this.getHandlePos(t, edge.targetHandle, s);
2872
+ return (h("g", { class: "edge-controls" }, h("circle", { cx: sPos.x, cy: sPos.y, r: "4", class: "edge-handle source", onMouseDown: (e) => this.startEdgeReconnect(e, edge, 'source'), onTouchStart: (e) => this.startEdgeReconnect(e, edge, 'source') }), h("circle", { cx: tPos.x, cy: tPos.y, r: "4", class: "edge-handle target", onMouseDown: (e) => this.startEdgeReconnect(e, edge, 'target'), onTouchStart: (e) => this.startEdgeReconnect(e, edge, 'target') })));
2873
+ });
2874
+ }
2875
+ startEdgeReconnect(e, edge, type) {
2876
+ if (this.pendingConnection)
2877
+ return;
2878
+ e.preventDefault();
2879
+ e.stopPropagation();
2880
+ const otherId = type === 'source' ? edge.target : edge.source, otherNode = this.flowNodes.find(n => n.id === otherId);
2881
+ if (!otherNode)
2882
+ return;
2883
+ const rect = this.container.getBoundingClientRect(), { x, y, zoom } = this.flowViewport, otherPos = this.getHandlePos(otherNode, type === 'source' ? edge.targetHandle : edge.sourceHandle), cx = 'touches' in e ? e.touches[0].clientX : e.clientX, cy = 'touches' in e ? e.touches[0].clientY : e.clientY;
2884
+ this.service.deleteEdge(edge.id);
2885
+ this.pendingConnection = { source: otherId, handle: (type === 'source' ? edge.targetHandle : edge.sourceHandle) || 'floating', startX: otherPos.x, startY: otherPos.y, mouseX: (cx - rect.left - x) / zoom, mouseY: (cy - rect.top - y) / zoom };
2886
+ this.startConnectionHandler(otherId, type === 'source' ? 'target' : 'source');
2887
+ }
2888
+ renderNode(node) {
2889
+ const isSelected = this.selectedNodes.includes(node.id);
2890
+ const isFocused = this.focusedNodeId === node.id;
2891
+ const shapeClass = node.shape ? `shape-${node.shape}` : '';
2892
+ return (h("div", { key: node.id, "data-id": node.id, class: {
2893
+ 'node': true,
2894
+ 'selected': isSelected,
2895
+ 'dragging': this.draggingNodeId === node.id,
2896
+ 'collapsed': node.isCollapsed,
2897
+ [node.className]: !!node.className,
2898
+ [shapeClass]: !!shapeClass,
2899
+ 'focused': isFocused,
2900
+ 'turbo': this.turboMode,
2901
+ [`type-${node.type}`]: true
2902
+ }, style: {
2903
+ left: `${Math.round(node.position.x)}px`,
2904
+ top: `${Math.round(node.position.y)}px`,
2905
+ width: node.width ? `${node.width}px` : (node.shape === 'diamond' ? '100px' : '150px'),
2906
+ height: node.height ? `${node.height}px` : (node.shape === 'diamond' ? '100px' : '48px'),
2907
+ transform: `rotate(${node.rotation || 0}deg) translateZ(0)`,
2908
+ opacity: (this.focusedNodeId && !isFocused && node.parentId !== this.focusedNodeId) ? '0.3' : '1',
2909
+ zIndex: isSelected ? '1000' : (node.zIndex || 10).toString(),
2910
+ ...(node.style || {})
2911
+ }, onMouseDown: (e) => this.handleNodeDragStart(e, node), onTouchStart: (e) => this.handleNodeDragStart(e, node), onClick: (e) => this.handleNodeClick(e, node.id), onDblClick: () => node.type === 'group' && (this.focusedNodeId = this.focusedNodeId === node.id ? null : node.id) }, this.shouldShowToolbar(node) && this.renderNodeToolbar(node), node.shape === 'diamond' && (h("div", { class: "node-shape-wrapper" }, h("svg", { viewBox: "0 0 100 100", preserveAspectRatio: "none", class: "node-shape-svg" }, h("path", { d: "M50 0 L100 50 L50 100 L0 50 Z", class: { 'shape-path': true, 'selected': isSelected } })))), h("div", { class: "node-content" }, (node.type === 'group' || node.isParent) && (h("button", { class: "node-collapse-btn", onClick: (e) => { e.stopPropagation(); this.service.toggleNodeCollapse(node.id); } }, h("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("path", { d: node.isCollapsed ? "M12 5v14M5 12h14" : "M5 12h14" })))), node.template ? h("div", { innerHTML: node.template }) : h("slot", { name: `node-${node.type}` }, node.data?.label || node.id)), node.handles ? node.handles.map(h => this.renderCustomHandle(node, h)) : [
2912
+ h("div", { key: "top", class: "handle top", onMouseDown: (e) => this.startConnection(e, node.id, 'top') }),
2913
+ h("div", { key: "right", class: "handle right", onMouseDown: (e) => this.startConnection(e, node.id, 'right') }),
2914
+ h("div", { key: "bottom", class: "handle bottom", onMouseDown: (e) => this.startConnection(e, node.id, 'bottom') }),
2915
+ h("div", { key: "left", class: "handle left", onMouseDown: (e) => this.startConnection(e, node.id, 'left') })
2916
+ ], isSelected && node.resizable && h("div", { class: "node-resizer", onMouseDown: (e) => this.startResize(e, node) }), " ", isSelected && node.rotatable !== false && h("div", { class: "node-rotator", onMouseDown: (e) => this.startRotate(e, node) }, h("x-icon", { name: "autorenew", size: 12 })), " "));
2917
+ }
2918
+ shouldShowToolbar(node) {
2919
+ if (!this.nodeToolbarVisible)
2920
+ return false;
2921
+ if (this.nodeToolbarMode === 'always')
2922
+ return true;
2923
+ if (this.nodeToolbarMode === 'selected')
2924
+ return this.selectedNodes.includes(node.id);
2925
+ return false; // For hover mode, we'd need some mouse state tracking or CSS
2926
+ }
2927
+ renderNodeToolbar(node) {
2928
+ const colors = ['#ffffff', '#fecaca', '#bfdbfe', '#bbf7d0', '#fef08a', '#e9d5ff'];
2929
+ return (h("div", { class: "node-toolbar" }, h("div", { class: "color-picker" }, colors.map(c => (h("div", { class: "color-swatch", style: { background: c }, onClick: () => this.service.updateNode(node.id, { style: { ...node.style, background: c } }) })))), h("x-divider", { type: "vertical" }), h("button", { onClick: () => this.service.deleteNode(node.id) }, h("x-icon", { name: "delete", size: 14 })), h("button", { onClick: () => this.service.copySelected() }, h("x-icon", { name: "content_copy", size: 14 }))));
2930
+ }
2931
+ renderCustomHandle(node, h) {
2932
+ return (h("div", { class: { 'handle': true, [h.position]: true }, style: h.style, onMouseDown: (e) => this.startConnection(e, node.id, h.id), onTouchStart: (e) => this.startConnection(e, node.id, h.id) }));
2933
+ }
2934
+ handleNodeDragStart(e, node) {
2935
+ if (node.dragHandle && !e.target.closest(node.dragHandle)) {
2936
+ return;
2937
+ }
2938
+ e.preventDefault(); // Stop simulated mouse events
2939
+ e.stopPropagation();
2940
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
2941
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2942
+ this.service.selectNode(node.id, ('shiftKey' in e && e.shiftKey));
2943
+ this.startNodeDrag(clientX, clientY, node);
2944
+ }
2945
+ startNodeDrag(startX, startY, node) {
2946
+ const startNodeX = node.position.x;
2947
+ const startNodeY = node.position.y;
2948
+ const zoom = this.flowViewport.zoom;
2949
+ const dragThreshold = 5; // Increased threshold
2950
+ let dragStarted = false;
2951
+ const onMove = (me) => {
2952
+ const cx = 'touches' in me ? me.touches[0].clientX : me.clientX;
2953
+ const cy = 'touches' in me ? me.touches[0].clientY : me.clientY;
2954
+ if (!dragStarted) {
2955
+ const moveDist = Math.sqrt(Math.pow(cx - startX, 2) + Math.pow(cy - startY, 2));
2956
+ if (moveDist > dragThreshold) {
2957
+ dragStarted = true;
2958
+ this.draggingNodeId = node.id;
2959
+ this.isInteracting = true; // Block external sync during drag
2960
+ }
2961
+ else {
2962
+ return;
2963
+ }
2964
+ }
2965
+ const dx = (cx - startX) / zoom;
2966
+ const dy = (cy - startY) / zoom;
2967
+ const newX = startNodeX + dx;
2968
+ const newY = startNodeY + dy;
2969
+ this.service.updateNodePosition(node.id, newX, newY, this.snapToGridValue);
2970
+ this.helperLines = this.calculateHelperLines(node.id, newX, newY);
2971
+ this.checkProximity(node.id, newX, newY);
2972
+ };
2973
+ const onUp = () => {
2974
+ if (this.proximityPreview) {
2975
+ this.service.onConnect(this.proximityPreview);
2976
+ this.proximityPreview = null;
2977
+ }
2978
+ document.removeEventListener('mousemove', onMove);
2979
+ document.removeEventListener('mouseup', onUp);
2980
+ document.removeEventListener('touchmove', onMove);
2981
+ document.removeEventListener('touchend', onUp);
2982
+ this.draggingNodeId = null;
2983
+ this.handleUp();
2984
+ };
2985
+ document.addEventListener('mousemove', onMove);
2986
+ document.addEventListener('mouseup', onUp);
2987
+ document.addEventListener('touchmove', onMove);
2988
+ document.addEventListener('touchend', onUp);
2989
+ }
2990
+ startResize(e, node) {
2991
+ e.stopPropagation();
2992
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
2993
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2994
+ const startX = clientX;
2995
+ const startY = clientY;
2996
+ const startWidth = node.width || 150;
2997
+ const startHeight = node.height || 48;
2998
+ const zoom = this.flowViewport.zoom;
2999
+ const onMove = (me) => {
3000
+ const cx = 'touches' in me ? me.touches[0].clientX : me.clientX;
3001
+ const cy = 'touches' in me ? me.touches[0].clientY : me.clientY;
3002
+ const dw = (cx - startX) / zoom;
3003
+ const dh = (cy - startY) / zoom;
3004
+ this.service.setNodes(this.flowNodes.map(n => n.id === node.id ? { ...n, width: Math.max(50, startWidth + dw), height: Math.max(30, startHeight + dh) } : n));
3005
+ };
3006
+ const onUp = () => {
3007
+ document.removeEventListener('mousemove', onMove);
3008
+ document.removeEventListener('mouseup', onUp);
3009
+ document.removeEventListener('touchmove', onMove);
3010
+ document.removeEventListener('touchend', onUp);
3011
+ };
3012
+ document.addEventListener('mousemove', onMove);
3013
+ document.addEventListener('mouseup', onUp);
3014
+ document.addEventListener('touchmove', onMove);
3015
+ document.addEventListener('touchend', onUp);
3016
+ }
3017
+ startRotate(e, node) {
3018
+ e.stopPropagation();
3019
+ const rect = this.container.getBoundingClientRect(), { x: vx, y: vy, zoom } = this.flowViewport;
3020
+ const center = {
3021
+ x: node.position.x + (node.width || 150) / 2,
3022
+ y: node.position.y + (node.height || 48) / 2
3023
+ };
3024
+ const onMove = (me) => {
3025
+ const cx = 'touches' in me ? me.touches[0].clientX : me.clientX;
3026
+ const cy = 'touches' in me ? me.touches[0].clientY : me.clientY;
3027
+ const mousePos = { x: (cx - rect.left - vx) / zoom, y: (cy - rect.top - vy) / zoom };
3028
+ const angle = Math.atan2(mousePos.y - center.y, mousePos.x - center.x) * (180 / Math.PI) + 90;
3029
+ this.service.rotateNode(node.id, angle);
3030
+ };
3031
+ const onUp = () => {
3032
+ this.service.saveToHistory();
3033
+ document.removeEventListener('mousemove', onMove);
3034
+ document.removeEventListener('mouseup', onUp);
3035
+ document.removeEventListener('touchmove', onMove);
3036
+ document.removeEventListener('touchend', onUp);
3037
+ };
3038
+ document.addEventListener('mousemove', onMove);
3039
+ document.addEventListener('mouseup', onUp);
3040
+ document.addEventListener('touchmove', onMove);
3041
+ document.addEventListener('touchend', onUp);
3042
+ }
3043
+ applyLassoSelection() {
3044
+ if (!this.selectionRect)
3045
+ return;
3046
+ const { x, y, width, height } = this.selectionRect;
3047
+ const zoom = this.flowViewport.zoom;
3048
+ const viewX = this.flowViewport.x;
3049
+ const viewY = this.flowViewport.y;
3050
+ const rectX = (Math.min(x, x + width) - viewX) / zoom;
3051
+ const rectY = (Math.min(y, y + height) - viewY) / zoom;
3052
+ const rectW = Math.abs(width) / zoom;
3053
+ const rectH = Math.abs(height) / zoom;
3054
+ this.flowNodes.forEach(node => {
3055
+ const nx = node.position.x;
3056
+ const ny = node.position.y;
3057
+ const nw = node.width || 150;
3058
+ const nh = node.height || 48;
3059
+ if (nx >= rectX && nx + nw <= rectX + rectW && ny >= rectY && ny + nh <= rectY + rectH) {
3060
+ this.service.selectNode(node.id, true);
3061
+ }
3062
+ });
3063
+ }
3064
+ renderSelectionRect() {
3065
+ if (!this.selectionRect)
3066
+ return null;
3067
+ const { x, y, width, height } = this.selectionRect;
3068
+ return (h("div", { class: "selection-rect", style: {
3069
+ left: `${Math.min(x, x + width)}px`,
3070
+ top: `${Math.min(y, y + height)}px`,
3071
+ width: `${Math.abs(width)}px`,
3072
+ height: `${Math.abs(height)}px`
3073
+ } }));
3074
+ }
3075
+ renderContextMenu() {
3076
+ if (!this.contextMenu)
3077
+ return null;
3078
+ return (h("div", { class: "context-menu", style: { left: `${this.contextMenu.x}px`, top: `${this.contextMenu.y}px` } }, h("div", { class: "menu-item", onClick: () => this.addNodeAtPos(this.contextMenu.x, this.contextMenu.y) }, "Add Node Here"), h("div", { class: "divider" }), this.selectedNodes.length > 1 && (h("div", { class: "menu-item", onClick: () => this.service.groupSelected() }, "Group Selected")), h("div", { class: "menu-item", onClick: () => this.service.undo() }, "Undo"), h("div", { class: "menu-item", onClick: () => this.service.redo() }, "Redo")));
3079
+ }
3080
+ addNodeAtPos(clientX, clientY) {
3081
+ const rect = this.container.getBoundingClientRect();
3082
+ const { x, y, zoom } = this.flowViewport;
3083
+ this.service.addNode({
3084
+ id: `node-${Date.now()}`,
3085
+ position: {
3086
+ x: (clientX - rect.left - x) / zoom,
3087
+ y: (clientY - rect.top - y) / zoom
3088
+ },
3089
+ data: { label: 'New Node' },
3090
+ zIndex: 10
3091
+ });
3092
+ }
3093
+ startConnection(e, nodeId, handle) {
3094
+ if (this.pendingConnection)
3095
+ return;
3096
+ e.preventDefault(); // Stop simulated mouse events
3097
+ e.stopPropagation();
3098
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
3099
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
3100
+ const rect = this.container.getBoundingClientRect();
3101
+ const { x, y, zoom } = this.flowViewport;
3102
+ const node = this.flowNodes.find(n => n.id === nodeId);
3103
+ if (!node)
3104
+ return;
3105
+ // Use handle center instead of click position for start point
3106
+ const hPos = this.getHandlePos(node, handle);
3107
+ this.pendingConnection = {
3108
+ source: nodeId,
3109
+ handle,
3110
+ startX: hPos.x,
3111
+ startY: hPos.y,
3112
+ mouseX: (clientX - rect.left - x) / zoom,
3113
+ mouseY: (clientY - rect.top - y) / zoom
3114
+ };
3115
+ this.proximityPreview = null; // Clear any existing previews
3116
+ this.startConnectionHandler(nodeId, 'source');
3117
+ }
3118
+ startConnectionHandler(nodeId, handleType = 'source') {
3119
+ const onUp = (de) => {
3120
+ const pending = this.pendingConnection;
3121
+ this.pendingConnection = null;
3122
+ this.proximityPreview = null;
3123
+ document.removeEventListener('mouseup', onUp);
3124
+ document.removeEventListener('touchend', onUp);
3125
+ if (!pending)
3126
+ return;
3127
+ const clientX = 'touches' in de ? de.touches[0].clientX : de.clientX, clientY = 'touches' in de ? de.touches[0].clientY : de.clientY, { x: vx, y: vy, zoom } = this.flowViewport, rect = this.container.getBoundingClientRect(), lx = (clientX - rect.left - vx) / zoom, ly = (clientY - rect.top - vy) / zoom, padding = 15, targetNode = this.flowNodes.find(n => {
3128
+ const w = (n.width || 150) + padding * 2, h = (n.height || 48) + padding * 2;
3129
+ return lx >= n.position.x - padding && lx <= n.position.x + w && ly >= n.position.y - padding && ly <= n.position.y + h;
3130
+ });
3131
+ if (targetNode && targetNode.id !== nodeId) {
3132
+ const path = de.composedPath(), targetHandleEl = path.find(el => el.classList && el.classList.contains('handle')), targetHandle = targetHandleEl ? (Array.from(targetHandleEl.classList).find(c => ['top', 'right', 'bottom', 'left'].includes(c))) : 'floating';
3133
+ const connection = handleType === 'source'
3134
+ ? { source: nodeId, target: targetNode.id, sourceHandle: pending.handle, targetHandle }
3135
+ : { source: targetNode.id, target: nodeId, sourceHandle: targetHandle, targetHandle: pending.handle };
3136
+ if (this.service.isValidConnection(connection)) {
3137
+ this.service.onConnect(connection);
3138
+ this.xConnect.emit(connection);
3139
+ }
3140
+ }
3141
+ else if (!targetNode) {
3142
+ const newNodeId = `node-${Date.now()}`;
3143
+ this.service.addNode({ id: newNodeId, position: { x: lx - 75, y: ly - 24 }, data: { label: 'New Node' }, zIndex: 10 });
3144
+ const connection = handleType === 'source'
3145
+ ? { source: nodeId, target: newNodeId, sourceHandle: pending.handle, targetHandle: 'floating' }
3146
+ : { source: newNodeId, target: nodeId, sourceHandle: 'floating', targetHandle: pending.handle };
3147
+ this.service.onConnect(connection);
3148
+ this.xConnect.emit(connection);
3149
+ }
3150
+ };
3151
+ document.addEventListener('mouseup', onUp);
3152
+ document.addEventListener('touchend', onUp);
3153
+ }
3154
+ startDrawing(x, y) {
3155
+ this.activeDrawing = {
3156
+ id: `draw-${Date.now()}`,
3157
+ type: (this.tool === 'rectangle' ? 'rectangle' : 'freehand'),
3158
+ position: { x, y },
3159
+ points: this.tool === 'freehand' ? [{ x, y }] : [],
3160
+ width: 0,
3161
+ height: 0,
3162
+ style: { stroke: '#111', strokeWidth: '2', fill: 'none' }
3163
+ };
3164
+ }
3165
+ renderDrawing(d) {
3166
+ if (d.type === 'rectangle') {
3167
+ return (h("rect", { x: Math.min(d.position.x, d.position.x + (d.width || 0)), y: Math.min(d.position.y, d.position.y + (d.height || 0)), width: Math.abs(d.width || 0), height: Math.abs(d.height || 0), style: d.style }));
3168
+ }
3169
+ else {
3170
+ return (h("path", { d: d.points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`).join(' '), style: d.style }));
3171
+ }
3172
+ }
3173
+ checkProximity(nodeId, nx, ny) {
3174
+ const threshold = 50;
3175
+ const node = this.flowNodes.find(n => n.id === nodeId);
3176
+ if (!node)
3177
+ return;
3178
+ const nw = node.width || 150;
3179
+ const nh = node.height || 48;
3180
+ const nc = { x: nx + nw / 2, y: ny + nh / 2 };
3181
+ let closest = null;
3182
+ let minDist = threshold;
3183
+ this.flowNodes.forEach(other => {
3184
+ if (other.id === nodeId || other.parentId === nodeId)
3185
+ return;
3186
+ const ow = other.width || 150;
3187
+ const oh = other.height || 48;
3188
+ const oc = { x: other.position.x + ow / 2, y: other.position.y + oh / 2 };
3189
+ const d = Math.sqrt((nc.x - oc.x) ** 2 + (nc.y - oc.y) ** 2);
3190
+ if (d < minDist) {
3191
+ minDist = d;
3192
+ closest = { source: nodeId, target: other.id, sourceHandle: 'floating', targetHandle: 'floating' };
3193
+ }
3194
+ });
3195
+ this.proximityPreview = closest;
3196
+ }
3197
+ calculateHelperLines(nodeId, x, y) {
3198
+ const threshold = 10;
3199
+ const lines = [];
3200
+ this.flowNodes.forEach(other => {
3201
+ if (other.id === nodeId || other.parentId === nodeId)
3202
+ return;
3203
+ if (Math.abs(x - other.position.x) < threshold)
3204
+ lines.push({ x: other.position.x });
3205
+ if (Math.abs(y - other.position.y) < threshold)
3206
+ lines.push({ y: other.position.y });
3207
+ });
3208
+ return lines;
3209
+ }
3210
+ renderHelperLines() {
3211
+ return h("svg", { class: "helper-lines-svg", style: { position: 'absolute', top: '0', left: '0', width: '100%', height: '100%', pointerEvents: 'none' } }, this.helperLines.map(line => line.x !== undefined ? h("line", { x1: line.x, y1: "-10000", x2: line.x, y2: "10000", stroke: "#3b82f6", "stroke-dasharray": "2,2" }) : h("line", { x1: "-10000", y1: line.y, x2: "10000", y2: line.y, stroke: "#3b82f6", "stroke-dasharray": "2,2" })));
3212
+ }
3213
+ static get watchers() { return {
3214
+ "nodes": [{
3215
+ "handleNodesPropChange": 0
3216
+ }],
3217
+ "edges": [{
3218
+ "handleEdgesPropChange": 0
3219
+ }],
3220
+ "viewportValue": [{
3221
+ "handleViewportChange": 0
3222
+ }]
3223
+ }; }
3224
+ };
3225
+ XWorkflow.style = xWorkflowCss();
3226
+
3227
+ export { XAlert as x_alert, XBadge as x_badge, XFloatButton as x_float_button, XForm as x_form, XMenu as x_menu, XMenuItem as x_menu_item, XResult as x_result, XSelectOption as x_select_option, XTag as x_tag, XTextarea as x_textarea, XWorkflow as x_workflow };