@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,3239 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-C7sKs9A2.js');
4
+ var config = require('./config-BP9bROYD.js');
5
+ var abstractControl = require('./abstract-control-C4D0eNCC.js');
6
+
7
+ 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}`;
8
+
9
+ const XAlert = class {
10
+ constructor(hostRef) {
11
+ index.registerInstance(this, hostRef);
12
+ this.xClose = index.createEvent(this, "xClose", 7);
13
+ }
14
+ /**
15
+ * Content of Alert.
16
+ * @example
17
+ * <x-alert message="Info"></x-alert>
18
+ */
19
+ message;
20
+ /**
21
+ * Additional content of Alert.
22
+ * @example
23
+ * <x-alert description="Details"></x-alert>
24
+ */
25
+ description;
26
+ /**
27
+ * Type of Alert style, options: success, info, warning, error.
28
+ * @example
29
+ * <x-alert type="success" message="Saved"></x-alert>
30
+ */
31
+ type = 'info';
32
+ /**
33
+ * Whether Alert can be closed.
34
+ * @example
35
+ * <x-alert closable message="Closable"></x-alert>
36
+ */
37
+ closable = false;
38
+ /**
39
+ * Whether to show icon.
40
+ * @example
41
+ * <x-alert showIcon message="With icon"></x-alert>
42
+ */
43
+ showIcon = false;
44
+ /**
45
+ * Whether to show as banner.
46
+ * @example
47
+ * <x-alert banner message="Banner"></x-alert>
48
+ */
49
+ banner = false;
50
+ /**
51
+ * Internal closed state for dismissible alerts.
52
+ */
53
+ closed = false;
54
+ /**
55
+ * Emits when the alert is closed.
56
+ * @example
57
+ * <x-alert onXClose={() => console.log('closed')}></x-alert>
58
+ */
59
+ xClose;
60
+ /**
61
+ * Handle close action and emit close event.
62
+ * @param e - Mouse click event from close button.
63
+ * @returns void
64
+ * @example
65
+ * <x-alert closable onXClose={() => {}}></x-alert>
66
+ */
67
+ handleClose(e) {
68
+ e.preventDefault();
69
+ this.closed = true;
70
+ this.xClose.emit();
71
+ }
72
+ /**
73
+ * Render alert content, icon, and close button.
74
+ *
75
+ * Flow:
76
+ * 1. Checks if `closed` state is true; if so, returns null to remove from DOM.
77
+ * 2. Determines if description is present to adjust styling.
78
+ * 3. Constructs host classes based on type, icon presence, banner mode, and closability.
79
+ * 4. Renders the status icon if `showIcon` is true.
80
+ * - Selects the appropriate SVG based on `type` (success, info, warning, error).
81
+ * 5. Renders the message and description content.
82
+ * 6. Renders the close button if `closable` is true.
83
+ *
84
+ * @returns JSX.Element | null
85
+ * @example
86
+ * <x-alert type="warning" message="Warning"></x-alert>
87
+ */
88
+ render() {
89
+ // Hide alert entirely after it is closed.
90
+ if (this.closed)
91
+ return null;
92
+ const isDescription = !!this.description;
93
+ return (index.h(index.Host, { class: {
94
+ 'x-alert': true,
95
+ [`x-alert-${this.type}`]: true,
96
+ 'x-alert-with-description': isDescription,
97
+ 'x-alert-no-icon': !this.showIcon,
98
+ 'x-alert-banner': this.banner,
99
+ 'x-alert-closable': this.closable,
100
+ }, role: "alert" }, this.showIcon && (index.h("span", { class: "x-alert-icon" }, this.type === 'success' && (index.h("span", { role: "img", "aria-label": "check-circle", class: "anticon anticon-check-circle" }, index.h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "check-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, index.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' && (index.h("span", { role: "img", "aria-label": "info-circle", class: "anticon anticon-info-circle" }, index.h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "info-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, index.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' && (index.h("span", { role: "img", "aria-label": "exclamation-circle", class: "anticon anticon-exclamation-circle" }, index.h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "exclamation-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, index.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' && (index.h("span", { role: "img", "aria-label": "close-circle", class: "anticon anticon-close-circle" }, index.h("svg", { viewBox: "64 64 896 896", focusable: "false", "data-icon": "close-circle", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, index.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" })))))), index.h("div", { class: "x-alert-content" }, this.message && index.h("div", { class: "x-alert-message" }, this.message), this.description && index.h("div", { class: "x-alert-description" }, this.description)), this.closable && (index.h("button", { type: "button", class: "x-alert-close-icon", onClick: (e) => this.handleClose(e) }, index.h("x-icon", { name: config.getIcon('close') })))));
101
+ }
102
+ };
103
+ XAlert.style = xAlertCss();
104
+
105
+ 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}}`;
106
+
107
+ const PRESET_COLORS$1 = [
108
+ 'pink', 'red', 'yellow', 'orange', 'cyan', 'green', 'blue', 'purple',
109
+ 'geekblue', 'magenta', 'volcano', 'gold', 'lime'
110
+ ];
111
+ const XBadge = class {
112
+ constructor(hostRef) {
113
+ index.registerInstance(this, hostRef);
114
+ }
115
+ get el() { return index.getElement(this); }
116
+ /**
117
+ * Number to show in badge.
118
+ * @example
119
+ * <x-badge count={3}></x-badge>
120
+ */
121
+ count;
122
+ /**
123
+ * Whether to display a red dot instead of count.
124
+ * @example
125
+ * <x-badge dot></x-badge>
126
+ */
127
+ dot = false;
128
+ /**
129
+ * Max count to show.
130
+ * @example
131
+ * <x-badge count={120} overflowCount={99}></x-badge>
132
+ */
133
+ overflowCount = 99;
134
+ /**
135
+ * Whether to show badge when count is 0.
136
+ * @example
137
+ * <x-badge count={0} showZero></x-badge>
138
+ */
139
+ showZero = false;
140
+ /**
141
+ * Set Badge as a status dot.
142
+ * @example
143
+ * <x-badge status="success" text="Done"></x-badge>
144
+ */
145
+ status;
146
+ /**
147
+ * If status is set, text sets the display text of the status dot.
148
+ * @example
149
+ * <x-badge status="warning" text="Pending"></x-badge>
150
+ */
151
+ text;
152
+ /**
153
+ * Customize Badge dot color (supports preset colors or custom hex/rgb).
154
+ * @example
155
+ * <x-badge color="#ff4d4f" count={1}></x-badge>
156
+ */
157
+ color;
158
+ /**
159
+ * Set offset of the badge dot [left, top].
160
+ * @example
161
+ * <x-badge offset={[10, -2]} count={5}></x-badge>
162
+ */
163
+ offset;
164
+ /**
165
+ * Size of the badge.
166
+ * @example
167
+ * <x-badge size="small" count={2}></x-badge>
168
+ */
169
+ size = 'default';
170
+ /**
171
+ * Text to show when hovering over the badge.
172
+ * @example
173
+ * <x-badge badgeTitle="Notifications" count={9}></x-badge>
174
+ */
175
+ badgeTitle;
176
+ /**
177
+ * Used to display the classNames of the badge.
178
+ * @example
179
+ * <x-badge classNames={{ root: 'my-badge' }} count={1}></x-badge>
180
+ */
181
+ classNames;
182
+ /**
183
+ * Used to display the styles of the badge.
184
+ * @example
185
+ * <x-badge styles={{ indicator: 'background: red;' }} count={1}></x-badge>
186
+ */
187
+ styles;
188
+ /**
189
+ * Track whether component has child content.
190
+ */
191
+ hasChildren = false;
192
+ /**
193
+ * Initialize child detection before render.
194
+ * @returns void
195
+ * @example
196
+ * <x-badge count={1}><button>Inbox</button></x-badge>
197
+ */
198
+ componentWillLoad() {
199
+ this.checkChildren();
200
+ }
201
+ countChanged() {
202
+ // Trigger re-render when count changes
203
+ }
204
+ /**
205
+ * Detect whether default slot has child nodes.
206
+ *
207
+ * Flow:
208
+ * 1. Queries the default `<slot>`.
209
+ * 2. If slot exists:
210
+ * - Gets `assignedNodes`.
211
+ * - Checks if any node is an Element or non-empty Text.
212
+ * 3. If slot doesn't exist (yet):
213
+ * - Checks `el.childNodes` length.
214
+ * 4. Updates `hasChildren` state, which toggles wrapper mode.
215
+ *
216
+ * @returns void
217
+ * @example
218
+ * <x-badge count={1}><span>Inbox</span></x-badge>
219
+ */
220
+ checkChildren() {
221
+ const slot = this.el.shadowRoot?.querySelector('slot');
222
+ if (slot) {
223
+ const assignedNodes = slot.assignedNodes({ flatten: true });
224
+ // Consider both element nodes and non-empty text nodes.
225
+ this.hasChildren = assignedNodes.some(node => node.nodeType === Node.ELEMENT_NODE ||
226
+ (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()));
227
+ }
228
+ else {
229
+ // Fallback when slot is not yet available.
230
+ this.hasChildren = this.el.childNodes.length > 0;
231
+ }
232
+ }
233
+ /**
234
+ * Check if color matches preset palette.
235
+ * @param color - Color to test.
236
+ * @returns boolean
237
+ * @example
238
+ * this.isPresetColor('red')
239
+ */
240
+ isPresetColor(color) {
241
+ return PRESET_COLORS$1.includes(color);
242
+ }
243
+ /**
244
+ * Compute display count text based on dot/overflow rules.
245
+ *
246
+ * Flow:
247
+ * 1. If `dot` is true, returns null (no text).
248
+ * 2. If `count` is string, returns as-is.
249
+ * 3. If `count` is number:
250
+ * - Checks against `overflowCount`.
251
+ * - Returns `${overflowCount}+` if exceeded.
252
+ * - Otherwise returns count.
253
+ *
254
+ * @returns string | number | null
255
+ * @example
256
+ * <x-badge count={120} overflowCount={99}></x-badge>
257
+ */
258
+ getDisplayCount() {
259
+ // Dot mode does not show any number.
260
+ if (this.dot) {
261
+ return null;
262
+ }
263
+ // String counts are displayed as-is.
264
+ if (typeof this.count === 'string') {
265
+ return this.count;
266
+ }
267
+ // Numeric counts respect overflowCount.
268
+ if (typeof this.count === 'number') {
269
+ if (this.count > this.overflowCount) {
270
+ return `${this.overflowCount}+`;
271
+ }
272
+ return this.count;
273
+ }
274
+ return null;
275
+ }
276
+ /**
277
+ * Compute inline offset styles for indicator.
278
+ * @returns Record<string, string>
279
+ * @example
280
+ * <x-badge offset={[8, -4]} count={1}></x-badge>
281
+ */
282
+ getOffsetStyle() {
283
+ if (!this.offset) {
284
+ return {};
285
+ }
286
+ const [left, top] = this.offset;
287
+ const leftValue = typeof left === 'number' ? `${left}px` : left;
288
+ const topValue = typeof top === 'number' ? `${top}px` : top;
289
+ return {
290
+ marginTop: topValue,
291
+ right: `calc(-100% + ${leftValue})`,
292
+ };
293
+ }
294
+ /**
295
+ * Compute custom color styles for indicator.
296
+ * @returns Record<string, string>
297
+ * @example
298
+ * <x-badge color="#52c41a" count={1}></x-badge>
299
+ */
300
+ getColorStyle() {
301
+ if (!this.color) {
302
+ return {};
303
+ }
304
+ // Preset colors use CSS classes instead of inline styles.
305
+ if (this.isPresetColor(this.color)) {
306
+ return {};
307
+ }
308
+ return {
309
+ background: this.color,
310
+ '--x-badge-color': this.color,
311
+ };
312
+ }
313
+ /**
314
+ * Decide if the badge indicator should be hidden.
315
+ * @returns boolean
316
+ * @example
317
+ * <x-badge count={0} showZero={false}></x-badge>
318
+ */
319
+ isHidden() {
320
+ const count = typeof this.count === 'number' ? this.count : null;
321
+ const isZero = count === 0 || count === null;
322
+ // Show if dot mode
323
+ if (this.dot) {
324
+ return false;
325
+ }
326
+ // Show if count is string (like "new")
327
+ if (typeof this.count === 'string') {
328
+ return false;
329
+ }
330
+ // Hide if zero and showZero is false
331
+ if (isZero && !this.showZero) {
332
+ return true;
333
+ }
334
+ return false;
335
+ }
336
+ /**
337
+ * Render status-style badge with dot and optional text.
338
+ * @returns JSX.Element
339
+ * @example
340
+ * <x-badge status="success" text="Done"></x-badge>
341
+ */
342
+ renderStatusBadge() {
343
+ const dotStyle = this.getColorStyle();
344
+ return (index.h(index.Host, { class: {
345
+ 'x-badge': true,
346
+ 'x-badge-status': true,
347
+ [this.classNames?.root || '']: !!this.classNames?.root,
348
+ }, style: this.styles?.root ? { cssText: this.styles.root } : undefined }, index.h("span", { class: {
349
+ 'x-badge-status-dot': true,
350
+ [`x-badge-status-${this.status}`]: !!this.status,
351
+ [`x-badge-color-${this.color}`]: !!this.color && this.isPresetColor(this.color),
352
+ [this.classNames?.indicator || '']: !!this.classNames?.indicator,
353
+ }, style: {
354
+ ...dotStyle,
355
+ ...(this.styles?.indicator ? { cssText: this.styles.indicator } : {}),
356
+ } }), this.text && index.h("span", { class: "x-badge-status-text" }, this.text)));
357
+ }
358
+ /**
359
+ * Render badge in count/dot mode or status mode.
360
+ *
361
+ * Flow:
362
+ * 1. If `status` prop is present, calls `renderStatusBadge` (standalone dot with text).
363
+ * 2. Otherwise (Count/Dot mode):
364
+ * - Calculates `displayCount` and `isHidden` status.
365
+ * - Renders host element with classes indicating wrapper mode (`hasChildren`).
366
+ * - Projects slot content.
367
+ * - If not hidden, renders `<sup>` element for the badge:
368
+ * - Applies classes for dot, count, size, color.
369
+ * - Applies offset styles.
370
+ *
371
+ * @returns JSX.Element
372
+ * @example
373
+ * <x-badge count={5}><button>Inbox</button></x-badge>
374
+ */
375
+ render() {
376
+ // Status Badge mode
377
+ if (this.status) {
378
+ return this.renderStatusBadge();
379
+ }
380
+ const displayCount = this.getDisplayCount();
381
+ const isHidden = this.isHidden();
382
+ const offsetStyle = this.getOffsetStyle();
383
+ const colorStyle = this.getColorStyle();
384
+ const titleText = this.badgeTitle ?? (typeof this.count === 'number' ? String(this.count) : undefined);
385
+ return (index.h(index.Host, { class: {
386
+ 'x-badge': true,
387
+ 'x-badge-not-a-wrapper': !this.hasChildren,
388
+ [this.classNames?.root || '']: !!this.classNames?.root,
389
+ }, style: this.styles?.root ? { cssText: this.styles.root } : undefined }, index.h("slot", null), !isHidden && (index.h("sup", { class: {
390
+ 'x-badge-count': !this.dot,
391
+ 'x-badge-dot': this.dot,
392
+ 'x-badge-multiple-words': !this.dot && String(displayCount || '').length > 1,
393
+ 'x-badge-count-sm': this.size === 'small',
394
+ [`x-badge-color-${this.color}`]: !!this.color && this.isPresetColor(this.color),
395
+ [this.classNames?.indicator || '']: !!this.classNames?.indicator,
396
+ }, style: {
397
+ ...offsetStyle,
398
+ ...colorStyle,
399
+ ...(this.styles?.indicator ? { cssText: this.styles.indicator } : {}),
400
+ }, title: titleText }, displayCount))));
401
+ }
402
+ static get watchers() { return {
403
+ "count": [{
404
+ "countChanged": 0
405
+ }]
406
+ }; }
407
+ };
408
+ XBadge.style = xBadgeCss();
409
+
410
+ 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))}`;
411
+
412
+ const XFloatButton = class {
413
+ constructor(hostRef) {
414
+ index.registerInstance(this, hostRef);
415
+ this.xClick = index.createEvent(this, "xClick", 7);
416
+ }
417
+ /**
418
+ * Text or other element to display in the tooltip
419
+ * @example
420
+ * <x-float-button tooltip="Help"></x-float-button>
421
+ */
422
+ tooltip;
423
+ /**
424
+ * The type of the button
425
+ * @example
426
+ * <x-float-button type="primary"></x-float-button>
427
+ */
428
+ type = 'default';
429
+ /**
430
+ * The shape of the button
431
+ * @example
432
+ * <x-float-button shape="square"></x-float-button>
433
+ */
434
+ shape = 'circle';
435
+ /**
436
+ * The target of the link
437
+ * @example
438
+ * <x-float-button href="/docs"></x-float-button>
439
+ */
440
+ href;
441
+ /**
442
+ * The target attribute of the link
443
+ * @example
444
+ * <x-float-button href="https://example.com" target="_blank"></x-float-button>
445
+ */
446
+ target;
447
+ /**
448
+ * Description text
449
+ * @example
450
+ * <x-float-button description="Support"></x-float-button>
451
+ */
452
+ description;
453
+ /**
454
+ * Emitted when the button is clicked
455
+ * @example
456
+ * <x-float-button onXClick={(ev) => console.log(ev.detail)}></x-float-button>
457
+ */
458
+ xClick;
459
+ handleClick = (ev) => {
460
+ this.xClick.emit(ev);
461
+ };
462
+ /**
463
+ * Render float button with optional link and tooltip.
464
+ *
465
+ * Flow:
466
+ * 1. Determines tag type: `a` if href exists, otherwise `button`.
467
+ * 2. Constructs classes based on type (primary/default) and shape.
468
+ * 3. Renders button content:
469
+ * - Icon slot.
470
+ * - Description (if present).
471
+ * 4. Wraps in Host with `title` attribute for native tooltip.
472
+ *
473
+ * @returns JSX.Element
474
+ * @example
475
+ * <x-float-button tooltip="Top">
476
+ * <x-icon slot="icon" name="arrow_upward"></x-icon>
477
+ * </x-float-button>
478
+ */
479
+ render() {
480
+ const { type, shape, href, target, description, tooltip } = this;
481
+ const classes = {
482
+ 'x-float-btn': true,
483
+ [`x-float-btn-${type}`]: true,
484
+ [`x-float-btn-${shape}`]: true,
485
+ };
486
+ const content = (index.h("div", { key: '6578a1485b4ac4435173e705e70cf11443563681', class: "x-float-btn-body" }, index.h("div", { key: '718fe35102bed51d9444c5a9726efef149e2a4fe', class: "x-float-btn-content" }, index.h("div", { key: 'dcd91a0e83f2e973c88546525aafe2c8574c582e', class: "x-float-btn-icon" }, index.h("slot", { key: '4ea0892ea7e6135a206d4fb9fecb37ff2f73f12c', name: "icon" })), description && index.h("div", { key: '080657e737995cfd8389b350c0a0ce447594762b', class: "x-float-btn-description" }, description), index.h("slot", { key: '1bb44cab04c8d259c90bf7b52ccda9e88efb4884', name: "description" }))));
487
+ const Element = href ? 'a' : 'button';
488
+ const attrs = href ? { href, target } : { type: 'button' };
489
+ return (index.h(index.Host, { key: '1141e40b36259b15c3b8b57380e9d45f6a5f0bc9', title: tooltip }, index.h(Element, { key: '18f2891c388c8473db1d693a1557731bac8fbfdf', class: classes, ...attrs, onClick: this.handleClick }, content)));
490
+ }
491
+ };
492
+ XFloatButton.style = xFloatButtonCss();
493
+
494
+ /**
495
+ * FormGroup — Tracks values & validity of a group of controls
496
+ * Mirrors Angular's FormGroup API 100%
497
+ */
498
+ class FormGroup extends abstractControl.AbstractControl {
499
+ _controls;
500
+ constructor(controls, validatorsOrOptions, asyncValidators) {
501
+ super();
502
+ this._controls = controls;
503
+ this._setParentForControls();
504
+ this._applyValidators(validatorsOrOptions, asyncValidators);
505
+ this._updateValueAndValidity({ onlySelf: true, emitEvent: false });
506
+ }
507
+ get value() {
508
+ return this._reduceValue();
509
+ }
510
+ get controls() {
511
+ return this._controls;
512
+ }
513
+ // ─── Control Management ───────────────────────────────────────
514
+ registerControl(name, control) {
515
+ if (this._controls[name])
516
+ return this._controls[name];
517
+ this._controls[name] = control;
518
+ control.parent = this;
519
+ this._updateValueAndValidity();
520
+ return control;
521
+ }
522
+ addControl(name, control, opts = {}) {
523
+ this.registerControl(name, control);
524
+ if (opts.emitEvent !== false) {
525
+ this._emitValueChange(this.value);
526
+ }
527
+ }
528
+ removeControl(name, opts = {}) {
529
+ if (this._controls[name]) {
530
+ this._controls[name].parent = null;
531
+ delete this._controls[name];
532
+ }
533
+ this._updateValueAndValidity();
534
+ if (opts.emitEvent !== false) {
535
+ this._emitValueChange(this.value);
536
+ }
537
+ }
538
+ setControl(name, control, opts = {}) {
539
+ if (this._controls[name]) {
540
+ this._controls[name].parent = null;
541
+ }
542
+ this._controls[name] = control;
543
+ control.parent = this;
544
+ this._updateValueAndValidity();
545
+ if (opts.emitEvent !== false) {
546
+ this._emitValueChange(this.value);
547
+ }
548
+ }
549
+ contains(controlName) {
550
+ return controlName in this._controls && this._controls[controlName].enabled;
551
+ }
552
+ // ─── Value Operations ─────────────────────────────────────────
553
+ setValue(value, options = {}) {
554
+ this._checkAllValuesPresent(value);
555
+ Object.keys(value).forEach(name => {
556
+ this._throwIfControlMissing(name);
557
+ this._controls[name].setValue(value[name], {
558
+ onlySelf: true,
559
+ emitEvent: options.emitEvent
560
+ });
561
+ });
562
+ this._updateValueAndValidity(options);
563
+ if (options.emitEvent !== false) {
564
+ this._emitValueChange(this.value);
565
+ }
566
+ }
567
+ patchValue(value, options = {}) {
568
+ Object.keys(value).forEach(name => {
569
+ if (this._controls[name]) {
570
+ this._controls[name].patchValue(value[name], {
571
+ onlySelf: true,
572
+ emitEvent: options.emitEvent
573
+ });
574
+ }
575
+ });
576
+ this._updateValueAndValidity(options);
577
+ if (options.emitEvent !== false) {
578
+ this._emitValueChange(this.value);
579
+ }
580
+ }
581
+ reset(value, options = {}) {
582
+ this._forEachChild((control, name) => {
583
+ control.reset(value ? value[name] : undefined, { onlySelf: true, emitEvent: options.emitEvent });
584
+ });
585
+ this.markAsPristine(options);
586
+ this.markAsUntouched(options);
587
+ this._updateValueAndValidity(options);
588
+ }
589
+ getRawValue() {
590
+ return this._reduceChildren({}, (acc, control, name) => {
591
+ acc[name] = control.getRawValue();
592
+ return acc;
593
+ });
594
+ }
595
+ // ─── Internal ────────────────────────────────────────────────
596
+ _runValidation() {
597
+ if (this._status === 'DISABLED')
598
+ return;
599
+ this._status = this._computeStatus();
600
+ const groupErrors = this._runValidators(this.value);
601
+ const childErrors = this._collectChildErrors();
602
+ const errors = { ...(childErrors || {}), ...(groupErrors || {}) };
603
+ this._errors = Object.keys(errors).length ? errors : null;
604
+ this._status = this._calculateStatus();
605
+ }
606
+ _computeStatus() {
607
+ if (this._anyControlsHaveStatus('INVALID'))
608
+ return 'INVALID';
609
+ if (this._anyControlsHaveStatus('PENDING'))
610
+ return 'PENDING';
611
+ return 'VALID';
612
+ }
613
+ _collectChildErrors() {
614
+ return null; // group-level: child errors are surfaced via controls themselves
615
+ }
616
+ _anyControlsHaveStatus(status) {
617
+ return Object.values(this._controls).some((c) => c.status === status);
618
+ }
619
+ _forEachChild(fn) {
620
+ Object.keys(this._controls).forEach(name => fn(this._controls[name], name));
621
+ }
622
+ _anyControls(condition) {
623
+ return Object.values(this._controls).some((c) => condition(c));
624
+ }
625
+ _reduceValue() {
626
+ return this._reduceChildren({}, (acc, control, name) => {
627
+ if (control.enabled || this.disabled)
628
+ acc[name] = control.value;
629
+ return acc;
630
+ });
631
+ }
632
+ _reduceChildren(initValue, fn) {
633
+ let res = initValue;
634
+ this._forEachChild((control, name) => { res = fn(res, control, name); });
635
+ return res;
636
+ }
637
+ _setParentForControls() {
638
+ this._forEachChild((control) => { control.parent = this; });
639
+ }
640
+ _checkAllValuesPresent(value) {
641
+ this._forEachChild((_control, name) => {
642
+ if (!(name in value)) {
643
+ throw new Error(`Must supply a value for form control with name: '${name}'.`);
644
+ }
645
+ });
646
+ }
647
+ _throwIfControlMissing(name) {
648
+ if (!Object.keys(this._controls).length) {
649
+ throw new Error(`There are no form controls registered with this group yet.`);
650
+ }
651
+ if (!this._controls[name]) {
652
+ throw new Error(`Cannot find form control with name: ${name}.`);
653
+ }
654
+ }
655
+ }
656
+
657
+ 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}`;
658
+
659
+ const XForm = class {
660
+ constructor(hostRef) {
661
+ index.registerInstance(this, hostRef);
662
+ this.xFinish = index.createEvent(this, "xFinish", 7);
663
+ this.xFinishFailed = index.createEvent(this, "xFinishFailed", 7);
664
+ }
665
+ /**
666
+ * Form layout
667
+ * @example
668
+ * <x-form layout="vertical"></x-form>
669
+ */
670
+ layout = 'horizontal';
671
+ /**
672
+ * The name of the form
673
+ * @example
674
+ * <x-form name="profile"></x-form>
675
+ */
676
+ name;
677
+ /**
678
+ * Whether to show colon after label
679
+ * @example
680
+ * <x-form colon={false}></x-form>
681
+ */
682
+ colon = true;
683
+ /**
684
+ * Form size
685
+ * @example
686
+ * <x-form size="small"></x-form>
687
+ */
688
+ size = 'middle';
689
+ /**
690
+ * Form instance
691
+ */
692
+ form;
693
+ /**
694
+ * Initial values of form
695
+ */
696
+ initialValues;
697
+ /**
698
+ * Hide required mark of all form items
699
+ */
700
+ hideRequiredMark = false;
701
+ /**
702
+ * Trigger after submitting the form and verifying data successfully
703
+ */
704
+ xFinish;
705
+ /**
706
+ * Trigger after submitting the form and verifying data failed
707
+ */
708
+ xFinishFailed;
709
+ /**
710
+ * Submit the form
711
+ */
712
+ async submit() {
713
+ if (this.form) {
714
+ this.form.markAllAsTouched();
715
+ if (this.form.valid) {
716
+ this.xFinish.emit(this.form.value);
717
+ }
718
+ else {
719
+ this.xFinishFailed.emit({
720
+ values: this.form.value,
721
+ errorFields: this.getErrorFields(),
722
+ outOfDate: false,
723
+ });
724
+ }
725
+ }
726
+ }
727
+ getErrorFields() {
728
+ if (!this.form)
729
+ return [];
730
+ const errorFields = [];
731
+ const controls = this.form.controls;
732
+ for (const name in controls) {
733
+ if (controls[name].invalid) {
734
+ errorFields.push({
735
+ name: [name],
736
+ errors: Object.values(controls[name].errors || {}),
737
+ });
738
+ }
739
+ }
740
+ return errorFields;
741
+ }
742
+ handleSubmit = (e) => {
743
+ e.preventDefault();
744
+ this.submit();
745
+ };
746
+ handleInitialValuesChange(newValue) {
747
+ if (this.form && newValue) {
748
+ this.form.patchValue(newValue, { emitEvent: true });
749
+ }
750
+ }
751
+ componentWillLoad() {
752
+ if (!this.form) {
753
+ this.form = new FormGroup({});
754
+ }
755
+ this.handleInitialValuesChange(this.initialValues);
756
+ }
757
+ render() {
758
+ return (index.h(index.Host, { key: 'ebb7831eae382b4924a330a515ce6fbcd5740a5e', class: {
759
+ 'x-form': true,
760
+ [`x-form-${this.layout}`]: true,
761
+ [`x-form-${this.size}`]: true,
762
+ 'x-form-hide-required-mark': this.hideRequiredMark,
763
+ } }, index.h("form", { key: 'fdce9f05232a5f9323bd10264d078cc6c6f25bcf', name: this.name, onSubmit: this.handleSubmit }, index.h("slot", { key: '12fbc506ce06538757fa6e51846108ddb886235a' }))));
764
+ }
765
+ static get watchers() { return {
766
+ "initialValues": [{
767
+ "handleInitialValuesChange": 0
768
+ }]
769
+ }; }
770
+ };
771
+ XForm.style = xFormCss();
772
+
773
+ 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}`;
774
+
775
+ const XMenu = class {
776
+ constructor(hostRef) {
777
+ index.registerInstance(this, hostRef);
778
+ this.xSelect = index.createEvent(this, "xSelect", 7);
779
+ this.xDeselect = index.createEvent(this, "xDeselect", 7);
780
+ this.xClick = index.createEvent(this, "xClick", 7);
781
+ this.xOpenChange = index.createEvent(this, "xOpenChange", 7);
782
+ }
783
+ get el() { return index.getElement(this); }
784
+ // ========================================
785
+ // PROPS
786
+ // ========================================
787
+ /**
788
+ * Type of menu: vertical, horizontal, or inline
789
+ * @example
790
+ * <x-menu mode="horizontal"></x-menu>
791
+ */
792
+ mode = 'vertical';
793
+ /**
794
+ * Color theme of the menu
795
+ * @example
796
+ * <x-menu theme="dark"></x-menu>
797
+ */
798
+ theme = 'light';
799
+ /**
800
+ * Specifies the collapsed status when menu is inline mode
801
+ * @example
802
+ * <x-menu inlineCollapsed></x-menu>
803
+ */
804
+ inlineCollapsed = false;
805
+ /**
806
+ * Indent (in pixels) of inline menu items on each level
807
+ * @example
808
+ * <x-menu inlineIndent={32}></x-menu>
809
+ */
810
+ inlineIndent = 24;
811
+ /**
812
+ * Array with the keys of default selected menu items
813
+ * @example
814
+ * <x-menu defaultSelectedKeys={['home']}></x-menu>
815
+ */
816
+ defaultSelectedKeys = [];
817
+ /**
818
+ * Array with the keys of currently selected menu items (controlled)
819
+ * @example
820
+ * <x-menu selectedKeys={['settings']}></x-menu>
821
+ */
822
+ selectedKeys;
823
+ /**
824
+ * Array with the keys of default opened sub-menus
825
+ * @example
826
+ * <x-menu defaultOpenKeys={['sub-1']}></x-menu>
827
+ */
828
+ defaultOpenKeys = [];
829
+ /**
830
+ * Array with the keys of currently opened sub-menus (controlled)
831
+ * @example
832
+ * <x-menu openKeys={['sub-1']}></x-menu>
833
+ */
834
+ openKeys;
835
+ /**
836
+ * Allows selection of multiple items
837
+ * @example
838
+ * <x-menu multiple></x-menu>
839
+ */
840
+ multiple = false;
841
+ /**
842
+ * Allows selecting menu items
843
+ * @example
844
+ * <x-menu selectable={false}></x-menu>
845
+ */
846
+ selectable = true;
847
+ /**
848
+ * Which action can trigger submenu open/close
849
+ * @example
850
+ * <x-menu triggerSubMenuAction="click"></x-menu>
851
+ */
852
+ triggerSubMenuAction = 'hover';
853
+ /**
854
+ * Delay time to show submenu when mouse enters (in seconds)
855
+ * @example
856
+ * <x-menu subMenuOpenDelay={0.2}></x-menu>
857
+ */
858
+ subMenuOpenDelay = 0;
859
+ /**
860
+ * Delay time to hide submenu when mouse leaves (in seconds)
861
+ * @example
862
+ * <x-menu subMenuCloseDelay={0.2}></x-menu>
863
+ */
864
+ subMenuCloseDelay = 0.1;
865
+ // ========================================
866
+ // STATE
867
+ // ========================================
868
+ internalSelectedKeys = [];
869
+ internalOpenKeys = [];
870
+ // ========================================
871
+ // EVENTS
872
+ // ========================================
873
+ /**
874
+ * Called when a menu item is selected
875
+ * @example
876
+ * <x-menu onXSelect={(ev) => console.log(ev.detail)}></x-menu>
877
+ */
878
+ xSelect;
879
+ /**
880
+ * Called when a menu item is deselected (multiple mode only)
881
+ * @example
882
+ * <x-menu onXDeselect={(ev) => console.log(ev.detail)}></x-menu>
883
+ */
884
+ xDeselect;
885
+ /**
886
+ * Called when a menu item is clicked
887
+ * @example
888
+ * <x-menu onXClick={(ev) => console.log(ev.detail)}></x-menu>
889
+ */
890
+ xClick;
891
+ /**
892
+ * Called when sub-menus are opened or closed
893
+ * @example
894
+ * <x-menu onXOpenChange={(ev) => console.log(ev.detail)}></x-menu>
895
+ */
896
+ xOpenChange;
897
+ // ========================================
898
+ // LIFECYCLE
899
+ // ========================================
900
+ componentWillLoad() {
901
+ // Initialize internal state from default props
902
+ this.internalSelectedKeys = this.selectedKeys ?? [...this.defaultSelectedKeys];
903
+ this.internalOpenKeys = this.openKeys ?? [...this.defaultOpenKeys];
904
+ }
905
+ componentDidLoad() {
906
+ this.syncChildrenProps();
907
+ }
908
+ componentDidUpdate() {
909
+ this.syncChildrenProps();
910
+ }
911
+ // ========================================
912
+ // WATCHERS
913
+ // ========================================
914
+ handleSelectedKeysChange(newValue) {
915
+ if (newValue !== undefined) {
916
+ this.internalSelectedKeys = [...newValue];
917
+ }
918
+ }
919
+ handleOpenKeysChange(newValue) {
920
+ if (newValue !== undefined) {
921
+ this.internalOpenKeys = [...newValue];
922
+ }
923
+ }
924
+ handlePropsChange() {
925
+ this.syncChildrenProps();
926
+ }
927
+ // ========================================
928
+ // LISTENERS
929
+ // ========================================
930
+ handleItemClick(ev) {
931
+ ev.stopPropagation();
932
+ const { key, keyPath, domEvent } = ev.detail;
933
+ // Emit click event
934
+ this.xClick.emit({ key, keyPath, domEvent });
935
+ if (!this.selectable)
936
+ return;
937
+ const currentSelected = this.getSelectedKeys();
938
+ const isSelected = currentSelected.includes(key);
939
+ if (this.multiple) {
940
+ // Multiple selection mode
941
+ // Flow:
942
+ // 1. If already selected, remove from list (deselect).
943
+ // 2. If not selected, add to list (select).
944
+ // 3. Emit appropriate event (xSelect/xDeselect).
945
+ if (isSelected) {
946
+ // Deselect
947
+ const newSelected = currentSelected.filter(k => k !== key);
948
+ this.updateSelectedKeys(newSelected);
949
+ this.xDeselect.emit({ key, keyPath, selectedKeys: newSelected, domEvent });
950
+ }
951
+ else {
952
+ // Select
953
+ const newSelected = [...currentSelected, key];
954
+ this.updateSelectedKeys(newSelected);
955
+ this.xSelect.emit({ key, keyPath, selectedKeys: newSelected, domEvent });
956
+ }
957
+ }
958
+ else {
959
+ // Single selection mode
960
+ // Flow:
961
+ // 1. If not selected, replace current selection with new key.
962
+ // 2. Emit xSelect.
963
+ if (!isSelected) {
964
+ this.updateSelectedKeys([key]);
965
+ this.xSelect.emit({ key, keyPath, selectedKeys: [key], domEvent });
966
+ }
967
+ }
968
+ }
969
+ /**
970
+ * Listens for submenu toggle events.
971
+ * Updates the open keys state and emits change event.
972
+ *
973
+ * Flow:
974
+ * 1. Stops event propagation.
975
+ * 2. Retrieves the key and target open state from the event detail.
976
+ * 3. Updates the list of open keys:
977
+ * - If opening: Appends the key to the list.
978
+ * - If closing: Filters the key out of the list.
979
+ * 4. Updates internal state and emits `xOpenChange`.
980
+ *
981
+ * @param {CustomEvent<SubmenuToggleDetail>} ev - The toggle event.
982
+ */
983
+ handleSubmenuToggle(ev) {
984
+ ev.stopPropagation();
985
+ const { key, open } = ev.detail;
986
+ const currentOpen = this.getOpenKeys();
987
+ let newOpenKeys;
988
+ if (open) {
989
+ newOpenKeys = [...currentOpen, key];
990
+ }
991
+ else {
992
+ newOpenKeys = currentOpen.filter(k => k !== key);
993
+ }
994
+ this.updateOpenKeys(newOpenKeys);
995
+ this.xOpenChange.emit({ openKeys: newOpenKeys });
996
+ }
997
+ // ========================================
998
+ // PRIVATE METHODS
999
+ // ========================================
1000
+ getSelectedKeys() {
1001
+ return this.selectedKeys ?? this.internalSelectedKeys;
1002
+ }
1003
+ getOpenKeys() {
1004
+ return this.openKeys ?? this.internalOpenKeys;
1005
+ }
1006
+ updateSelectedKeys(keys) {
1007
+ if (this.selectedKeys === undefined) {
1008
+ // Uncontrolled mode
1009
+ this.internalSelectedKeys = keys;
1010
+ }
1011
+ // In controlled mode, parent should update via prop
1012
+ }
1013
+ updateOpenKeys(keys) {
1014
+ if (this.openKeys === undefined) {
1015
+ // Uncontrolled mode
1016
+ this.internalOpenKeys = keys;
1017
+ }
1018
+ // In controlled mode, parent should update via prop
1019
+ }
1020
+ syncChildrenProps() {
1021
+ const selectedKeys = this.getSelectedKeys();
1022
+ const openKeys = this.getOpenKeys();
1023
+ const effectiveMode = this.inlineCollapsed && this.mode === 'inline' ? 'vertical' : this.mode;
1024
+ // Sync props to direct children
1025
+ // Flow:
1026
+ // 1. Iterates over assigned elements in slot.
1027
+ // 2. Sets internal props (_menuMode, _menuTheme, _selected, etc.) on items/submenus.
1028
+ // 3. This ensures children react to parent state changes (like collapse/theme).
1029
+ const syncElement = (element, level = 0) => {
1030
+ const el = element;
1031
+ const tagName = element.tagName.toLowerCase();
1032
+ if (tagName === 'x-menu-item') {
1033
+ el._menuMode = effectiveMode;
1034
+ el._menuTheme = this.theme;
1035
+ el._inlineCollapsed = this.inlineCollapsed;
1036
+ el._level = level;
1037
+ el._inlineIndent = this.inlineIndent;
1038
+ el._selected = selectedKeys.includes(el.itemKey);
1039
+ }
1040
+ else if (tagName === 'x-menu-submenu') {
1041
+ el._menuMode = effectiveMode;
1042
+ el._menuTheme = this.theme;
1043
+ el._inlineCollapsed = this.inlineCollapsed;
1044
+ el._level = level;
1045
+ el._inlineIndent = this.inlineIndent;
1046
+ el._open = openKeys.includes(el.itemKey);
1047
+ el._triggerSubMenuAction = this.triggerSubMenuAction;
1048
+ el._subMenuOpenDelay = this.subMenuOpenDelay;
1049
+ el._subMenuCloseDelay = this.subMenuCloseDelay;
1050
+ el._selectedKeys = selectedKeys;
1051
+ }
1052
+ else if (tagName === 'x-menu-item-group') {
1053
+ el._menuMode = effectiveMode;
1054
+ el._menuTheme = this.theme;
1055
+ el._inlineCollapsed = this.inlineCollapsed;
1056
+ el._level = level;
1057
+ el._inlineIndent = this.inlineIndent;
1058
+ }
1059
+ else if (tagName === 'x-menu-divider') {
1060
+ el._menuTheme = this.theme;
1061
+ el._inlineCollapsed = this.inlineCollapsed;
1062
+ }
1063
+ };
1064
+ // Get all slotted children
1065
+ const slot = this.el.shadowRoot?.querySelector('slot');
1066
+ if (slot) {
1067
+ const assignedElements = slot.assignedElements();
1068
+ assignedElements.forEach(el => syncElement(el, 0));
1069
+ }
1070
+ }
1071
+ // ========================================
1072
+ // RENDER
1073
+ // ========================================
1074
+ /**
1075
+ * Main render method for the menu component.
1076
+ *
1077
+ * Flow:
1078
+ * 1. Determines the effective mode (handles inline collapsed state becoming vertical).
1079
+ * 2. Constructs the class map for the host element based on mode and theme.
1080
+ * 3. Renders the Host element with role="menu".
1081
+ * 4. Renders a `<ul>` list container.
1082
+ * 5. Renders the default slot for menu items and submenus.
1083
+ * 6. Listens to `slotchange` to sync props to new children.
1084
+ *
1085
+ * @returns {JSX.Element} The component tree.
1086
+ */
1087
+ render() {
1088
+ const effectiveMode = this.inlineCollapsed && this.mode === 'inline' ? 'vertical' : this.mode;
1089
+ const classes = {
1090
+ 'x-menu': true,
1091
+ 'x-menu-root': true,
1092
+ [`x-menu-${effectiveMode}`]: true,
1093
+ [`x-menu-${this.theme}`]: true,
1094
+ 'x-menu-inline-collapsed': this.inlineCollapsed && this.mode === 'inline',
1095
+ };
1096
+ return (index.h(index.Host, { key: '73e2102c66edbb6c14b89dbe2610e7d24ceaa1cb', class: classes, role: "menu" }, index.h("ul", { key: '28fdce7848e9b87b008accead28389e2511d460f', class: "x-menu-list", part: "list" }, index.h("slot", { key: 'f3b676f3d37836e5360d559533508e8047fba74f', onSlotchange: () => this.syncChildrenProps() }))));
1097
+ }
1098
+ static get watchers() { return {
1099
+ "selectedKeys": [{
1100
+ "handleSelectedKeysChange": 0
1101
+ }],
1102
+ "openKeys": [{
1103
+ "handleOpenKeysChange": 0
1104
+ }],
1105
+ "mode": [{
1106
+ "handlePropsChange": 0
1107
+ }],
1108
+ "theme": [{
1109
+ "handlePropsChange": 0
1110
+ }],
1111
+ "inlineCollapsed": [{
1112
+ "handlePropsChange": 0
1113
+ }],
1114
+ "inlineIndent": [{
1115
+ "handlePropsChange": 0
1116
+ }]
1117
+ }; }
1118
+ };
1119
+ XMenu.style = xMenuCss();
1120
+
1121
+ 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))}`;
1122
+
1123
+ const XMenuItem = class {
1124
+ constructor(hostRef) {
1125
+ index.registerInstance(this, hostRef);
1126
+ this.xMenuItemClick = index.createEvent(this, "xMenuItemClick", 7);
1127
+ }
1128
+ get el() { return index.getElement(this); }
1129
+ // ========================================
1130
+ // PROPS
1131
+ // ========================================
1132
+ /**
1133
+ * Unique ID of the menu item
1134
+ * @example
1135
+ * <x-menu-item itemKey="home">Home</x-menu-item>
1136
+ */
1137
+ itemKey = '';
1138
+ /**
1139
+ * Display the danger style
1140
+ * @example
1141
+ * <x-menu-item danger>Delete</x-menu-item>
1142
+ */
1143
+ danger = false;
1144
+ /**
1145
+ * Whether menu item is disabled
1146
+ * @example
1147
+ * <x-menu-item disabled>Disabled</x-menu-item>
1148
+ */
1149
+ disabled = false;
1150
+ /**
1151
+ * Set display title for collapsed item
1152
+ * @example
1153
+ * <x-menu-item itemTitle="Dashboard">Dashboard</x-menu-item>
1154
+ */
1155
+ itemTitle;
1156
+ // ========================================
1157
+ // INTERNAL PROPS (set by parent menu)
1158
+ // ========================================
1159
+ /** @internal */
1160
+ _menuMode = 'vertical';
1161
+ /** @internal */
1162
+ _menuTheme = 'light';
1163
+ /** @internal */
1164
+ _inlineCollapsed = false;
1165
+ /** @internal */
1166
+ _level = 0;
1167
+ /** @internal */
1168
+ _inlineIndent = 24;
1169
+ /** @internal */
1170
+ _selected = false;
1171
+ /** @internal */
1172
+ _keyPath = [];
1173
+ // ========================================
1174
+ // STATE
1175
+ // ========================================
1176
+ isHovered = false;
1177
+ // ========================================
1178
+ // EVENTS
1179
+ // ========================================
1180
+ /**
1181
+ * Emitted when the menu item is clicked (internal)
1182
+ * @example
1183
+ * <x-menu-item onXMenuItemClick={(ev) => console.log(ev.detail)}>Item</x-menu-item>
1184
+ */
1185
+ xMenuItemClick;
1186
+ // ========================================
1187
+ // WATCHERS
1188
+ // ========================================
1189
+ handleSelectedChange() {
1190
+ // Force re-render when selection changes
1191
+ }
1192
+ // ========================================
1193
+ // HANDLERS
1194
+ // ========================================
1195
+ /**
1196
+ * Handle click event.
1197
+ *
1198
+ * Flow:
1199
+ * 1. Checks if disabled.
1200
+ * 2. Constructs key path including self.
1201
+ * 3. Emits `xMenuItemClick` event with key, keyPath, and original event.
1202
+ *
1203
+ * @param e - Mouse event.
1204
+ */
1205
+ handleClick = (e) => {
1206
+ if (this.disabled) {
1207
+ e.preventDefault();
1208
+ e.stopPropagation();
1209
+ return;
1210
+ }
1211
+ const keyPath = [...this._keyPath, this.itemKey];
1212
+ this.xMenuItemClick.emit({
1213
+ key: this.itemKey,
1214
+ keyPath,
1215
+ domEvent: e
1216
+ });
1217
+ };
1218
+ handleMouseEnter = () => {
1219
+ if (!this.disabled) {
1220
+ this.isHovered = true;
1221
+ }
1222
+ };
1223
+ handleMouseLeave = () => {
1224
+ this.isHovered = false;
1225
+ };
1226
+ // ========================================
1227
+ // RENDER
1228
+ // ========================================
1229
+ getInlinePadding() {
1230
+ if (this._menuMode === 'inline' && !this._inlineCollapsed) {
1231
+ const paddingLeft = this._level * this._inlineIndent + 16;
1232
+ return `${paddingLeft}px`;
1233
+ }
1234
+ return '';
1235
+ }
1236
+ /**
1237
+ * Render menu item content.
1238
+ *
1239
+ * Flow:
1240
+ * 1. Calculates inline padding based on level and indent (for inline mode).
1241
+ * 2. Determines collapsed state logic (level 0 vs nested).
1242
+ * 3. Constructs CSS classes for state (selected, disabled, danger, hover, mode, theme).
1243
+ * 4. Renders host element with accessibility attributes.
1244
+ * 5. Renders inner content with icon, default slot, and extra slot.
1245
+ *
1246
+ * @returns JSX.Element
1247
+ * @example
1248
+ * <x-menu-item itemKey="settings">Settings</x-menu-item>
1249
+ */
1250
+ render() {
1251
+ const paddingInlineStart = this.getInlinePadding();
1252
+ const isCollapsedLevel0 = this._inlineCollapsed && this._level === 0;
1253
+ const isCollapsedNested = this._inlineCollapsed && this._level > 0;
1254
+ const classes = {
1255
+ 'x-menu-item': true,
1256
+ 'x-menu-item-selected': this._selected,
1257
+ 'x-menu-item-disabled': this.disabled,
1258
+ 'x-menu-item-danger': this.danger,
1259
+ 'x-menu-item-hover': this.isHovered,
1260
+ 'x-menu-item-collapsed': isCollapsedLevel0,
1261
+ 'x-menu-item-collapsed-hidden': isCollapsedNested,
1262
+ [`x-menu-item-${this._menuMode}`]: true,
1263
+ [`x-menu-item-${this._menuTheme}`]: true,
1264
+ };
1265
+ const style = paddingInlineStart ? { paddingInlineStart } : {};
1266
+ return (index.h(index.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 }, index.h("div", { key: 'b27f3fb688f88c48fb3baa3f40d5251540798b6c', class: "x-menu-item-inner", style: style, part: "item" }, index.h("span", { key: '396a77ca5b7a398b27c83c2795e951ceef30cbbb', class: "x-menu-item-icon", part: "icon" }, index.h("slot", { key: 'f8b487dbc754c1098b204cfdb022aa727a17eba3', name: "icon" })), index.h("span", { key: 'e6c07cc9395b4903d66ff4ab7082cf07ee1aff8c', class: "x-menu-item-content", part: "content" }, index.h("slot", { key: 'edab4b78560ccca9d7d5288cf786915bf2b55cde' })), index.h("span", { key: 'fb72ccd1adb27052ba5205ba71e799976625e505', class: "x-menu-item-extra", part: "extra" }, index.h("slot", { key: '2dc6adf026655a2cd960eabcd9dd7494cc3fe522', name: "extra" })))));
1267
+ }
1268
+ static get watchers() { return {
1269
+ "_selected": [{
1270
+ "handleSelectedChange": 0
1271
+ }]
1272
+ }; }
1273
+ };
1274
+ XMenuItem.style = xMenuItemCss();
1275
+
1276
+ 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)}`;
1277
+
1278
+ const XResult = class {
1279
+ constructor(hostRef) {
1280
+ index.registerInstance(this, hostRef);
1281
+ }
1282
+ get el() { return index.getElement(this); }
1283
+ // ========================================
1284
+ // PROPS
1285
+ // ========================================
1286
+ /**
1287
+ * Result status, decides icons and colors.
1288
+ * @example
1289
+ * <x-result status="success"></x-result>
1290
+ */
1291
+ status = 'info';
1292
+ /**
1293
+ * The title of the result.
1294
+ * @example
1295
+ * <x-result resultTitle="Success"></x-result>
1296
+ */
1297
+ resultTitle;
1298
+ /**
1299
+ * The subTitle of the result.
1300
+ * @example
1301
+ * <x-result subTitle="All done"></x-result>
1302
+ */
1303
+ subTitle;
1304
+ /**
1305
+ * Customize class for each semantic structure.
1306
+ * @example
1307
+ * <x-result classNames={{ title: 'my-title' }}></x-result>
1308
+ */
1309
+ classNames;
1310
+ /**
1311
+ * Customize inline style for each semantic structure.
1312
+ * @example
1313
+ * <x-result styles={{ title: 'color: red;' }}></x-result>
1314
+ */
1315
+ styles;
1316
+ /**
1317
+ * Customize the icon size.
1318
+ * @example
1319
+ * <x-result iconSize={100}></x-result>
1320
+ */
1321
+ iconSize = 72;
1322
+ // ========================================
1323
+ // PRIVATE METHODS
1324
+ // ========================================
1325
+ /**
1326
+ * Renders the success icon (check-circle).
1327
+ * @returns JSX.Element - The SVG element for success status.
1328
+ */
1329
+ renderSuccessIcon() {
1330
+ return index.h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: config.getIcon('success') });
1331
+ }
1332
+ /**
1333
+ * Renders the error icon (close-circle).
1334
+ * @returns JSX.Element - The SVG element for error status.
1335
+ */
1336
+ renderErrorIcon() {
1337
+ return index.h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: config.getIcon('error') });
1338
+ }
1339
+ /**
1340
+ * Renders the info icon (exclamation-circle).
1341
+ * @returns JSX.Element - The SVG element for info status.
1342
+ */
1343
+ renderInfoIcon() {
1344
+ return index.h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: config.getIcon('info') });
1345
+ }
1346
+ /**
1347
+ * Renders the warning icon (warning triangle).
1348
+ * @returns JSX.Element - The SVG element for warning status.
1349
+ */
1350
+ renderWarningIcon() {
1351
+ return index.h("x-icon", { size: this.iconSize, fill: true, type: 'round', name: config.getIcon('warning') });
1352
+ }
1353
+ /**
1354
+ * Renders the 403 status illustration.
1355
+ * @returns JSX.Element - The SVG illustration for 403 Forbidden.
1356
+ */
1357
+ render403Icon() {
1358
+ return (index.h("svg", { class: "x-result-image", viewBox: "0 0 251 294" }, index.h("g", { fill: "none", "fill-rule": "evenodd" }, index.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" }), index.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" }), index.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" }), index.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" }), index.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" }), index.h("g", null, index.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" }), index.h("text", { fill: "#A3B1BF", "font-family": "sans-serif", "font-size": "80", "font-weight": "600", x: "70", y: "170" }, "403")))));
1359
+ }
1360
+ /**
1361
+ * Renders the 404 status illustration.
1362
+ * @returns JSX.Element - The SVG illustration for 404 Not Found.
1363
+ */
1364
+ render404Icon() {
1365
+ return (index.h("svg", { class: "x-result-image", viewBox: "0 0 252 294" }, index.h("g", { fill: "none", "fill-rule": "evenodd" }, index.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" }), index.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" }), index.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" }), index.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" }), index.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" }), index.h("g", null, index.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" }), index.h("text", { fill: "#A3B1BF", "font-family": "sans-serif", "font-size": "80", "font-weight": "600", x: "70", y: "170" }, "404")))));
1366
+ }
1367
+ /**
1368
+ * Renders the 500 status illustration.
1369
+ * @returns JSX.Element - The SVG illustration for 500 Server Error.
1370
+ */
1371
+ render500Icon() {
1372
+ return (index.h("svg", { class: "x-result-image", viewBox: "0 0 254 294" }, index.h("g", { fill: "none", "fill-rule": "evenodd" }, index.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" }), index.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" }), index.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" }), index.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" }), index.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" }), index.h("g", null, index.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" }), index.h("text", { fill: "#A3B1BF", "font-family": "sans-serif", "font-size": "80", "font-weight": "600", x: "70", y: "170" }, "500")))));
1373
+ }
1374
+ /**
1375
+ * Selects and renders the appropriate icon based on the `status` prop.
1376
+ *
1377
+ * Flow:
1378
+ * 1. Constructs class and style maps for the icon container.
1379
+ * 2. Switches on `this.status` to determine which SVG/Illustration to render.
1380
+ * - Supports 'success', 'error', 'warning', 'info', '403', '404', '500'.
1381
+ * 3. Wraps the icon in a div with proper classes.
1382
+ *
1383
+ * @returns JSX.Element - The rendered icon container.
1384
+ */
1385
+ renderIcon() {
1386
+ const iconClass = {
1387
+ 'x-result-icon': true,
1388
+ [`x-result-icon-${this.status}`]: true,
1389
+ [this.classNames?.icon || '']: !!this.classNames?.icon,
1390
+ };
1391
+ const iconStyle = this.styles?.icon ? { cssText: this.styles.icon } : undefined;
1392
+ let iconContent;
1393
+ switch (this.status) {
1394
+ case 'success':
1395
+ iconContent = this.renderSuccessIcon();
1396
+ break;
1397
+ case 'error':
1398
+ iconContent = this.renderErrorIcon();
1399
+ break;
1400
+ case 'warning':
1401
+ iconContent = this.renderWarningIcon();
1402
+ break;
1403
+ case '403':
1404
+ iconContent = this.render403Icon();
1405
+ break;
1406
+ case '404':
1407
+ iconContent = this.render404Icon();
1408
+ break;
1409
+ case '500':
1410
+ iconContent = this.render500Icon();
1411
+ break;
1412
+ case 'info':
1413
+ default:
1414
+ iconContent = this.renderInfoIcon();
1415
+ break;
1416
+ }
1417
+ return (index.h("div", { class: iconClass, style: iconStyle }, index.h("slot", { name: "icon" }, iconContent)));
1418
+ }
1419
+ /**
1420
+ * Checks if a specific slot has content assigned to it.
1421
+ *
1422
+ * @param slotName - The name of the slot to check.
1423
+ * @returns boolean - True if an element with slot="slotName" exists in children.
1424
+ */
1425
+ hasSlotContent(slotName) {
1426
+ return Array.from(this.el.children).some(child => child.getAttribute('slot') === slotName);
1427
+ }
1428
+ /**
1429
+ * Generates the class map for the host element.
1430
+ * Includes base class, status modifier, and custom root class.
1431
+ *
1432
+ * @returns Record<string, boolean> - The class map object.
1433
+ */
1434
+ getHostClasses() {
1435
+ return {
1436
+ 'x-result': true,
1437
+ [`x-result-${this.status}`]: true,
1438
+ [this.classNames?.root || '']: !!this.classNames?.root,
1439
+ };
1440
+ }
1441
+ // ========================================
1442
+ // RENDER
1443
+ // ========================================
1444
+ /**
1445
+ * Main render method for the Result component.
1446
+ *
1447
+ * Flow:
1448
+ * 1. Checks for presence of title, subtitle, extra content, and main content via props or slots.
1449
+ * 2. Renders the host element with appropriate classes and styles.
1450
+ * 3. Renders sections in order:
1451
+ * - Icon/Image
1452
+ * - Title
1453
+ * - Subtitle
1454
+ * - Extra (Action buttons)
1455
+ * - Content (Main body)
1456
+ *
1457
+ * @returns JSX.Element
1458
+ */
1459
+ render() {
1460
+ const hasTitle = this.resultTitle || this.hasSlotContent('title');
1461
+ const hasSubTitle = this.subTitle || this.hasSlotContent('subTitle');
1462
+ const hasExtra = this.hasSlotContent('extra');
1463
+ 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())));
1464
+ const hostStyle = this.styles?.root ? { cssText: this.styles.root } : undefined;
1465
+ return (index.h(index.Host, { key: '815f4027d20d5cde949e983cf3b827f71a4f94e4', class: this.getHostClasses(), style: hostStyle }, this.renderIcon(), hasTitle && (index.h("div", { key: '46263db169a9441f28b763cb5cda7398b948076d', class: {
1466
+ 'x-result-title': true,
1467
+ [this.classNames?.title || '']: !!this.classNames?.title,
1468
+ }, style: this.styles?.title ? { cssText: this.styles.title } : undefined }, index.h("slot", { key: 'aea1e4bffbbc13385cbc5578a9eb5ed2b95489e8', name: "title" }, this.resultTitle))), hasSubTitle && (index.h("div", { key: 'ebe5149df5e0767d9f9c97c3c66dd78c9179b065', class: {
1469
+ 'x-result-subtitle': true,
1470
+ [this.classNames?.subTitle || '']: !!this.classNames?.subTitle,
1471
+ }, style: this.styles?.subTitle ? { cssText: this.styles.subTitle } : undefined }, index.h("slot", { key: '6d12de2cdb988925e0ae3c1f1676026c9b027f72', name: "subTitle" }, this.subTitle))), hasExtra && (index.h("div", { key: 'ce4880488c3d2f169f70a08c557e8c0d36920030', class: {
1472
+ 'x-result-extra': true,
1473
+ [this.classNames?.extra || '']: !!this.classNames?.extra,
1474
+ }, style: this.styles?.extra ? { cssText: this.styles.extra } : undefined }, index.h("slot", { key: 'aabf4df9d72924b0ddc23df5fad6af5cca7f2e8d', name: "extra" }))), hasContent && (index.h("div", { key: 'f54e568aec6abad6c31c5c3858bbd854708aa2f1', class: {
1475
+ 'x-result-content': true,
1476
+ [this.classNames?.content || '']: !!this.classNames?.content,
1477
+ }, style: this.styles?.content ? { cssText: this.styles.content } : undefined }, index.h("slot", { key: 'd47bd66d66453c5a576142ddbb1c6ad6f2036e95' })))));
1478
+ }
1479
+ };
1480
+ XResult.style = xResultCss();
1481
+
1482
+ 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))}`;
1483
+
1484
+ const XSelectOption = class {
1485
+ constructor(hostRef) {
1486
+ index.registerInstance(this, hostRef);
1487
+ }
1488
+ get el() { return index.getElement(this); }
1489
+ /**
1490
+ * Whether the option is disabled.
1491
+ * @example
1492
+ * <x-select-option disabled></x-select-option>
1493
+ */
1494
+ disabled = false;
1495
+ /**
1496
+ * The value of the option.
1497
+ * @example
1498
+ * <x-select-option value="us"></x-select-option>
1499
+ */
1500
+ value;
1501
+ /**
1502
+ * The label of the option (used for display in the select box when selected)
1503
+ * If not provided, will try to use the text content.
1504
+ * @example
1505
+ * <x-select-option label="United States"></x-select-option>
1506
+ */
1507
+ label;
1508
+ /**
1509
+ * Title attribute.
1510
+ * @example
1511
+ * <x-select-option optionTitle="Tooltip"></x-select-option>
1512
+ */
1513
+ optionTitle;
1514
+ /**
1515
+ * Internal: whether this option is selected.
1516
+ */
1517
+ selected = false;
1518
+ /**
1519
+ * Internal: whether this option is active (hovered/focused via keyboard).
1520
+ */
1521
+ active = false;
1522
+ /**
1523
+ * Renders the Select Option component.
1524
+ *
1525
+ * Flow:
1526
+ * 1. Applies classes based on state (selected, active, disabled).
1527
+ * 2. Sets ARIA roles for accessibility.
1528
+ * 3. Renders the option content (projected via slot).
1529
+ * 4. Renders a checkmark icon if the option is selected.
1530
+ *
1531
+ * @returns JSX.Element - The host element representing an option.
1532
+ */
1533
+ render() {
1534
+ return (index.h(index.Host, { key: 'b75e12cc85f999090a9d9eb574c1b43aa6ae9efa', class: {
1535
+ 'x-select-option': true,
1536
+ 'x-select-option-selected': this.selected,
1537
+ 'x-select-option-active': this.active,
1538
+ 'x-select-option-disabled': this.disabled,
1539
+ }, title: this.optionTitle, role: "option", "aria-selected": this.selected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }, index.h("div", { key: '3d1c1ae207aa4b141397b85bfd125f8e2f3a5f44', class: "x-select-option-content" }, index.h("slot", { key: 'dbce7dfb1f1191b5d5c7ef8dde91cdfecf09d835' })), this.selected && (index.h("div", { key: 'd21e3a536ab6cf8620e23980c7b8190c3d136d58', class: "x-select-option-state" }, index.h("span", { key: '7af063874895dac03505c74ad8170c2a0a1d167b', role: "img", "aria-label": "check", class: "anticon anticon-check x-select-selected-icon" }, index.h("svg", { key: '075e667053ece6734193ca634fa45fa7e6696789', viewBox: "64 64 896 896", focusable: "false", "data-icon": "check", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, index.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" }), index.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" }), index.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" })))))));
1540
+ }
1541
+ };
1542
+ XSelectOption.style = xSelectOptionCss();
1543
+
1544
+ 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)}`;
1545
+
1546
+ /* eslint-disable @typescript-eslint/no-inferrable-types */
1547
+ // Preset colors list
1548
+ const PRESET_COLORS = [
1549
+ 'magenta', 'red', 'volcano', 'orange', 'gold', 'lime', 'green',
1550
+ 'cyan', 'blue', 'geekblue', 'purple', 'pink'
1551
+ ];
1552
+ // Status colors
1553
+ const STATUS_COLORS = ['success', 'processing', 'error', 'warning', 'default'];
1554
+ const XTag = class {
1555
+ constructor(hostRef) {
1556
+ index.registerInstance(this, hostRef);
1557
+ this.xClose = index.createEvent(this, "xClose", 7);
1558
+ this.xClick = index.createEvent(this, "xClick", 7);
1559
+ }
1560
+ get el() { return index.getElement(this); }
1561
+ // ========================================
1562
+ // PROPS
1563
+ // ========================================
1564
+ /**
1565
+ * Whether the Tag can be closed.
1566
+ * @example
1567
+ * <x-tag closable>Closable</x-tag>
1568
+ */
1569
+ closable = false;
1570
+ /**
1571
+ * Custom close icon. Set to null or false to hide close button.
1572
+ * @example
1573
+ * <x-tag closable closeIcon={false}></x-tag>
1574
+ */
1575
+ closeIcon = true;
1576
+ /**
1577
+ * Color of the Tag (preset color or custom hex/rgb).
1578
+ * @example
1579
+ * <x-tag color="magenta"></x-tag>
1580
+ */
1581
+ color;
1582
+ /**
1583
+ * Whether the Tag is disabled.
1584
+ * @example
1585
+ * <x-tag disabled></x-tag>
1586
+ */
1587
+ disabled = false;
1588
+ /**
1589
+ * The address to jump when clicking (renders as <a> tag).
1590
+ * @example
1591
+ * <x-tag href="/docs" target="_blank">Docs</x-tag>
1592
+ */
1593
+ href;
1594
+ /**
1595
+ * Target for href link.
1596
+ * @example
1597
+ * <x-tag href="/docs" target="_blank">Docs</x-tag>
1598
+ */
1599
+ target;
1600
+ /**
1601
+ * Whether the Tag is visible.
1602
+ * @example
1603
+ * <x-tag visible={false}></x-tag>
1604
+ */
1605
+ visible = true;
1606
+ /**
1607
+ * Variant style of the tag: outlined (default), filled, or solid.
1608
+ * @example
1609
+ * <x-tag variant="solid" color="green"></x-tag>
1610
+ */
1611
+ variant = 'outlined';
1612
+ /**
1613
+ * Whether the tag is bordered.
1614
+ * @example
1615
+ * <x-tag bordered={false}></x-tag>
1616
+ */
1617
+ bordered = true;
1618
+ // ========================================
1619
+ // STATE
1620
+ // ========================================
1621
+ /**
1622
+ * Whether tag is in closing animation.
1623
+ */
1624
+ isClosing = false;
1625
+ // ========================================
1626
+ // EVENTS
1627
+ // ========================================
1628
+ /**
1629
+ * Callback executed when tag is closed.
1630
+ * @example
1631
+ * <x-tag closable onXClose={(ev) => console.log(ev.detail)}></x-tag>
1632
+ */
1633
+ xClose;
1634
+ /**
1635
+ * Callback when tag is clicked.
1636
+ * @example
1637
+ * <x-tag onXClick={(ev) => console.log(ev.detail)}></x-tag>
1638
+ */
1639
+ xClick;
1640
+ // ========================================
1641
+ // PRIVATE METHODS
1642
+ // ========================================
1643
+ /**
1644
+ * Handles the close interaction to hide the tag.
1645
+ *
1646
+ * Flow:
1647
+ * 1. Stops event propagation.
1648
+ * 2. Checks if disabled; if so, returns.
1649
+ * 3. Emits `xClose` event with the mouse event.
1650
+ * 4. If the event was not prevented by the consumer:
1651
+ * - Sets `isClosing` to true to trigger exit animation.
1652
+ * - Uses `setTimeout` to wait for animation to finish.
1653
+ * - Sets `visible` to false, removing the tag from view.
1654
+ *
1655
+ * @param e - The mouse event from the close button.
1656
+ */
1657
+ handleClose = (e) => {
1658
+ e.stopPropagation();
1659
+ if (this.disabled)
1660
+ return;
1661
+ // Emit event with original event.
1662
+ this.xClose.emit(e);
1663
+ // If not prevented, hide the tag after animation.
1664
+ if (!e.defaultPrevented) {
1665
+ this.isClosing = true;
1666
+ // Wait for animation
1667
+ setTimeout(() => {
1668
+ this.visible = false;
1669
+ }, 200);
1670
+ }
1671
+ };
1672
+ /**
1673
+ * Handles click events on the tag itself.
1674
+ * Emits `xClick` if not disabled.
1675
+ *
1676
+ * @param e - The mouse event.
1677
+ */
1678
+ handleClick = (e) => {
1679
+ if (this.disabled)
1680
+ return;
1681
+ this.xClick.emit(e);
1682
+ };
1683
+ /**
1684
+ * Checks if the current color is one of the predefined preset colors.
1685
+ * @returns {boolean} True if the color is a preset.
1686
+ */
1687
+ isPresetColor() {
1688
+ return !!this.color && PRESET_COLORS.includes(this.color);
1689
+ }
1690
+ /**
1691
+ * Checks if the current color is one of the predefined status colors.
1692
+ * @returns {boolean} True if the color is a status color.
1693
+ */
1694
+ isStatusColor() {
1695
+ return !!this.color && STATUS_COLORS.includes(this.color);
1696
+ }
1697
+ /**
1698
+ * Checks if the current color is a custom color (e.g., hex or rgb)
1699
+ * that is not part of the preset or status color sets.
1700
+ * @returns {boolean} True if the color is a custom color.
1701
+ */
1702
+ isCustomColor() {
1703
+ return !!this.color && !this.isPresetColor() && !this.isStatusColor();
1704
+ }
1705
+ /**
1706
+ * Returns a style object for custom colors, adjusting background, border,
1707
+ * and text colors based on the tag's variant.
1708
+ * @returns {Object} An object with CSS property-value pairs.
1709
+ */
1710
+ getCustomStyle() {
1711
+ if (!this.isCustomColor())
1712
+ return {};
1713
+ const style = {};
1714
+ if (this.variant === 'solid') {
1715
+ // Solid: dark background, white text
1716
+ style.backgroundColor = this.color;
1717
+ style.borderColor = this.color;
1718
+ style.color = '#fff';
1719
+ }
1720
+ else if (this.variant === 'filled') {
1721
+ // Filled: light background (we can't auto-lighten, so use same as solid)
1722
+ style.backgroundColor = this.color;
1723
+ style.borderColor = 'transparent';
1724
+ style.color = '#fff';
1725
+ }
1726
+ else {
1727
+ // Outlined (default): transparent bg, colored border & text
1728
+ style.borderColor = this.color;
1729
+ style.color = this.color;
1730
+ style.backgroundColor = 'transparent';
1731
+ }
1732
+ return style;
1733
+ }
1734
+ // ========================================
1735
+ // RENDER
1736
+ // ========================================
1737
+ /**
1738
+ * Renders the close icon if the tag is configured to be closable.
1739
+ * @returns {JSX.Element | null} The close icon element or null if not closable.
1740
+ */
1741
+ renderCloseIcon() {
1742
+ if (!this.closable || this.closeIcon === false)
1743
+ return null;
1744
+ return (index.h("span", { class: "x-tag-close-icon", onClick: this.handleClose, role: "button", tabindex: this.disabled ? -1 : 0, "aria-label": "close" }, index.h("x-icon", { name: config.getIcon('close') })));
1745
+ }
1746
+ /**
1747
+ * Calculates the CSS classes for the tag based on its properties and state.
1748
+ * @returns {Object} An object mapping class names to boolean values.
1749
+ */
1750
+ getHostClasses() {
1751
+ const isPreset = this.isPresetColor();
1752
+ const isStatus = this.isStatusColor();
1753
+ const isCustom = this.isCustomColor();
1754
+ return {
1755
+ 'x-tag': true,
1756
+ 'x-tag-hidden': !this.visible,
1757
+ 'x-tag-closing': this.isClosing,
1758
+ 'x-tag-disabled': this.disabled,
1759
+ 'x-tag-borderless': !this.bordered,
1760
+ [`x-tag-${this.variant}`]: true,
1761
+ [`x-tag-${this.color}`]: isPreset || isStatus,
1762
+ 'x-tag-has-color': isCustom,
1763
+ 'x-tag-closable': this.closable,
1764
+ };
1765
+ }
1766
+ /**
1767
+ * Renders the Tag component.
1768
+ *
1769
+ * Flow:
1770
+ * 1. Checks `visible` state; if false, renders nothing.
1771
+ * 2. Determines tag element type: `<a>` if `href` is present, otherwise `<span>`.
1772
+ * 3. Calculates host classes based on props (color, variant, bordered, closable).
1773
+ * 4. Calculates custom styles for non-preset colors.
1774
+ * 5. Renders:
1775
+ * - Icon slot.
1776
+ * - Main content wrapper (text/children).
1777
+ * - Close icon (if `closable` is true).
1778
+ *
1779
+ * @returns JSX.Element | null
1780
+ */
1781
+ render() {
1782
+ if (!this.visible)
1783
+ return null;
1784
+ const TagElement = this.href ? 'a' : 'span';
1785
+ const linkProps = this.href ? { href: this.href, target: this.target } : {};
1786
+ return (index.h(index.Host, { class: this.getHostClasses(), style: this.getCustomStyle(), onClick: this.handleClick }, index.h("slot", { name: "icon" }), index.h(TagElement, { class: "x-tag-content", ...linkProps }, index.h("slot", null)), this.renderCloseIcon()));
1787
+ }
1788
+ };
1789
+ XTag.style = xTagCss();
1790
+
1791
+ 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}`;
1792
+
1793
+ const XTextarea = class {
1794
+ constructor(hostRef) {
1795
+ index.registerInstance(this, hostRef);
1796
+ this.xChange = index.createEvent(this, "xChange", 7);
1797
+ this.xInput = index.createEvent(this, "xInput", 7);
1798
+ this.xPressEnter = index.createEvent(this, "xPressEnter", 7);
1799
+ this.xResize = index.createEvent(this, "xResize", 7);
1800
+ }
1801
+ get el() { return index.getElement(this); }
1802
+ /**
1803
+ * If allow to remove input content with clear icon
1804
+ * @example
1805
+ * <x-textarea allowClear></x-textarea>
1806
+ */
1807
+ allowClear = false;
1808
+ /**
1809
+ * Height autosize feature, can be set to true | false or an object { minRows: 2, maxRows: 6 }
1810
+ * @example
1811
+ * <x-textarea autoSize={{ minRows: 2, maxRows: 6 }}></x-textarea>
1812
+ */
1813
+ autoSize = false;
1814
+ /**
1815
+ * Whether has border style
1816
+ * @example
1817
+ * <x-textarea bordered={false}></x-textarea>
1818
+ */
1819
+ bordered = true;
1820
+ /**
1821
+ * The initial input content
1822
+ * @example
1823
+ * <x-textarea defaultValue="hello"></x-textarea>
1824
+ */
1825
+ defaultValue = '';
1826
+ /**
1827
+ * Whether the input is disabled
1828
+ * @example
1829
+ * <x-textarea disabled></x-textarea>
1830
+ */
1831
+ disabled = false;
1832
+ /**
1833
+ * The max length
1834
+ * @example
1835
+ * <x-textarea maxLength={200}></x-textarea>
1836
+ */
1837
+ maxLength;
1838
+ /**
1839
+ * Whether show text count
1840
+ * @example
1841
+ * <x-textarea showCount></x-textarea>
1842
+ */
1843
+ showCount = false;
1844
+ /**
1845
+ * Set validation status
1846
+ * @example
1847
+ * <x-textarea status="error"></x-textarea>
1848
+ */
1849
+ status;
1850
+ /**
1851
+ * The input content
1852
+ * @example
1853
+ * <x-textarea value="demo"></x-textarea>
1854
+ */
1855
+ value;
1856
+ /**
1857
+ * Placeholder
1858
+ * @example
1859
+ * <x-textarea placeholder="Type here"></x-textarea>
1860
+ */
1861
+ placeholder;
1862
+ /**
1863
+ * Rows
1864
+ * @example
1865
+ * <x-textarea rows={4}></x-textarea>
1866
+ */
1867
+ rows = 2;
1868
+ /**
1869
+ * Focus state.
1870
+ */
1871
+ focused = false;
1872
+ /**
1873
+ * Emitted when value changes.
1874
+ * @example
1875
+ * <x-textarea onXChange={(ev) => console.log(ev.detail)}></x-textarea>
1876
+ */
1877
+ xChange;
1878
+ /**
1879
+ * Emitted on input.
1880
+ * @example
1881
+ * <x-textarea onXInput={(ev) => console.log(ev.detail)}></x-textarea>
1882
+ */
1883
+ xInput;
1884
+ /**
1885
+ * Emitted when pressing Enter.
1886
+ * @example
1887
+ * <x-textarea onXPressEnter={(ev) => console.log(ev.key)}></x-textarea>
1888
+ */
1889
+ xPressEnter;
1890
+ /**
1891
+ * Emitted when textarea resizes.
1892
+ * @example
1893
+ * <x-textarea onXResize={(ev) => console.log(ev.detail)}></x-textarea>
1894
+ */
1895
+ xResize;
1896
+ /**
1897
+ * Component lifecycle method called before loading.
1898
+ * Initializes the internal value from `defaultValue` if `value` is undefined.
1899
+ */
1900
+ componentWillLoad() {
1901
+ if (this.value === undefined) {
1902
+ this.value = this.defaultValue;
1903
+ }
1904
+ }
1905
+ /**
1906
+ * Handles input events from the textarea element.
1907
+ *
1908
+ * Flow:
1909
+ * 1. Updates the internal `value` state with the new input value.
1910
+ * 2. Emits `xInput` event with the native input event.
1911
+ * 3. Emits `xChange` event with the new string value.
1912
+ * 4. If `autoSize` is enabled, triggers resize logic.
1913
+ *
1914
+ * @param e - The input event.
1915
+ */
1916
+ handleInput(e) {
1917
+ const target = e.target;
1918
+ this.value = target.value;
1919
+ this.xInput.emit(e);
1920
+ this.xChange.emit(this.value);
1921
+ if (this.autoSize) {
1922
+ this.resizeTextarea(target);
1923
+ }
1924
+ }
1925
+ /**
1926
+ * Resizes the textarea based on its content height.
1927
+ *
1928
+ * Flow:
1929
+ * 1. Temporarily resets height to 'auto' to correctly measure `scrollHeight`.
1930
+ * 2. Sets the height to `scrollHeight` to fit content.
1931
+ * 3. (Note: Full implementation would respect `minRows` and `maxRows` constraints here).
1932
+ *
1933
+ * @param target - The textarea element to resize.
1934
+ */
1935
+ resizeTextarea(target) {
1936
+ target.style.height = 'auto';
1937
+ target.style.height = `${target.scrollHeight}px`;
1938
+ // Logic for minRows/maxRows would go here
1939
+ }
1940
+ /**
1941
+ * Handles keydown events.
1942
+ * Emits `xPressEnter` when the Enter key is pressed.
1943
+ *
1944
+ * @param e - The keyboard event.
1945
+ */
1946
+ handleKeyDown(e) {
1947
+ if (e.key === 'Enter') {
1948
+ this.xPressEnter.emit(e);
1949
+ }
1950
+ }
1951
+ /**
1952
+ * Handles click on the clear icon.
1953
+ *
1954
+ * Flow:
1955
+ * 1. Stops event propagation to avoid triggering parent clicks.
1956
+ * 2. Resets `value` to an empty string.
1957
+ * 3. Emits `xChange` with empty string.
1958
+ *
1959
+ * @param e - The mouse event.
1960
+ */
1961
+ handleClear(e) {
1962
+ e.stopPropagation();
1963
+ this.value = '';
1964
+ this.xChange.emit('');
1965
+ }
1966
+ /**
1967
+ * Renders the Textarea component.
1968
+ *
1969
+ * Flow:
1970
+ * 1. Constructs wrapper classes based on state (disabled, focused, status, bordered).
1971
+ * 2. Renders the native `<textarea>` element with bound props and event listeners.
1972
+ * 3. Renders the clear icon if `allowClear` is true and value exists.
1973
+ * 4. Renders the character count if `showCount` is true.
1974
+ *
1975
+ * @returns JSX.Element
1976
+ */
1977
+ render() {
1978
+ return (index.h(index.Host, { key: '7336e2d3945d33f7a4ee8d18966d49c7dffff769', class: {
1979
+ 'x-textarea-wrapper': true,
1980
+ 'x-textarea-wrapper-disabled': this.disabled,
1981
+ 'x-textarea-wrapper-focused': this.focused,
1982
+ 'x-textarea-wrapper-error': this.status === 'error',
1983
+ 'x-textarea-wrapper-warning': this.status === 'warning',
1984
+ 'x-textarea-wrapper-borderless': !this.bordered,
1985
+ 'x-textarea-show-count': this.showCount,
1986
+ } }, index.h("textarea", { key: '662c51000b0f313ebba4cefe5249a32a6e4225a4', class: {
1987
+ 'x-textarea': true,
1988
+ 'disabled': this.disabled,
1989
+ }, 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 && (index.h("span", { key: '03d488cc303a172cffd64fe85f653f0f8a2620b7', class: "x-textarea-clear-icon", onClick: (e) => this.handleClear(e) }, index.h("span", { key: '88a02fb55371f35bc0a45159aee3bd324d706f7c', role: "img", "aria-label": "close-circle", class: "anticon anticon-close-circle" }, index.h("x-icon", { key: '976c1ef0428afb40a70fde38446d52952b37d57c', name: config.getIcon('clear') })))), this.showCount && (index.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}` : ''))));
1990
+ }
1991
+ };
1992
+ XTextarea.style = xTextareaCss();
1993
+
1994
+ class FlowService {
1995
+ nodes = [];
1996
+ edges = [];
1997
+ viewport = { x: 0, y: 0, zoom: 1 };
1998
+ selectedNodeIds = [];
1999
+ selectedEdgeIds = [];
2000
+ nodeValues = {};
2001
+ clipboardNodes = [];
2002
+ clipboardEdges = [];
2003
+ history = [];
2004
+ historyIndex = -1;
2005
+ listeners = [];
2006
+ constructor(initialNodes = [], initialEdges = []) {
2007
+ this.nodes = initialNodes;
2008
+ this.edges = initialEdges;
2009
+ this.saveToHistory();
2010
+ }
2011
+ subscribe(listener) {
2012
+ this.listeners.push(listener);
2013
+ return () => {
2014
+ this.listeners = this.listeners.filter(l => l !== listener);
2015
+ };
2016
+ }
2017
+ notify() {
2018
+ this.listeners.forEach(l => l());
2019
+ }
2020
+ forceLayout() {
2021
+ // Basic force layout implementation or trigger
2022
+ this.notify();
2023
+ }
2024
+ saveToHistory() {
2025
+ const last = this.history[this.historyIndex];
2026
+ if (last && JSON.stringify(last.nodes) === JSON.stringify(this.nodes) && JSON.stringify(last.edges) === JSON.stringify(this.edges))
2027
+ return;
2028
+ this.history = this.history.slice(0, this.historyIndex + 1);
2029
+ this.history.push({ nodes: JSON.parse(JSON.stringify(this.nodes)), edges: JSON.parse(JSON.stringify(this.edges)) });
2030
+ this.historyIndex = this.history.length - 1;
2031
+ if (this.history.length > 50) {
2032
+ this.history.shift();
2033
+ this.historyIndex--;
2034
+ }
2035
+ }
2036
+ undo() {
2037
+ if (this.historyIndex > 0) {
2038
+ this.historyIndex--;
2039
+ const snapshot = this.history[this.historyIndex];
2040
+ this.nodes = JSON.parse(JSON.stringify(snapshot.nodes));
2041
+ this.edges = JSON.parse(JSON.stringify(snapshot.edges));
2042
+ this.notify();
2043
+ }
2044
+ }
2045
+ redo() {
2046
+ if (this.historyIndex < this.history.length - 1) {
2047
+ this.historyIndex++;
2048
+ const snapshot = this.history[this.historyIndex];
2049
+ this.nodes = JSON.parse(JSON.stringify(snapshot.nodes));
2050
+ this.edges = JSON.parse(JSON.stringify(snapshot.edges));
2051
+ this.notify();
2052
+ }
2053
+ }
2054
+ getNodes() { return this.nodes.filter(n => this.isNodeVisible(n.id)); }
2055
+ isNodeVisible(nodeId) {
2056
+ const node = this.nodes.find(n => n.id === nodeId);
2057
+ if (!node)
2058
+ return false;
2059
+ if (node.hidden)
2060
+ return false;
2061
+ let parent = this.nodes.find(n => n.id === node.parentId);
2062
+ while (parent) {
2063
+ if (parent.isCollapsed)
2064
+ return false;
2065
+ parent = this.nodes.find(n => n.id === parent.parentId);
2066
+ }
2067
+ return true;
2068
+ }
2069
+ getEdges() { return this.edges.filter(e => this.isNodeVisible(e.source) && this.isNodeVisible(e.target)); }
2070
+ getViewport() { return this.viewport; }
2071
+ getSelectedNodes() { return this.selectedNodeIds; }
2072
+ getSelectedEdges() { return this.selectedEdgeIds; }
2073
+ setNodes(nodes) {
2074
+ // Preserve width and height if not provided in the new array, keeping the service as the source of truth for these
2075
+ this.nodes = nodes.map(newNode => {
2076
+ const existingNode = this.nodes.find(n => n.id === newNode.id);
2077
+ if (existingNode) {
2078
+ return {
2079
+ ...newNode,
2080
+ width: newNode.width || existingNode.width,
2081
+ height: newNode.height || existingNode.height,
2082
+ shape: newNode.shape || existingNode.shape
2083
+ };
2084
+ }
2085
+ return newNode;
2086
+ });
2087
+ this.notify();
2088
+ }
2089
+ setEdges(edges) { this.edges = edges; this.notify(); }
2090
+ setViewport(viewport) { this.viewport = viewport; this.notify(); }
2091
+ updateNodeValue(nodeId, value) { this.nodeValues[nodeId] = value; this.propagate(nodeId); this.notify(); }
2092
+ propagate(nodeId) {
2093
+ const value = this.nodeValues[nodeId];
2094
+ this.edges.filter(e => e.source === nodeId).forEach(edge => {
2095
+ if (this.nodes.find(n => n.id === edge.target))
2096
+ console.log(`Propagating from ${nodeId} to ${edge.target}:`, value);
2097
+ });
2098
+ }
2099
+ addNode(node) { this.nodes = [...this.nodes, node]; this.saveToHistory(); this.notify(); }
2100
+ updateNodePosition(nodeId, x, y, snapToGridSize = 0) {
2101
+ const node = this.nodes.find(n => n.id === nodeId);
2102
+ if (!node)
2103
+ return;
2104
+ let finalX = snapToGridSize > 0 ? Math.round(x / snapToGridSize) * snapToGridSize : x;
2105
+ let finalY = snapToGridSize > 0 ? Math.round(y / snapToGridSize) * snapToGridSize : y;
2106
+ // Boundary constraints for children
2107
+ if (node.parentId) {
2108
+ const parent = this.nodes.find(n => n.id === node.parentId);
2109
+ if (parent) {
2110
+ finalX = Math.max(0, Math.min(finalX, (parent.width || 400) - (node.width || 150)));
2111
+ finalY = Math.max(0, Math.min(finalY, (parent.height || 300) - (node.height || 48)));
2112
+ }
2113
+ }
2114
+ // Helper Line Snapping
2115
+ const threshold = 10;
2116
+ this.nodes.forEach(other => {
2117
+ if (other.id === nodeId || other.parentId === nodeId)
2118
+ return;
2119
+ if (Math.abs(finalX - other.position.x) < threshold)
2120
+ finalX = other.position.x;
2121
+ if (Math.abs(finalY - other.position.y) < threshold)
2122
+ finalY = other.position.y;
2123
+ });
2124
+ const dx = finalX - node.position.x, dy = finalY - node.position.y;
2125
+ if (dx === 0 && dy === 0)
2126
+ return;
2127
+ const idsToMove = this.selectedNodeIds.includes(nodeId) ? this.selectedNodeIds : [nodeId];
2128
+ const movedNodesSet = new Set();
2129
+ // Find all nodes in the hierarchy to move
2130
+ const nodesToUpdate = new Map();
2131
+ idsToMove.forEach(id => {
2132
+ this.collectNodesToMove(id, dx, dy, movedNodesSet, nodesToUpdate);
2133
+ });
2134
+ // Single pass update
2135
+ this.nodes = this.nodes.map(n => {
2136
+ const update = nodesToUpdate.get(n.id);
2137
+ return update ? { ...n, position: update } : n;
2138
+ });
2139
+ this.notify();
2140
+ }
2141
+ collectNodesToMove(id, dx, dy, movedNodesSet, map) {
2142
+ if (movedNodesSet.has(id))
2143
+ return;
2144
+ const node = this.nodes.find(n => n.id === id);
2145
+ if (!node)
2146
+ return;
2147
+ movedNodesSet.add(id);
2148
+ map.set(id, { x: node.position.x + dx, y: node.position.y + dy });
2149
+ this.nodes.filter(n => n.parentId === id).forEach(child => this.collectNodesToMove(child.id, dx, dy, movedNodesSet, map));
2150
+ }
2151
+ onConnect(connection) {
2152
+ if (!this.isValidConnection(connection))
2153
+ return null;
2154
+ // STRICT: Only one connection between the same pair of nodes in the same direction
2155
+ // (regardless of handles if user just wants "1 line")
2156
+ // Or at least catch if handles are effectively the same.
2157
+ const isDuplicate = this.edges.some(e => e.source === connection.source &&
2158
+ e.target === connection.target &&
2159
+ (e.sourceHandle || 'floating') === (connection.sourceHandle || 'floating') &&
2160
+ (e.targetHandle || 'floating') === (connection.targetHandle || 'floating'));
2161
+ if (isDuplicate)
2162
+ return null;
2163
+ const id = `e-${connection.source}-${connection.target}-${Date.now()}-${Math.floor(Math.random() * 1000)}`;
2164
+ this.edges = [...this.edges, {
2165
+ id,
2166
+ ...connection,
2167
+ type: 'default',
2168
+ animated: false,
2169
+ sourceHandle: connection.sourceHandle || 'floating',
2170
+ targetHandle: connection.targetHandle || 'floating'
2171
+ }];
2172
+ this.saveToHistory();
2173
+ this.notify();
2174
+ return id;
2175
+ }
2176
+ toggleNodeCollapse(nodeId) { this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, isCollapsed: !n.isCollapsed } : n); this.saveToHistory(); this.notify(); }
2177
+ isValidConnection(connection) {
2178
+ if (connection.source === connection.target)
2179
+ return false;
2180
+ if (this.isCycle(connection.source, connection.target))
2181
+ return false;
2182
+ // Check if any connection already exists between these two nodes in this direction
2183
+ // to strictly enforce "one line per pair" as requested.
2184
+ const alreadyConnected = this.edges.some(e => e.source === connection.source && e.target === connection.target);
2185
+ if (alreadyConnected)
2186
+ return false;
2187
+ const sourceNode = this.nodes.find(n => n.id === connection.source), targetNode = this.nodes.find(n => n.id === connection.target);
2188
+ if (sourceNode?.maxConnections !== undefined && this.edges.filter(e => e.source === connection.source).length >= sourceNode.maxConnections)
2189
+ return false;
2190
+ if (targetNode?.maxConnections !== undefined && this.edges.filter(e => e.target === connection.target).length >= targetNode.maxConnections)
2191
+ return false;
2192
+ return true;
2193
+ }
2194
+ updateEdge(edgeId, updates) { this.edges = this.edges.map(e => e.id === edgeId ? { ...e, ...updates } : e); this.saveToHistory(); this.notify(); }
2195
+ isCycle(source, target) {
2196
+ if (source === target)
2197
+ return true;
2198
+ const visited = new Set(), queue = [target];
2199
+ while (queue.length > 0) {
2200
+ const current = queue.shift();
2201
+ if (!current)
2202
+ continue;
2203
+ if (current === source)
2204
+ return true;
2205
+ if (visited.has(current))
2206
+ continue;
2207
+ visited.add(current);
2208
+ this.edges.filter(e => e.source === current).forEach(e => queue.push(e.target));
2209
+ }
2210
+ return false;
2211
+ }
2212
+ deleteSelected() {
2213
+ this.nodes = this.nodes.filter(n => !this.selectedNodeIds.includes(n.id));
2214
+ this.edges = this.edges.filter(e => !this.selectedEdgeIds.includes(e.id) && !this.selectedNodeIds.includes(e.source) && !this.selectedNodeIds.includes(e.target));
2215
+ this.selectedNodeIds = [];
2216
+ this.selectedEdgeIds = [];
2217
+ this.saveToHistory();
2218
+ this.notify();
2219
+ }
2220
+ groupSelected() {
2221
+ if (this.selectedNodeIds.length < 2)
2222
+ return;
2223
+ const selectedNodes = this.nodes.filter(n => this.selectedNodeIds.includes(n.id));
2224
+ 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)));
2225
+ const groupId = `group-${Date.now()}`;
2226
+ 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' } };
2227
+ this.nodes = [...this.nodes.map(n => this.selectedNodeIds.includes(n.id) ? { ...n, parentId: groupId } : n), groupNode];
2228
+ this.selectedNodeIds = [groupId];
2229
+ this.saveToHistory();
2230
+ this.notify();
2231
+ }
2232
+ autoLayout(direction = 'LR') {
2233
+ const visited = new Set(), levelMap = {}, rootNodes = this.nodes.filter(n => !this.edges.some(e => e.target === n.id));
2234
+ const assignLevels = (nodeId, level) => {
2235
+ levelMap[nodeId] = Math.max(levelMap[nodeId] || 0, level);
2236
+ if (visited.has(nodeId))
2237
+ return;
2238
+ visited.add(nodeId);
2239
+ this.edges.filter(e => e.source === nodeId).forEach(e => assignLevels(e.target, level + 1));
2240
+ };
2241
+ rootNodes.forEach(n => assignLevels(n.id, 0));
2242
+ this.nodes.forEach(n => {
2243
+ if (levelMap[n.id] === undefined)
2244
+ assignLevels(n.id, 0);
2245
+ });
2246
+ const nodesByLevel = {};
2247
+ Object.entries(levelMap).forEach(([id, level]) => { nodesByLevel[level] = [...(nodesByLevel[level] || []), id]; });
2248
+ const gapX = 250, gapY = 100;
2249
+ 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 } }; });
2250
+ this.saveToHistory();
2251
+ this.notify();
2252
+ }
2253
+ selectNode(nodeId, multi = false) {
2254
+ if (multi) {
2255
+ if (this.selectedNodeIds.includes(nodeId))
2256
+ this.selectedNodeIds = this.selectedNodeIds.filter(id => id !== nodeId);
2257
+ else
2258
+ this.selectedNodeIds = [...this.selectedNodeIds, nodeId];
2259
+ }
2260
+ else {
2261
+ this.selectedNodeIds = [nodeId];
2262
+ this.selectedEdgeIds = [];
2263
+ }
2264
+ this.notify();
2265
+ }
2266
+ setParent(nodeId, parentId) {
2267
+ const node = this.nodes.find(n => n.id === nodeId);
2268
+ if (!node || node.parentId === parentId)
2269
+ return;
2270
+ if (parentId) {
2271
+ const parent = this.nodes.find(n => n.id === parentId);
2272
+ if (parent) {
2273
+ // Move to relative coordinates
2274
+ const relX = node.position.x - parent.position.x;
2275
+ const relY = node.position.y - parent.position.y;
2276
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, parentId, position: { x: relX, y: relY } } : n);
2277
+ }
2278
+ }
2279
+ else {
2280
+ // Move back to absolute coordinates if it has a parent
2281
+ const parent = node.parentId ? this.nodes.find(n => n.id === node.parentId) : null;
2282
+ if (parent) {
2283
+ 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);
2284
+ }
2285
+ else {
2286
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, parentId: null } : n);
2287
+ }
2288
+ }
2289
+ this.saveToHistory();
2290
+ this.notify();
2291
+ }
2292
+ updateNode(nodeId, updates) {
2293
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, ...updates, data: { ...n.data, ...updates.data } } : n);
2294
+ this.notify();
2295
+ }
2296
+ rotateNode(nodeId, angle) {
2297
+ this.nodes = this.nodes.map(n => n.id === nodeId ? { ...n, rotation: angle } : n);
2298
+ this.notify(); // Don't save to history every drag step, maybe on up
2299
+ }
2300
+ selectEdge(edgeId, multi = false) {
2301
+ if (multi) {
2302
+ if (this.selectedEdgeIds.includes(edgeId))
2303
+ this.selectedEdgeIds = this.selectedEdgeIds.filter(id => id !== edgeId);
2304
+ else
2305
+ this.selectedEdgeIds = [...this.selectedEdgeIds, edgeId];
2306
+ }
2307
+ else {
2308
+ this.selectedEdgeIds = [edgeId];
2309
+ this.selectedNodeIds = [];
2310
+ }
2311
+ this.notify();
2312
+ }
2313
+ clearSelection() { this.selectedNodeIds = []; this.selectedEdgeIds = []; this.notify(); }
2314
+ deleteEdge(edgeId) { this.edges = this.edges.filter(e => e.id !== edgeId); this.saveToHistory(); this.notify(); }
2315
+ deleteNode(nodeId) {
2316
+ const inEdges = this.edges.filter(e => e.target === nodeId);
2317
+ const outEdges = this.edges.filter(e => e.source === nodeId);
2318
+ // Delete Middle Node logic: If exactly one in and one out, reconnect them
2319
+ if (inEdges.length === 1 && outEdges.length === 1) {
2320
+ const sourceId = inEdges[0].source;
2321
+ const targetId = outEdges[0].target;
2322
+ this.addEdge({
2323
+ id: `reconnect-${Date.now()}`,
2324
+ source: sourceId,
2325
+ target: targetId,
2326
+ sourceHandle: inEdges[0].sourceHandle,
2327
+ targetHandle: outEdges[0].targetHandle,
2328
+ type: inEdges[0].type
2329
+ });
2330
+ }
2331
+ this.nodes = this.nodes.filter(n => n.id !== nodeId);
2332
+ this.edges = this.edges.filter(e => e.source !== nodeId && e.target !== nodeId);
2333
+ this.selectedNodeIds = this.selectedNodeIds.filter(id => id !== nodeId);
2334
+ this.saveToHistory();
2335
+ this.notify();
2336
+ }
2337
+ addEdge(edge) { this.edges = [...this.edges, edge]; this.saveToHistory(); this.notify(); }
2338
+ copySelected() {
2339
+ this.clipboardNodes = this.nodes.filter(n => this.selectedNodeIds.includes(n.id)).map(n => ({ ...n }));
2340
+ this.clipboardEdges = this.edges.filter(e => this.selectedNodeIds.includes(e.source) && this.selectedNodeIds.includes(e.target)).map(e => ({ ...e }));
2341
+ }
2342
+ paste(x, y) {
2343
+ if (this.clipboardNodes.length === 0)
2344
+ return;
2345
+ const idMap = {};
2346
+ const minX = Math.min(...this.clipboardNodes.map(n => n.position.x)), minY = Math.min(...this.clipboardNodes.map(n => n.position.y));
2347
+ const targetX = x === undefined ? minX + 20 : x, targetY = y === undefined ? minY + 20 : y;
2348
+ const dx = targetX - minX, dy = targetY - minY;
2349
+ const newNodes = this.clipboardNodes.map(n => {
2350
+ const newId = `node-${Date.now()}-${Math.random()}`;
2351
+ idMap[n.id] = newId;
2352
+ return { ...n, id: newId, position: { x: n.position.x + dx, y: n.position.y + dy }, selected: true };
2353
+ });
2354
+ const newEdges = this.clipboardEdges.map(e => ({ ...e, id: `edge-${Date.now()}-${Math.random()}`, source: idMap[e.source], target: idMap[e.target] }));
2355
+ this.nodes = [...this.nodes.map(n => ({ ...n, selected: false })), ...newNodes];
2356
+ this.edges = [...this.edges, ...newEdges];
2357
+ this.selectedNodeIds = newNodes.map(n => n.id);
2358
+ this.saveToHistory();
2359
+ this.notify();
2360
+ }
2361
+ generateStressTest(count) {
2362
+ const newNodes = [];
2363
+ for (let i = 0; i < count; i++) {
2364
+ newNodes.push({
2365
+ id: `stress-${i}`,
2366
+ position: { x: Math.random() * 2000, y: Math.random() * 2000 },
2367
+ data: { label: `Node ${i}` },
2368
+ zIndex: 10
2369
+ });
2370
+ }
2371
+ this.nodes = [...this.nodes, ...newNodes];
2372
+ this.notify();
2373
+ }
2374
+ getFullState() { return { nodes: this.nodes, edges: this.edges, viewport: this.viewport, nodeValues: this.nodeValues }; }
2375
+ }
2376
+
2377
+ 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}`;
2378
+
2379
+ const XWorkflow = class {
2380
+ constructor(hostRef) {
2381
+ index.registerInstance(this, hostRef);
2382
+ this.xNodesChange = index.createEvent(this, "xNodesChange", 7);
2383
+ this.xEdgesChange = index.createEvent(this, "xEdgesChange", 7);
2384
+ this.xViewportChange = index.createEvent(this, "xViewportChange", 7);
2385
+ this.xNodeClick = index.createEvent(this, "xNodeClick", 7);
2386
+ this.xEdgeClick = index.createEvent(this, "xEdgeClick", 7);
2387
+ this.xConnect = index.createEvent(this, "xConnect", 7);
2388
+ this.xWorkflowChange = index.createEvent(this, "xWorkflowChange", 7);
2389
+ }
2390
+ get el() { return index.getElement(this); }
2391
+ nodes = [];
2392
+ edges = [];
2393
+ fitView = false;
2394
+ interactive = true;
2395
+ viewportValue = { x: 0, y: 0, zoom: 1 };
2396
+ snapToGridValue = 0;
2397
+ background = { variant: 'dots' };
2398
+ tool = 'select';
2399
+ theme = 'light';
2400
+ turboMode = false;
2401
+ displayMode = 'advanced';
2402
+ users = [];
2403
+ nodeToolbarVisible = true;
2404
+ nodeToolbarMode = 'selected';
2405
+ edgeRoutingMode = 'fixed';
2406
+ flowNodes = [];
2407
+ flowEdges = [];
2408
+ flowViewport = { x: 0, y: 0, zoom: 1 };
2409
+ pendingConnection = null;
2410
+ selectedNodes = [];
2411
+ draggingNodeId = null;
2412
+ proximityPreview = null;
2413
+ helperLines = [];
2414
+ contextMenu = null;
2415
+ selectionRect = null;
2416
+ drawings = [];
2417
+ activeDrawing = null;
2418
+ editingEdgeId = null;
2419
+ focusedNodeId = null;
2420
+ xNodesChange;
2421
+ xEdgesChange;
2422
+ xViewportChange;
2423
+ xNodeClick;
2424
+ xEdgeClick;
2425
+ xConnect;
2426
+ xWorkflowChange;
2427
+ service;
2428
+ isDraggingCanvas = false;
2429
+ isUpdatingFromProp = false;
2430
+ isInteracting = false;
2431
+ lastMousePos = { x: 0, y: 0 };
2432
+ container;
2433
+ throttleTimer = null;
2434
+ async forceLayout() {
2435
+ this.service.forceLayout();
2436
+ }
2437
+ componentWillLoad() {
2438
+ this.service = new FlowService(this.nodes, this.edges);
2439
+ this.service.setViewport(this.viewportValue);
2440
+ this.updateState();
2441
+ this.service.subscribe(() => {
2442
+ this.updateState();
2443
+ this.throttleEmitWorkflowChange();
2444
+ });
2445
+ }
2446
+ throttleEmitWorkflowChange() {
2447
+ if (this.throttleTimer)
2448
+ return;
2449
+ this.throttleTimer = setTimeout(() => {
2450
+ this.xWorkflowChange.emit(this.service.getFullState());
2451
+ this.throttleTimer = null;
2452
+ }, 100);
2453
+ }
2454
+ handleNodesPropChange(nodes) {
2455
+ this.isUpdatingFromProp = true;
2456
+ this.service.setNodes(nodes);
2457
+ this.isUpdatingFromProp = false;
2458
+ }
2459
+ handleEdgesPropChange(edges) {
2460
+ this.isUpdatingFromProp = true;
2461
+ this.service.setEdges(edges);
2462
+ this.isUpdatingFromProp = false;
2463
+ }
2464
+ handleViewportChange(vp) {
2465
+ this.isUpdatingFromProp = true;
2466
+ this.service.setViewport(vp);
2467
+ this.isUpdatingFromProp = false;
2468
+ }
2469
+ updateState() {
2470
+ this.flowNodes = [...this.service.getNodes()];
2471
+ this.flowEdges = [...this.service.getEdges()];
2472
+ this.flowViewport = { ...this.service.getViewport() };
2473
+ this.selectedNodes = [...this.service.getSelectedNodes()];
2474
+ // During active interaction (drag/pan), suppress heavy external sync to prevent parent re-renders.
2475
+ // We will emit the final state on mouseup.
2476
+ if (!this.isUpdatingFromProp && !this.isInteracting) {
2477
+ this.xViewportChange.emit(this.flowViewport);
2478
+ this.xNodesChange.emit(this.flowNodes);
2479
+ this.xEdgesChange.emit(this.flowEdges);
2480
+ }
2481
+ }
2482
+ handleMouseDown = (e) => {
2483
+ if (!this.interactive)
2484
+ return;
2485
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
2486
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2487
+ const target = e.target;
2488
+ // Check if we're clicking on a node or edge
2489
+ if (target.closest('.node') || target.closest('.edge-group'))
2490
+ return;
2491
+ if (target === this.container || target.closest('.background-canvas')) {
2492
+ const rect = this.container.getBoundingClientRect();
2493
+ const lx = (clientX - rect.left - this.flowViewport.x) / this.flowViewport.zoom, ly = (clientY - rect.top - this.flowViewport.y) / this.flowViewport.zoom;
2494
+ if (this.tool === 'rectangle' || this.tool === 'freehand') {
2495
+ this.startDrawing(lx, ly);
2496
+ return;
2497
+ }
2498
+ this.lastMousePos = { x: clientX, y: clientY };
2499
+ if ('shiftKey' in e && e.shiftKey) {
2500
+ this.selectionRect = { x: (clientX - rect.left), y: (clientY - rect.top), width: 0, height: 0 };
2501
+ this.isInteracting = true;
2502
+ }
2503
+ else {
2504
+ this.isDraggingCanvas = true;
2505
+ this.isInteracting = true;
2506
+ this.service.clearSelection();
2507
+ }
2508
+ this.contextMenu = null;
2509
+ }
2510
+ };
2511
+ handleMove(e) {
2512
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX, clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2513
+ const { x, y, zoom } = this.flowViewport, rect = this.container.getBoundingClientRect();
2514
+ if (this.isDraggingCanvas) {
2515
+ const dx = clientX - this.lastMousePos.x, dy = clientY - this.lastMousePos.y;
2516
+ this.lastMousePos = { x: clientX, y: clientY };
2517
+ this.service.setViewport({ x: x + dx, y: y + dy, zoom });
2518
+ }
2519
+ if (this.pendingConnection) {
2520
+ this.pendingConnection = { ...this.pendingConnection, mouseX: (clientX - rect.left - x) / zoom, mouseY: (clientY - rect.top - y) / zoom };
2521
+ }
2522
+ if (this.tool === 'eraser' && (('buttons' in e && e.buttons === 1) || 'touches' in e)) {
2523
+ this.handleEraserAt(clientX, clientY);
2524
+ }
2525
+ if (this.activeDrawing) {
2526
+ const lx = (clientX - rect.left - x) / zoom, ly = (clientY - rect.top - y) / zoom;
2527
+ if (this.activeDrawing.type === 'rectangle')
2528
+ this.activeDrawing = { ...this.activeDrawing, width: lx - this.activeDrawing.position.x, height: ly - this.activeDrawing.position.y };
2529
+ else if (this.activeDrawing.type === 'freehand')
2530
+ this.activeDrawing = { ...this.activeDrawing, points: [...this.activeDrawing.points, { x: lx, y: ly }] };
2531
+ }
2532
+ }
2533
+ handleEraserAt(clientX, clientY) {
2534
+ const rect = this.container.getBoundingClientRect(), { x: vx, y: vy, zoom } = this.flowViewport;
2535
+ const lx = (clientX - rect.left - vx) / zoom, ly = (clientY - rect.top - vy) / zoom;
2536
+ 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; });
2537
+ if (node)
2538
+ this.service.deleteNode(node.id);
2539
+ this.drawings = this.drawings.filter(d => {
2540
+ if (d.type === 'rectangle') {
2541
+ 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);
2542
+ return !(lx >= rx && lx <= rx + rw && ly >= ry && ly <= ry + rh);
2543
+ }
2544
+ return true;
2545
+ });
2546
+ }
2547
+ handleUp() {
2548
+ if (this.isInteracting) {
2549
+ this.isInteracting = false;
2550
+ // Sync final state once interaction ends
2551
+ this.updateState();
2552
+ }
2553
+ this.isDraggingCanvas = false;
2554
+ if (this.activeDrawing) {
2555
+ this.drawings = [...this.drawings, this.activeDrawing];
2556
+ this.activeDrawing = null;
2557
+ }
2558
+ if (this.selectionRect) {
2559
+ this.applyLassoSelection();
2560
+ this.selectionRect = null;
2561
+ }
2562
+ // REMOVED premature clearing of pendingConnection which was causing errors in startConnectionHandler
2563
+ // Drop-to-Group Logic
2564
+ if (this.draggingNodeId) {
2565
+ const node = this.flowNodes.find(n => n.id === this.draggingNodeId);
2566
+ if (node) {
2567
+ // const containerBox = this.container.getBoundingClientRect(); // This line was unused and removed
2568
+ // const absX = node.position.x * this.flowViewport.zoom + this.flowViewport.x; // This line was unused and removed
2569
+ // const absY = node.position.y * this.flowViewport.zoom + this.flowViewport.y; // This line was unused and removed
2570
+ // Find potential parent node (type: group) under the drop position
2571
+ const potentialParent = this.flowNodes.find(n => {
2572
+ if (n.id === node.id || n.type !== 'group')
2573
+ return false;
2574
+ const nw = n.width || 400, nh = n.height || 300;
2575
+ return node.position.x >= n.position.x && node.position.x + (node.width || 150) <= n.position.x + nw &&
2576
+ node.position.y >= n.position.y && node.position.y + (node.height || 48) <= n.position.y + nh;
2577
+ });
2578
+ if (potentialParent)
2579
+ this.service.setParent(node.id, potentialParent.id);
2580
+ else if (node.parentId)
2581
+ this.service.setParent(node.id, null);
2582
+ }
2583
+ }
2584
+ this.isDraggingCanvas = false;
2585
+ this.draggingNodeId = null;
2586
+ this.helperLines = [];
2587
+ }
2588
+ handleKeyDown(e) {
2589
+ if (!this.interactive || e.target.tagName === 'INPUT')
2590
+ return;
2591
+ if ((e.ctrlKey || e.metaKey) && e.key === 'c') {
2592
+ e.preventDefault();
2593
+ this.service.copySelected();
2594
+ }
2595
+ if ((e.ctrlKey || e.metaKey) && e.key === 'v') {
2596
+ e.preventDefault();
2597
+ this.service.paste();
2598
+ }
2599
+ if ((e.ctrlKey || e.metaKey) && e.key === 'z') {
2600
+ e.preventDefault();
2601
+ if (e.shiftKey)
2602
+ this.service.redo();
2603
+ else
2604
+ this.service.undo();
2605
+ }
2606
+ if (e.key === 'Delete' || e.key === 'Backspace') {
2607
+ e.preventDefault();
2608
+ this.service.deleteSelected();
2609
+ }
2610
+ }
2611
+ handleWheel = (e) => {
2612
+ if (!this.interactive)
2613
+ return;
2614
+ e.preventDefault();
2615
+ const zoomSpeed = 0.001, v = this.service.getViewport(), zoomDelta = -e.deltaY * zoomSpeed, newZoom = Math.min(Math.max(v.zoom + zoomDelta, 0.1), 5);
2616
+ if (newZoom === v.zoom)
2617
+ return;
2618
+ 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;
2619
+ this.service.setViewport({ x: mouseX - cx * newZoom, y: mouseY - cy * newZoom, zoom: newZoom });
2620
+ };
2621
+ render() {
2622
+ const { x, y, zoom } = this.flowViewport, transform = `translate(${x}px, ${y}px) scale(${zoom})`;
2623
+ return (index.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 }, index.h("div", { key: '24c5d1a846646f25d6ae1ace14f38e7d939d0348', class: "background-canvas" }, this.renderBackground()), index.h("div", { key: 'd96eb3b0188cb0c6f16e2e093873c56fd471ca37', class: "flow-renderer", style: { transform } }, index.h("svg", { key: '2801eb1d3d4fb082be5057f0b1500fbc3ac53583', class: "edges-svg" }, index.h("defs", { key: 'b797372dac820c84edc52087d07805bfb7155126' }, index.h("marker", { key: '8b0584a343dcbbc40a43767e4a6ab0733a0243d3', id: "arrowhead", markerWidth: "10", markerHeight: "7", refX: "9", refY: "3.5", orient: "auto" }, index.h("polygon", { key: 'dfe7c9ad6eeaccba3cd560b891021dad77c32b34', points: "0 0, 10 3.5, 0 7", fill: "currentColor" })), index.h("marker", { key: 'e098834ed3919e64aea097f9d9b2326781841e8e', id: "arrowhead-selected", markerWidth: "10", markerHeight: "7", refX: "9", refY: "3.5", orient: "auto" }, index.h("polygon", { key: '5c99c575d24f2f6cffddc71ecb3fc29c592416ec', points: "0 0, 10 3.5, 0 7", fill: "var(--x-primary-color)" }))), this.flowEdges
2624
+ .sort((a, b) => (a.selected ? 1 : 0) - (b.selected ? 1 : 0))
2625
+ .map(edge => this.renderEdge(edge)), this.renderPendingLine(), this.renderProximityPreview(), this.renderEdgeHandles()), index.h("div", { key: 'cd1699a7dd5a41e238be3d94329686e9e8975253', class: "nodes-layer" }, this.flowNodes.map(node => this.renderNode(node))), index.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()));
2626
+ }
2627
+ renderBackground() {
2628
+ if (this.background.variant === 'dots') {
2629
+ return (index.h("div", { class: "dots-bg", style: { backgroundSize: `${20 * this.flowViewport.zoom}px ${20 * this.flowViewport.zoom}px` } }));
2630
+ }
2631
+ return null;
2632
+ }
2633
+ renderUsers() {
2634
+ return this.users.map(u => (index.h("div", { class: "user-cursor", style: { left: `${u.position.x}px`, top: `${u.position.y}px` } }, index.h("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: u.color }, index.h("path", { d: "M5 1v22l6-6h11z" })), index.h("span", { class: "user-name", style: { backgroundColor: u.color } }, u.name))));
2635
+ }
2636
+ renderPendingLine() {
2637
+ if (!this.pendingConnection)
2638
+ return null;
2639
+ return (index.h("path", { d: `M${this.pendingConnection.startX},${this.pendingConnection.startY} L${this.pendingConnection.mouseX},${this.pendingConnection.mouseY}`, class: "edge-path pending" }));
2640
+ }
2641
+ renderProximityPreview() {
2642
+ if (!this.proximityPreview)
2643
+ return null;
2644
+ const s = this.flowNodes.find(n => n.id === this.proximityPreview.source);
2645
+ const t = this.flowNodes.find(n => n.id === this.proximityPreview.target);
2646
+ if (!s || !t)
2647
+ return null;
2648
+ const sp = this.getHandlePos(s, this.proximityPreview.sourceHandle, t);
2649
+ const tp = this.getHandlePos(t, this.proximityPreview.targetHandle, s);
2650
+ return (index.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" }));
2651
+ }
2652
+ handleNodeClick(e, nodeId) {
2653
+ const node = this.flowNodes.find(n => n.id === nodeId);
2654
+ if (!node)
2655
+ return;
2656
+ if (e.shiftKey || e.ctrlKey || e.metaKey) {
2657
+ this.service.selectNode(nodeId, true);
2658
+ }
2659
+ else {
2660
+ this.service.selectNode(nodeId, false);
2661
+ }
2662
+ this.xNodeClick.emit(node);
2663
+ }
2664
+ handleEdgeLabelDblClick(e, edgeId) {
2665
+ e.stopPropagation();
2666
+ this.editingEdgeId = edgeId;
2667
+ }
2668
+ handleEdgeLabelChange(e, edgeId) {
2669
+ const newLabel = e.target.value;
2670
+ this.service.updateEdge(edgeId, { label: newLabel });
2671
+ }
2672
+ renderEdgeLabel(edge, x, y) {
2673
+ return (index.h("foreignObject", { x: x - 50, y: y - 12, width: 100, height: 24, class: "edge-label-container" }, index.h("div", { class: "edge-label", onDblClick: (e) => this.handleEdgeLabelDblClick(e, edge.id) }, this.editingEdgeId === edge.id ? (index.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 || ''))));
2674
+ }
2675
+ renderEdge(edge) {
2676
+ const s = this.flowNodes.find(n => n.id === edge.source);
2677
+ const t = this.flowNodes.find(n => n.id === edge.target);
2678
+ if (!s || !t)
2679
+ return null;
2680
+ const sPos = this.getHandlePos(s, edge.sourceHandle, t);
2681
+ const tPos = this.getHandlePos(t, edge.targetHandle, s);
2682
+ let x1 = sPos.x;
2683
+ let y1 = sPos.y;
2684
+ let x2 = tPos.x;
2685
+ let y2 = tPos.y;
2686
+ // ✅ Multi-edge offset
2687
+ const siblings = this.flowEdges.filter(e => e.source === edge.source && e.target === edge.target);
2688
+ const index$1 = siblings.findIndex(e => e.id === edge.id);
2689
+ const offset = siblings.length > 1
2690
+ ? (index$1 - (siblings.length - 1) / 2) * 20
2691
+ : 0;
2692
+ // apply offset theo normal vector
2693
+ if (edge.type !== 'straight') {
2694
+ const dx = x2 - x1;
2695
+ const dy = y2 - y1;
2696
+ const len = Math.hypot(dx, dy) || 1;
2697
+ const nx = -dy / len;
2698
+ const ny = dx / len;
2699
+ x1 += nx * offset;
2700
+ y1 += ny * offset;
2701
+ x2 += nx * offset;
2702
+ y2 += ny * offset;
2703
+ }
2704
+ let path = '';
2705
+ // =========================================================
2706
+ // 1. STRAIGHT
2707
+ // =========================================================
2708
+ if (edge.type === 'straight') {
2709
+ path = `M${x1},${y1} L${x2},${y2}`;
2710
+ }
2711
+ // =========================================================
2712
+ // 2. STEP / SMOOTHSTEP (FIXED VERSION)
2713
+ // =========================================================
2714
+ else if (edge.type === 'step' || edge.type === 'smoothstep') {
2715
+ const isSmooth = edge.type === 'smoothstep';
2716
+ const radius = isSmooth ? 8 : 0;
2717
+ const points = [];
2718
+ const midX = x1 + (x2 - x1) / 2;
2719
+ const midY = y1 + (y2 - y1) / 2;
2720
+ // routing basic
2721
+ if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {
2722
+ // horizontal first
2723
+ points.push({ x: x1, y: y1 });
2724
+ points.push({ x: midX, y: y1 });
2725
+ points.push({ x: midX, y: y2 });
2726
+ points.push({ x: x2, y: y2 });
2727
+ }
2728
+ else {
2729
+ // vertical first
2730
+ points.push({ x: x1, y: y1 });
2731
+ points.push({ x: x1, y: midY });
2732
+ points.push({ x: x2, y: midY });
2733
+ points.push({ x: x2, y: y2 });
2734
+ }
2735
+ const parts = [];
2736
+ parts.push(`M${points[0].x},${points[0].y}`);
2737
+ for (let i = 1; i < points.length - 1; i++) {
2738
+ const prev = points[i - 1];
2739
+ const curr = points[i];
2740
+ const next = points[i + 1];
2741
+ if (radius === 0) {
2742
+ parts.push(`L${curr.x},${curr.y}`);
2743
+ continue;
2744
+ }
2745
+ const dx1 = curr.x - prev.x;
2746
+ const dy1 = curr.y - prev.y;
2747
+ const dx2 = next.x - curr.x;
2748
+ const dy2 = next.y - curr.y;
2749
+ const len1 = Math.hypot(dx1, dy1);
2750
+ const len2 = Math.hypot(dx2, dy2);
2751
+ const r = Math.min(radius, len1 / 2, len2 / 2);
2752
+ const p1x = curr.x - (dx1 / len1) * r;
2753
+ const p1y = curr.y - (dy1 / len1) * r;
2754
+ const p2x = curr.x + (dx2 / len2) * r;
2755
+ const p2y = curr.y + (dy2 / len2) * r;
2756
+ parts.push(`L${p1x},${p1y}`);
2757
+ parts.push(`Q${curr.x},${curr.y} ${p2x},${p2y}`);
2758
+ }
2759
+ const last = points[points.length - 1];
2760
+ parts.push(`L${last.x},${last.y}`);
2761
+ path = parts.join(' ');
2762
+ }
2763
+ // =========================================================
2764
+ // 3. DEFAULT (Bezier)
2765
+ // =========================================================
2766
+ else {
2767
+ const dx = x2 - x1;
2768
+ const curvature = 0.5;
2769
+ path = `
2770
+ M${x1},${y1}
2771
+ C${x1 + dx * curvature},${y1}
2772
+ ${x2 - dx * curvature},${y2}
2773
+ ${x2},${y2}
2774
+ `;
2775
+ }
2776
+ const isSelected = this.selectedNodes.includes(edge.id); // Assuming edges can be selected
2777
+ return (index.h("g", { key: edge.id, class: { 'edge-group': true } }, index.h("path", { d: path, stroke: "transparent", "stroke-width": "20", fill: "none", style: { cursor: 'pointer', pointerEvents: 'stroke' }, onClick: (e) => {
2778
+ e.stopPropagation();
2779
+ this.service.selectEdge(edge.id, e.ctrlKey || e.metaKey);
2780
+ this.xEdgeClick.emit(edge);
2781
+ } }), index.h("path", { d: path, class: {
2782
+ 'edge-path': true,
2783
+ 'selected': isSelected,
2784
+ 'animated': edge.animated,
2785
+ }, "marker-end": isSelected ? 'url(#arrowhead-selected)' : 'url(#arrowhead)', style: {
2786
+ pointerEvents: 'none',
2787
+ stroke: isSelected
2788
+ ? 'var(--x-primary-color)'
2789
+ : (edge.style?.['stroke'] || '#b1b1b7'),
2790
+ strokeDasharray: edge.style?.['strokeDasharray'],
2791
+ } }), edge.selected && (index.h("foreignObject", { x: (x1 + x2) / 2 - 30, y: (y1 + y2) / 2 - 50, width: "60", height: "40" }, index.h("div", { class: "edge-toolbar" }, index.h("button", { class: "edge-toolbar-btn", onClick: (e) => {
2792
+ e.stopPropagation();
2793
+ this.service.updateEdge(edge.id, {
2794
+ animated: !edge.animated,
2795
+ });
2796
+ } }, "\u26A1"), index.h("button", { class: "edge-toolbar-btn", onClick: (e) => {
2797
+ e.stopPropagation();
2798
+ this.service.deleteEdge(edge.id);
2799
+ } }, "\uD83D\uDDD1")))), edge.label &&
2800
+ this.renderEdgeLabel(edge, (x1 + x2) / 2, (y1 + y2) / 2)));
2801
+ }
2802
+ getHandlePos(node, handle, targetNode) {
2803
+ // Ensure we have a width and height to calculate the midpoint/edges
2804
+ const x = Math.round(node.position.x);
2805
+ const y = Math.round(node.position.y);
2806
+ const w = node.width ? Math.round(node.width) : (node.shape === 'diamond' ? 100 : 150);
2807
+ const h = node.height ? Math.round(node.height) : (node.shape === 'diamond' ? 100 : 48);
2808
+ if (handle === 'floating' && targetNode)
2809
+ return this.getFloatingHandlePos(node, targetNode);
2810
+ if (this.edgeRoutingMode === 'auto' && targetNode) {
2811
+ const sc = { x: x + w / 2, y: y + h / 2 };
2812
+ const tc = { x: targetNode.position.x + (targetNode.width || 150) / 2, y: targetNode.position.y + (targetNode.height || 48) / 2 };
2813
+ const dx = tc.x - sc.x;
2814
+ const dy = tc.y - sc.y;
2815
+ if (Math.abs(dx) > Math.abs(dy))
2816
+ handle = dx > 0 ? 'right' : 'left';
2817
+ else
2818
+ handle = dy > 0 ? 'bottom' : 'top';
2819
+ }
2820
+ else if (!handle && targetNode) {
2821
+ const sc = { x: x + w / 2, y: y + h / 2 };
2822
+ const tc = { x: targetNode.position.x + (targetNode.width || 150) / 2, y: targetNode.position.y + (targetNode.height || 48) / 2 };
2823
+ const dx = tc.x - sc.x;
2824
+ const dy = tc.y - sc.y;
2825
+ if (Math.abs(dx) > Math.abs(dy))
2826
+ handle = dx > 0 ? 'right' : 'left';
2827
+ else
2828
+ handle = dy > 0 ? 'bottom' : 'top';
2829
+ }
2830
+ else if (!handle) {
2831
+ handle = 'floating';
2832
+ }
2833
+ // Offset slightly for handle markers (r=4)
2834
+ switch (handle) {
2835
+ case 'top': return { x: x + w / 2, y };
2836
+ case 'right': return { x: x + w, y: y + h / 2 };
2837
+ case 'bottom': return { x: x + w / 2, y: y + h };
2838
+ case 'left': return { x: x, y: y + h / 2 };
2839
+ default: return { x: x + w / 2, y: y + h / 2 };
2840
+ }
2841
+ }
2842
+ getFloatingHandlePos(source, target) {
2843
+ const sw = (source.width || 150) / 2, sh = (source.height || 48) / 2;
2844
+ const sc = { x: source.position.x + sw, y: source.position.y + sh };
2845
+ const tc = { x: target.position.x + (target.width || 150) / 2, y: target.position.y + (target.height || 48) / 2 };
2846
+ const dx = tc.x - sc.x, dy = tc.y - sc.y;
2847
+ const angle = Math.atan2(dy, dx);
2848
+ // Diamond Shape Correction
2849
+ if (source.shape === 'diamond') {
2850
+ const absCos = Math.abs(Math.cos(angle)), absSin = Math.abs(Math.sin(angle));
2851
+ const d = (sw * sh) / (sh * absCos + sw * absSin);
2852
+ return { x: sc.x + d * Math.cos(angle), y: sc.y + d * Math.sin(angle) };
2853
+ }
2854
+ // Circle Shape Correction
2855
+ if (source.shape === 'circle') {
2856
+ const r = Math.min(sw, sh);
2857
+ return { x: sc.x + r * Math.cos(angle), y: sc.y + r * Math.sin(angle) };
2858
+ }
2859
+ if (Math.abs(dx) * sh > Math.abs(dy) * sw)
2860
+ return { x: sc.x + sw * Math.sign(dx), y: sc.y + (dy * sw / Math.abs(dx)) };
2861
+ else
2862
+ return { x: sc.x + (dx * sh / Math.abs(dy)), y: sc.y + sh * Math.sign(dy) };
2863
+ }
2864
+ renderEdgeHandles() {
2865
+ return this.flowEdges
2866
+ .filter(e => e.selected)
2867
+ .map(edge => {
2868
+ const s = this.flowNodes.find(n => n.id === edge.source);
2869
+ const t = this.flowNodes.find(n => n.id === edge.target);
2870
+ if (!s || !t)
2871
+ return null;
2872
+ const sPos = this.getHandlePos(s, edge.sourceHandle, t);
2873
+ const tPos = this.getHandlePos(t, edge.targetHandle, s);
2874
+ return (index.h("g", { class: "edge-controls" }, index.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') }), index.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') })));
2875
+ });
2876
+ }
2877
+ startEdgeReconnect(e, edge, type) {
2878
+ if (this.pendingConnection)
2879
+ return;
2880
+ e.preventDefault();
2881
+ e.stopPropagation();
2882
+ const otherId = type === 'source' ? edge.target : edge.source, otherNode = this.flowNodes.find(n => n.id === otherId);
2883
+ if (!otherNode)
2884
+ return;
2885
+ 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;
2886
+ this.service.deleteEdge(edge.id);
2887
+ 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 };
2888
+ this.startConnectionHandler(otherId, type === 'source' ? 'target' : 'source');
2889
+ }
2890
+ renderNode(node) {
2891
+ const isSelected = this.selectedNodes.includes(node.id);
2892
+ const isFocused = this.focusedNodeId === node.id;
2893
+ const shapeClass = node.shape ? `shape-${node.shape}` : '';
2894
+ return (index.h("div", { key: node.id, "data-id": node.id, class: {
2895
+ 'node': true,
2896
+ 'selected': isSelected,
2897
+ 'dragging': this.draggingNodeId === node.id,
2898
+ 'collapsed': node.isCollapsed,
2899
+ [node.className]: !!node.className,
2900
+ [shapeClass]: !!shapeClass,
2901
+ 'focused': isFocused,
2902
+ 'turbo': this.turboMode,
2903
+ [`type-${node.type}`]: true
2904
+ }, style: {
2905
+ left: `${Math.round(node.position.x)}px`,
2906
+ top: `${Math.round(node.position.y)}px`,
2907
+ width: node.width ? `${node.width}px` : (node.shape === 'diamond' ? '100px' : '150px'),
2908
+ height: node.height ? `${node.height}px` : (node.shape === 'diamond' ? '100px' : '48px'),
2909
+ transform: `rotate(${node.rotation || 0}deg) translateZ(0)`,
2910
+ opacity: (this.focusedNodeId && !isFocused && node.parentId !== this.focusedNodeId) ? '0.3' : '1',
2911
+ zIndex: isSelected ? '1000' : (node.zIndex || 10).toString(),
2912
+ ...(node.style || {})
2913
+ }, 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' && (index.h("div", { class: "node-shape-wrapper" }, index.h("svg", { viewBox: "0 0 100 100", preserveAspectRatio: "none", class: "node-shape-svg" }, index.h("path", { d: "M50 0 L100 50 L50 100 L0 50 Z", class: { 'shape-path': true, 'selected': isSelected } })))), index.h("div", { class: "node-content" }, (node.type === 'group' || node.isParent) && (index.h("button", { class: "node-collapse-btn", onClick: (e) => { e.stopPropagation(); this.service.toggleNodeCollapse(node.id); } }, index.h("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, index.h("path", { d: node.isCollapsed ? "M12 5v14M5 12h14" : "M5 12h14" })))), node.template ? index.h("div", { innerHTML: node.template }) : index.h("slot", { name: `node-${node.type}` }, node.data?.label || node.id)), node.handles ? node.handles.map(h => this.renderCustomHandle(node, h)) : [
2914
+ index.h("div", { key: "top", class: "handle top", onMouseDown: (e) => this.startConnection(e, node.id, 'top') }),
2915
+ index.h("div", { key: "right", class: "handle right", onMouseDown: (e) => this.startConnection(e, node.id, 'right') }),
2916
+ index.h("div", { key: "bottom", class: "handle bottom", onMouseDown: (e) => this.startConnection(e, node.id, 'bottom') }),
2917
+ index.h("div", { key: "left", class: "handle left", onMouseDown: (e) => this.startConnection(e, node.id, 'left') })
2918
+ ], isSelected && node.resizable && index.h("div", { class: "node-resizer", onMouseDown: (e) => this.startResize(e, node) }), " ", isSelected && node.rotatable !== false && index.h("div", { class: "node-rotator", onMouseDown: (e) => this.startRotate(e, node) }, index.h("x-icon", { name: "autorenew", size: 12 })), " "));
2919
+ }
2920
+ shouldShowToolbar(node) {
2921
+ if (!this.nodeToolbarVisible)
2922
+ return false;
2923
+ if (this.nodeToolbarMode === 'always')
2924
+ return true;
2925
+ if (this.nodeToolbarMode === 'selected')
2926
+ return this.selectedNodes.includes(node.id);
2927
+ return false; // For hover mode, we'd need some mouse state tracking or CSS
2928
+ }
2929
+ renderNodeToolbar(node) {
2930
+ const colors = ['#ffffff', '#fecaca', '#bfdbfe', '#bbf7d0', '#fef08a', '#e9d5ff'];
2931
+ return (index.h("div", { class: "node-toolbar" }, index.h("div", { class: "color-picker" }, colors.map(c => (index.h("div", { class: "color-swatch", style: { background: c }, onClick: () => this.service.updateNode(node.id, { style: { ...node.style, background: c } }) })))), index.h("x-divider", { type: "vertical" }), index.h("button", { onClick: () => this.service.deleteNode(node.id) }, index.h("x-icon", { name: "delete", size: 14 })), index.h("button", { onClick: () => this.service.copySelected() }, index.h("x-icon", { name: "content_copy", size: 14 }))));
2932
+ }
2933
+ renderCustomHandle(node, h) {
2934
+ 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) }));
2935
+ }
2936
+ handleNodeDragStart(e, node) {
2937
+ if (node.dragHandle && !e.target.closest(node.dragHandle)) {
2938
+ return;
2939
+ }
2940
+ e.preventDefault(); // Stop simulated mouse events
2941
+ e.stopPropagation();
2942
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
2943
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2944
+ this.service.selectNode(node.id, ('shiftKey' in e && e.shiftKey));
2945
+ this.startNodeDrag(clientX, clientY, node);
2946
+ }
2947
+ startNodeDrag(startX, startY, node) {
2948
+ const startNodeX = node.position.x;
2949
+ const startNodeY = node.position.y;
2950
+ const zoom = this.flowViewport.zoom;
2951
+ const dragThreshold = 5; // Increased threshold
2952
+ let dragStarted = false;
2953
+ const onMove = (me) => {
2954
+ const cx = 'touches' in me ? me.touches[0].clientX : me.clientX;
2955
+ const cy = 'touches' in me ? me.touches[0].clientY : me.clientY;
2956
+ if (!dragStarted) {
2957
+ const moveDist = Math.sqrt(Math.pow(cx - startX, 2) + Math.pow(cy - startY, 2));
2958
+ if (moveDist > dragThreshold) {
2959
+ dragStarted = true;
2960
+ this.draggingNodeId = node.id;
2961
+ this.isInteracting = true; // Block external sync during drag
2962
+ }
2963
+ else {
2964
+ return;
2965
+ }
2966
+ }
2967
+ const dx = (cx - startX) / zoom;
2968
+ const dy = (cy - startY) / zoom;
2969
+ const newX = startNodeX + dx;
2970
+ const newY = startNodeY + dy;
2971
+ this.service.updateNodePosition(node.id, newX, newY, this.snapToGridValue);
2972
+ this.helperLines = this.calculateHelperLines(node.id, newX, newY);
2973
+ this.checkProximity(node.id, newX, newY);
2974
+ };
2975
+ const onUp = () => {
2976
+ if (this.proximityPreview) {
2977
+ this.service.onConnect(this.proximityPreview);
2978
+ this.proximityPreview = null;
2979
+ }
2980
+ document.removeEventListener('mousemove', onMove);
2981
+ document.removeEventListener('mouseup', onUp);
2982
+ document.removeEventListener('touchmove', onMove);
2983
+ document.removeEventListener('touchend', onUp);
2984
+ this.draggingNodeId = null;
2985
+ this.handleUp();
2986
+ };
2987
+ document.addEventListener('mousemove', onMove);
2988
+ document.addEventListener('mouseup', onUp);
2989
+ document.addEventListener('touchmove', onMove);
2990
+ document.addEventListener('touchend', onUp);
2991
+ }
2992
+ startResize(e, node) {
2993
+ e.stopPropagation();
2994
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
2995
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
2996
+ const startX = clientX;
2997
+ const startY = clientY;
2998
+ const startWidth = node.width || 150;
2999
+ const startHeight = node.height || 48;
3000
+ const zoom = this.flowViewport.zoom;
3001
+ const onMove = (me) => {
3002
+ const cx = 'touches' in me ? me.touches[0].clientX : me.clientX;
3003
+ const cy = 'touches' in me ? me.touches[0].clientY : me.clientY;
3004
+ const dw = (cx - startX) / zoom;
3005
+ const dh = (cy - startY) / zoom;
3006
+ 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));
3007
+ };
3008
+ const onUp = () => {
3009
+ document.removeEventListener('mousemove', onMove);
3010
+ document.removeEventListener('mouseup', onUp);
3011
+ document.removeEventListener('touchmove', onMove);
3012
+ document.removeEventListener('touchend', onUp);
3013
+ };
3014
+ document.addEventListener('mousemove', onMove);
3015
+ document.addEventListener('mouseup', onUp);
3016
+ document.addEventListener('touchmove', onMove);
3017
+ document.addEventListener('touchend', onUp);
3018
+ }
3019
+ startRotate(e, node) {
3020
+ e.stopPropagation();
3021
+ const rect = this.container.getBoundingClientRect(), { x: vx, y: vy, zoom } = this.flowViewport;
3022
+ const center = {
3023
+ x: node.position.x + (node.width || 150) / 2,
3024
+ y: node.position.y + (node.height || 48) / 2
3025
+ };
3026
+ const onMove = (me) => {
3027
+ const cx = 'touches' in me ? me.touches[0].clientX : me.clientX;
3028
+ const cy = 'touches' in me ? me.touches[0].clientY : me.clientY;
3029
+ const mousePos = { x: (cx - rect.left - vx) / zoom, y: (cy - rect.top - vy) / zoom };
3030
+ const angle = Math.atan2(mousePos.y - center.y, mousePos.x - center.x) * (180 / Math.PI) + 90;
3031
+ this.service.rotateNode(node.id, angle);
3032
+ };
3033
+ const onUp = () => {
3034
+ this.service.saveToHistory();
3035
+ document.removeEventListener('mousemove', onMove);
3036
+ document.removeEventListener('mouseup', onUp);
3037
+ document.removeEventListener('touchmove', onMove);
3038
+ document.removeEventListener('touchend', onUp);
3039
+ };
3040
+ document.addEventListener('mousemove', onMove);
3041
+ document.addEventListener('mouseup', onUp);
3042
+ document.addEventListener('touchmove', onMove);
3043
+ document.addEventListener('touchend', onUp);
3044
+ }
3045
+ applyLassoSelection() {
3046
+ if (!this.selectionRect)
3047
+ return;
3048
+ const { x, y, width, height } = this.selectionRect;
3049
+ const zoom = this.flowViewport.zoom;
3050
+ const viewX = this.flowViewport.x;
3051
+ const viewY = this.flowViewport.y;
3052
+ const rectX = (Math.min(x, x + width) - viewX) / zoom;
3053
+ const rectY = (Math.min(y, y + height) - viewY) / zoom;
3054
+ const rectW = Math.abs(width) / zoom;
3055
+ const rectH = Math.abs(height) / zoom;
3056
+ this.flowNodes.forEach(node => {
3057
+ const nx = node.position.x;
3058
+ const ny = node.position.y;
3059
+ const nw = node.width || 150;
3060
+ const nh = node.height || 48;
3061
+ if (nx >= rectX && nx + nw <= rectX + rectW && ny >= rectY && ny + nh <= rectY + rectH) {
3062
+ this.service.selectNode(node.id, true);
3063
+ }
3064
+ });
3065
+ }
3066
+ renderSelectionRect() {
3067
+ if (!this.selectionRect)
3068
+ return null;
3069
+ const { x, y, width, height } = this.selectionRect;
3070
+ return (index.h("div", { class: "selection-rect", style: {
3071
+ left: `${Math.min(x, x + width)}px`,
3072
+ top: `${Math.min(y, y + height)}px`,
3073
+ width: `${Math.abs(width)}px`,
3074
+ height: `${Math.abs(height)}px`
3075
+ } }));
3076
+ }
3077
+ renderContextMenu() {
3078
+ if (!this.contextMenu)
3079
+ return null;
3080
+ return (index.h("div", { class: "context-menu", style: { left: `${this.contextMenu.x}px`, top: `${this.contextMenu.y}px` } }, index.h("div", { class: "menu-item", onClick: () => this.addNodeAtPos(this.contextMenu.x, this.contextMenu.y) }, "Add Node Here"), index.h("div", { class: "divider" }), this.selectedNodes.length > 1 && (index.h("div", { class: "menu-item", onClick: () => this.service.groupSelected() }, "Group Selected")), index.h("div", { class: "menu-item", onClick: () => this.service.undo() }, "Undo"), index.h("div", { class: "menu-item", onClick: () => this.service.redo() }, "Redo")));
3081
+ }
3082
+ addNodeAtPos(clientX, clientY) {
3083
+ const rect = this.container.getBoundingClientRect();
3084
+ const { x, y, zoom } = this.flowViewport;
3085
+ this.service.addNode({
3086
+ id: `node-${Date.now()}`,
3087
+ position: {
3088
+ x: (clientX - rect.left - x) / zoom,
3089
+ y: (clientY - rect.top - y) / zoom
3090
+ },
3091
+ data: { label: 'New Node' },
3092
+ zIndex: 10
3093
+ });
3094
+ }
3095
+ startConnection(e, nodeId, handle) {
3096
+ if (this.pendingConnection)
3097
+ return;
3098
+ e.preventDefault(); // Stop simulated mouse events
3099
+ e.stopPropagation();
3100
+ const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;
3101
+ const clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
3102
+ const rect = this.container.getBoundingClientRect();
3103
+ const { x, y, zoom } = this.flowViewport;
3104
+ const node = this.flowNodes.find(n => n.id === nodeId);
3105
+ if (!node)
3106
+ return;
3107
+ // Use handle center instead of click position for start point
3108
+ const hPos = this.getHandlePos(node, handle);
3109
+ this.pendingConnection = {
3110
+ source: nodeId,
3111
+ handle,
3112
+ startX: hPos.x,
3113
+ startY: hPos.y,
3114
+ mouseX: (clientX - rect.left - x) / zoom,
3115
+ mouseY: (clientY - rect.top - y) / zoom
3116
+ };
3117
+ this.proximityPreview = null; // Clear any existing previews
3118
+ this.startConnectionHandler(nodeId, 'source');
3119
+ }
3120
+ startConnectionHandler(nodeId, handleType = 'source') {
3121
+ const onUp = (de) => {
3122
+ const pending = this.pendingConnection;
3123
+ this.pendingConnection = null;
3124
+ this.proximityPreview = null;
3125
+ document.removeEventListener('mouseup', onUp);
3126
+ document.removeEventListener('touchend', onUp);
3127
+ if (!pending)
3128
+ return;
3129
+ 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 => {
3130
+ const w = (n.width || 150) + padding * 2, h = (n.height || 48) + padding * 2;
3131
+ return lx >= n.position.x - padding && lx <= n.position.x + w && ly >= n.position.y - padding && ly <= n.position.y + h;
3132
+ });
3133
+ if (targetNode && targetNode.id !== nodeId) {
3134
+ 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';
3135
+ const connection = handleType === 'source'
3136
+ ? { source: nodeId, target: targetNode.id, sourceHandle: pending.handle, targetHandle }
3137
+ : { source: targetNode.id, target: nodeId, sourceHandle: targetHandle, targetHandle: pending.handle };
3138
+ if (this.service.isValidConnection(connection)) {
3139
+ this.service.onConnect(connection);
3140
+ this.xConnect.emit(connection);
3141
+ }
3142
+ }
3143
+ else if (!targetNode) {
3144
+ const newNodeId = `node-${Date.now()}`;
3145
+ this.service.addNode({ id: newNodeId, position: { x: lx - 75, y: ly - 24 }, data: { label: 'New Node' }, zIndex: 10 });
3146
+ const connection = handleType === 'source'
3147
+ ? { source: nodeId, target: newNodeId, sourceHandle: pending.handle, targetHandle: 'floating' }
3148
+ : { source: newNodeId, target: nodeId, sourceHandle: 'floating', targetHandle: pending.handle };
3149
+ this.service.onConnect(connection);
3150
+ this.xConnect.emit(connection);
3151
+ }
3152
+ };
3153
+ document.addEventListener('mouseup', onUp);
3154
+ document.addEventListener('touchend', onUp);
3155
+ }
3156
+ startDrawing(x, y) {
3157
+ this.activeDrawing = {
3158
+ id: `draw-${Date.now()}`,
3159
+ type: (this.tool === 'rectangle' ? 'rectangle' : 'freehand'),
3160
+ position: { x, y },
3161
+ points: this.tool === 'freehand' ? [{ x, y }] : [],
3162
+ width: 0,
3163
+ height: 0,
3164
+ style: { stroke: '#111', strokeWidth: '2', fill: 'none' }
3165
+ };
3166
+ }
3167
+ renderDrawing(d) {
3168
+ if (d.type === 'rectangle') {
3169
+ return (index.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 }));
3170
+ }
3171
+ else {
3172
+ return (index.h("path", { d: d.points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`).join(' '), style: d.style }));
3173
+ }
3174
+ }
3175
+ checkProximity(nodeId, nx, ny) {
3176
+ const threshold = 50;
3177
+ const node = this.flowNodes.find(n => n.id === nodeId);
3178
+ if (!node)
3179
+ return;
3180
+ const nw = node.width || 150;
3181
+ const nh = node.height || 48;
3182
+ const nc = { x: nx + nw / 2, y: ny + nh / 2 };
3183
+ let closest = null;
3184
+ let minDist = threshold;
3185
+ this.flowNodes.forEach(other => {
3186
+ if (other.id === nodeId || other.parentId === nodeId)
3187
+ return;
3188
+ const ow = other.width || 150;
3189
+ const oh = other.height || 48;
3190
+ const oc = { x: other.position.x + ow / 2, y: other.position.y + oh / 2 };
3191
+ const d = Math.sqrt((nc.x - oc.x) ** 2 + (nc.y - oc.y) ** 2);
3192
+ if (d < minDist) {
3193
+ minDist = d;
3194
+ closest = { source: nodeId, target: other.id, sourceHandle: 'floating', targetHandle: 'floating' };
3195
+ }
3196
+ });
3197
+ this.proximityPreview = closest;
3198
+ }
3199
+ calculateHelperLines(nodeId, x, y) {
3200
+ const threshold = 10;
3201
+ const lines = [];
3202
+ this.flowNodes.forEach(other => {
3203
+ if (other.id === nodeId || other.parentId === nodeId)
3204
+ return;
3205
+ if (Math.abs(x - other.position.x) < threshold)
3206
+ lines.push({ x: other.position.x });
3207
+ if (Math.abs(y - other.position.y) < threshold)
3208
+ lines.push({ y: other.position.y });
3209
+ });
3210
+ return lines;
3211
+ }
3212
+ renderHelperLines() {
3213
+ return index.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 ? index.h("line", { x1: line.x, y1: "-10000", x2: line.x, y2: "10000", stroke: "#3b82f6", "stroke-dasharray": "2,2" }) : index.h("line", { x1: "-10000", y1: line.y, x2: "10000", y2: line.y, stroke: "#3b82f6", "stroke-dasharray": "2,2" })));
3214
+ }
3215
+ static get watchers() { return {
3216
+ "nodes": [{
3217
+ "handleNodesPropChange": 0
3218
+ }],
3219
+ "edges": [{
3220
+ "handleEdgesPropChange": 0
3221
+ }],
3222
+ "viewportValue": [{
3223
+ "handleViewportChange": 0
3224
+ }]
3225
+ }; }
3226
+ };
3227
+ XWorkflow.style = xWorkflowCss();
3228
+
3229
+ exports.x_alert = XAlert;
3230
+ exports.x_badge = XBadge;
3231
+ exports.x_float_button = XFloatButton;
3232
+ exports.x_form = XForm;
3233
+ exports.x_menu = XMenu;
3234
+ exports.x_menu_item = XMenuItem;
3235
+ exports.x_result = XResult;
3236
+ exports.x_select_option = XSelectOption;
3237
+ exports.x_tag = XTag;
3238
+ exports.x_textarea = XTextarea;
3239
+ exports.x_workflow = XWorkflow;