@vizejs/ui 0.426.3 → 0.427.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2069) hide show
  1. package/dist/a11y-audit-DBmbNUwz.mjs +230 -0
  2. package/dist/a11y-audit-DvkiBV3v.d.mts +87 -0
  3. package/dist/a11y-audit.d.mts +2 -0
  4. package/dist/a11y-audit.mjs +2 -0
  5. package/dist/accordion-D4FXe51K.mjs +686 -0
  6. package/dist/accordion.d.mts +2 -0
  7. package/dist/accordion.mjs +2 -0
  8. package/dist/action-sheet-Dx_ucdzs.mjs +194 -0
  9. package/dist/action-sheet.d.mts +2 -0
  10. package/dist/action-sheet.mjs +4 -0
  11. package/dist/{alert-dialog-D9tqXQ_Q.mjs → alert-dialog-C1ltbCqw.mjs} +1 -1
  12. package/dist/alert-dialog.d.mts +1 -1
  13. package/dist/alert-dialog.mjs +2 -2
  14. package/dist/angle-picker-1bV69AXL.d.mts +138 -0
  15. package/dist/angle-picker-DeFJ9lya.mjs +252 -0
  16. package/dist/angle-picker.d.mts +2 -0
  17. package/dist/angle-picker.mjs +2 -0
  18. package/dist/announcer-DwGlsSL_.d.mts +19035 -0
  19. package/dist/announcer.d.mts +1 -1
  20. package/dist/announcer.mjs +1 -1
  21. package/dist/audio-player-Cc7-FUUO.d.mts +63 -0
  22. package/dist/audio-player-yLcrrZ7Z.mjs +109 -0
  23. package/dist/audio-player.d.mts +3 -0
  24. package/dist/audio-player.mjs +3 -0
  25. package/dist/audio-visualizer-BoLRN564.d.mts +349 -0
  26. package/dist/audio-visualizer-rN3TMdNs.mjs +598 -0
  27. package/dist/audio-visualizer.d.mts +2 -0
  28. package/dist/audio-visualizer.mjs +2 -0
  29. package/dist/autocomplete-DXIn7ZKR.mjs +254 -0
  30. package/dist/autocomplete.d.mts +2 -0
  31. package/dist/autocomplete.mjs +4 -0
  32. package/dist/avatar-group-BwJT84AL.mjs +239 -0
  33. package/dist/avatar-group-D6NQAg_E.d.mts +178 -0
  34. package/dist/avatar-group.d.mts +2 -0
  35. package/dist/avatar-group.mjs +2 -0
  36. package/dist/avatar.d.mts +1 -1
  37. package/dist/back-to-top-YNLvLXHB.mjs +146 -0
  38. package/dist/back-to-top-ZGVMsUvY.d.mts +91 -0
  39. package/dist/back-to-top.d.mts +2 -0
  40. package/dist/back-to-top.mjs +2 -0
  41. package/dist/badge.d.mts +1 -1
  42. package/dist/{banner-CYiSiZJW.mjs → banner-F9NtOnP7.mjs} +1 -1
  43. package/dist/banner.d.mts +1 -1
  44. package/dist/banner.mjs +1 -1
  45. package/dist/block-ui.d.mts +1 -1
  46. package/dist/blockquote.d.mts +1 -1
  47. package/dist/bottom-navigation-CgzKzDwW.d.mts +98 -0
  48. package/dist/bottom-navigation-CjZGECFq.mjs +144 -0
  49. package/dist/bottom-navigation.d.mts +2 -0
  50. package/dist/bottom-navigation.mjs +2 -0
  51. package/dist/button-group.mjs +1 -1
  52. package/dist/calendar-C_ihbcsR.mjs +218 -0
  53. package/dist/calendar-locale-Cl5bvmuE.mjs +118 -0
  54. package/dist/calendar-root-Dy3WPuNT.mjs +324 -0
  55. package/dist/calendar-today-Djkf8bII.d.mts +31 -0
  56. package/dist/calendar-today-jj5QcZGW.mjs +46 -0
  57. package/dist/calendar-year-select-C_Hn7Jbv.mjs +851 -0
  58. package/dist/calendar-year-select.vue-BohqVCaU.d.mts +360 -0
  59. package/dist/calendar.d.mts +5 -0
  60. package/dist/calendar.mjs +7 -0
  61. package/dist/{callout-DAu-98Ti.mjs → callout-YB8yoZgS.mjs} +1 -1
  62. package/dist/callout.d.mts +1 -1
  63. package/dist/callout.mjs +1 -1
  64. package/dist/card.d.mts +1 -1
  65. package/dist/carousel-CABv9lkK.mjs +1053 -0
  66. package/dist/carousel-DSJM82Qe.d.mts +528 -0
  67. package/dist/carousel.d.mts +2 -0
  68. package/dist/carousel.mjs +2 -0
  69. package/dist/cascader-T2o5rIfb.mjs +1232 -0
  70. package/dist/cascader-o55tEa6F.d.mts +546 -0
  71. package/dist/cascader.d.mts +2 -0
  72. package/dist/cascader.mjs +2 -0
  73. package/dist/catalog.d.mts +2705 -283
  74. package/dist/catalog.mjs +7863 -2307
  75. package/dist/chart-C-_jgFbJ.mjs +1463 -0
  76. package/dist/chart-scale-DDLe375F.mjs +1049 -0
  77. package/dist/chart-scale-Dd7Rybj4.d.mts +473 -0
  78. package/dist/chart-scale.d.mts +2 -0
  79. package/dist/chart-scale.mjs +2 -0
  80. package/dist/chart-shape-BWRbtTy9.d.mts +322 -0
  81. package/dist/chart-shape-CW2QdpYK.mjs +974 -0
  82. package/dist/chart-shape.d.mts +2 -0
  83. package/dist/chart-shape.mjs +2 -0
  84. package/dist/chart.d.mts +2 -0
  85. package/dist/chart.mjs +2 -0
  86. package/dist/checkbox-group-B_kSEem1.mjs +435 -0
  87. package/dist/checkbox-group-DLv8yLTf.d.mts +250 -0
  88. package/dist/checkbox-group.d.mts +2 -0
  89. package/dist/checkbox-group.mjs +2 -0
  90. package/dist/checkbox.d.mts +1 -1
  91. package/dist/code.d.mts +1 -1
  92. package/dist/{collapsible-Cra5y_if.mjs → collapsible-VK8ibpSV.mjs} +3 -3
  93. package/dist/collapsible.d.mts +2 -2
  94. package/dist/collapsible.mjs +2 -2
  95. package/dist/color-picker-Czg3QR-G.mjs +1856 -0
  96. package/dist/color-picker.d.mts +2 -0
  97. package/dist/color-picker.mjs +2 -0
  98. package/dist/combobox-CvgrYtIa.mjs +238 -0
  99. package/dist/combobox-root-DORiYPqg.mjs +1004 -0
  100. package/dist/combobox.d.mts +2 -0
  101. package/dist/combobox.mjs +5 -0
  102. package/dist/command-palette-DG0CHE2V.mjs +899 -0
  103. package/dist/command-palette.d.mts +2 -0
  104. package/dist/command-palette.mjs +2 -0
  105. package/dist/component-alert.css +1 -0
  106. package/dist/component-badge.css +1 -0
  107. package/dist/component-breadcrumb.css +1 -0
  108. package/dist/component-button.css +1 -0
  109. package/dist/component-card.css +1 -0
  110. package/dist/component-checkbox.css +1 -0
  111. package/dist/component-dialog.css +1 -0
  112. package/dist/component-input.css +1 -0
  113. package/dist/component-pagination.css +1 -0
  114. package/dist/component-progress-bar.css +1 -0
  115. package/dist/component-scroll-area.css +1 -0
  116. package/dist/component-stepper.css +1 -0
  117. package/dist/component-switch.css +1 -0
  118. package/dist/component-tabs.css +1 -0
  119. package/dist/component-textarea.css +1 -0
  120. package/dist/component-tooltip.css +1 -0
  121. package/dist/confirm-B_4uxdnr.mjs +363 -0
  122. package/dist/confirm.d.mts +2 -0
  123. package/dist/confirm.mjs +2 -0
  124. package/dist/context-menu-CU_P7N8p.mjs +193 -0
  125. package/dist/context-menu.d.mts +2 -0
  126. package/dist/context-menu.mjs +3 -0
  127. package/dist/copy-button.d.mts +1 -1
  128. package/dist/dashboard-grid-C8UmhMSx.d.mts +234 -0
  129. package/dist/dashboard-grid-M-ReTeoK.mjs +399 -0
  130. package/dist/dashboard-grid.d.mts +2 -0
  131. package/dist/dashboard-grid.mjs +2 -0
  132. package/dist/data-grid-Bxx5pB9-.mjs +1589 -0
  133. package/dist/data-grid-CKmUJnYM.d.mts +839 -0
  134. package/dist/data-grid.d.mts +2 -0
  135. package/dist/data-grid.mjs +2 -0
  136. package/dist/date-field-DSY7GzYl.mjs +381 -0
  137. package/dist/date-field-DWtjgD_x.d.mts +62 -0
  138. package/dist/date-field-types-DLPWPJUu.d.mts +84 -0
  139. package/dist/date-field.d.mts +4 -0
  140. package/dist/date-field.mjs +3 -0
  141. package/dist/date-picker-C3VRvkym.d.mts +211 -0
  142. package/dist/date-picker-D1GlUjo9.mjs +489 -0
  143. package/dist/date-picker-runtime-DqO8UR1-.mjs +85 -0
  144. package/dist/date-picker.d.mts +4 -0
  145. package/dist/date-picker.mjs +6 -0
  146. package/dist/date-range-picker-DF79MR6l.mjs +580 -0
  147. package/dist/date-range-picker.d.mts +5 -0
  148. package/dist/date-range-picker.mjs +6 -0
  149. package/dist/datetime-field-BXwX68Nj.d.mts +84 -0
  150. package/dist/datetime-field-BzVBiROM.mjs +413 -0
  151. package/dist/datetime-field.d.mts +6 -0
  152. package/dist/datetime-field.mjs +5 -0
  153. package/dist/{deterministic-id-yMq4HfmS.mjs → deterministic-id-bMmJU5xD.mjs} +2 -2
  154. package/dist/{dialog-trigger-ppGKikEP.mjs → dialog-trigger-C4AAQF_T.mjs} +115 -21
  155. package/dist/dialog.d.mts +2 -2
  156. package/dist/dialog.mjs +2 -2
  157. package/dist/direction-Cf38aD7c.mjs +45 -0
  158. package/dist/direction-runtime-CiKR5uEp.mjs +25 -0
  159. package/dist/direction.d.mts +2 -0
  160. package/dist/direction.mjs +3 -0
  161. package/dist/{dismissable-layer-CpS07KUV.mjs → dismissable-layer-B9LIsTUt.mjs} +2 -2
  162. package/dist/dismissable-layer.mjs +1 -1
  163. package/dist/{drag-and-drop-controller-types-DoTSR_aM.d.mts → drag-and-drop-controller-types-oM5xTtD2.d.mts} +2 -110
  164. package/dist/drag-and-drop-types-D8VBO4ku.d.mts +110 -0
  165. package/dist/{drag-and-drop-CagE25Kt.d.mts → drag-and-drop-yh1y-FD_.d.mts} +2 -1
  166. package/dist/drag-and-drop.d.mts +3 -2
  167. package/dist/drag-and-drop.mjs +1 -1
  168. package/dist/drawer-9wrmtuGG.mjs +873 -0
  169. package/dist/drawer.d.mts +2 -0
  170. package/dist/drawer.mjs +3 -0
  171. package/dist/dropdown-menu-oNC-13FI.mjs +186 -0
  172. package/dist/dropdown-menu.d.mts +2 -0
  173. package/dist/dropdown-menu.mjs +3 -0
  174. package/dist/duration-field-DX6k1gqK.mjs +658 -0
  175. package/dist/duration-field.d.mts +3 -0
  176. package/dist/duration-field.mjs +3 -0
  177. package/dist/editable-C07PPwJc.mjs +467 -0
  178. package/dist/editable-DIA-2EIq.d.mts +245 -0
  179. package/dist/editable.d.mts +2 -0
  180. package/dist/editable.mjs +2 -0
  181. package/dist/emoji-picker-BeKnm1if.mjs +796 -0
  182. package/dist/emoji-picker-DNPPdAXl.d.mts +423 -0
  183. package/dist/emoji-picker.d.mts +2 -0
  184. package/dist/emoji-picker.mjs +2 -0
  185. package/dist/empty-state.d.mts +1 -1
  186. package/dist/{error-summary-DMe4IlM9.mjs → error-summary-vWmSDdaJ.mjs} +1 -1
  187. package/dist/error-summary.mjs +1 -1
  188. package/dist/{field-CBs2-Z9B.mjs → field-gzbG7lrq.mjs} +2 -2
  189. package/dist/field-segment-runtime-Xxas89cs.mjs +531 -0
  190. package/dist/{field-wiring-runtime-fQ3GoLuG.mjs → field-wiring-runtime-cmZTkNyV.mjs} +3 -3
  191. package/dist/field-wiring.mjs +1 -1
  192. package/dist/field.mjs +1 -1
  193. package/dist/fieldset-C7w0CZ5-.mjs +202 -0
  194. package/dist/fieldset.d.mts +2 -0
  195. package/dist/fieldset.mjs +2 -0
  196. package/dist/file-upload-BkvuY5_t.mjs +1289 -0
  197. package/dist/file-upload.d.mts +2 -0
  198. package/dist/file-upload.mjs +2 -0
  199. package/dist/floating-action-button-DMMR6Lp1.mjs +562 -0
  200. package/dist/floating-action-button.d.mts +2 -0
  201. package/dist/floating-action-button.mjs +2 -0
  202. package/dist/{focus-guards-DSxiemx7.mjs → focus-guards-VAqAT9Sx.mjs} +2 -2
  203. package/dist/focus-guards.mjs +1 -1
  204. package/dist/{focus-scope-mEg8UoeE.mjs → focus-scope-C_LNbKmT.mjs} +2 -2
  205. package/dist/focus-scope.mjs +1 -1
  206. package/dist/focus-visible-CsmiR8Xl.mjs +162 -0
  207. package/dist/focus-visible.d.mts +2 -0
  208. package/dist/focus-visible.mjs +2 -0
  209. package/dist/form-wizard-BRy6EB2P.mjs +451 -0
  210. package/dist/form-wizard-mErOrBg3.d.mts +272 -0
  211. package/dist/form-wizard.d.mts +2 -0
  212. package/dist/form-wizard.mjs +2 -0
  213. package/dist/forwarding-CW5zXHnN.d.mts +97 -0
  214. package/dist/forwarding.d.mts +2 -0
  215. package/dist/forwarding.mjs +73 -0
  216. package/dist/fullscreen-button.d.mts +1 -1
  217. package/dist/grid-list-BBlRg22H.d.mts +223 -0
  218. package/dist/grid-list-tw0nLMBH.mjs +421 -0
  219. package/dist/grid-list.d.mts +2 -0
  220. package/dist/grid-list.mjs +2 -0
  221. package/dist/heading.d.mts +1 -1
  222. package/dist/hotspot-QUJJ382M.d.mts +375 -0
  223. package/dist/hotspot-X74374qF.mjs +695 -0
  224. package/dist/hotspot.d.mts +2 -0
  225. package/dist/hotspot.mjs +2 -0
  226. package/dist/hover-card-Cexm4O5X.mjs +651 -0
  227. package/dist/hover-card.d.mts +3 -0
  228. package/dist/hover-card.mjs +3 -0
  229. package/dist/{icon-DhTTndMu.mjs → icon-FXse-MOQ.mjs} +1 -1
  230. package/dist/icon-button.d.mts +1 -1
  231. package/dist/icon.d.mts +1 -1
  232. package/dist/icon.mjs +1 -1
  233. package/dist/{id-BYG8aXPF.mjs → id-DpRQPEfi.mjs} +1 -1
  234. package/dist/id.mjs +2 -2
  235. package/dist/image-DCQeTHqi.d.mts +191 -0
  236. package/dist/image-compare-3HbGpofx.d.mts +266 -0
  237. package/dist/image-compare-C_tKf7p9.mjs +425 -0
  238. package/dist/image-compare.d.mts +2 -0
  239. package/dist/image-compare.mjs +2 -0
  240. package/dist/image-cropper-BPAHa995.d.mts +511 -0
  241. package/dist/image-cropper-D7u1_m61.mjs +1201 -0
  242. package/dist/image-cropper.d.mts +2 -0
  243. package/dist/image-cropper.mjs +2 -0
  244. package/dist/image-root-CtzMzbz5.mjs +396 -0
  245. package/dist/image-types-V-OkHg1V.d.mts +70 -0
  246. package/dist/image.d.mts +3 -0
  247. package/dist/image.mjs +2 -0
  248. package/dist/index.d.mts +126 -42
  249. package/dist/index.mjs +187 -63
  250. package/dist/{inert-outside-DOufBTyy.mjs → inert-outside-D6j-kH-9.mjs} +2 -2
  251. package/dist/inert-outside.mjs +1 -1
  252. package/dist/infinite-scroll-Cw25MyBb.mjs +399 -0
  253. package/dist/infinite-scroll-Dd-_uQFI.d.mts +276 -0
  254. package/dist/infinite-scroll.d.mts +2 -0
  255. package/dist/infinite-scroll.mjs +2 -0
  256. package/dist/{input-D4Zvmf67.d.mts → input-C0fgeRnS.d.mts} +2 -2
  257. package/dist/input-mask-CFlB3AZU.mjs +427 -0
  258. package/dist/input-mask-Cmfapuya.d.mts +370 -0
  259. package/dist/input-mask.d.mts +2 -0
  260. package/dist/input-mask.mjs +2 -0
  261. package/dist/{input-Blyx59CR.mjs → input-pcu0ET3F.mjs} +1 -1
  262. package/dist/input.d.mts +1 -1
  263. package/dist/input.mjs +1 -1
  264. package/dist/interaction-hooks.mjs +1 -1
  265. package/dist/kanban-BfDPA0-X.d.mts +255 -0
  266. package/dist/kanban-Bit7x_Z1.mjs +478 -0
  267. package/dist/kanban.d.mts +2 -0
  268. package/dist/kanban.mjs +2 -0
  269. package/dist/kbd.d.mts +1 -1
  270. package/dist/knob-W0OcRltH.d.mts +185 -0
  271. package/dist/knob-pointer-D59a2A0q.mjs +135 -0
  272. package/dist/knob-twxx9o6-.mjs +306 -0
  273. package/dist/knob-types-DhnHwi-m.d.mts +46 -0
  274. package/dist/knob.d.mts +3 -0
  275. package/dist/knob.mjs +2 -0
  276. package/dist/landmark-DVzm5g_c.mjs +387 -0
  277. package/dist/landmark.d.mts +2 -0
  278. package/dist/landmark.mjs +2 -0
  279. package/dist/lightbox-CSSmeG57.mjs +863 -0
  280. package/dist/lightbox-DedjKarT.d.mts +509 -0
  281. package/dist/lightbox.d.mts +2 -0
  282. package/dist/lightbox.mjs +2 -0
  283. package/dist/{link-DDaCjrI5.mjs → link-BtHb_ka0.mjs} +1 -1
  284. package/dist/link.mjs +1 -1
  285. package/dist/list.d.mts +1 -1
  286. package/dist/listbox-grid-BBYXNuA2.mjs +455 -0
  287. package/dist/listbox-grid-BifoC9TP.d.mts +280 -0
  288. package/dist/listbox-grid-model-CYGNqcQM.mjs +105 -0
  289. package/dist/listbox-grid.d.mts +2 -0
  290. package/dist/listbox-grid.mjs +2 -0
  291. package/dist/{listbox-IaqaoiRn.mjs → listbox-item-CGZsyHTY.mjs} +3 -3
  292. package/dist/listbox.d.mts +1 -1
  293. package/dist/listbox.mjs +1 -1
  294. package/dist/locale-Cn6inuVS.mjs +132 -0
  295. package/dist/{locale-DmAAufmA.mjs → locale-runtime-SahmDKpf.mjs} +3 -130
  296. package/dist/locale.d.mts +1 -1
  297. package/dist/locale.mjs +2 -1
  298. package/dist/marquee-BXVz0Oyy.d.mts +248 -0
  299. package/dist/marquee-Dal3jWE0.mjs +380 -0
  300. package/dist/marquee.d.mts +2 -0
  301. package/dist/marquee.mjs +2 -0
  302. package/dist/masonry-CTtFZB_K.mjs +261 -0
  303. package/dist/masonry-DjBjdP8M.d.mts +132 -0
  304. package/dist/masonry.d.mts +2 -0
  305. package/dist/masonry.mjs +2 -0
  306. package/dist/master-detail-B-ELzmIn.d.mts +105 -0
  307. package/dist/master-detail-CVXNzmSl.mjs +161 -0
  308. package/dist/master-detail.d.mts +2 -0
  309. package/dist/master-detail.mjs +2 -0
  310. package/dist/media-player-DMIHVYVU.d.mts +37 -0
  311. package/dist/media-player-volume-slider-DCtrE4IQ.mjs +1355 -0
  312. package/dist/media-player-volume-slider.vue-BVq639LS.d.mts +572 -0
  313. package/dist/media-player.d.mts +3 -0
  314. package/dist/media-player.mjs +2 -0
  315. package/dist/media-preferences-DrWRc5wW.mjs +207 -0
  316. package/dist/media-preferences.d.mts +2 -0
  317. package/dist/media-preferences.mjs +2 -0
  318. package/dist/mention-Bl99DLbN.d.mts +558 -0
  319. package/dist/mention-CwpShhLf.mjs +1234 -0
  320. package/dist/mention.d.mts +2 -0
  321. package/dist/mention.mjs +2 -0
  322. package/dist/menu-rJFx36eG.mjs +1924 -0
  323. package/dist/menu.d.mts +2 -0
  324. package/dist/menu.mjs +2 -0
  325. package/dist/menubar-bK3wg_-U.mjs +358 -0
  326. package/dist/menubar.d.mts +2 -0
  327. package/dist/menubar.mjs +3 -0
  328. package/dist/{meter-BwOXVWH8.mjs → meter-ZZIKQTLX.mjs} +1 -1
  329. package/dist/meter.mjs +1 -1
  330. package/dist/month-picker-I1-NGJns.mjs +448 -0
  331. package/dist/month-picker.d.mts +4 -0
  332. package/dist/month-picker.mjs +3 -0
  333. package/dist/motion.css +1 -0
  334. package/dist/move.mjs +1 -1
  335. package/dist/{native-select-H9qvaqQH.mjs → native-select-D53Sedlb.mjs} +1 -1
  336. package/dist/native-select.d.mts +1 -1
  337. package/dist/native-select.mjs +1 -1
  338. package/dist/navigation-menu-BV3-JW64.mjs +720 -0
  339. package/dist/navigation-menu-CZSJMMDe.d.mts +285 -0
  340. package/dist/navigation-menu.d.mts +2 -0
  341. package/dist/navigation-menu.mjs +2 -0
  342. package/dist/notification-center-JE6Nv7xM.mjs +633 -0
  343. package/dist/notification-center.d.mts +2 -0
  344. package/dist/notification-center.mjs +2 -0
  345. package/dist/number-field-CYRl8cwn.mjs +942 -0
  346. package/dist/number-field-iIpdu4WL.d.mts +456 -0
  347. package/dist/number-field.d.mts +2 -0
  348. package/dist/number-field.mjs +2 -0
  349. package/dist/pager-BNTKGsPt.mjs +345 -0
  350. package/dist/pager.d.mts +2 -0
  351. package/dist/pager.mjs +2 -0
  352. package/dist/{pagination-Bs4SBSE4.mjs → pagination-CnrZGmpd.mjs} +2 -2
  353. package/dist/pagination.d.mts +1 -1
  354. package/dist/pagination.mjs +1 -1
  355. package/dist/pan-zoom-B6PSdWyE.mjs +856 -0
  356. package/dist/pan-zoom-CChhIeWQ.d.mts +491 -0
  357. package/dist/pan-zoom.d.mts +2 -0
  358. package/dist/pan-zoom.mjs +2 -0
  359. package/dist/password-field-CDHOU2a5.mjs +438 -0
  360. package/dist/password-field-CbEj3EXh.d.mts +272 -0
  361. package/dist/password-field.d.mts +2 -0
  362. package/dist/password-field.mjs +2 -0
  363. package/dist/period-grid-runtime-B-rUzfxR.mjs +155 -0
  364. package/dist/phone-field-DCVtivyL.d.mts +250 -0
  365. package/dist/phone-field-cBnBPJkc.mjs +446 -0
  366. package/dist/phone-field.d.mts +2 -0
  367. package/dist/phone-field.mjs +2 -0
  368. package/dist/pin-input-Dci-Z7uY.d.mts +223 -0
  369. package/dist/pin-input-oMrddl8G.mjs +446 -0
  370. package/dist/pin-input.d.mts +2 -0
  371. package/dist/pin-input.mjs +2 -0
  372. package/dist/plain-date-By3bTWQG.d.mts +143 -0
  373. package/dist/plain-date-DHX8BIlm.mjs +329 -0
  374. package/dist/plain-date-time-BQrJLa0I.mjs +142 -0
  375. package/dist/plain-date-time-TY1jIYOW.d.mts +42 -0
  376. package/dist/plain-time-CDNop94U.d.mts +45 -0
  377. package/dist/plain-time-Dd8AhiH4.mjs +73 -0
  378. package/dist/polymorphic-Dhbl68LC.d.mts +65 -0
  379. package/dist/polymorphic.d.mts +2 -0
  380. package/dist/polymorphic.mjs +57 -0
  381. package/dist/popconfirm-D4Qehh_H.mjs +481 -0
  382. package/dist/popconfirm.d.mts +2 -0
  383. package/dist/popconfirm.mjs +2 -0
  384. package/dist/popover-arrow-CnhW_PBs.mjs +57 -0
  385. package/dist/{popover-DeENBKXE.mjs → popover-trigger-DXiskBX-.mjs} +19 -65
  386. package/dist/popover-types-DCcody_B.d.mts +96 -0
  387. package/dist/popover.d.mts +3 -1
  388. package/dist/popover.mjs +2 -1
  389. package/dist/{positioner-BYmQk86M.mjs → positioner-arrow-CNZrXSjb.mjs} +1 -1
  390. package/dist/positioner.mjs +2 -2
  391. package/dist/print-button.d.mts +1 -1
  392. package/dist/{progress--vbV2wTx.mjs → progress-DuipCF-K.mjs} +1 -1
  393. package/dist/{progress-bar-BqS94auR.mjs → progress-bar-lXHO-U8x.mjs} +1 -1
  394. package/dist/progress-bar.d.mts +1 -1
  395. package/dist/progress-bar.mjs +1 -1
  396. package/dist/progress.mjs +1 -1
  397. package/dist/pull-to-refresh-CxTC02h-.mjs +251 -0
  398. package/dist/pull-to-refresh-DUbbFYbQ.d.mts +117 -0
  399. package/dist/pull-to-refresh.d.mts +2 -0
  400. package/dist/pull-to-refresh.mjs +2 -0
  401. package/dist/qr-code-BGbc3Mxp.mjs +1420 -0
  402. package/dist/qr-code-Dlu_wDch.d.mts +242 -0
  403. package/dist/qr-code-kanji.d.mts +10 -0
  404. package/dist/qr-code-kanji.mjs +80 -0
  405. package/dist/qr-code-types-DgeFkJfK.d.mts +200 -0
  406. package/dist/qr-code.d.mts +3 -0
  407. package/dist/qr-code.mjs +2 -0
  408. package/dist/{radio-group-DbTmWcxl.mjs → radio-group-BVMgzgPK.mjs} +2 -2
  409. package/dist/radio-group.d.mts +1 -1
  410. package/dist/radio-group.mjs +1 -1
  411. package/dist/range-calendar-DInfduyf.d.mts +96 -0
  412. package/dist/range-calendar-root-CEhaPJAd.mjs +351 -0
  413. package/dist/range-calendar.d.mts +4 -0
  414. package/dist/range-calendar.mjs +4 -0
  415. package/dist/range-slider-BfJ4i4FR.d.mts +346 -0
  416. package/dist/range-slider-DVLvZ6ll.mjs +568 -0
  417. package/dist/range-slider.d.mts +2 -0
  418. package/dist/range-slider.mjs +2 -0
  419. package/dist/{rating-BjKLGPP6.mjs → rating-DgptW1tA.mjs} +1 -1
  420. package/dist/rating.mjs +1 -1
  421. package/dist/resizable-9lsG33pr.d.mts +217 -0
  422. package/dist/resizable-jhtD58V0.mjs +449 -0
  423. package/dist/resizable.d.mts +2 -0
  424. package/dist/resizable.mjs +2 -0
  425. package/dist/resolver.d.mts +1134 -0
  426. package/dist/resolver.mjs +1179 -0
  427. package/dist/responsive-BJFdBOmJ.d.mts +192 -0
  428. package/dist/responsive-UBdGCy3B.mjs +189 -0
  429. package/dist/responsive.d.mts +2 -0
  430. package/dist/responsive.mjs +2 -0
  431. package/dist/rich-text-DXsS6Ox4.mjs +2767 -0
  432. package/dist/rich-text-ePQBkrmN.d.mts +767 -0
  433. package/dist/rich-text.d.mts +2 -0
  434. package/dist/rich-text.mjs +2 -0
  435. package/dist/safe-area-2nFu3hbL.d.mts +83 -0
  436. package/dist/safe-area-DCkkhyLj.mjs +139 -0
  437. package/dist/safe-area.d.mts +2 -0
  438. package/dist/safe-area.mjs +2 -0
  439. package/dist/scheduler-6sLVhSSP.mjs +1397 -0
  440. package/dist/scheduler-DqzOgTx4.d.mts +401 -0
  441. package/dist/scheduler.d.mts +5 -0
  442. package/dist/scheduler.mjs +5 -0
  443. package/dist/scroll-area.d.mts +1 -1
  444. package/dist/{scroll-lock-BcmK0baN.mjs → scroll-lock-B2hstCJR.mjs} +2 -2
  445. package/dist/scroll-lock.mjs +1 -1
  446. package/dist/scroll-spy-UzNvEzBk.d.mts +68 -0
  447. package/dist/scroll-spy.d.mts +2 -0
  448. package/dist/scroll-spy.mjs +122 -0
  449. package/dist/scrubber-preview-BhXniJLu.d.mts +365 -0
  450. package/dist/scrubber-preview-DZd8TwiU.mjs +728 -0
  451. package/dist/scrubber-preview.d.mts +2 -0
  452. package/dist/scrubber-preview.mjs +2 -0
  453. package/dist/{search-field-DzW31UHM.d.mts → search-field-Biw9vApG.d.mts} +2 -2
  454. package/dist/{search-field-70Kr2616.mjs → search-field-DYbRTK7Y.mjs} +1 -1
  455. package/dist/search-field.d.mts +1 -1
  456. package/dist/search-field.mjs +1 -1
  457. package/dist/select-AbQDja2T.mjs +645 -0
  458. package/dist/select-keyboard-5_BwRI9c.mjs +856 -0
  459. package/dist/select-virtualizer-U1vV1g4h.mjs +416 -0
  460. package/dist/select.d.mts +2 -0
  461. package/dist/select.mjs +4 -0
  462. package/dist/share-button.d.mts +1 -1
  463. package/dist/sidebar-BJS0FgDe.mjs +672 -0
  464. package/dist/sidebar.d.mts +2 -0
  465. package/dist/sidebar.mjs +2 -0
  466. package/dist/signature-pad-CKlmZE53.mjs +811 -0
  467. package/dist/signature-pad-CQmDHzTC.d.mts +447 -0
  468. package/dist/signature-pad.d.mts +2 -0
  469. package/dist/signature-pad.mjs +2 -0
  470. package/dist/{skip-link-BUp9HXXt.mjs → skip-link-C6R_cfhT.mjs} +1 -1
  471. package/dist/skip-link.mjs +1 -1
  472. package/dist/slider-3DLT8_rt.d.mts +123 -0
  473. package/dist/{slider-BiZSZLDp.mjs → slider-Dq0TzKH-.mjs} +2 -2
  474. package/dist/{slider-CYBbxeNy.d.mts → slider-types-B6_pt5EG.d.mts} +2 -56
  475. package/dist/slider.d.mts +3 -2
  476. package/dist/slider.mjs +2 -2
  477. package/dist/slot-utils-Bgifr3-C.d.mts +62 -0
  478. package/dist/slot-utils.d.mts +2 -0
  479. package/dist/slot-utils.mjs +77 -0
  480. package/dist/{sortable-DQl92bwo.d.mts → sortable-CmSh0mgo.d.mts} +2 -1
  481. package/dist/{sortable-BntjgYra.mjs → sortable-DCJbI1MN.mjs} +1 -1
  482. package/dist/sortable.d.mts +1 -1
  483. package/dist/sortable.mjs +1 -1
  484. package/dist/{spinner-bizL-oOg.mjs → spinner-BNWs1gUm.mjs} +1 -1
  485. package/dist/spinner.mjs +1 -1
  486. package/dist/splitter-jdw8bf4m.mjs +739 -0
  487. package/dist/splitter.d.mts +2 -0
  488. package/dist/splitter.mjs +2 -0
  489. package/dist/status-light.d.mts +1 -1
  490. package/dist/{stepper-CwX6BZaN.mjs → stepper-WAC5nyr4.mjs} +3 -3
  491. package/dist/stepper.d.mts +1 -1
  492. package/dist/stepper.mjs +1 -1
  493. package/dist/sticky-CDUVy7Y0.mjs +172 -0
  494. package/dist/sticky-ChFLgNpf.d.mts +98 -0
  495. package/dist/sticky-stack-CZoabHuP.d.mts +130 -0
  496. package/dist/sticky-stack-CtdRHVl8.mjs +220 -0
  497. package/dist/sticky-stack.d.mts +2 -0
  498. package/dist/sticky-stack.mjs +2 -0
  499. package/dist/sticky.d.mts +2 -0
  500. package/dist/sticky.mjs +2 -0
  501. package/dist/style.css +1 -1
  502. package/dist/surface.d.mts +1 -1
  503. package/dist/swipe-actions-CBMrnt3-.d.mts +182 -0
  504. package/dist/swipe-actions-iocvBZqp.mjs +382 -0
  505. package/dist/swipe-actions.d.mts +2 -0
  506. package/dist/swipe-actions.mjs +2 -0
  507. package/dist/{switch-Ck5YmfXb.mjs → switch-DfnY8N-m.mjs} +1 -1
  508. package/dist/switch.d.mts +1 -1
  509. package/dist/switch.mjs +1 -1
  510. package/dist/{tabs-DSXIomI_.mjs → tabs-DjNig7Fb.mjs} +8 -7
  511. package/dist/tabs.d.mts +1 -1
  512. package/dist/tabs.mjs +1 -1
  513. package/dist/tags-input-CRN4z2zo.mjs +957 -0
  514. package/dist/tags-input.d.mts +2 -0
  515. package/dist/tags-input.mjs +2 -0
  516. package/dist/text.d.mts +1 -1
  517. package/dist/{textarea-D7V5lLPX.d.mts → textarea-4eIDNcvv.d.mts} +2 -2
  518. package/dist/{textarea-BZimEPBR.mjs → textarea-DzPEhQ0g.mjs} +1 -1
  519. package/dist/textarea.d.mts +1 -1
  520. package/dist/textarea.mjs +1 -1
  521. package/dist/theme-preset-atelier.css +1 -1
  522. package/dist/theme-preset-high-contrast.css +1 -1
  523. package/dist/theme-preset-midnight.css +1 -1
  524. package/dist/theme-preset-paper.css +1 -1
  525. package/dist/theme-preset-play.css +1 -1
  526. package/dist/theme-preset-signal.css +1 -1
  527. package/dist/theme.css +1 -1
  528. package/dist/time-field-C3lHSiok.mjs +382 -0
  529. package/dist/time-field-DJXx2qsl.d.mts +80 -0
  530. package/dist/time-field.d.mts +5 -0
  531. package/dist/time-field.mjs +4 -0
  532. package/dist/time-picker-5oElJB0c.mjs +281 -0
  533. package/dist/time-picker-DPbRhOTN.d.mts +96 -0
  534. package/dist/time-picker.d.mts +4 -0
  535. package/dist/time-picker.mjs +4 -0
  536. package/dist/timeline-BrWPruJn.d.mts +184 -0
  537. package/dist/timeline-D0G4mhMb.mjs +315 -0
  538. package/dist/timeline.d.mts +2 -0
  539. package/dist/timeline.mjs +2 -0
  540. package/dist/toast-Bg9BiC1N.mjs +946 -0
  541. package/dist/toast-_1SRKOyH.d.mts +540 -0
  542. package/dist/toast.d.mts +2 -0
  543. package/dist/toast.mjs +2 -0
  544. package/dist/toc-gBIbC32N.mjs +297 -0
  545. package/dist/toc-xBvtoiyi.d.mts +214 -0
  546. package/dist/toc.d.mts +2 -0
  547. package/dist/toc.mjs +2 -0
  548. package/dist/{toggle-group-DybU9N7k.mjs → toggle-group-C0di-itt.mjs} +2 -1
  549. package/dist/toggle-group.mjs +1 -1
  550. package/dist/toggle.d.mts +1 -1
  551. package/dist/toolbar.mjs +1 -1
  552. package/dist/{tooltip-Cgii5xMx.mjs → tooltip-DtRhkdKl.mjs} +4 -4
  553. package/dist/tooltip.d.mts +1 -1
  554. package/dist/tooltip.mjs +1 -1
  555. package/dist/tour-mdpWhlxr.mjs +1387 -0
  556. package/dist/tour.d.mts +2 -0
  557. package/dist/tour.mjs +2 -0
  558. package/dist/transfer-list-BCl_ebx1.d.mts +363 -0
  559. package/dist/transfer-list-Bu37m91l.mjs +755 -0
  560. package/dist/transfer-list.d.mts +2 -0
  561. package/dist/transfer-list.mjs +2 -0
  562. package/dist/tree-C93WAEmU.mjs +1327 -0
  563. package/dist/tree.d.mts +2 -0
  564. package/dist/tree.mjs +2 -0
  565. package/dist/variants-DfqvmO-k.d.mts +165 -0
  566. package/dist/variants.d.mts +2 -0
  567. package/dist/variants.mjs +155 -0
  568. package/dist/video-player-Bv400Q5p.d.mts +170 -0
  569. package/dist/video-player-CD1oXi7J.mjs +270 -0
  570. package/dist/video-player.d.mts +3 -0
  571. package/dist/video-player.mjs +3 -0
  572. package/dist/webcam-capture-BGuP5y2Q.mjs +922 -0
  573. package/dist/webcam-capture-D5JRu3ab.d.mts +655 -0
  574. package/dist/webcam-capture.d.mts +2 -0
  575. package/dist/webcam-capture.mjs +2 -0
  576. package/dist/week-picker-BUduCITx.mjs +287 -0
  577. package/dist/week-picker.d.mts +4 -0
  578. package/dist/week-picker.mjs +4 -0
  579. package/dist/window-manager-B-tBF_nq.mjs +693 -0
  580. package/dist/window-manager-BuKeIHq_.d.mts +368 -0
  581. package/dist/window-manager.d.mts +2 -0
  582. package/dist/window-manager.mjs +2 -0
  583. package/dist/year-picker-CKCopmHy.d.mts +167 -0
  584. package/dist/year-picker-D4QB6Z1L.mjs +388 -0
  585. package/dist/year-picker.d.mts +3 -0
  586. package/dist/year-picker.mjs +3 -0
  587. package/package.json +571 -6
  588. package/registry/files/families/accessibility/a11y-audit/a11y-audit-rules.ts +206 -0
  589. package/registry/files/families/accessibility/a11y-audit/a11y-audit-runtime.ts +110 -0
  590. package/registry/files/families/accessibility/a11y-audit/a11y-audit-types.ts +73 -0
  591. package/registry/files/families/accessibility/a11y-audit/a11y-audit.ts +11 -0
  592. package/registry/files/families/accessibility/a11y-audit/examples/a11y-audit-basic.vue +16 -0
  593. package/registry/files/families/accessibility/announcer/announcer-busy.ts +73 -0
  594. package/registry/files/families/accessibility/announcer/announcer-provider.vue +64 -0
  595. package/registry/files/families/accessibility/announcer/announcer-runtime.ts +194 -0
  596. package/registry/files/families/accessibility/announcer/announcer-types.ts +100 -0
  597. package/registry/files/families/accessibility/announcer/announcer.ts +21 -0
  598. package/registry/files/families/accessibility/announcer/examples/announcer-basic.vue +26 -0
  599. package/registry/files/families/accessibility/focus/focus-internal.ts +135 -0
  600. package/registry/files/families/accessibility/focus/focus-types.ts +123 -0
  601. package/registry/files/families/accessibility/focus/focus.ts +314 -0
  602. package/registry/files/families/accessibility/focus-guards/focus-guards-internal.ts +111 -0
  603. package/registry/files/families/accessibility/focus-guards/focus-guards-stack.ts +60 -0
  604. package/registry/files/families/accessibility/focus-guards/focus-guards-types.ts +72 -0
  605. package/registry/files/families/accessibility/focus-guards/focus-guards.ts +274 -0
  606. package/registry/files/families/accessibility/focus-scope/focus-scope-dom.ts +286 -0
  607. package/registry/files/families/accessibility/focus-scope/focus-scope-internal.ts +126 -0
  608. package/registry/files/families/accessibility/focus-scope/focus-scope-manager.ts +51 -0
  609. package/registry/files/families/accessibility/focus-scope/focus-scope-stack.ts +70 -0
  610. package/registry/files/families/accessibility/focus-scope/focus-scope-types.ts +110 -0
  611. package/registry/files/families/accessibility/focus-scope/focus-scope.ts +338 -0
  612. package/registry/files/families/accessibility/focus-scope/use-focus-scope.ts +18 -0
  613. package/registry/files/families/accessibility/focus-visible/examples/focus-visible-basic.vue +11 -0
  614. package/registry/files/families/accessibility/focus-visible/focus-visible-context.ts +5 -0
  615. package/registry/files/families/accessibility/focus-visible/focus-visible-provider.vue +143 -0
  616. package/registry/files/families/accessibility/focus-visible/focus-visible-runtime.ts +69 -0
  617. package/registry/files/families/accessibility/focus-visible/focus-visible-types.ts +37 -0
  618. package/registry/files/families/accessibility/focus-visible/focus-visible.ts +14 -0
  619. package/registry/files/families/accessibility/inert-outside/inert-outside-dom.ts +75 -0
  620. package/registry/files/families/accessibility/inert-outside/inert-outside-internal.ts +63 -0
  621. package/registry/files/families/accessibility/inert-outside/inert-outside-stack.ts +163 -0
  622. package/registry/files/families/accessibility/inert-outside/inert-outside-types.ts +44 -0
  623. package/registry/files/families/accessibility/inert-outside/inert-outside.ts +136 -0
  624. package/registry/files/families/accessibility/interaction-modality/interaction-modality-events.ts +47 -0
  625. package/registry/files/families/accessibility/interaction-modality/interaction-modality-hub.ts +150 -0
  626. package/registry/files/families/accessibility/interaction-modality/interaction-modality-types.ts +77 -0
  627. package/registry/files/families/accessibility/interaction-modality/interaction-modality.ts +212 -0
  628. package/registry/files/families/accessibility/landmark/examples/landmark-basic.vue +21 -0
  629. package/registry/files/families/accessibility/landmark/landmark-provider.vue +85 -0
  630. package/registry/files/families/accessibility/landmark/landmark-runtime.ts +324 -0
  631. package/registry/files/families/accessibility/landmark/landmark-types.ts +207 -0
  632. package/registry/files/families/accessibility/landmark/landmark.ts +29 -0
  633. package/registry/files/families/accessibility/landmark/landmark.vue +140 -0
  634. package/registry/files/families/accessibility/live-region/examples/live-region-basic.vue +21 -0
  635. package/registry/files/families/accessibility/live-region/live-region-runtime.ts +90 -0
  636. package/registry/files/families/accessibility/live-region/live-region-types.ts +32 -0
  637. package/registry/files/families/accessibility/live-region/live-region.ts +10 -0
  638. package/registry/files/families/accessibility/live-region/live-region.vue +54 -0
  639. package/registry/files/families/accessibility/media-preferences/examples/media-preferences-basic.vue +17 -0
  640. package/registry/files/families/accessibility/media-preferences/media-preferences-context.ts +8 -0
  641. package/registry/files/families/accessibility/media-preferences/media-preferences-provider.vue +88 -0
  642. package/registry/files/families/accessibility/media-preferences/media-preferences-runtime.ts +193 -0
  643. package/registry/files/families/accessibility/media-preferences/media-preferences-types.ts +67 -0
  644. package/registry/files/families/accessibility/media-preferences/media-preferences.ts +27 -0
  645. package/registry/files/families/accessibility/scroll-lock/scroll-lock-dom.ts +140 -0
  646. package/registry/files/families/accessibility/scroll-lock/scroll-lock-internal.ts +45 -0
  647. package/registry/files/families/accessibility/scroll-lock/scroll-lock-stack.ts +122 -0
  648. package/registry/files/families/accessibility/scroll-lock/scroll-lock-types.ts +53 -0
  649. package/registry/files/families/accessibility/scroll-lock/scroll-lock.ts +132 -0
  650. package/registry/files/families/accessibility/visually-hidden/examples/visually-hidden-basic.vue +11 -0
  651. package/registry/files/families/accessibility/visually-hidden/visually-hidden.ts +2 -0
  652. package/registry/files/families/accessibility/visually-hidden/visually-hidden.vue +45 -0
  653. package/registry/files/families/actions/back-to-top/back-to-top-types.ts +32 -0
  654. package/registry/files/families/actions/back-to-top/back-to-top.ts +9 -0
  655. package/registry/files/families/actions/back-to-top/back-to-top.vue +200 -0
  656. package/registry/files/families/actions/back-to-top/examples/back-to-top-basic.vue +24 -0
  657. package/registry/files/families/actions/button/button-keyboard.ts +20 -0
  658. package/registry/files/families/actions/button/button-visual.css +119 -0
  659. package/registry/files/families/actions/button/button.ts +4 -0
  660. package/registry/files/families/actions/button/button.vue +149 -0
  661. package/registry/files/families/actions/button/examples/button-basic.vue +19 -0
  662. package/registry/files/families/actions/button-group/button-group-context.ts +42 -0
  663. package/registry/files/families/actions/button-group/button-group-item.vue +214 -0
  664. package/registry/files/families/actions/button-group/button-group-types.ts +70 -0
  665. package/registry/files/families/actions/button-group/button-group.ts +13 -0
  666. package/registry/files/families/actions/button-group/button-group.vue +293 -0
  667. package/registry/files/families/actions/button-group/examples/button-group-basic.vue +24 -0
  668. package/registry/files/families/actions/copy-button/copy-button-types.ts +161 -0
  669. package/registry/files/families/actions/copy-button/copy-button.ts +17 -0
  670. package/registry/files/families/actions/copy-button/copy-button.vue +218 -0
  671. package/registry/files/families/actions/copy-button/examples/copy-button-basic.vue +25 -0
  672. package/registry/files/families/actions/floating-action-button/examples/floating-action-button-basic.vue +21 -0
  673. package/registry/files/families/actions/floating-action-button/examples/floating-action-button-speed-dial.vue +32 -0
  674. package/registry/files/families/actions/floating-action-button/floating-action-button-types.ts +129 -0
  675. package/registry/files/families/actions/floating-action-button/floating-action-button.ts +21 -0
  676. package/registry/files/families/actions/floating-action-button/floating-action-button.vue +94 -0
  677. package/registry/files/families/actions/floating-action-button/speed-dial-action.vue +138 -0
  678. package/registry/files/families/actions/floating-action-button/speed-dial-content.vue +140 -0
  679. package/registry/files/families/actions/floating-action-button/speed-dial-context.ts +31 -0
  680. package/registry/files/families/actions/floating-action-button/speed-dial-root.vue +262 -0
  681. package/registry/files/families/actions/floating-action-button/speed-dial-trigger.vue +105 -0
  682. package/registry/files/families/actions/fullscreen-button/examples/fullscreen-button-basic.vue +41 -0
  683. package/registry/files/families/actions/fullscreen-button/fullscreen-button-types.ts +207 -0
  684. package/registry/files/families/actions/fullscreen-button/fullscreen-button.ts +20 -0
  685. package/registry/files/families/actions/fullscreen-button/fullscreen-button.vue +310 -0
  686. package/registry/files/families/actions/print-button/examples/print-button-basic.vue +28 -0
  687. package/registry/files/families/actions/print-button/print-button-types.ts +158 -0
  688. package/registry/files/families/actions/print-button/print-button.ts +17 -0
  689. package/registry/files/families/actions/print-button/print-button.vue +211 -0
  690. package/registry/files/families/actions/share-button/examples/share-button-basic.vue +30 -0
  691. package/registry/files/families/actions/share-button/share-button-types.ts +207 -0
  692. package/registry/files/families/actions/share-button/share-button.ts +18 -0
  693. package/registry/files/families/actions/share-button/share-button.vue +251 -0
  694. package/registry/files/families/actions/toolbar/examples/toolbar-basic.vue +19 -0
  695. package/registry/files/families/actions/toolbar/toolbar-context.ts +42 -0
  696. package/registry/files/families/actions/toolbar/toolbar-contracts.ts +38 -0
  697. package/registry/files/families/actions/toolbar/toolbar-item.vue +198 -0
  698. package/registry/files/families/actions/toolbar/toolbar-types.ts +215 -0
  699. package/registry/files/families/actions/toolbar/toolbar.ts +27 -0
  700. package/registry/files/families/actions/toolbar/toolbar.vue +277 -0
  701. package/registry/files/families/charts/chart/chart-area.vue +87 -0
  702. package/registry/files/families/charts/chart/chart-axis.vue +178 -0
  703. package/registry/files/families/charts/chart/chart-bars.vue +165 -0
  704. package/registry/files/families/charts/chart/chart-context.ts +30 -0
  705. package/registry/files/families/charts/chart/chart-crosshair.vue +60 -0
  706. package/registry/files/families/charts/chart/chart-data-table.vue +100 -0
  707. package/registry/files/families/charts/chart/chart-format.ts +53 -0
  708. package/registry/files/families/charts/chart/chart-grid.vue +65 -0
  709. package/registry/files/families/charts/chart/chart-legend.vue +62 -0
  710. package/registry/files/families/charts/chart/chart-line.vue +77 -0
  711. package/registry/files/families/charts/chart/chart-navigation.ts +132 -0
  712. package/registry/files/families/charts/chart/chart-pie.vue +197 -0
  713. package/registry/files/families/charts/chart/chart-points.vue +190 -0
  714. package/registry/files/families/charts/chart/chart-render-fixture.ts +111 -0
  715. package/registry/files/families/charts/chart/chart-root.vue +353 -0
  716. package/registry/files/families/charts/chart/chart-series.ts +28 -0
  717. package/registry/files/families/charts/chart/chart-tooltip.vue +69 -0
  718. package/registry/files/families/charts/chart/chart-types.ts +149 -0
  719. package/registry/files/families/charts/chart/chart.ts +35 -0
  720. package/registry/files/families/charts/chart/examples/chart-basic.vue +69 -0
  721. package/registry/files/families/charts/chart-scale/chart-scale.ts +45 -0
  722. package/registry/files/families/charts/chart-scale/scale-band.ts +180 -0
  723. package/registry/files/families/charts/chart-scale/scale-continuous.ts +365 -0
  724. package/registry/files/families/charts/chart-scale/scale-d3-vectors.ts +584 -0
  725. package/registry/files/families/charts/chart-scale/scale-format.ts +74 -0
  726. package/registry/files/families/charts/chart-scale/scale-ticks.ts +124 -0
  727. package/registry/files/families/charts/chart-scale/scale-time-interval.ts +315 -0
  728. package/registry/files/families/charts/chart-scale/scale-time.ts +117 -0
  729. package/registry/files/families/charts/chart-scale/scale-types.ts +390 -0
  730. package/registry/files/families/charts/chart-shape/chart-shape.ts +33 -0
  731. package/registry/files/families/charts/chart-shape/shape-arc.ts +370 -0
  732. package/registry/files/families/charts/chart-shape/shape-bar.ts +134 -0
  733. package/registry/files/families/charts/chart-shape/shape-curve.ts +373 -0
  734. package/registry/files/families/charts/chart-shape/shape-d3-vectors.ts +1285 -0
  735. package/registry/files/families/charts/chart-shape/shape-line.ts +156 -0
  736. package/registry/files/families/charts/chart-shape/shape-path.ts +107 -0
  737. package/registry/files/families/charts/chart-shape/shape-stack.ts +282 -0
  738. package/registry/files/families/data/data-grid/data-grid-cell-editor.vue +49 -0
  739. package/registry/files/families/data/data-grid/data-grid-cell.vue +131 -0
  740. package/registry/files/families/data/data-grid/data-grid-column-header.vue +171 -0
  741. package/registry/files/families/data/data-grid/data-grid-columns.ts +166 -0
  742. package/registry/files/families/data/data-grid/data-grid-context.ts +35 -0
  743. package/registry/files/families/data/data-grid/data-grid-model.ts +623 -0
  744. package/registry/files/families/data/data-grid/data-grid-resize-handle.vue +126 -0
  745. package/registry/files/families/data/data-grid/data-grid-row.vue +99 -0
  746. package/registry/files/families/data/data-grid/data-grid-rows.ts +176 -0
  747. package/registry/files/families/data/data-grid/data-grid-types.ts +360 -0
  748. package/registry/files/families/data/data-grid/data-grid.ts +62 -0
  749. package/registry/files/families/data/data-grid/data-grid.vue +609 -0
  750. package/registry/files/families/data/data-grid/examples/data-grid-basic.vue +47 -0
  751. package/registry/files/families/data/grid-list/examples/grid-list-basic.vue +45 -0
  752. package/registry/files/families/data/grid-list/grid-list-context.ts +22 -0
  753. package/registry/files/families/data/grid-list/grid-list-item.vue +125 -0
  754. package/registry/files/families/data/grid-list/grid-list-types.ts +70 -0
  755. package/registry/files/families/data/grid-list/grid-list.ts +14 -0
  756. package/registry/files/families/data/grid-list/grid-list.vue +393 -0
  757. package/registry/files/families/data/infinite-scroll/examples/infinite-scroll-basic.vue +36 -0
  758. package/registry/files/families/data/infinite-scroll/infinite-scroll-context.ts +44 -0
  759. package/registry/files/families/data/infinite-scroll/infinite-scroll-item.vue +83 -0
  760. package/registry/files/families/data/infinite-scroll/infinite-scroll-load-more.vue +84 -0
  761. package/registry/files/families/data/infinite-scroll/infinite-scroll-root.vue +282 -0
  762. package/registry/files/families/data/infinite-scroll/infinite-scroll-sentinel.vue +76 -0
  763. package/registry/files/families/data/infinite-scroll/infinite-scroll-status.vue +61 -0
  764. package/registry/files/families/data/infinite-scroll/infinite-scroll-types.ts +85 -0
  765. package/registry/files/families/data/infinite-scroll/infinite-scroll.ts +22 -0
  766. package/registry/files/families/data/kanban/examples/kanban-basic.vue +46 -0
  767. package/registry/files/families/data/kanban/kanban-card.vue +121 -0
  768. package/registry/files/families/data/kanban/kanban-column.vue +98 -0
  769. package/registry/files/families/data/kanban/kanban-context.ts +29 -0
  770. package/registry/files/families/data/kanban/kanban-types.ts +96 -0
  771. package/registry/files/families/data/kanban/kanban.ts +19 -0
  772. package/registry/files/families/data/kanban/kanban.vue +359 -0
  773. package/registry/files/families/data/table/examples/table-basic.vue +36 -0
  774. package/registry/files/families/data/table/table-body.vue +37 -0
  775. package/registry/files/families/data/table/table-caption.vue +60 -0
  776. package/registry/files/families/data/table/table-cell.vue +85 -0
  777. package/registry/files/families/data/table/table-contracts.ts +93 -0
  778. package/registry/files/families/data/table/table-head.vue +37 -0
  779. package/registry/files/families/data/table/table-header.vue +93 -0
  780. package/registry/files/families/data/table/table-row.vue +51 -0
  781. package/registry/files/families/data/table/table-types.ts +293 -0
  782. package/registry/files/families/data/table/table.ts +61 -0
  783. package/registry/files/families/data/table/table.vue +66 -0
  784. package/registry/files/families/data/timeline/examples/timeline-basic.vue +30 -0
  785. package/registry/files/families/data/timeline/timeline-connector.vue +35 -0
  786. package/registry/files/families/data/timeline/timeline-content.vue +29 -0
  787. package/registry/files/families/data/timeline/timeline-context.ts +31 -0
  788. package/registry/files/families/data/timeline/timeline-indicator.vue +35 -0
  789. package/registry/files/families/data/timeline/timeline-item.vue +108 -0
  790. package/registry/files/families/data/timeline/timeline-root.vue +166 -0
  791. package/registry/files/families/data/timeline/timeline-time.vue +31 -0
  792. package/registry/files/families/data/timeline/timeline-types.ts +53 -0
  793. package/registry/files/families/data/timeline/timeline.ts +15 -0
  794. package/registry/files/families/data/tree/examples/tree-basic.vue +51 -0
  795. package/registry/files/families/data/tree/tree-context.ts +67 -0
  796. package/registry/files/families/data/tree/tree-item-checkbox.vue +55 -0
  797. package/registry/files/families/data/tree/tree-item-toggle.vue +66 -0
  798. package/registry/files/families/data/tree/tree-item.vue +263 -0
  799. package/registry/files/families/data/tree/tree-model.ts +261 -0
  800. package/registry/files/families/data/tree/tree-reorder.ts +104 -0
  801. package/registry/files/families/data/tree/tree-root.vue +952 -0
  802. package/registry/files/families/data/tree/tree-types.ts +353 -0
  803. package/registry/files/families/data/tree/tree-virtualizer.ts +68 -0
  804. package/registry/files/families/data/tree/tree.ts +39 -0
  805. package/registry/files/families/date-time/calendar/calendar-context.ts +26 -0
  806. package/registry/files/families/date-time/calendar/calendar-grid.vue +195 -0
  807. package/registry/files/families/date-time/calendar/calendar-heading.vue +30 -0
  808. package/registry/files/families/date-time/calendar/calendar-locale.ts +172 -0
  809. package/registry/files/families/date-time/calendar/calendar-month-select.vue +72 -0
  810. package/registry/files/families/date-time/calendar/calendar-multiple-root.vue +172 -0
  811. package/registry/files/families/date-time/calendar/calendar-next.vue +52 -0
  812. package/registry/files/families/date-time/calendar/calendar-prev.vue +52 -0
  813. package/registry/files/families/date-time/calendar/calendar-root.vue +165 -0
  814. package/registry/files/families/date-time/calendar/calendar-runtime.ts +482 -0
  815. package/registry/files/families/date-time/calendar/calendar-selection.ts +198 -0
  816. package/registry/files/families/date-time/calendar/calendar-today.ts +66 -0
  817. package/registry/files/families/date-time/calendar/calendar-types.ts +269 -0
  818. package/registry/files/families/date-time/calendar/calendar-year-select.vue +78 -0
  819. package/registry/files/families/date-time/calendar/calendar.ts +93 -0
  820. package/registry/files/families/date-time/calendar/examples/calendar-basic.vue +32 -0
  821. package/registry/files/families/date-time/calendar/plain-date.ts +424 -0
  822. package/registry/files/families/date-time/date-field/date-field-runtime.ts +182 -0
  823. package/registry/files/families/date-time/date-field/date-field-types.ts +71 -0
  824. package/registry/files/families/date-time/date-field/date-field.ts +19 -0
  825. package/registry/files/families/date-time/date-field/date-field.vue +192 -0
  826. package/registry/files/families/date-time/date-field/examples/date-field-basic.vue +22 -0
  827. package/registry/files/families/date-time/date-field/field-segment-runtime.ts +741 -0
  828. package/registry/files/families/date-time/date-field/field-segments.ts +29 -0
  829. package/registry/files/families/date-time/date-picker/date-picker-calendar.vue +101 -0
  830. package/registry/files/families/date-time/date-picker/date-picker-content.vue +48 -0
  831. package/registry/files/families/date-time/date-picker/date-picker-context.ts +43 -0
  832. package/registry/files/families/date-time/date-picker/date-picker-field.vue +96 -0
  833. package/registry/files/families/date-time/date-picker/date-picker-root.vue +189 -0
  834. package/registry/files/families/date-time/date-picker/date-picker-runtime.ts +117 -0
  835. package/registry/files/families/date-time/date-picker/date-picker-types.ts +31 -0
  836. package/registry/files/families/date-time/date-picker/date-picker.ts +22 -0
  837. package/registry/files/families/date-time/date-picker/examples/date-picker-basic.vue +26 -0
  838. package/registry/files/families/date-time/date-range-picker/date-range-picker-calendar.vue +103 -0
  839. package/registry/files/families/date-time/date-range-picker/date-range-picker-content.vue +48 -0
  840. package/registry/files/families/date-time/date-range-picker/date-range-picker-context.ts +27 -0
  841. package/registry/files/families/date-time/date-range-picker/date-range-picker-field.vue +101 -0
  842. package/registry/files/families/date-time/date-range-picker/date-range-picker-root.vue +208 -0
  843. package/registry/files/families/date-time/date-range-picker/date-range-picker-runtime.ts +89 -0
  844. package/registry/files/families/date-time/date-range-picker/date-range-picker-types.ts +32 -0
  845. package/registry/files/families/date-time/date-range-picker/date-range-picker.ts +25 -0
  846. package/registry/files/families/date-time/date-range-picker/examples/date-range-picker-basic.vue +30 -0
  847. package/registry/files/families/date-time/datetime-field/datetime-field-runtime.ts +232 -0
  848. package/registry/files/families/date-time/datetime-field/datetime-field-types.ts +24 -0
  849. package/registry/files/families/date-time/datetime-field/datetime-field.ts +28 -0
  850. package/registry/files/families/date-time/datetime-field/datetime-field.vue +203 -0
  851. package/registry/files/families/date-time/datetime-field/examples/datetime-field-basic.vue +25 -0
  852. package/registry/files/families/date-time/datetime-field/plain-date-time.ts +185 -0
  853. package/registry/files/families/date-time/duration-field/duration-field-runtime.ts +441 -0
  854. package/registry/files/families/date-time/duration-field/duration-field-types.ts +70 -0
  855. package/registry/files/families/date-time/duration-field/duration-field.ts +23 -0
  856. package/registry/files/families/date-time/duration-field/duration-field.vue +187 -0
  857. package/registry/files/families/date-time/duration-field/duration.ts +104 -0
  858. package/registry/files/families/date-time/duration-field/examples/duration-field-basic.vue +25 -0
  859. package/registry/files/families/date-time/month-picker/examples/month-picker-basic.vue +24 -0
  860. package/registry/files/families/date-time/month-picker/month-picker-runtime.ts +233 -0
  861. package/registry/files/families/date-time/month-picker/month-picker-types.ts +62 -0
  862. package/registry/files/families/date-time/month-picker/month-picker.ts +21 -0
  863. package/registry/files/families/date-time/month-picker/month-picker.vue +221 -0
  864. package/registry/files/families/date-time/month-picker/period-grid-runtime.ts +232 -0
  865. package/registry/files/families/date-time/range-calendar/examples/range-calendar-basic.vue +33 -0
  866. package/registry/files/families/date-time/range-calendar/range-calendar-root.vue +194 -0
  867. package/registry/files/families/date-time/range-calendar/range-calendar-selection.ts +170 -0
  868. package/registry/files/families/date-time/range-calendar/range-calendar-types.ts +17 -0
  869. package/registry/files/families/date-time/range-calendar/range-calendar.ts +18 -0
  870. package/registry/files/families/date-time/scheduler/examples/scheduler-basic.vue +47 -0
  871. package/registry/files/families/date-time/scheduler/scheduler-context.ts +56 -0
  872. package/registry/files/families/date-time/scheduler/scheduler-day-column.vue +50 -0
  873. package/registry/files/families/date-time/scheduler/scheduler-event.vue +127 -0
  874. package/registry/files/families/date-time/scheduler/scheduler-heading.vue +26 -0
  875. package/registry/files/families/date-time/scheduler/scheduler-layout.ts +311 -0
  876. package/registry/files/families/date-time/scheduler/scheduler-month-day.vue +99 -0
  877. package/registry/files/families/date-time/scheduler/scheduler-month-grid.vue +72 -0
  878. package/registry/files/families/date-time/scheduler/scheduler-nav.vue +48 -0
  879. package/registry/files/families/date-time/scheduler/scheduler-root.vue +135 -0
  880. package/registry/files/families/date-time/scheduler/scheduler-runtime.ts +668 -0
  881. package/registry/files/families/date-time/scheduler/scheduler-time-grid.vue +139 -0
  882. package/registry/files/families/date-time/scheduler/scheduler-types.ts +108 -0
  883. package/registry/files/families/date-time/scheduler/scheduler.ts +45 -0
  884. package/registry/files/families/date-time/time-field/examples/time-field-basic.vue +25 -0
  885. package/registry/files/families/date-time/time-field/plain-time.ts +104 -0
  886. package/registry/files/families/date-time/time-field/time-field-runtime.ts +197 -0
  887. package/registry/files/families/date-time/time-field/time-field-types.ts +23 -0
  888. package/registry/files/families/date-time/time-field/time-field.ts +26 -0
  889. package/registry/files/families/date-time/time-field/time-field.vue +197 -0
  890. package/registry/files/families/date-time/time-picker/examples/time-picker-basic.vue +33 -0
  891. package/registry/files/families/date-time/time-picker/time-picker-runtime.ts +117 -0
  892. package/registry/files/families/date-time/time-picker/time-picker-types.ts +46 -0
  893. package/registry/files/families/date-time/time-picker/time-picker.ts +9 -0
  894. package/registry/files/families/date-time/time-picker/time-picker.vue +152 -0
  895. package/registry/files/families/date-time/week-picker/examples/week-picker-basic.vue +28 -0
  896. package/registry/files/families/date-time/week-picker/week-picker-root.vue +186 -0
  897. package/registry/files/families/date-time/week-picker/week-picker-selection.ts +106 -0
  898. package/registry/files/families/date-time/week-picker/week-picker-types.ts +14 -0
  899. package/registry/files/families/date-time/week-picker/week-picker.ts +14 -0
  900. package/registry/files/families/date-time/year-picker/examples/year-picker-basic.vue +22 -0
  901. package/registry/files/families/date-time/year-picker/year-picker-runtime.ts +176 -0
  902. package/registry/files/families/date-time/year-picker/year-picker-types.ts +48 -0
  903. package/registry/files/families/date-time/year-picker/year-picker.ts +11 -0
  904. package/registry/files/families/date-time/year-picker/year-picker.vue +213 -0
  905. package/registry/files/families/disclosure/accordion/accordion-content.vue +181 -0
  906. package/registry/files/families/disclosure/accordion/accordion-context.ts +55 -0
  907. package/registry/files/families/disclosure/accordion/accordion-header.vue +75 -0
  908. package/registry/files/families/disclosure/accordion/accordion-item.vue +139 -0
  909. package/registry/files/families/disclosure/accordion/accordion-root.vue +369 -0
  910. package/registry/files/families/disclosure/accordion/accordion-trigger.vue +121 -0
  911. package/registry/files/families/disclosure/accordion/accordion-types.ts +166 -0
  912. package/registry/files/families/disclosure/accordion/accordion-value.ts +69 -0
  913. package/registry/files/families/disclosure/accordion/accordion.ts +29 -0
  914. package/registry/files/families/disclosure/accordion/examples/accordion-basic.vue +37 -0
  915. package/registry/files/families/disclosure/collapsible/collapsible-content.vue +110 -0
  916. package/registry/files/families/disclosure/collapsible/collapsible-context.ts +20 -0
  917. package/registry/files/families/disclosure/collapsible/collapsible-root.vue +146 -0
  918. package/registry/files/families/disclosure/collapsible/collapsible-trigger.vue +103 -0
  919. package/registry/files/families/disclosure/collapsible/collapsible-types.ts +59 -0
  920. package/registry/files/families/disclosure/collapsible/collapsible.ts +15 -0
  921. package/registry/files/families/disclosure/collapsible/examples/collapsible-basic.vue +19 -0
  922. package/registry/files/families/editor/rich-text/examples/rich-text-basic.vue +57 -0
  923. package/registry/files/families/editor/rich-text/rich-text-bubble-menu.vue +113 -0
  924. package/registry/files/families/editor/rich-text/rich-text-commands.ts +682 -0
  925. package/registry/files/families/editor/rich-text/rich-text-content.vue +309 -0
  926. package/registry/files/families/editor/rich-text/rich-text-context.ts +41 -0
  927. package/registry/files/families/editor/rich-text/rich-text-dom.ts +173 -0
  928. package/registry/files/families/editor/rich-text/rich-text-html.ts +405 -0
  929. package/registry/files/families/editor/rich-text/rich-text-input-rules.ts +150 -0
  930. package/registry/files/families/editor/rich-text/rich-text-keymap.ts +65 -0
  931. package/registry/files/families/editor/rich-text/rich-text-model.ts +486 -0
  932. package/registry/files/families/editor/rich-text/rich-text-root.vue +205 -0
  933. package/registry/files/families/editor/rich-text/rich-text-schema.ts +389 -0
  934. package/registry/files/families/editor/rich-text/rich-text-state.ts +265 -0
  935. package/registry/files/families/editor/rich-text/rich-text-toolbar-button.vue +103 -0
  936. package/registry/files/families/editor/rich-text/rich-text-toolbar-runtime.ts +55 -0
  937. package/registry/files/families/editor/rich-text/rich-text-toolbar.vue +48 -0
  938. package/registry/files/families/editor/rich-text/rich-text-transform.ts +485 -0
  939. package/registry/files/families/editor/rich-text/rich-text-types.ts +50 -0
  940. package/registry/files/families/editor/rich-text/rich-text.ts +88 -0
  941. package/registry/files/families/feedback/alert/alert-types.ts +31 -0
  942. package/registry/files/families/feedback/alert/alert-visual.css +98 -0
  943. package/registry/files/families/feedback/alert/alert.ts +9 -0
  944. package/registry/files/families/feedback/alert/alert.vue +116 -0
  945. package/registry/files/families/feedback/alert/examples/alert-basic.vue +20 -0
  946. package/registry/files/families/feedback/badge/badge-types.ts +25 -0
  947. package/registry/files/families/feedback/badge/badge-visual.css +133 -0
  948. package/registry/files/families/feedback/badge/badge.ts +9 -0
  949. package/registry/files/families/feedback/badge/badge.vue +83 -0
  950. package/registry/files/families/feedback/badge/examples/badge-basic.vue +22 -0
  951. package/registry/files/families/feedback/banner/banner-aria.ts +94 -0
  952. package/registry/files/families/feedback/banner/banner-types.ts +160 -0
  953. package/registry/files/families/feedback/banner/banner.ts +19 -0
  954. package/registry/files/families/feedback/banner/banner.vue +256 -0
  955. package/registry/files/families/feedback/banner/examples/banner-basic.vue +26 -0
  956. package/registry/files/families/feedback/block-ui/block-ui-types.ts +40 -0
  957. package/registry/files/families/feedback/block-ui/block-ui.ts +11 -0
  958. package/registry/files/families/feedback/block-ui/block-ui.vue +163 -0
  959. package/registry/files/families/feedback/block-ui/examples/block-ui-basic.vue +30 -0
  960. package/registry/files/families/feedback/callout/callout-runtime.ts +30 -0
  961. package/registry/files/families/feedback/callout/callout-types.ts +198 -0
  962. package/registry/files/families/feedback/callout/callout.ts +16 -0
  963. package/registry/files/families/feedback/callout/callout.vue +234 -0
  964. package/registry/files/families/feedback/callout/examples/callout-basic.vue +17 -0
  965. package/registry/files/families/feedback/empty-state/empty-state-types.ts +37 -0
  966. package/registry/files/families/feedback/empty-state/empty-state.ts +11 -0
  967. package/registry/files/families/feedback/empty-state/empty-state.vue +96 -0
  968. package/registry/files/families/feedback/empty-state/examples/empty-state-basic.vue +23 -0
  969. package/registry/files/families/feedback/meter/examples/meter-basic.vue +28 -0
  970. package/registry/files/families/feedback/meter/meter-state.ts +136 -0
  971. package/registry/files/families/feedback/meter/meter-types.ts +47 -0
  972. package/registry/files/families/feedback/meter/meter.ts +4 -0
  973. package/registry/files/families/feedback/meter/meter.vue +190 -0
  974. package/registry/files/families/feedback/notification-center/examples/notification-center-basic.vue +45 -0
  975. package/registry/files/families/feedback/notification-center/notification-center-context.ts +48 -0
  976. package/registry/files/families/feedback/notification-center/notification-center-empty.vue +24 -0
  977. package/registry/files/families/feedback/notification-center/notification-center-item.vue +135 -0
  978. package/registry/files/families/feedback/notification-center/notification-center-list.vue +138 -0
  979. package/registry/files/families/feedback/notification-center/notification-center-root.vue +212 -0
  980. package/registry/files/families/feedback/notification-center/notification-center-store.ts +195 -0
  981. package/registry/files/families/feedback/notification-center/notification-center-trigger.vue +100 -0
  982. package/registry/files/families/feedback/notification-center/notification-center-types.ts +247 -0
  983. package/registry/files/families/feedback/notification-center/notification-center.ts +29 -0
  984. package/registry/files/families/feedback/progress/examples/progress-basic.vue +17 -0
  985. package/registry/files/families/feedback/progress/progress-state.ts +49 -0
  986. package/registry/files/families/feedback/progress/progress-types.ts +87 -0
  987. package/registry/files/families/feedback/progress/progress.ts +12 -0
  988. package/registry/files/families/feedback/progress/progress.vue +110 -0
  989. package/registry/files/families/feedback/progress-bar/examples/progress-bar-basic.vue +8 -0
  990. package/registry/files/families/feedback/progress-bar/examples/progress-bar-indeterminate.vue +8 -0
  991. package/registry/files/families/feedback/progress-bar/progress-bar-state.ts +105 -0
  992. package/registry/files/families/feedback/progress-bar/progress-bar-types.ts +139 -0
  993. package/registry/files/families/feedback/progress-bar/progress-bar.css +93 -0
  994. package/registry/files/families/feedback/progress-bar/progress-bar.ts +21 -0
  995. package/registry/files/families/feedback/progress-bar/progress-bar.vue +252 -0
  996. package/registry/files/families/feedback/skeleton/examples/skeleton-basic.vue +11 -0
  997. package/registry/files/families/feedback/skeleton/skeleton-types.ts +40 -0
  998. package/registry/files/families/feedback/skeleton/skeleton.ts +11 -0
  999. package/registry/files/families/feedback/skeleton/skeleton.vue +146 -0
  1000. package/registry/files/families/feedback/spinner/examples/spinner-basic.vue +8 -0
  1001. package/registry/files/families/feedback/spinner/spinner-types.ts +55 -0
  1002. package/registry/files/families/feedback/spinner/spinner.ts +12 -0
  1003. package/registry/files/families/feedback/spinner/spinner.vue +259 -0
  1004. package/registry/files/families/feedback/status-light/examples/status-light-basic.vue +21 -0
  1005. package/registry/files/families/feedback/status-light/examples/status-light-live.vue +23 -0
  1006. package/registry/files/families/feedback/status-light/status-light-types.ts +76 -0
  1007. package/registry/files/families/feedback/status-light/status-light.ts +14 -0
  1008. package/registry/files/families/feedback/status-light/status-light.vue +105 -0
  1009. package/registry/files/families/feedback/toast/examples/toast-basic.vue +26 -0
  1010. package/registry/files/families/feedback/toast/toast-action.vue +66 -0
  1011. package/registry/files/families/feedback/toast/toast-close.vue +66 -0
  1012. package/registry/files/families/feedback/toast/toast-context.ts +44 -0
  1013. package/registry/files/families/feedback/toast/toast-description.vue +37 -0
  1014. package/registry/files/families/feedback/toast/toast-hotkey.ts +30 -0
  1015. package/registry/files/families/feedback/toast/toast-provider.vue +147 -0
  1016. package/registry/files/families/feedback/toast/toast-root.vue +234 -0
  1017. package/registry/files/families/feedback/toast/toast-store.ts +399 -0
  1018. package/registry/files/families/feedback/toast/toast-title.vue +32 -0
  1019. package/registry/files/families/feedback/toast/toast-types.ts +374 -0
  1020. package/registry/files/families/feedback/toast/toast-viewport.vue +186 -0
  1021. package/registry/files/families/feedback/toast/toast.ts +36 -0
  1022. package/registry/files/families/feedback/toast/use-toast.ts +22 -0
  1023. package/registry/files/families/form/angle-picker/angle-picker-types.ts +23 -0
  1024. package/registry/files/families/form/angle-picker/angle-picker.ts +10 -0
  1025. package/registry/files/families/form/angle-picker/angle-picker.vue +312 -0
  1026. package/registry/files/families/form/angle-picker/examples/angle-picker-basic.vue +25 -0
  1027. package/registry/files/families/form/color-picker/color-picker-area.vue +286 -0
  1028. package/registry/files/families/form/color-picker/color-picker-channel-slider.vue +278 -0
  1029. package/registry/files/families/form/color-picker/color-picker-color.ts +590 -0
  1030. package/registry/files/families/form/color-picker/color-picker-context.ts +40 -0
  1031. package/registry/files/families/form/color-picker/color-picker-eye-dropper.ts +37 -0
  1032. package/registry/files/families/form/color-picker/color-picker-eye-dropper.vue +169 -0
  1033. package/registry/files/families/form/color-picker/color-picker-field.vue +191 -0
  1034. package/registry/files/families/form/color-picker/color-picker-interaction.ts +142 -0
  1035. package/registry/files/families/form/color-picker/color-picker-root.vue +350 -0
  1036. package/registry/files/families/form/color-picker/color-picker-swatch-context.ts +34 -0
  1037. package/registry/files/families/form/color-picker/color-picker-swatch-group.vue +156 -0
  1038. package/registry/files/families/form/color-picker/color-picker-swatch.vue +208 -0
  1039. package/registry/files/families/form/color-picker/color-picker-types.ts +269 -0
  1040. package/registry/files/families/form/color-picker/color-picker.ts +65 -0
  1041. package/registry/files/families/form/color-picker/examples/color-picker-basic.vue +34 -0
  1042. package/registry/files/families/form/editable/editable-context.ts +36 -0
  1043. package/registry/files/families/form/editable/editable-input.vue +61 -0
  1044. package/registry/files/families/form/editable/editable-preview.vue +66 -0
  1045. package/registry/files/families/form/editable/editable-trigger.vue +63 -0
  1046. package/registry/files/families/form/editable/editable-types.ts +56 -0
  1047. package/registry/files/families/form/editable/editable.ts +17 -0
  1048. package/registry/files/families/form/editable/editable.vue +355 -0
  1049. package/registry/files/families/form/editable/examples/editable-basic.vue +28 -0
  1050. package/registry/files/families/form/error-summary/error-summary-runtime.ts +176 -0
  1051. package/registry/files/families/form/error-summary/error-summary-types.ts +84 -0
  1052. package/registry/files/families/form/error-summary/error-summary.ts +10 -0
  1053. package/registry/files/families/form/error-summary/error-summary.vue +113 -0
  1054. package/registry/files/families/form/error-summary/examples/error-summary-basic.vue +44 -0
  1055. package/registry/files/families/form/field/examples/field-basic.vue +35 -0
  1056. package/registry/files/families/form/field/field-context.ts +24 -0
  1057. package/registry/files/families/form/field/field-description.vue +58 -0
  1058. package/registry/files/families/form/field/field-error-message.vue +78 -0
  1059. package/registry/files/families/form/field/field-label.vue +59 -0
  1060. package/registry/files/families/form/field/field-types.ts +112 -0
  1061. package/registry/files/families/form/field/field.ts +15 -0
  1062. package/registry/files/families/form/field/field.vue +183 -0
  1063. package/registry/files/families/form/field-wiring/field-wiring-runtime.ts +72 -0
  1064. package/registry/files/families/form/field-wiring/field-wiring-types.ts +86 -0
  1065. package/registry/files/families/form/field-wiring/field-wiring.ts +9 -0
  1066. package/registry/files/families/form/fieldset/examples/fieldset-basic.vue +29 -0
  1067. package/registry/files/families/form/fieldset/fieldset-context.ts +17 -0
  1068. package/registry/files/families/form/fieldset/fieldset-description.vue +35 -0
  1069. package/registry/files/families/form/fieldset/fieldset-error-message.vue +54 -0
  1070. package/registry/files/families/form/fieldset/fieldset-legend.vue +24 -0
  1071. package/registry/files/families/form/fieldset/fieldset-types.ts +37 -0
  1072. package/registry/files/families/form/fieldset/fieldset.ts +13 -0
  1073. package/registry/files/families/form/fieldset/fieldset.vue +147 -0
  1074. package/registry/files/families/form/file-upload/examples/file-upload-basic.vue +45 -0
  1075. package/registry/files/families/form/file-upload/file-upload-clear.vue +84 -0
  1076. package/registry/files/families/form/file-upload/file-upload-context.ts +46 -0
  1077. package/registry/files/families/form/file-upload/file-upload-dropzone.vue +305 -0
  1078. package/registry/files/families/form/file-upload/file-upload-item-delete.vue +72 -0
  1079. package/registry/files/families/form/file-upload/file-upload-item-group.vue +53 -0
  1080. package/registry/files/families/form/file-upload/file-upload-item-name.vue +25 -0
  1081. package/registry/files/families/form/file-upload/file-upload-item-preview.vue +57 -0
  1082. package/registry/files/families/form/file-upload/file-upload-item-size.vue +21 -0
  1083. package/registry/files/families/form/file-upload/file-upload-item.vue +39 -0
  1084. package/registry/files/families/form/file-upload/file-upload-root.vue +419 -0
  1085. package/registry/files/families/form/file-upload/file-upload-transfer.ts +156 -0
  1086. package/registry/files/families/form/file-upload/file-upload-trigger.vue +92 -0
  1087. package/registry/files/families/form/file-upload/file-upload-types.ts +425 -0
  1088. package/registry/files/families/form/file-upload/file-upload-validation.ts +338 -0
  1089. package/registry/files/families/form/file-upload/file-upload.ts +68 -0
  1090. package/registry/files/families/form/form/form-runtime.ts +267 -0
  1091. package/registry/files/families/form/form/form-state-types.ts +212 -0
  1092. package/registry/files/families/form/form/form-state.ts +315 -0
  1093. package/registry/files/families/form/form/form-types.ts +234 -0
  1094. package/registry/files/families/form/form/form.ts +34 -0
  1095. package/registry/files/families/form/form-wizard/examples/form-wizard-basic.vue +54 -0
  1096. package/registry/files/families/form/form-wizard/form-wizard-back.vue +31 -0
  1097. package/registry/files/families/form/form-wizard/form-wizard-context.ts +24 -0
  1098. package/registry/files/families/form/form-wizard/form-wizard-next.vue +32 -0
  1099. package/registry/files/families/form/form-wizard/form-wizard-progress.vue +59 -0
  1100. package/registry/files/families/form/form-wizard/form-wizard-step.vue +56 -0
  1101. package/registry/files/families/form/form-wizard/form-wizard-types.ts +102 -0
  1102. package/registry/files/families/form/form-wizard/form-wizard.ts +20 -0
  1103. package/registry/files/families/form/form-wizard/form-wizard.vue +359 -0
  1104. package/registry/files/families/form/input/examples/input-basic.vue +23 -0
  1105. package/registry/files/families/form/input/examples/input-invalid.vue +27 -0
  1106. package/registry/files/families/form/input/input-types.ts +40 -0
  1107. package/registry/files/families/form/input/input.ts +9 -0
  1108. package/registry/files/families/form/input/text-input.vue +320 -0
  1109. package/registry/files/families/form/input-mask/examples/input-mask-basic.vue +34 -0
  1110. package/registry/files/families/form/input-mask/input-mask-engine.ts +243 -0
  1111. package/registry/files/families/form/input-mask/input-mask-runtime.ts +196 -0
  1112. package/registry/files/families/form/input-mask/input-mask-types.ts +191 -0
  1113. package/registry/files/families/form/input-mask/input-mask.ts +28 -0
  1114. package/registry/files/families/form/input-mask/masked-input.vue +135 -0
  1115. package/registry/files/families/form/knob/examples/knob-basic.vue +26 -0
  1116. package/registry/files/families/form/knob/knob-geometry.ts +132 -0
  1117. package/registry/files/families/form/knob/knob-pointer.ts +69 -0
  1118. package/registry/files/families/form/knob/knob-types.ts +58 -0
  1119. package/registry/files/families/form/knob/knob.ts +11 -0
  1120. package/registry/files/families/form/knob/knob.vue +382 -0
  1121. package/registry/files/families/form/mention/examples/mention-basic.vue +39 -0
  1122. package/registry/files/families/form/mention/mention-caret.ts +187 -0
  1123. package/registry/files/families/form/mention/mention-content.vue +235 -0
  1124. package/registry/files/families/form/mention/mention-context.ts +52 -0
  1125. package/registry/files/families/form/mention/mention-core.ts +189 -0
  1126. package/registry/files/families/form/mention/mention-editable.vue +97 -0
  1127. package/registry/files/families/form/mention/mention-empty.vue +28 -0
  1128. package/registry/files/families/form/mention/mention-input.vue +137 -0
  1129. package/registry/files/families/form/mention/mention-item.vue +109 -0
  1130. package/registry/files/families/form/mention/mention-root.vue +504 -0
  1131. package/registry/files/families/form/mention/mention-types.ts +218 -0
  1132. package/registry/files/families/form/mention/mention.ts +42 -0
  1133. package/registry/files/families/form/number-field/examples/number-field-basic.vue +27 -0
  1134. package/registry/files/families/form/number-field/examples/number-field-currency.vue +29 -0
  1135. package/registry/files/families/form/number-field/number-field-context.ts +48 -0
  1136. package/registry/files/families/form/number-field/number-field-decrement.vue +38 -0
  1137. package/registry/files/families/form/number-field/number-field-increment.vue +38 -0
  1138. package/registry/files/families/form/number-field/number-field-input.vue +183 -0
  1139. package/registry/files/families/form/number-field/number-field-parser.ts +243 -0
  1140. package/registry/files/families/form/number-field/number-field-state.ts +174 -0
  1141. package/registry/files/families/form/number-field/number-field-trigger.ts +91 -0
  1142. package/registry/files/families/form/number-field/number-field-types.ts +345 -0
  1143. package/registry/files/families/form/number-field/number-field.ts +43 -0
  1144. package/registry/files/families/form/number-field/number-field.vue +344 -0
  1145. package/registry/files/families/form/password-field/examples/password-field-basic.vue +38 -0
  1146. package/registry/files/families/form/password-field/password-field-context.ts +29 -0
  1147. package/registry/files/families/form/password-field/password-field-input.vue +97 -0
  1148. package/registry/files/families/form/password-field/password-field-strength.ts +97 -0
  1149. package/registry/files/families/form/password-field/password-field-toggle.vue +60 -0
  1150. package/registry/files/families/form/password-field/password-field-types.ts +50 -0
  1151. package/registry/files/families/form/password-field/password-field.ts +20 -0
  1152. package/registry/files/families/form/password-field/password-field.vue +313 -0
  1153. package/registry/files/families/form/phone-field/examples/phone-field-basic.vue +39 -0
  1154. package/registry/files/families/form/phone-field/phone-field-context.ts +25 -0
  1155. package/registry/files/families/form/phone-field/phone-field-country-select.vue +54 -0
  1156. package/registry/files/families/form/phone-field/phone-field-country.ts +123 -0
  1157. package/registry/files/families/form/phone-field/phone-field-input.vue +78 -0
  1158. package/registry/files/families/form/phone-field/phone-field-types.ts +46 -0
  1159. package/registry/files/families/form/phone-field/phone-field.ts +22 -0
  1160. package/registry/files/families/form/phone-field/phone-field.vue +335 -0
  1161. package/registry/files/families/form/pin-input/examples/pin-input-basic.vue +34 -0
  1162. package/registry/files/families/form/pin-input/pin-input-context.ts +29 -0
  1163. package/registry/files/families/form/pin-input/pin-input-field.vue +118 -0
  1164. package/registry/files/families/form/pin-input/pin-input-state.ts +71 -0
  1165. package/registry/files/families/form/pin-input/pin-input-types.ts +62 -0
  1166. package/registry/files/families/form/pin-input/pin-input.ts +20 -0
  1167. package/registry/files/families/form/pin-input/pin-input.vue +375 -0
  1168. package/registry/files/families/form/range-slider/examples/range-slider-basic.vue +28 -0
  1169. package/registry/files/families/form/range-slider/range-slider-context.ts +34 -0
  1170. package/registry/files/families/form/range-slider/range-slider-range.vue +25 -0
  1171. package/registry/files/families/form/range-slider/range-slider-state.ts +161 -0
  1172. package/registry/files/families/form/range-slider/range-slider-thumb.vue +101 -0
  1173. package/registry/files/families/form/range-slider/range-slider-track.vue +31 -0
  1174. package/registry/files/families/form/range-slider/range-slider-types.ts +285 -0
  1175. package/registry/files/families/form/range-slider/range-slider.ts +34 -0
  1176. package/registry/files/families/form/range-slider/range-slider.vue +297 -0
  1177. package/registry/files/families/form/rating/examples/rating-basic.vue +19 -0
  1178. package/registry/files/families/form/rating/rating-runtime.ts +338 -0
  1179. package/registry/files/families/form/rating/rating-state.ts +182 -0
  1180. package/registry/files/families/form/rating/rating-types.ts +265 -0
  1181. package/registry/files/families/form/rating/rating.ts +16 -0
  1182. package/registry/files/families/form/rating/rating.vue +209 -0
  1183. package/registry/files/families/form/search-field/examples/search-field-basic.vue +19 -0
  1184. package/registry/files/families/form/search-field/search-field-types.ts +146 -0
  1185. package/registry/files/families/form/search-field/search-field.ts +2 -0
  1186. package/registry/files/families/form/search-field/search-field.vue +302 -0
  1187. package/registry/files/families/form/slider/examples/slider-basic.vue +17 -0
  1188. package/registry/files/families/form/slider/slider-state.ts +176 -0
  1189. package/registry/files/families/form/slider/slider-types.ts +235 -0
  1190. package/registry/files/families/form/slider/slider.ts +22 -0
  1191. package/registry/files/families/form/slider/slider.vue +342 -0
  1192. package/registry/files/families/form/tags-input/examples/tags-input-basic.vue +31 -0
  1193. package/registry/files/families/form/tags-input/tags-input-context.ts +56 -0
  1194. package/registry/files/families/form/tags-input/tags-input-input.vue +117 -0
  1195. package/registry/files/families/form/tags-input/tags-input-item-delete.vue +57 -0
  1196. package/registry/files/families/form/tags-input/tags-input-item-text.vue +21 -0
  1197. package/registry/files/families/form/tags-input/tags-input-item.vue +250 -0
  1198. package/registry/files/families/form/tags-input/tags-input-root.vue +646 -0
  1199. package/registry/files/families/form/tags-input/tags-input-types.ts +157 -0
  1200. package/registry/files/families/form/tags-input/tags-input-value.ts +159 -0
  1201. package/registry/files/families/form/tags-input/tags-input.ts +30 -0
  1202. package/registry/files/families/form/textarea/examples/textarea-basic.vue +26 -0
  1203. package/registry/files/families/form/textarea/examples/textarea-invalid.vue +26 -0
  1204. package/registry/files/families/form/textarea/textarea-control.vue +349 -0
  1205. package/registry/files/families/form/textarea/textarea-types.ts +33 -0
  1206. package/registry/files/families/form/textarea/textarea.ts +3 -0
  1207. package/registry/files/families/foundations/collection/collection-keys.ts +61 -0
  1208. package/registry/files/families/foundations/collection/collection-observer.ts +95 -0
  1209. package/registry/files/families/foundations/collection/collection-order.ts +110 -0
  1210. package/registry/files/families/foundations/collection/collection-registry.ts +301 -0
  1211. package/registry/files/families/foundations/collection/collection-text.ts +104 -0
  1212. package/registry/files/families/foundations/collection/collection-types.ts +213 -0
  1213. package/registry/files/families/foundations/collection/collection.ts +16 -0
  1214. package/registry/files/families/foundations/command/command-types.ts +118 -0
  1215. package/registry/files/families/foundations/command/command.ts +180 -0
  1216. package/registry/files/families/foundations/composite-navigation/composite-navigation-dom.ts +94 -0
  1217. package/registry/files/families/foundations/composite-navigation/composite-navigation-internal.ts +186 -0
  1218. package/registry/files/families/foundations/composite-navigation/composite-navigation-types.ts +169 -0
  1219. package/registry/files/families/foundations/composite-navigation/composite-navigation.ts +334 -0
  1220. package/registry/files/families/foundations/context/context.ts +55 -0
  1221. package/registry/files/families/foundations/controllable-state/controllable-state.ts +87 -0
  1222. package/registry/files/families/foundations/forwarding/forwarding.ts +211 -0
  1223. package/registry/files/families/foundations/id/deterministic-id-provider.vue +58 -0
  1224. package/registry/files/families/foundations/id/deterministic-id.ts +223 -0
  1225. package/registry/files/families/foundations/id/examples/id-basic.vue +17 -0
  1226. package/registry/files/families/foundations/id/id.ts +17 -0
  1227. package/registry/files/families/foundations/polymorphic/polymorphic.ts +128 -0
  1228. package/registry/files/families/foundations/primitive/examples/primitive-basic.vue +15 -0
  1229. package/registry/files/families/foundations/primitive/primitive-element.vue +35 -0
  1230. package/registry/files/families/foundations/primitive/primitive.ts +10 -0
  1231. package/registry/files/families/foundations/slot-utils/slot-utils.ts +175 -0
  1232. package/registry/files/families/foundations/theme/theme-constants.ts +32 -0
  1233. package/registry/files/families/foundations/theme/theme-preset-atelier.css +57 -0
  1234. package/registry/files/families/foundations/theme/theme-preset-headless.css +11 -0
  1235. package/registry/files/families/foundations/theme/theme-preset-high-contrast.css +50 -0
  1236. package/registry/files/families/foundations/theme/theme-preset-midnight.css +45 -0
  1237. package/registry/files/families/foundations/theme/theme-preset-paper.css +46 -0
  1238. package/registry/files/families/foundations/theme/theme-preset-play.css +47 -0
  1239. package/registry/files/families/foundations/theme/theme-preset-signal.css +46 -0
  1240. package/registry/files/families/foundations/theme/theme-scope.ts +153 -0
  1241. package/registry/files/families/foundations/theme/theme-tokens.ts +166 -0
  1242. package/registry/files/families/foundations/theme/theme-types.ts +147 -0
  1243. package/registry/files/families/foundations/theme/theme.css +178 -0
  1244. package/registry/files/families/foundations/theme/theme.ts +53 -0
  1245. package/registry/files/families/foundations/variants/variants-types.ts +183 -0
  1246. package/registry/files/families/foundations/variants/variants.ts +303 -0
  1247. package/registry/files/families/i18n/direction/direction-provider.vue +62 -0
  1248. package/registry/files/families/i18n/direction/direction-runtime.ts +30 -0
  1249. package/registry/files/families/i18n/direction/direction-types.ts +14 -0
  1250. package/registry/files/families/i18n/direction/direction.ts +4 -0
  1251. package/registry/files/families/i18n/direction/examples/direction-basic.vue +11 -0
  1252. package/registry/files/families/i18n/locale/examples/locale-basic.vue +36 -0
  1253. package/registry/files/families/i18n/locale/locale-provider.vue +128 -0
  1254. package/registry/files/families/i18n/locale/locale-runtime.ts +424 -0
  1255. package/registry/files/families/i18n/locale/locale-text.ts +91 -0
  1256. package/registry/files/families/i18n/locale/locale.ts +58 -0
  1257. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-announce.ts +71 -0
  1258. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-autoscroll.ts +85 -0
  1259. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-controller-types.ts +248 -0
  1260. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-internal.ts +279 -0
  1261. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-keyboard.ts +131 -0
  1262. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-listeners.ts +107 -0
  1263. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-session.ts +301 -0
  1264. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-transfer.ts +91 -0
  1265. package/registry/files/families/interaction/drag-and-drop/drag-and-drop-types.ts +144 -0
  1266. package/registry/files/families/interaction/drag-and-drop/drag-and-drop.ts +312 -0
  1267. package/registry/files/families/interaction/history/history-editable.ts +76 -0
  1268. package/registry/files/families/interaction/history/history-stack.ts +128 -0
  1269. package/registry/files/families/interaction/history/history-types.ts +168 -0
  1270. package/registry/files/families/interaction/history/history.ts +210 -0
  1271. package/registry/files/families/interaction/hover/hover-types.ts +89 -0
  1272. package/registry/files/families/interaction/hover/hover.ts +272 -0
  1273. package/registry/files/families/interaction/interaction-hooks/interaction-hooks-example.vue +61 -0
  1274. package/registry/files/families/interaction/interaction-hooks/interaction-hooks-types.ts +188 -0
  1275. package/registry/files/families/interaction/interaction-hooks/interaction-hooks.ts +332 -0
  1276. package/registry/files/families/interaction/long-press/long-press-internal.ts +214 -0
  1277. package/registry/files/families/interaction/long-press/long-press-types.ts +117 -0
  1278. package/registry/files/families/interaction/long-press/long-press.ts +295 -0
  1279. package/registry/files/families/interaction/measure/measure-runtime.ts +213 -0
  1280. package/registry/files/families/interaction/measure/measure-types.ts +107 -0
  1281. package/registry/files/families/interaction/measure/measure.ts +15 -0
  1282. package/registry/files/families/interaction/move/move-internal.ts +232 -0
  1283. package/registry/files/families/interaction/move/move-types.ts +115 -0
  1284. package/registry/files/families/interaction/move/move.ts +345 -0
  1285. package/registry/files/families/interaction/pointer-grace/pointer-grace-runtime.ts +181 -0
  1286. package/registry/files/families/interaction/pointer-grace/pointer-grace-types.ts +52 -0
  1287. package/registry/files/families/interaction/pointer-grace/pointer-grace.ts +9 -0
  1288. package/registry/files/families/interaction/press/press-activation-memory.ts +71 -0
  1289. package/registry/files/families/interaction/press/press-event.ts +197 -0
  1290. package/registry/files/families/interaction/press/press-handlers.ts +225 -0
  1291. package/registry/files/families/interaction/press/press-lifecycle.ts +345 -0
  1292. package/registry/files/families/interaction/press/press-notify.ts +32 -0
  1293. package/registry/files/families/interaction/press/press-types.ts +134 -0
  1294. package/registry/files/families/interaction/press/press.ts +43 -0
  1295. package/registry/files/families/interaction/pull-to-refresh/examples/pull-to-refresh-basic.vue +35 -0
  1296. package/registry/files/families/interaction/pull-to-refresh/pull-to-refresh-context.ts +14 -0
  1297. package/registry/files/families/interaction/pull-to-refresh/pull-to-refresh-trigger.vue +31 -0
  1298. package/registry/files/families/interaction/pull-to-refresh/pull-to-refresh-types.ts +35 -0
  1299. package/registry/files/families/interaction/pull-to-refresh/pull-to-refresh.ts +11 -0
  1300. package/registry/files/families/interaction/pull-to-refresh/pull-to-refresh.vue +288 -0
  1301. package/registry/files/families/interaction/scroll-spy/scroll-spy-types.ts +66 -0
  1302. package/registry/files/families/interaction/scroll-spy/scroll-spy.ts +156 -0
  1303. package/registry/files/families/interaction/shortcut/shortcut-format.ts +129 -0
  1304. package/registry/files/families/interaction/shortcut/shortcut-parse.ts +232 -0
  1305. package/registry/files/families/interaction/shortcut/shortcut-registry.ts +0 -0
  1306. package/registry/files/families/interaction/shortcut/shortcut-types.ts +216 -0
  1307. package/registry/files/families/interaction/shortcut/shortcut.ts +320 -0
  1308. package/registry/files/families/interaction/sortable/sortable-internal.ts +256 -0
  1309. package/registry/files/families/interaction/sortable/sortable-keyboard.ts +270 -0
  1310. package/registry/files/families/interaction/sortable/sortable-types.ts +247 -0
  1311. package/registry/files/families/interaction/sortable/sortable.ts +348 -0
  1312. package/registry/files/families/interaction/spatial-navigation/spatial-navigation-internal.ts +264 -0
  1313. package/registry/files/families/interaction/spatial-navigation/spatial-navigation-types.ts +129 -0
  1314. package/registry/files/families/interaction/spatial-navigation/spatial-navigation.ts +232 -0
  1315. package/registry/files/families/interaction/swipe-actions/examples/swipe-actions-basic.vue +45 -0
  1316. package/registry/files/families/interaction/swipe-actions/swipe-actions-action.vue +52 -0
  1317. package/registry/files/families/interaction/swipe-actions/swipe-actions-content.vue +53 -0
  1318. package/registry/files/families/interaction/swipe-actions/swipe-actions-context.ts +21 -0
  1319. package/registry/files/families/interaction/swipe-actions/swipe-actions-tray.vue +45 -0
  1320. package/registry/files/families/interaction/swipe-actions/swipe-actions-types.ts +35 -0
  1321. package/registry/files/families/interaction/swipe-actions/swipe-actions.ts +15 -0
  1322. package/registry/files/families/interaction/swipe-actions/swipe-actions.vue +332 -0
  1323. package/registry/files/families/interaction/typeahead/typeahead-internal.ts +75 -0
  1324. package/registry/files/families/interaction/typeahead/typeahead-types.ts +78 -0
  1325. package/registry/files/families/interaction/typeahead/typeahead.ts +183 -0
  1326. package/registry/files/families/interaction/virtualizer/virtualizer-grid.ts +243 -0
  1327. package/registry/files/families/interaction/virtualizer/virtualizer-infinite.ts +236 -0
  1328. package/registry/files/families/interaction/virtualizer/virtualizer-measure-cache.ts +184 -0
  1329. package/registry/files/families/interaction/virtualizer/virtualizer-options.ts +143 -0
  1330. package/registry/files/families/interaction/virtualizer/virtualizer-runtime.ts +343 -0
  1331. package/registry/files/families/interaction/virtualizer/virtualizer-types.ts +219 -0
  1332. package/registry/files/families/interaction/virtualizer/virtualizer-viewport.ts +88 -0
  1333. package/registry/files/families/interaction/virtualizer/virtualizer-window.ts +123 -0
  1334. package/registry/files/families/interaction/virtualizer/virtualizer.ts +28 -0
  1335. package/registry/files/families/layout/aspect-ratio/aspect-ratio-runtime.ts +11 -0
  1336. package/registry/files/families/layout/aspect-ratio/aspect-ratio-types.ts +34 -0
  1337. package/registry/files/families/layout/aspect-ratio/aspect-ratio.ts +9 -0
  1338. package/registry/files/families/layout/aspect-ratio/aspect-ratio.vue +75 -0
  1339. package/registry/files/families/layout/aspect-ratio/examples/aspect-ratio-basic.vue +18 -0
  1340. package/registry/files/families/layout/avatar/avatar-types.ts +84 -0
  1341. package/registry/files/families/layout/avatar/avatar.ts +17 -0
  1342. package/registry/files/families/layout/avatar/avatar.vue +301 -0
  1343. package/registry/files/families/layout/avatar/examples/avatar-basic.vue +30 -0
  1344. package/registry/files/families/layout/avatar-group/avatar-group-overflow.vue +80 -0
  1345. package/registry/files/families/layout/avatar-group/avatar-group-state.ts +73 -0
  1346. package/registry/files/families/layout/avatar-group/avatar-group-types.ts +74 -0
  1347. package/registry/files/families/layout/avatar-group/avatar-group.ts +20 -0
  1348. package/registry/files/families/layout/avatar-group/avatar-group.vue +164 -0
  1349. package/registry/files/families/layout/avatar-group/examples/avatar-group-basic.vue +26 -0
  1350. package/registry/files/families/layout/card/card-types.ts +31 -0
  1351. package/registry/files/families/layout/card/card-visual.css +105 -0
  1352. package/registry/files/families/layout/card/card.ts +10 -0
  1353. package/registry/files/families/layout/card/card.vue +97 -0
  1354. package/registry/files/families/layout/card/examples/card-basic.vue +16 -0
  1355. package/registry/files/families/layout/cluster/cluster-runtime.ts +67 -0
  1356. package/registry/files/families/layout/cluster/cluster-types.ts +100 -0
  1357. package/registry/files/families/layout/cluster/cluster.ts +17 -0
  1358. package/registry/files/families/layout/cluster/cluster.vue +146 -0
  1359. package/registry/files/families/layout/cluster/examples/cluster-basic.vue +12 -0
  1360. package/registry/files/families/layout/container/container-runtime.ts +58 -0
  1361. package/registry/files/families/layout/container/container-types.ts +58 -0
  1362. package/registry/files/families/layout/container/container.ts +13 -0
  1363. package/registry/files/families/layout/container/container.vue +121 -0
  1364. package/registry/files/families/layout/container/examples/container-basic.vue +11 -0
  1365. package/registry/files/families/layout/dashboard-grid/dashboard-grid-context.ts +15 -0
  1366. package/registry/files/families/layout/dashboard-grid/dashboard-grid-item.vue +142 -0
  1367. package/registry/files/families/layout/dashboard-grid/dashboard-grid-layout.ts +251 -0
  1368. package/registry/files/families/layout/dashboard-grid/dashboard-grid-types.ts +35 -0
  1369. package/registry/files/families/layout/dashboard-grid/dashboard-grid.ts +23 -0
  1370. package/registry/files/families/layout/dashboard-grid/dashboard-grid.vue +155 -0
  1371. package/registry/files/families/layout/dashboard-grid/examples/dashboard-grid-basic.vue +39 -0
  1372. package/registry/files/families/layout/grid/examples/grid-basic.vue +19 -0
  1373. package/registry/files/families/layout/grid/grid-runtime.ts +77 -0
  1374. package/registry/files/families/layout/grid/grid-types.ts +109 -0
  1375. package/registry/files/families/layout/grid/grid.ts +17 -0
  1376. package/registry/files/families/layout/grid/grid.vue +170 -0
  1377. package/registry/files/families/layout/icon/examples/icon-basic.vue +22 -0
  1378. package/registry/files/families/layout/icon/examples/icon-button-basic.vue +42 -0
  1379. package/registry/files/families/layout/icon/icon-button.ts +15 -0
  1380. package/registry/files/families/layout/icon/icon-button.vue +194 -0
  1381. package/registry/files/families/layout/icon/icon-types.ts +349 -0
  1382. package/registry/files/families/layout/icon/icon.ts +18 -0
  1383. package/registry/files/families/layout/icon/icon.vue +156 -0
  1384. package/registry/files/families/layout/list/examples/list-basic.vue +21 -0
  1385. package/registry/files/families/layout/list/list-types.ts +31 -0
  1386. package/registry/files/families/layout/list/list.ts +10 -0
  1387. package/registry/files/families/layout/list/list.vue +97 -0
  1388. package/registry/files/families/layout/masonry/examples/masonry-basic.vue +36 -0
  1389. package/registry/files/families/layout/masonry/masonry-layout.ts +98 -0
  1390. package/registry/files/families/layout/masonry/masonry-types.ts +20 -0
  1391. package/registry/files/families/layout/masonry/masonry.ts +5 -0
  1392. package/registry/files/families/layout/masonry/masonry.vue +247 -0
  1393. package/registry/files/families/layout/master-detail/examples/master-detail-basic.vue +41 -0
  1394. package/registry/files/families/layout/master-detail/master-detail-types.ts +28 -0
  1395. package/registry/files/families/layout/master-detail/master-detail-viewport.ts +34 -0
  1396. package/registry/files/families/layout/master-detail/master-detail.ts +8 -0
  1397. package/registry/files/families/layout/master-detail/master-detail.vue +174 -0
  1398. package/registry/files/families/layout/resizable/examples/resizable-basic.vue +27 -0
  1399. package/registry/files/families/layout/resizable/resizable-context.ts +37 -0
  1400. package/registry/files/families/layout/resizable/resizable-geometry.ts +100 -0
  1401. package/registry/files/families/layout/resizable/resizable-handle.vue +236 -0
  1402. package/registry/files/families/layout/resizable/resizable-root.vue +296 -0
  1403. package/registry/files/families/layout/resizable/resizable-types.ts +77 -0
  1404. package/registry/files/families/layout/resizable/resizable.ts +21 -0
  1405. package/registry/files/families/layout/responsive/breakpoint.ts +135 -0
  1406. package/registry/files/families/layout/responsive/examples/responsive-basic.vue +22 -0
  1407. package/registry/files/families/layout/responsive/responsive-show.vue +89 -0
  1408. package/registry/files/families/layout/responsive/responsive-switch.vue +81 -0
  1409. package/registry/files/families/layout/responsive/responsive-types.ts +67 -0
  1410. package/registry/files/families/layout/responsive/responsive.ts +13 -0
  1411. package/registry/files/families/layout/safe-area/examples/safe-area-basic.vue +15 -0
  1412. package/registry/files/families/layout/safe-area/safe-area-runtime.ts +119 -0
  1413. package/registry/files/families/layout/safe-area/safe-area.ts +9 -0
  1414. package/registry/files/families/layout/safe-area/safe-area.vue +69 -0
  1415. package/registry/files/families/layout/scroll-area/examples/scroll-area-basic.vue +20 -0
  1416. package/registry/files/families/layout/scroll-area/scroll-area-runtime.ts +112 -0
  1417. package/registry/files/families/layout/scroll-area/scroll-area-types.ts +277 -0
  1418. package/registry/files/families/layout/scroll-area/scroll-area.css +49 -0
  1419. package/registry/files/families/layout/scroll-area/scroll-area.ts +26 -0
  1420. package/registry/files/families/layout/scroll-area/scroll-area.vue +271 -0
  1421. package/registry/files/families/layout/separator/examples/separator-basic.vue +12 -0
  1422. package/registry/files/families/layout/separator/separator-types.ts +19 -0
  1423. package/registry/files/families/layout/separator/separator.ts +4 -0
  1424. package/registry/files/families/layout/separator/separator.vue +86 -0
  1425. package/registry/files/families/layout/sidebar/examples/sidebar-basic.vue +47 -0
  1426. package/registry/files/families/layout/sidebar/sidebar-content.vue +48 -0
  1427. package/registry/files/families/layout/sidebar/sidebar-context.ts +33 -0
  1428. package/registry/files/families/layout/sidebar/sidebar-footer.vue +48 -0
  1429. package/registry/files/families/layout/sidebar/sidebar-group-label.vue +50 -0
  1430. package/registry/files/families/layout/sidebar/sidebar-group.vue +59 -0
  1431. package/registry/files/families/layout/sidebar/sidebar-header.vue +48 -0
  1432. package/registry/files/families/layout/sidebar/sidebar-inset.vue +50 -0
  1433. package/registry/files/families/layout/sidebar/sidebar-provider.vue +344 -0
  1434. package/registry/files/families/layout/sidebar/sidebar-rail.vue +82 -0
  1435. package/registry/files/families/layout/sidebar/sidebar-root.vue +115 -0
  1436. package/registry/files/families/layout/sidebar/sidebar-trigger.vue +81 -0
  1437. package/registry/files/families/layout/sidebar/sidebar-types.ts +92 -0
  1438. package/registry/files/families/layout/sidebar/sidebar.ts +26 -0
  1439. package/registry/files/families/layout/spacer/examples/spacer-basic.vue +16 -0
  1440. package/registry/files/families/layout/spacer/spacer-runtime.ts +54 -0
  1441. package/registry/files/families/layout/spacer/spacer-types.ts +79 -0
  1442. package/registry/files/families/layout/spacer/spacer.ts +13 -0
  1443. package/registry/files/families/layout/spacer/spacer.vue +116 -0
  1444. package/registry/files/families/layout/splitter/examples/splitter-basic.vue +21 -0
  1445. package/registry/files/families/layout/splitter/examples/splitter-controlled.vue +25 -0
  1446. package/registry/files/families/layout/splitter/splitter-context.ts +53 -0
  1447. package/registry/files/families/layout/splitter/splitter-group.vue +339 -0
  1448. package/registry/files/families/layout/splitter/splitter-handle.vue +217 -0
  1449. package/registry/files/families/layout/splitter/splitter-layout.ts +142 -0
  1450. package/registry/files/families/layout/splitter/splitter-panel.vue +176 -0
  1451. package/registry/files/families/layout/splitter/splitter-persistence.ts +85 -0
  1452. package/registry/files/families/layout/splitter/splitter-types.ts +179 -0
  1453. package/registry/files/families/layout/splitter/splitter.ts +31 -0
  1454. package/registry/files/families/layout/stack/examples/stack-basic.vue +15 -0
  1455. package/registry/files/families/layout/stack/stack-runtime.ts +56 -0
  1456. package/registry/files/families/layout/stack/stack-types.ts +91 -0
  1457. package/registry/files/families/layout/stack/stack.ts +16 -0
  1458. package/registry/files/families/layout/stack/stack.vue +144 -0
  1459. package/registry/files/families/layout/sticky/examples/sticky-basic.vue +27 -0
  1460. package/registry/files/families/layout/sticky/sticky-geometry.ts +34 -0
  1461. package/registry/files/families/layout/sticky/sticky-types.ts +26 -0
  1462. package/registry/files/families/layout/sticky/sticky.ts +5 -0
  1463. package/registry/files/families/layout/sticky/sticky.vue +188 -0
  1464. package/registry/files/families/layout/sticky-stack/examples/sticky-stack-basic.vue +23 -0
  1465. package/registry/files/families/layout/sticky-stack/sticky-stack-context.ts +20 -0
  1466. package/registry/files/families/layout/sticky-stack/sticky-stack-item.vue +114 -0
  1467. package/registry/files/families/layout/sticky-stack/sticky-stack-layout.ts +61 -0
  1468. package/registry/files/families/layout/sticky-stack/sticky-stack-types.ts +13 -0
  1469. package/registry/files/families/layout/sticky-stack/sticky-stack.ts +6 -0
  1470. package/registry/files/families/layout/sticky-stack/sticky-stack.vue +89 -0
  1471. package/registry/files/families/layout/surface/examples/surface-basic.vue +17 -0
  1472. package/registry/files/families/layout/surface/surface-runtime.ts +20 -0
  1473. package/registry/files/families/layout/surface/surface-types.ts +94 -0
  1474. package/registry/files/families/layout/surface/surface.ts +14 -0
  1475. package/registry/files/families/layout/surface/surface.vue +114 -0
  1476. package/registry/files/families/layout/window-manager/examples/window-manager-basic.vue +36 -0
  1477. package/registry/files/families/layout/window-manager/floating-window.vue +275 -0
  1478. package/registry/files/families/layout/window-manager/window-dock.vue +61 -0
  1479. package/registry/files/families/layout/window-manager/window-manager-context.ts +44 -0
  1480. package/registry/files/families/layout/window-manager/window-manager-model.ts +271 -0
  1481. package/registry/files/families/layout/window-manager/window-manager-persistence.ts +70 -0
  1482. package/registry/files/families/layout/window-manager/window-manager-types.ts +95 -0
  1483. package/registry/files/families/layout/window-manager/window-manager.ts +34 -0
  1484. package/registry/files/families/layout/window-manager/window-manager.vue +228 -0
  1485. package/registry/files/families/media/audio-player/audio-player-audio.vue +139 -0
  1486. package/registry/files/families/media/audio-player/audio-player.ts +18 -0
  1487. package/registry/files/families/media/audio-player/examples/audio-player-basic.vue +28 -0
  1488. package/registry/files/families/media/audio-visualizer/audio-visualizer-bars.vue +79 -0
  1489. package/registry/files/families/media/audio-visualizer/audio-visualizer-context.ts +15 -0
  1490. package/registry/files/families/media/audio-visualizer/audio-visualizer-math.ts +127 -0
  1491. package/registry/files/families/media/audio-visualizer/audio-visualizer-runtime.ts +425 -0
  1492. package/registry/files/families/media/audio-visualizer/audio-visualizer-types.ts +244 -0
  1493. package/registry/files/families/media/audio-visualizer/audio-visualizer.ts +27 -0
  1494. package/registry/files/families/media/audio-visualizer/audio-visualizer.vue +189 -0
  1495. package/registry/files/families/media/audio-visualizer/examples/audio-visualizer-basic.vue +26 -0
  1496. package/registry/files/families/media/carousel/carousel-autoplay-toggle.vue +65 -0
  1497. package/registry/files/families/media/carousel/carousel-context.ts +52 -0
  1498. package/registry/files/families/media/carousel/carousel-geometry.ts +129 -0
  1499. package/registry/files/families/media/carousel/carousel-indicator-group.vue +57 -0
  1500. package/registry/files/families/media/carousel/carousel-indicator.vue +114 -0
  1501. package/registry/files/families/media/carousel/carousel-next.vue +64 -0
  1502. package/registry/files/families/media/carousel/carousel-previous.vue +64 -0
  1503. package/registry/files/families/media/carousel/carousel-root.vue +511 -0
  1504. package/registry/files/families/media/carousel/carousel-slide.vue +110 -0
  1505. package/registry/files/families/media/carousel/carousel-types.ts +155 -0
  1506. package/registry/files/families/media/carousel/carousel-viewport.vue +313 -0
  1507. package/registry/files/families/media/carousel/carousel.ts +41 -0
  1508. package/registry/files/families/media/carousel/examples/carousel-basic.vue +40 -0
  1509. package/registry/files/families/media/hotspot/examples/hotspot-basic.vue +26 -0
  1510. package/registry/files/families/media/hotspot/hotspot-area.vue +158 -0
  1511. package/registry/files/families/media/hotspot/hotspot-content.vue +107 -0
  1512. package/registry/files/families/media/hotspot/hotspot-context.ts +37 -0
  1513. package/registry/files/families/media/hotspot/hotspot-geometry.ts +141 -0
  1514. package/registry/files/families/media/hotspot/hotspot-image.vue +78 -0
  1515. package/registry/files/families/media/hotspot/hotspot-marker.vue +151 -0
  1516. package/registry/files/families/media/hotspot/hotspot-root.vue +230 -0
  1517. package/registry/files/families/media/hotspot/hotspot-types.ts +112 -0
  1518. package/registry/files/families/media/hotspot/hotspot.ts +35 -0
  1519. package/registry/files/families/media/image/examples/image-basic.vue +12 -0
  1520. package/registry/files/families/media/image/image-content.vue +181 -0
  1521. package/registry/files/families/media/image/image-context.ts +27 -0
  1522. package/registry/files/families/media/image/image-fallback.vue +42 -0
  1523. package/registry/files/families/media/image/image-placeholder.vue +83 -0
  1524. package/registry/files/families/media/image/image-root.vue +206 -0
  1525. package/registry/files/families/media/image/image-source.ts +44 -0
  1526. package/registry/files/families/media/image/image-types.ts +94 -0
  1527. package/registry/files/families/media/image/image.ts +23 -0
  1528. package/registry/files/families/media/image-compare/examples/image-compare-basic.vue +29 -0
  1529. package/registry/files/families/media/image-compare/image-compare-after.vue +37 -0
  1530. package/registry/files/families/media/image-compare/image-compare-before.vue +37 -0
  1531. package/registry/files/families/media/image-compare/image-compare-context.ts +33 -0
  1532. package/registry/files/families/media/image-compare/image-compare-handle.vue +117 -0
  1533. package/registry/files/families/media/image-compare/image-compare-label.vue +45 -0
  1534. package/registry/files/families/media/image-compare/image-compare-root.vue +294 -0
  1535. package/registry/files/families/media/image-compare/image-compare-types.ts +67 -0
  1536. package/registry/files/families/media/image-compare/image-compare-value.ts +93 -0
  1537. package/registry/files/families/media/image-compare/image-compare.ts +29 -0
  1538. package/registry/files/families/media/image-cropper/examples/image-cropper-basic.vue +50 -0
  1539. package/registry/files/families/media/image-cropper/image-cropper-area.vue +161 -0
  1540. package/registry/files/families/media/image-cropper/image-cropper-canvas.ts +165 -0
  1541. package/registry/files/families/media/image-cropper/image-cropper-context.ts +55 -0
  1542. package/registry/files/families/media/image-cropper/image-cropper-geometry.ts +340 -0
  1543. package/registry/files/families/media/image-cropper/image-cropper-grid.vue +75 -0
  1544. package/registry/files/families/media/image-cropper/image-cropper-handle.vue +80 -0
  1545. package/registry/files/families/media/image-cropper/image-cropper-image.vue +150 -0
  1546. package/registry/files/families/media/image-cropper/image-cropper-pointer.ts +55 -0
  1547. package/registry/files/families/media/image-cropper/image-cropper-root.vue +529 -0
  1548. package/registry/files/families/media/image-cropper/image-cropper-types.ts +204 -0
  1549. package/registry/files/families/media/image-cropper/image-cropper-viewport.vue +132 -0
  1550. package/registry/files/families/media/image-cropper/image-cropper.ts +39 -0
  1551. package/registry/files/families/media/lightbox/examples/lightbox-basic.vue +54 -0
  1552. package/registry/files/families/media/lightbox/lightbox-close.vue +62 -0
  1553. package/registry/files/families/media/lightbox/lightbox-content.vue +165 -0
  1554. package/registry/files/families/media/lightbox/lightbox-context.ts +35 -0
  1555. package/registry/files/families/media/lightbox/lightbox-counter.vue +46 -0
  1556. package/registry/files/families/media/lightbox/lightbox-image.vue +55 -0
  1557. package/registry/files/families/media/lightbox/lightbox-item.vue +53 -0
  1558. package/registry/files/families/media/lightbox/lightbox-next.vue +64 -0
  1559. package/registry/files/families/media/lightbox/lightbox-previous.vue +64 -0
  1560. package/registry/files/families/media/lightbox/lightbox-root.vue +325 -0
  1561. package/registry/files/families/media/lightbox/lightbox-state.ts +78 -0
  1562. package/registry/files/families/media/lightbox/lightbox-thumbnail.vue +110 -0
  1563. package/registry/files/families/media/lightbox/lightbox-thumbnails.vue +47 -0
  1564. package/registry/files/families/media/lightbox/lightbox-trigger.vue +77 -0
  1565. package/registry/files/families/media/lightbox/lightbox-types.ts +156 -0
  1566. package/registry/files/families/media/lightbox/lightbox.ts +36 -0
  1567. package/registry/files/families/media/marquee/examples/marquee-basic.vue +17 -0
  1568. package/registry/files/families/media/marquee/marquee-content.vue +90 -0
  1569. package/registry/files/families/media/marquee/marquee-context.ts +29 -0
  1570. package/registry/files/families/media/marquee/marquee-geometry.ts +56 -0
  1571. package/registry/files/families/media/marquee/marquee-pause-button.vue +52 -0
  1572. package/registry/files/families/media/marquee/marquee-root.vue +325 -0
  1573. package/registry/files/families/media/marquee/marquee-types.ts +103 -0
  1574. package/registry/files/families/media/marquee/marquee.ts +26 -0
  1575. package/registry/files/families/media/media-player/examples/media-player-basic.vue +30 -0
  1576. package/registry/files/families/media/media-player/media-player-captions-button.vue +79 -0
  1577. package/registry/files/families/media/media-player/media-player-context.ts +42 -0
  1578. package/registry/files/families/media/media-player/media-player-format.ts +249 -0
  1579. package/registry/files/families/media/media-player/media-player-loading-indicator.vue +29 -0
  1580. package/registry/files/families/media/media-player/media-player-mute-button.vue +73 -0
  1581. package/registry/files/families/media/media-player/media-player-platform.ts +94 -0
  1582. package/registry/files/families/media/media-player/media-player-play-button.vue +76 -0
  1583. package/registry/files/families/media/media-player/media-player-playback-rate-button.vue +87 -0
  1584. package/registry/files/families/media/media-player/media-player-root.vue +701 -0
  1585. package/registry/files/families/media/media-player/media-player-seek-slider.vue +167 -0
  1586. package/registry/files/families/media/media-player/media-player-time-display.vue +48 -0
  1587. package/registry/files/families/media/media-player/media-player-types.ts +230 -0
  1588. package/registry/files/families/media/media-player/media-player-volume-slider.vue +146 -0
  1589. package/registry/files/families/media/media-player/media-player.ts +39 -0
  1590. package/registry/files/families/media/pan-zoom/examples/pan-zoom-basic.vue +36 -0
  1591. package/registry/files/families/media/pan-zoom/pan-zoom-content.vue +54 -0
  1592. package/registry/files/families/media/pan-zoom/pan-zoom-context.ts +50 -0
  1593. package/registry/files/families/media/pan-zoom/pan-zoom-fit.vue +64 -0
  1594. package/registry/files/families/media/pan-zoom/pan-zoom-reset.vue +64 -0
  1595. package/registry/files/families/media/pan-zoom/pan-zoom-root.vue +362 -0
  1596. package/registry/files/families/media/pan-zoom/pan-zoom-status.vue +46 -0
  1597. package/registry/files/families/media/pan-zoom/pan-zoom-transform.ts +221 -0
  1598. package/registry/files/families/media/pan-zoom/pan-zoom-types.ts +155 -0
  1599. package/registry/files/families/media/pan-zoom/pan-zoom-viewport.vue +262 -0
  1600. package/registry/files/families/media/pan-zoom/pan-zoom-zoom-in.vue +64 -0
  1601. package/registry/files/families/media/pan-zoom/pan-zoom-zoom-out.vue +64 -0
  1602. package/registry/files/families/media/pan-zoom/pan-zoom.ts +47 -0
  1603. package/registry/files/families/media/qr-code/examples/qr-code-basic.vue +11 -0
  1604. package/registry/files/families/media/qr-code/qr-code-encoder.ts +634 -0
  1605. package/registry/files/families/media/qr-code/qr-code-error.ts +13 -0
  1606. package/registry/files/families/media/qr-code/qr-code-kanji-table.ts +11 -0
  1607. package/registry/files/families/media/qr-code/qr-code-kanji.ts +85 -0
  1608. package/registry/files/families/media/qr-code/qr-code-segments.ts +344 -0
  1609. package/registry/files/families/media/qr-code/qr-code-svg.ts +48 -0
  1610. package/registry/files/families/media/qr-code/qr-code-tables.ts +126 -0
  1611. package/registry/files/families/media/qr-code/qr-code-types.ts +282 -0
  1612. package/registry/files/families/media/qr-code/qr-code.ts +39 -0
  1613. package/registry/files/families/media/qr-code/qr-code.vue +269 -0
  1614. package/registry/files/families/media/scrubber-preview/examples/scrubber-preview-basic.vue +47 -0
  1615. package/registry/files/families/media/scrubber-preview/scrubber-preview-capture.ts +124 -0
  1616. package/registry/files/families/media/scrubber-preview/scrubber-preview-context.ts +34 -0
  1617. package/registry/files/families/media/scrubber-preview/scrubber-preview-root.vue +237 -0
  1618. package/registry/files/families/media/scrubber-preview/scrubber-preview-thumbnail.vue +273 -0
  1619. package/registry/files/families/media/scrubber-preview/scrubber-preview-thumbnails.ts +188 -0
  1620. package/registry/files/families/media/scrubber-preview/scrubber-preview-time.vue +66 -0
  1621. package/registry/files/families/media/scrubber-preview/scrubber-preview-track.vue +110 -0
  1622. package/registry/files/families/media/scrubber-preview/scrubber-preview-types.ts +178 -0
  1623. package/registry/files/families/media/scrubber-preview/scrubber-preview.ts +37 -0
  1624. package/registry/files/families/media/signature-pad/examples/signature-pad-basic.vue +27 -0
  1625. package/registry/files/families/media/signature-pad/signature-pad-canvas.vue +195 -0
  1626. package/registry/files/families/media/signature-pad/signature-pad-clear.vue +53 -0
  1627. package/registry/files/families/media/signature-pad/signature-pad-context.ts +33 -0
  1628. package/registry/files/families/media/signature-pad/signature-pad-guide.vue +38 -0
  1629. package/registry/files/families/media/signature-pad/signature-pad-path.ts +317 -0
  1630. package/registry/files/families/media/signature-pad/signature-pad-redo.vue +53 -0
  1631. package/registry/files/families/media/signature-pad/signature-pad-root.vue +382 -0
  1632. package/registry/files/families/media/signature-pad/signature-pad-types.ts +189 -0
  1633. package/registry/files/families/media/signature-pad/signature-pad-undo.vue +53 -0
  1634. package/registry/files/families/media/signature-pad/signature-pad.ts +37 -0
  1635. package/registry/files/families/media/video-player/examples/video-player-basic.vue +46 -0
  1636. package/registry/files/families/media/video-player/video-player-fullscreen-button.vue +86 -0
  1637. package/registry/files/families/media/video-player/video-player-picture-in-picture-button.vue +86 -0
  1638. package/registry/files/families/media/video-player/video-player-types.ts +2 -0
  1639. package/registry/files/families/media/video-player/video-player-video.vue +185 -0
  1640. package/registry/files/families/media/video-player/video-player.ts +21 -0
  1641. package/registry/files/families/media/webcam-capture/examples/webcam-capture-basic.vue +27 -0
  1642. package/registry/files/families/media/webcam-capture/webcam-capture-context.ts +28 -0
  1643. package/registry/files/families/media/webcam-capture/webcam-capture-device-select.vue +69 -0
  1644. package/registry/files/families/media/webcam-capture/webcam-capture-frame.ts +109 -0
  1645. package/registry/files/families/media/webcam-capture/webcam-capture-media.ts +121 -0
  1646. package/registry/files/families/media/webcam-capture/webcam-capture-photo.vue +66 -0
  1647. package/registry/files/families/media/webcam-capture/webcam-capture-root.vue +540 -0
  1648. package/registry/files/families/media/webcam-capture/webcam-capture-shutter.vue +76 -0
  1649. package/registry/files/families/media/webcam-capture/webcam-capture-start-button.vue +69 -0
  1650. package/registry/files/families/media/webcam-capture/webcam-capture-status-message.vue +44 -0
  1651. package/registry/files/families/media/webcam-capture/webcam-capture-stop-button.vue +66 -0
  1652. package/registry/files/families/media/webcam-capture/webcam-capture-switch-camera.vue +66 -0
  1653. package/registry/files/families/media/webcam-capture/webcam-capture-types.ts +292 -0
  1654. package/registry/files/families/media/webcam-capture/webcam-capture-video.vue +61 -0
  1655. package/registry/files/families/media/webcam-capture/webcam-capture.ts +43 -0
  1656. package/registry/files/families/menus/context-menu/context-menu-context.ts +14 -0
  1657. package/registry/files/families/menus/context-menu/context-menu-root.vue +134 -0
  1658. package/registry/files/families/menus/context-menu/context-menu-trigger.vue +111 -0
  1659. package/registry/files/families/menus/context-menu/context-menu-types.ts +28 -0
  1660. package/registry/files/families/menus/context-menu/context-menu.ts +36 -0
  1661. package/registry/files/families/menus/context-menu/examples/context-menu-basic.vue +45 -0
  1662. package/registry/files/families/menus/dropdown-menu/dropdown-menu-root.vue +105 -0
  1663. package/registry/files/families/menus/dropdown-menu/dropdown-menu-trigger.vue +139 -0
  1664. package/registry/files/families/menus/dropdown-menu/dropdown-menu.ts +34 -0
  1665. package/registry/files/families/menus/dropdown-menu/examples/dropdown-menu-basic.vue +43 -0
  1666. package/registry/files/families/menus/menu/examples/menu-basic.vue +37 -0
  1667. package/registry/files/families/menus/menu/menu-arrow.vue +55 -0
  1668. package/registry/files/families/menus/menu/menu-checkbox-item.vue +150 -0
  1669. package/registry/files/families/menus/menu/menu-content-runtime.ts +383 -0
  1670. package/registry/files/families/menus/menu/menu-content.vue +230 -0
  1671. package/registry/files/families/menus/menu/menu-context.ts +131 -0
  1672. package/registry/files/families/menus/menu/menu-dom.ts +98 -0
  1673. package/registry/files/families/menus/menu/menu-group.vue +34 -0
  1674. package/registry/files/families/menus/menu/menu-item-indicator.vue +44 -0
  1675. package/registry/files/families/menus/menu/menu-item-runtime.ts +164 -0
  1676. package/registry/files/families/menus/menu/menu-item.vue +95 -0
  1677. package/registry/files/families/menus/menu/menu-label.vue +45 -0
  1678. package/registry/files/families/menus/menu/menu-radio-group.vue +119 -0
  1679. package/registry/files/families/menus/menu/menu-radio-item.vue +124 -0
  1680. package/registry/files/families/menus/menu/menu-root-runtime.ts +217 -0
  1681. package/registry/files/families/menus/menu/menu-root.vue +105 -0
  1682. package/registry/files/families/menus/menu/menu-separator.vue +22 -0
  1683. package/registry/files/families/menus/menu/menu-sub-content.vue +218 -0
  1684. package/registry/files/families/menus/menu/menu-sub-trigger.vue +118 -0
  1685. package/registry/files/families/menus/menu/menu-sub.vue +93 -0
  1686. package/registry/files/families/menus/menu/menu-trigger.vue +107 -0
  1687. package/registry/files/families/menus/menu/menu-types.ts +305 -0
  1688. package/registry/files/families/menus/menu/menu.ts +66 -0
  1689. package/registry/files/families/menus/menubar/examples/menubar-basic.vue +40 -0
  1690. package/registry/files/families/menus/menubar/menubar-context.ts +42 -0
  1691. package/registry/files/families/menus/menubar/menubar-menu.vue +94 -0
  1692. package/registry/files/families/menus/menubar/menubar-root.vue +187 -0
  1693. package/registry/files/families/menus/menubar/menubar-trigger.vue +162 -0
  1694. package/registry/files/families/menus/menubar/menubar-types.ts +58 -0
  1695. package/registry/files/families/menus/menubar/menubar.ts +37 -0
  1696. package/registry/files/families/navigation/bottom-navigation/bottom-navigation-context.ts +13 -0
  1697. package/registry/files/families/navigation/bottom-navigation/bottom-navigation-item.vue +88 -0
  1698. package/registry/files/families/navigation/bottom-navigation/bottom-navigation.ts +7 -0
  1699. package/registry/files/families/navigation/bottom-navigation/bottom-navigation.vue +96 -0
  1700. package/registry/files/families/navigation/bottom-navigation/examples/bottom-navigation-basic.vue +23 -0
  1701. package/registry/files/families/navigation/breadcrumb/breadcrumb-item.vue +59 -0
  1702. package/registry/files/families/navigation/breadcrumb/breadcrumb-link.vue +117 -0
  1703. package/registry/files/families/navigation/breadcrumb/breadcrumb-list.vue +40 -0
  1704. package/registry/files/families/navigation/breadcrumb/breadcrumb-separator.vue +58 -0
  1705. package/registry/files/families/navigation/breadcrumb/breadcrumb-types.ts +64 -0
  1706. package/registry/files/families/navigation/breadcrumb/breadcrumb.ts +18 -0
  1707. package/registry/files/families/navigation/breadcrumb/breadcrumb.vue +53 -0
  1708. package/registry/files/families/navigation/breadcrumb/examples/breadcrumb-basic.vue +34 -0
  1709. package/registry/files/families/navigation/link/examples/link-basic.vue +19 -0
  1710. package/registry/files/families/navigation/link/link-anchor.vue +128 -0
  1711. package/registry/files/families/navigation/link/link-types.ts +82 -0
  1712. package/registry/files/families/navigation/link/link.ts +9 -0
  1713. package/registry/files/families/navigation/navigation-menu/examples/navigation-menu-basic.vue +43 -0
  1714. package/registry/files/families/navigation/navigation-menu/navigation-menu-content.vue +84 -0
  1715. package/registry/files/families/navigation/navigation-menu/navigation-menu-context.ts +60 -0
  1716. package/registry/files/families/navigation/navigation-menu/navigation-menu-id.ts +29 -0
  1717. package/registry/files/families/navigation/navigation-menu/navigation-menu-indicator.vue +77 -0
  1718. package/registry/files/families/navigation/navigation-menu/navigation-menu-item.vue +59 -0
  1719. package/registry/files/families/navigation/navigation-menu/navigation-menu-link.vue +81 -0
  1720. package/registry/files/families/navigation/navigation-menu/navigation-menu-list.vue +24 -0
  1721. package/registry/files/families/navigation/navigation-menu/navigation-menu-root.vue +388 -0
  1722. package/registry/files/families/navigation/navigation-menu/navigation-menu-trigger.vue +115 -0
  1723. package/registry/files/families/navigation/navigation-menu/navigation-menu-types.ts +80 -0
  1724. package/registry/files/families/navigation/navigation-menu/navigation-menu-viewport.vue +79 -0
  1725. package/registry/files/families/navigation/navigation-menu/navigation-menu.ts +25 -0
  1726. package/registry/files/families/navigation/pager/examples/pager-basic.vue +28 -0
  1727. package/registry/files/families/navigation/pager/pager-context.ts +28 -0
  1728. package/registry/files/families/navigation/pager/pager-page.vue +42 -0
  1729. package/registry/files/families/navigation/pager/pager-tab-list.vue +59 -0
  1730. package/registry/files/families/navigation/pager/pager-tab.vue +59 -0
  1731. package/registry/files/families/navigation/pager/pager-types.ts +29 -0
  1732. package/registry/files/families/navigation/pager/pager-viewport.vue +72 -0
  1733. package/registry/files/families/navigation/pager/pager.ts +12 -0
  1734. package/registry/files/families/navigation/pager/pager.vue +186 -0
  1735. package/registry/files/families/navigation/pagination/examples/pagination-basic.vue +36 -0
  1736. package/registry/files/families/navigation/pagination/pagination-context.ts +37 -0
  1737. package/registry/files/families/navigation/pagination/pagination-ellipsis.vue +88 -0
  1738. package/registry/files/families/navigation/pagination/pagination-item.vue +112 -0
  1739. package/registry/files/families/navigation/pagination/pagination-list.vue +96 -0
  1740. package/registry/files/families/navigation/pagination/pagination-next.vue +140 -0
  1741. package/registry/files/families/navigation/pagination/pagination-page.vue +163 -0
  1742. package/registry/files/families/navigation/pagination/pagination-previous.vue +140 -0
  1743. package/registry/files/families/navigation/pagination/pagination-range.ts +115 -0
  1744. package/registry/files/families/navigation/pagination/pagination-types.ts +234 -0
  1745. package/registry/files/families/navigation/pagination/pagination.ts +40 -0
  1746. package/registry/files/families/navigation/pagination/pagination.vue +253 -0
  1747. package/registry/files/families/navigation/skip-link/examples/skip-link-basic.vue +21 -0
  1748. package/registry/files/families/navigation/skip-link/skip-link-types.ts +80 -0
  1749. package/registry/files/families/navigation/skip-link/skip-link.ts +11 -0
  1750. package/registry/files/families/navigation/skip-link/skip-link.vue +180 -0
  1751. package/registry/files/families/navigation/stepper/examples/stepper-basic.vue +29 -0
  1752. package/registry/files/families/navigation/stepper/examples/stepper-controlled.vue +44 -0
  1753. package/registry/files/families/navigation/stepper/stepper-content.vue +143 -0
  1754. package/registry/files/families/navigation/stepper/stepper-context.ts +91 -0
  1755. package/registry/files/families/navigation/stepper/stepper-item.vue +248 -0
  1756. package/registry/files/families/navigation/stepper/stepper-list.vue +115 -0
  1757. package/registry/files/families/navigation/stepper/stepper-navigation.ts +72 -0
  1758. package/registry/files/families/navigation/stepper/stepper-root.vue +347 -0
  1759. package/registry/files/families/navigation/stepper/stepper-trigger.vue +196 -0
  1760. package/registry/files/families/navigation/stepper/stepper-types.ts +291 -0
  1761. package/registry/files/families/navigation/stepper/stepper-value.ts +26 -0
  1762. package/registry/files/families/navigation/stepper/stepper.ts +28 -0
  1763. package/registry/files/families/navigation/tabs/examples/tabs-basic.vue +17 -0
  1764. package/registry/files/families/navigation/tabs/examples/tabs-controlled.vue +23 -0
  1765. package/registry/files/families/navigation/tabs/tabs-content.vue +121 -0
  1766. package/registry/files/families/navigation/tabs/tabs-context.ts +50 -0
  1767. package/registry/files/families/navigation/tabs/tabs-list.vue +109 -0
  1768. package/registry/files/families/navigation/tabs/tabs-root.vue +312 -0
  1769. package/registry/files/families/navigation/tabs/tabs-trigger.vue +220 -0
  1770. package/registry/files/families/navigation/tabs/tabs-types.ts +140 -0
  1771. package/registry/files/families/navigation/tabs/tabs-value.ts +26 -0
  1772. package/registry/files/families/navigation/tabs/tabs.ts +22 -0
  1773. package/registry/files/families/navigation/toc/examples/toc-basic.vue +30 -0
  1774. package/registry/files/families/navigation/toc/toc-collect.ts +29 -0
  1775. package/registry/files/families/navigation/toc/toc-context.ts +24 -0
  1776. package/registry/files/families/navigation/toc/toc-item.vue +46 -0
  1777. package/registry/files/families/navigation/toc/toc-link.vue +78 -0
  1778. package/registry/files/families/navigation/toc/toc-list.vue +28 -0
  1779. package/registry/files/families/navigation/toc/toc-root.vue +195 -0
  1780. package/registry/files/families/navigation/toc/toc-types.ts +70 -0
  1781. package/registry/files/families/navigation/toc/toc.ts +15 -0
  1782. package/registry/files/families/overlays/action-sheet/action-sheet-context.ts +23 -0
  1783. package/registry/files/families/overlays/action-sheet/action-sheet-item.vue +120 -0
  1784. package/registry/files/families/overlays/action-sheet/action-sheet-menu.vue +115 -0
  1785. package/registry/files/families/overlays/action-sheet/action-sheet-types.ts +14 -0
  1786. package/registry/files/families/overlays/action-sheet/action-sheet.ts +15 -0
  1787. package/registry/files/families/overlays/action-sheet/examples/action-sheet-basic.vue +43 -0
  1788. package/registry/files/families/overlays/alert-dialog/alert-dialog-content.vue +190 -0
  1789. package/registry/files/families/overlays/alert-dialog/alert-dialog-types.ts +49 -0
  1790. package/registry/files/families/overlays/alert-dialog/alert-dialog.ts +24 -0
  1791. package/registry/files/families/overlays/alert-dialog/examples/alert-dialog-basic.vue +39 -0
  1792. package/registry/files/families/overlays/command-palette/command-palette-context.ts +71 -0
  1793. package/registry/files/families/overlays/command-palette/command-palette-dialog.vue +164 -0
  1794. package/registry/files/families/overlays/command-palette/command-palette-empty.vue +28 -0
  1795. package/registry/files/families/overlays/command-palette/command-palette-filter.ts +44 -0
  1796. package/registry/files/families/overlays/command-palette/command-palette-group.vue +83 -0
  1797. package/registry/files/families/overlays/command-palette/command-palette-input.vue +139 -0
  1798. package/registry/files/families/overlays/command-palette/command-palette-item.vue +222 -0
  1799. package/registry/files/families/overlays/command-palette/command-palette-list.vue +63 -0
  1800. package/registry/files/families/overlays/command-palette/command-palette-loading.vue +35 -0
  1801. package/registry/files/families/overlays/command-palette/command-palette-root.vue +423 -0
  1802. package/registry/files/families/overlays/command-palette/command-palette-types.ts +145 -0
  1803. package/registry/files/families/overlays/command-palette/command-palette.ts +30 -0
  1804. package/registry/files/families/overlays/command-palette/examples/command-palette-basic.vue +54 -0
  1805. package/registry/files/families/overlays/confirm/confirm-provider.vue +291 -0
  1806. package/registry/files/families/overlays/confirm/confirm-runtime.ts +196 -0
  1807. package/registry/files/families/overlays/confirm/confirm-types.ts +171 -0
  1808. package/registry/files/families/overlays/confirm/confirm.ts +20 -0
  1809. package/registry/files/families/overlays/confirm/examples/confirm-basic.vue +30 -0
  1810. package/registry/files/families/overlays/dialog/dialog-close.vue +95 -0
  1811. package/registry/files/families/overlays/dialog/dialog-content.vue +287 -0
  1812. package/registry/files/families/overlays/dialog/dialog-context.ts +26 -0
  1813. package/registry/files/families/overlays/dialog/dialog-description.vue +61 -0
  1814. package/registry/files/families/overlays/dialog/dialog-overlay.vue +85 -0
  1815. package/registry/files/families/overlays/dialog/dialog-portal.vue +89 -0
  1816. package/registry/files/families/overlays/dialog/dialog-root.vue +244 -0
  1817. package/registry/files/families/overlays/dialog/dialog-title.vue +53 -0
  1818. package/registry/files/families/overlays/dialog/dialog-trigger.vue +107 -0
  1819. package/registry/files/families/overlays/dialog/dialog-types.ts +103 -0
  1820. package/registry/files/families/overlays/dialog/dialog-visual.css +190 -0
  1821. package/registry/files/families/overlays/dialog/dialog.ts +26 -0
  1822. package/registry/files/families/overlays/dialog/examples/dialog-basic.vue +35 -0
  1823. package/registry/files/families/overlays/dismissable-layer/dismissable-layer-internal.ts +210 -0
  1824. package/registry/files/families/overlays/dismissable-layer/dismissable-layer-stack.ts +232 -0
  1825. package/registry/files/families/overlays/dismissable-layer/dismissable-layer-types.ts +141 -0
  1826. package/registry/files/families/overlays/dismissable-layer/dismissable-layer.ts +245 -0
  1827. package/registry/files/families/overlays/drawer/drawer-content.vue +425 -0
  1828. package/registry/files/families/overlays/drawer/drawer-context.ts +25 -0
  1829. package/registry/files/families/overlays/drawer/drawer-handle.vue +119 -0
  1830. package/registry/files/families/overlays/drawer/drawer-root.vue +446 -0
  1831. package/registry/files/families/overlays/drawer/drawer-snap.ts +149 -0
  1832. package/registry/files/families/overlays/drawer/drawer-types.ts +166 -0
  1833. package/registry/files/families/overlays/drawer/drawer.ts +37 -0
  1834. package/registry/files/families/overlays/drawer/examples/drawer-basic.vue +33 -0
  1835. package/registry/files/families/overlays/hover-card/examples/hover-card-basic.vue +19 -0
  1836. package/registry/files/families/overlays/hover-card/hover-card-content.vue +260 -0
  1837. package/registry/files/families/overlays/hover-card/hover-card-context.ts +29 -0
  1838. package/registry/files/families/overlays/hover-card/hover-card-root.vue +296 -0
  1839. package/registry/files/families/overlays/hover-card/hover-card-trigger.vue +212 -0
  1840. package/registry/files/families/overlays/hover-card/hover-card-types.ts +105 -0
  1841. package/registry/files/families/overlays/hover-card/hover-card.ts +22 -0
  1842. package/registry/files/families/overlays/motion/motion-adapters.ts +126 -0
  1843. package/registry/files/families/overlays/motion/motion-tokens.ts +112 -0
  1844. package/registry/files/families/overlays/motion/motion-types.ts +72 -0
  1845. package/registry/files/families/overlays/motion/motion.css +257 -0
  1846. package/registry/files/families/overlays/motion/motion.ts +32 -0
  1847. package/registry/files/families/overlays/popconfirm/examples/popconfirm-basic.vue +35 -0
  1848. package/registry/files/families/overlays/popconfirm/popconfirm-cancel.vue +80 -0
  1849. package/registry/files/families/overlays/popconfirm/popconfirm-confirm.vue +81 -0
  1850. package/registry/files/families/overlays/popconfirm/popconfirm-content.vue +159 -0
  1851. package/registry/files/families/overlays/popconfirm/popconfirm-context.ts +22 -0
  1852. package/registry/files/families/overlays/popconfirm/popconfirm-root.vue +242 -0
  1853. package/registry/files/families/overlays/popconfirm/popconfirm-trigger.vue +67 -0
  1854. package/registry/files/families/overlays/popconfirm/popconfirm-types.ts +61 -0
  1855. package/registry/files/families/overlays/popconfirm/popconfirm.ts +17 -0
  1856. package/registry/files/families/overlays/popover/examples/popover-basic.vue +24 -0
  1857. package/registry/files/families/overlays/popover/popover-arrow.vue +74 -0
  1858. package/registry/files/families/overlays/popover/popover-content-runtime.ts +167 -0
  1859. package/registry/files/families/overlays/popover/popover-content.vue +340 -0
  1860. package/registry/files/families/overlays/popover/popover-context.ts +23 -0
  1861. package/registry/files/families/overlays/popover/popover-root.vue +187 -0
  1862. package/registry/files/families/overlays/popover/popover-trigger.vue +108 -0
  1863. package/registry/files/families/overlays/popover/popover-types.ts +138 -0
  1864. package/registry/files/families/overlays/popover/popover.ts +26 -0
  1865. package/registry/files/families/overlays/portal/examples/portal-basic.vue +17 -0
  1866. package/registry/files/families/overlays/portal/portal-stack.ts +62 -0
  1867. package/registry/files/families/overlays/portal/portal.ts +10 -0
  1868. package/registry/files/families/overlays/portal/portal.vue +72 -0
  1869. package/registry/files/families/overlays/positioner/examples/positioner-basic.vue +35 -0
  1870. package/registry/files/families/overlays/positioner/positioner-arrow.vue +49 -0
  1871. package/registry/files/families/overlays/positioner/positioner-context.ts +6 -0
  1872. package/registry/files/families/overlays/positioner/positioner-geometry.ts +222 -0
  1873. package/registry/files/families/overlays/positioner/positioner-runtime.ts +344 -0
  1874. package/registry/files/families/overlays/positioner/positioner-size.ts +67 -0
  1875. package/registry/files/families/overlays/positioner/positioner-types.ts +343 -0
  1876. package/registry/files/families/overlays/positioner/positioner-viewport.ts +91 -0
  1877. package/registry/files/families/overlays/positioner/positioner.ts +34 -0
  1878. package/registry/files/families/overlays/positioner/positioner.vue +218 -0
  1879. package/registry/files/families/overlays/presence/examples/presence-basic.vue +30 -0
  1880. package/registry/files/families/overlays/presence/presence-runtime.ts +145 -0
  1881. package/registry/files/families/overlays/presence/presence-types.ts +52 -0
  1882. package/registry/files/families/overlays/presence/presence.ts +11 -0
  1883. package/registry/files/families/overlays/presence/presence.vue +80 -0
  1884. package/registry/files/families/overlays/tooltip/examples/tooltip-basic.vue +13 -0
  1885. package/registry/files/families/overlays/tooltip/tooltip-content.vue +222 -0
  1886. package/registry/files/families/overlays/tooltip/tooltip-context.ts +25 -0
  1887. package/registry/files/families/overlays/tooltip/tooltip-root.vue +241 -0
  1888. package/registry/files/families/overlays/tooltip/tooltip-trigger.vue +114 -0
  1889. package/registry/files/families/overlays/tooltip/tooltip-types.ts +89 -0
  1890. package/registry/files/families/overlays/tooltip/tooltip-visual.css +162 -0
  1891. package/registry/files/families/overlays/tooltip/tooltip.ts +17 -0
  1892. package/registry/files/families/overlays/tour/examples/tour-basic.vue +43 -0
  1893. package/registry/files/families/overlays/tour/tour-arrow.vue +63 -0
  1894. package/registry/files/families/overlays/tour/tour-close.vue +83 -0
  1895. package/registry/files/families/overlays/tour/tour-content.vue +354 -0
  1896. package/registry/files/families/overlays/tour/tour-context.ts +43 -0
  1897. package/registry/files/families/overlays/tour/tour-description.vue +27 -0
  1898. package/registry/files/families/overlays/tour/tour-next.vue +72 -0
  1899. package/registry/files/families/overlays/tour/tour-prev.vue +71 -0
  1900. package/registry/files/families/overlays/tour/tour-progress.vue +44 -0
  1901. package/registry/files/families/overlays/tour/tour-root.vue +634 -0
  1902. package/registry/files/families/overlays/tour/tour-spotlight.vue +133 -0
  1903. package/registry/files/families/overlays/tour/tour-state.ts +151 -0
  1904. package/registry/files/families/overlays/tour/tour-step.vue +42 -0
  1905. package/registry/files/families/overlays/tour/tour-title.vue +37 -0
  1906. package/registry/files/families/overlays/tour/tour-types.ts +353 -0
  1907. package/registry/files/families/overlays/tour/tour.ts +43 -0
  1908. package/registry/files/families/overlays/transition/examples/transition-basic.vue +28 -0
  1909. package/registry/files/families/overlays/transition/transition-runtime.ts +119 -0
  1910. package/registry/files/families/overlays/transition/transition-types.ts +19 -0
  1911. package/registry/files/families/overlays/transition/transition.ts +6 -0
  1912. package/registry/files/families/overlays/transition/transition.vue +97 -0
  1913. package/registry/files/families/selection/autocomplete/autocomplete-history.ts +89 -0
  1914. package/registry/files/families/selection/autocomplete/autocomplete-root.vue +183 -0
  1915. package/registry/files/families/selection/autocomplete/autocomplete-types.ts +171 -0
  1916. package/registry/files/families/selection/autocomplete/autocomplete.ts +24 -0
  1917. package/registry/files/families/selection/autocomplete/examples/autocomplete-basic.vue +40 -0
  1918. package/registry/files/families/selection/cascader/cascader-column.vue +65 -0
  1919. package/registry/files/families/selection/cascader/cascader-content.vue +232 -0
  1920. package/registry/files/families/selection/cascader/cascader-context.ts +53 -0
  1921. package/registry/files/families/selection/cascader/cascader-item.vue +82 -0
  1922. package/registry/files/families/selection/cascader/cascader-model.ts +204 -0
  1923. package/registry/files/families/selection/cascader/cascader-root.vue +712 -0
  1924. package/registry/files/families/selection/cascader/cascader-trigger.vue +85 -0
  1925. package/registry/files/families/selection/cascader/cascader-types.ts +327 -0
  1926. package/registry/files/families/selection/cascader/cascader-value.vue +42 -0
  1927. package/registry/files/families/selection/cascader/cascader.ts +41 -0
  1928. package/registry/files/families/selection/cascader/examples/cascader-basic.vue +73 -0
  1929. package/registry/files/families/selection/checkbox/checkbox-control.vue +124 -0
  1930. package/registry/files/families/selection/checkbox/checkbox-state.ts +8 -0
  1931. package/registry/files/families/selection/checkbox/checkbox.ts +4 -0
  1932. package/registry/files/families/selection/checkbox/examples/checkbox-basic.vue +17 -0
  1933. package/registry/files/families/selection/checkbox-group/checkbox-group-context.ts +30 -0
  1934. package/registry/files/families/selection/checkbox-group/checkbox-group-item.vue +109 -0
  1935. package/registry/files/families/selection/checkbox-group/checkbox-group-select-all.vue +78 -0
  1936. package/registry/files/families/selection/checkbox-group/checkbox-group-types.ts +53 -0
  1937. package/registry/files/families/selection/checkbox-group/checkbox-group.ts +15 -0
  1938. package/registry/files/families/selection/checkbox-group/checkbox-group.vue +399 -0
  1939. package/registry/files/families/selection/checkbox-group/examples/checkbox-group-basic.vue +31 -0
  1940. package/registry/files/families/selection/combobox/combobox-anchor.vue +50 -0
  1941. package/registry/files/families/selection/combobox/combobox-chip-remove.vue +44 -0
  1942. package/registry/files/families/selection/combobox/combobox-chip.vue +48 -0
  1943. package/registry/files/families/selection/combobox/combobox-context.ts +63 -0
  1944. package/registry/files/families/selection/combobox/combobox-create-item.vue +72 -0
  1945. package/registry/files/families/selection/combobox/combobox-empty.vue +28 -0
  1946. package/registry/files/families/selection/combobox/combobox-filter.ts +43 -0
  1947. package/registry/files/families/selection/combobox/combobox-input.vue +131 -0
  1948. package/registry/files/families/selection/combobox/combobox-loading.vue +29 -0
  1949. package/registry/files/families/selection/combobox/combobox-root.vue +838 -0
  1950. package/registry/files/families/selection/combobox/combobox-trigger.vue +64 -0
  1951. package/registry/files/families/selection/combobox/combobox-types.ts +356 -0
  1952. package/registry/files/families/selection/combobox/combobox.ts +52 -0
  1953. package/registry/files/families/selection/combobox/examples/combobox-basic.vue +45 -0
  1954. package/registry/files/families/selection/emoji-picker/emoji-picker-category.vue +79 -0
  1955. package/registry/files/families/selection/emoji-picker/emoji-picker-context.ts +45 -0
  1956. package/registry/files/families/selection/emoji-picker/emoji-picker-empty.vue +25 -0
  1957. package/registry/files/families/selection/emoji-picker/emoji-picker-grid.vue +86 -0
  1958. package/registry/files/families/selection/emoji-picker/emoji-picker-item.vue +65 -0
  1959. package/registry/files/families/selection/emoji-picker/emoji-picker-model.ts +252 -0
  1960. package/registry/files/families/selection/emoji-picker/emoji-picker-preview.vue +37 -0
  1961. package/registry/files/families/selection/emoji-picker/emoji-picker-root.vue +239 -0
  1962. package/registry/files/families/selection/emoji-picker/emoji-picker-search.vue +59 -0
  1963. package/registry/files/families/selection/emoji-picker/emoji-picker-skin-tone.vue +107 -0
  1964. package/registry/files/families/selection/emoji-picker/emoji-picker-types.ts +208 -0
  1965. package/registry/files/families/selection/emoji-picker/emoji-picker.ts +34 -0
  1966. package/registry/files/families/selection/emoji-picker/examples/emoji-picker-basic.vue +75 -0
  1967. package/registry/files/families/selection/listbox/examples/listbox-basic.vue +31 -0
  1968. package/registry/files/families/selection/listbox/examples/listbox-multiple.vue +33 -0
  1969. package/registry/files/families/selection/listbox/listbox-context.ts +49 -0
  1970. package/registry/files/families/selection/listbox/listbox-item.vue +206 -0
  1971. package/registry/files/families/selection/listbox/listbox-types.ts +243 -0
  1972. package/registry/files/families/selection/listbox/listbox-value.ts +83 -0
  1973. package/registry/files/families/selection/listbox/listbox.ts +27 -0
  1974. package/registry/files/families/selection/listbox/listbox.vue +346 -0
  1975. package/registry/files/families/selection/listbox-grid/examples/listbox-grid-basic.vue +22 -0
  1976. package/registry/files/families/selection/listbox-grid/listbox-grid-context.ts +32 -0
  1977. package/registry/files/families/selection/listbox-grid/listbox-grid-item.vue +137 -0
  1978. package/registry/files/families/selection/listbox-grid/listbox-grid-model.ts +202 -0
  1979. package/registry/files/families/selection/listbox-grid/listbox-grid-types.ts +217 -0
  1980. package/registry/files/families/selection/listbox-grid/listbox-grid.ts +22 -0
  1981. package/registry/files/families/selection/listbox-grid/listbox-grid.vue +317 -0
  1982. package/registry/files/families/selection/native-select/examples/native-select-basic.vue +22 -0
  1983. package/registry/files/families/selection/native-select/native-select-types.ts +213 -0
  1984. package/registry/files/families/selection/native-select/native-select-value.ts +28 -0
  1985. package/registry/files/families/selection/native-select/native-select.ts +23 -0
  1986. package/registry/files/families/selection/native-select/native-select.vue +269 -0
  1987. package/registry/files/families/selection/radio-group/examples/radio-group-basic.vue +31 -0
  1988. package/registry/files/families/selection/radio-group/radio-group-context.ts +23 -0
  1989. package/registry/files/families/selection/radio-group/radio-group-item.vue +130 -0
  1990. package/registry/files/families/selection/radio-group/radio-group-types.ts +68 -0
  1991. package/registry/files/families/selection/radio-group/radio-group.ts +13 -0
  1992. package/registry/files/families/selection/radio-group/radio-group.vue +264 -0
  1993. package/registry/files/families/selection/select/examples/select-basic.vue +40 -0
  1994. package/registry/files/families/selection/select/select-collection.ts +393 -0
  1995. package/registry/files/families/selection/select/select-content.vue +302 -0
  1996. package/registry/files/families/selection/select/select-context.ts +78 -0
  1997. package/registry/files/families/selection/select/select-group.vue +53 -0
  1998. package/registry/files/families/selection/select/select-item-indicator.vue +39 -0
  1999. package/registry/files/families/selection/select/select-item.vue +178 -0
  2000. package/registry/files/families/selection/select/select-keyboard.ts +31 -0
  2001. package/registry/files/families/selection/select/select-label.vue +26 -0
  2002. package/registry/files/families/selection/select/select-model.ts +213 -0
  2003. package/registry/files/families/selection/select/select-positioning.ts +55 -0
  2004. package/registry/files/families/selection/select/select-root.vue +534 -0
  2005. package/registry/files/families/selection/select/select-scroll-button.vue +71 -0
  2006. package/registry/files/families/selection/select/select-scroll.ts +100 -0
  2007. package/registry/files/families/selection/select/select-selection.ts +45 -0
  2008. package/registry/files/families/selection/select/select-separator.vue +20 -0
  2009. package/registry/files/families/selection/select/select-trigger.vue +123 -0
  2010. package/registry/files/families/selection/select/select-types.ts +363 -0
  2011. package/registry/files/families/selection/select/select-value.vue +49 -0
  2012. package/registry/files/families/selection/select/select-viewport.vue +45 -0
  2013. package/registry/files/families/selection/select/select-virtualizer.vue +187 -0
  2014. package/registry/files/families/selection/select/select.ts +51 -0
  2015. package/registry/files/families/selection/switch/examples/switch-basic.vue +17 -0
  2016. package/registry/files/families/selection/switch/switch-control.vue +240 -0
  2017. package/registry/files/families/selection/switch/switch-types.ts +41 -0
  2018. package/registry/files/families/selection/switch/switch.ts +8 -0
  2019. package/registry/files/families/selection/toggle/examples/toggle-basic.vue +20 -0
  2020. package/registry/files/families/selection/toggle/toggle-button.vue +184 -0
  2021. package/registry/files/families/selection/toggle/toggle-types.ts +25 -0
  2022. package/registry/files/families/selection/toggle/toggle.ts +3 -0
  2023. package/registry/files/families/selection/toggle-group/examples/toggle-group-basic.vue +25 -0
  2024. package/registry/files/families/selection/toggle-group/examples/toggle-group-single.vue +13 -0
  2025. package/registry/files/families/selection/toggle-group/toggle-group-context.ts +46 -0
  2026. package/registry/files/families/selection/toggle-group/toggle-group-item.vue +224 -0
  2027. package/registry/files/families/selection/toggle-group/toggle-group-types.ts +82 -0
  2028. package/registry/files/families/selection/toggle-group/toggle-group-value.ts +70 -0
  2029. package/registry/files/families/selection/toggle-group/toggle-group.ts +14 -0
  2030. package/registry/files/families/selection/toggle-group/toggle-group.vue +349 -0
  2031. package/registry/files/families/selection/transfer-list/examples/transfer-list-basic.vue +53 -0
  2032. package/registry/files/families/selection/transfer-list/transfer-list-action.vue +58 -0
  2033. package/registry/files/families/selection/transfer-list/transfer-list-context.ts +57 -0
  2034. package/registry/files/families/selection/transfer-list/transfer-list-empty.vue +36 -0
  2035. package/registry/files/families/selection/transfer-list/transfer-list-item.vue +118 -0
  2036. package/registry/files/families/selection/transfer-list/transfer-list-model.ts +137 -0
  2037. package/registry/files/families/selection/transfer-list/transfer-list-panel.vue +176 -0
  2038. package/registry/files/families/selection/transfer-list/transfer-list-root.vue +294 -0
  2039. package/registry/files/families/selection/transfer-list/transfer-list-search.vue +66 -0
  2040. package/registry/files/families/selection/transfer-list/transfer-list-types.ts +205 -0
  2041. package/registry/files/families/selection/transfer-list/transfer-list.ts +28 -0
  2042. package/registry/files/families/typography/blockquote/blockquote-types.ts +28 -0
  2043. package/registry/files/families/typography/blockquote/blockquote.ts +9 -0
  2044. package/registry/files/families/typography/blockquote/blockquote.vue +96 -0
  2045. package/registry/files/families/typography/blockquote/examples/blockquote-basic.vue +16 -0
  2046. package/registry/files/families/typography/code/code-types.ts +31 -0
  2047. package/registry/files/families/typography/code/code.ts +10 -0
  2048. package/registry/files/families/typography/code/code.vue +97 -0
  2049. package/registry/files/families/typography/code/examples/code-basic.vue +15 -0
  2050. package/registry/files/families/typography/heading/examples/heading-basic.vue +14 -0
  2051. package/registry/files/families/typography/heading/heading-types.ts +40 -0
  2052. package/registry/files/families/typography/heading/heading.ts +11 -0
  2053. package/registry/files/families/typography/heading/heading.vue +129 -0
  2054. package/registry/files/families/typography/kbd/examples/kbd-basic.vue +12 -0
  2055. package/registry/files/families/typography/kbd/kbd-types.ts +31 -0
  2056. package/registry/files/families/typography/kbd/kbd.ts +10 -0
  2057. package/registry/files/families/typography/kbd/kbd.vue +97 -0
  2058. package/registry/files/families/typography/text/examples/text-basic.vue +12 -0
  2059. package/registry/files/families/typography/text/text-types.ts +34 -0
  2060. package/registry/files/families/typography/text/text.ts +10 -0
  2061. package/registry/files/families/typography/text/text.vue +110 -0
  2062. package/registry/files/media/media-source.ts +116 -0
  2063. package/registry/registry.json +15572 -0
  2064. package/dist/announcer-Dldh-8I4.d.mts +0 -6890
  2065. package/dist/{announcer-CW079p2E.mjs → announcer-vqgt-ijV.mjs} +1 -1
  2066. package/dist/{button-group-DyQbTCnY.mjs → button-group-DNo5CCtl.mjs} +1 -1
  2067. package/dist/{drag-and-drop-BjYgWGcG.mjs → drag-and-drop-C-nn7Yum.mjs} +1 -1
  2068. package/dist/{positioner-DaPo2YxM.mjs → positioner--uuI0oZY.mjs} +1 -1
  2069. package/dist/{toolbar-CXE8YCX-.mjs → toolbar-BYA7FNvq.mjs} +1 -1
@@ -0,0 +1,2767 @@
1
+ import { a as useDeterministicId, n as deriveDeterministicId } from "./deterministic-id-bMmJU5xD.mjs";
2
+ import { createContext } from "./context.mjs";
3
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
4
+ import { t as positioner_default } from "./positioner--uuI0oZY.mjs";
5
+ import { t as createCollectionRegistry } from "./collection-Cncgrq4U.mjs";
6
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, guardReactiveProps, mergeProps, nextTick, normalizeProps, onMounted, onScopeDispose, onUnmounted, openBlock, renderSlot, shallowRef, unref, useTemplateRef, watch, withCtx } from "vue";
7
+ //#region src/families/editor/rich-text/rich-text-model.ts
8
+ const modelDiagnostic = "VIZE_UI_RICH_TEXT_MODEL";
9
+ /** Whether an inline node is a text run. */
10
+ function isText(node) {
11
+ return node.type === "text" && "text" in node;
12
+ }
13
+ /** Whether a node is a block (has `content`). */
14
+ function isBlock(node) {
15
+ return "content" in node;
16
+ }
17
+ /** Whether a node is inline (text or leaf). */
18
+ function isInline(node) {
19
+ return !("content" in node);
20
+ }
21
+ /** Inline children of a textblock. */
22
+ function inlineContent(block) {
23
+ return block.content.filter(isInline);
24
+ }
25
+ /** Block children of a non-textblock. */
26
+ function blockContent(block) {
27
+ return block.content.filter(isBlock);
28
+ }
29
+ /** Inline length of one inline node. */
30
+ function inlineSize(node) {
31
+ return isText(node) ? node.text.length : 1;
32
+ }
33
+ /** Inline length of a textblock. */
34
+ function textblockSize(block) {
35
+ return inlineContent(block).reduce((total, node) => total + inlineSize(node), 0);
36
+ }
37
+ /** Role of a node type in `schema` (text nodes are inline). */
38
+ function roleOf(schema, type) {
39
+ if (type === "text") return "inline";
40
+ const spec = schema.nodes[type];
41
+ if (!spec) throw new Error(`${modelDiagnostic}: unknown node type "${type}"`);
42
+ return spec.role;
43
+ }
44
+ /** Plain text of a block tree (textblocks joined by newlines). */
45
+ function textContent(node) {
46
+ const parts = [];
47
+ const visit = (block) => {
48
+ const inline = block.content.filter(isInline);
49
+ if (inline.length > 0 || block.content.length === 0) {
50
+ if (block.type !== "doc") parts.push(inline.map((child) => isText(child) ? child.text : "").join(""));
51
+ return;
52
+ }
53
+ for (const child of blockContent(block)) visit(child);
54
+ };
55
+ visit(node);
56
+ return parts.join("\n");
57
+ }
58
+ /** Every textblock in document order. */
59
+ function textblocks(schema, doc) {
60
+ const found = [];
61
+ const visit = (children, prefix) => {
62
+ children.forEach((child, index) => {
63
+ const path = [...prefix, index];
64
+ if (roleOf(schema, child.type) === "textblock") found.push({
65
+ path,
66
+ node: child
67
+ });
68
+ else visit(blockContent(child), path);
69
+ });
70
+ };
71
+ visit(doc.content, []);
72
+ return found;
73
+ }
74
+ /** Block at `path`, or `undefined`. */
75
+ function blockAt(doc, path) {
76
+ let children = doc.content;
77
+ let node;
78
+ for (const index of path) {
79
+ const next = children[index];
80
+ if (!next || !isBlock(next)) return void 0;
81
+ node = next;
82
+ children = next.content;
83
+ }
84
+ return node;
85
+ }
86
+ /** Replace the block at `path` (or delete it with `null`, or insert siblings). */
87
+ function updateAt(doc, path, replace) {
88
+ const rebuild = (children, depth) => {
89
+ const index = path[depth];
90
+ if (index === void 0) return [...children];
91
+ const target = children[index];
92
+ if (!target || !isBlock(target)) throw new Error(`${modelDiagnostic}: no block at ${path.join(".")}`);
93
+ if (depth === path.length - 1) return [
94
+ ...children.slice(0, index),
95
+ ...replace(target),
96
+ ...children.slice(index + 1)
97
+ ];
98
+ return [
99
+ ...children.slice(0, index),
100
+ {
101
+ ...target,
102
+ content: rebuild(target.content, depth + 1)
103
+ },
104
+ ...children.slice(index + 1)
105
+ ];
106
+ };
107
+ return {
108
+ type: "doc",
109
+ content: rebuild(doc.content, 0).filter(isBlock)
110
+ };
111
+ }
112
+ /** Compare two positions in document order. */
113
+ function comparePositions(left, right) {
114
+ const length = Math.min(left.path.length, right.path.length);
115
+ for (let index = 0; index < length; index++) {
116
+ const difference = (left.path[index] ?? 0) - (right.path[index] ?? 0);
117
+ if (difference !== 0) return difference;
118
+ }
119
+ if (left.path.length !== right.path.length) return left.path.length - right.path.length;
120
+ return left.offset - right.offset;
121
+ }
122
+ /** Whether two paths are equal. */
123
+ function samePath(left, right) {
124
+ return left.length === right.length && left.every((value, index) => value === right[index]);
125
+ }
126
+ /** Ordered `[from, to]` of a selection. */
127
+ function selectionRange(selection) {
128
+ return comparePositions(selection.anchor, selection.head) <= 0 ? [selection.anchor, selection.head] : [selection.head, selection.anchor];
129
+ }
130
+ /** Whether a selection is collapsed. */
131
+ function isCollapsed(selection) {
132
+ return comparePositions(selection.anchor, selection.head) === 0;
133
+ }
134
+ /** Collapsed selection at `position`. */
135
+ function caret(position) {
136
+ return {
137
+ anchor: position,
138
+ head: position
139
+ };
140
+ }
141
+ /** Whether two mark sets are equal (order-insensitive). */
142
+ function sameMarks(left, right) {
143
+ return left.length === right.length && left.every((mark) => right.some((other) => sameMark(mark, other)));
144
+ }
145
+ /** Whether two marks are equal including attributes. */
146
+ function sameMark(left, right) {
147
+ if (left.type !== right.type) return false;
148
+ const keys = new Set([...Object.keys(left.attrs), ...Object.keys(right.attrs)]);
149
+ for (const key of keys) if (left.attrs[key] !== right.attrs[key]) return false;
150
+ return true;
151
+ }
152
+ /** Merge adjacent equal-mark text runs and drop empty ones. */
153
+ function normalizeInline(nodes) {
154
+ const result = [];
155
+ for (const node of nodes) {
156
+ if (isText(node)) {
157
+ if (node.text.length === 0) continue;
158
+ const previous = result.at(-1);
159
+ if (previous && isText(previous) && sameMarks(previous.marks, node.marks)) {
160
+ result[result.length - 1] = {
161
+ ...previous,
162
+ text: previous.text + node.text
163
+ };
164
+ continue;
165
+ }
166
+ }
167
+ result.push(node);
168
+ }
169
+ return result;
170
+ }
171
+ /** Inline nodes between `from` and `to` offsets. */
172
+ function sliceInline(nodes, from, to) {
173
+ const result = [];
174
+ let position = 0;
175
+ for (const node of nodes) {
176
+ const size = inlineSize(node);
177
+ const start = position;
178
+ const end = position + size;
179
+ position = end;
180
+ if (end <= from || start >= to) continue;
181
+ if (isText(node)) result.push({
182
+ ...node,
183
+ text: node.text.slice(Math.max(0, from - start), Math.min(size, to - start))
184
+ });
185
+ else result.push(node);
186
+ }
187
+ return normalizeInline(result);
188
+ }
189
+ /** Marks in effect just before `offset` of a textblock. */
190
+ function marksBefore(schema, block, offset) {
191
+ let position = 0;
192
+ let found = [];
193
+ for (const node of inlineContent(block)) {
194
+ const size = inlineSize(node);
195
+ if (offset > position && offset <= position + size) {
196
+ found = node.marks;
197
+ if (offset === position + size) found = found.filter((mark) => schema.marks[mark.type]?.inclusive !== false);
198
+ break;
199
+ }
200
+ position += size;
201
+ }
202
+ return found;
203
+ }
204
+ /** Empty textblock of the default type. */
205
+ function emptyBlock(schema, type = schema.defaultBlock) {
206
+ return {
207
+ type,
208
+ attrs: schema.nodes[type]?.defaults ?? {},
209
+ content: []
210
+ };
211
+ }
212
+ /** Empty document with one default block. */
213
+ function emptyRichTextDoc(schema) {
214
+ return assertRichTextDoc(schema, {
215
+ type: "doc",
216
+ content: [emptyBlock(schema)]
217
+ });
218
+ }
219
+ /** Document of plain-text paragraphs (lines split on newlines). */
220
+ function richTextDocFromText(schema, text) {
221
+ return assertRichTextDoc(schema, {
222
+ type: "doc",
223
+ content: text.split(/\r\n|\r|\n/u).map((line) => ({
224
+ ...emptyBlock(schema),
225
+ content: line.length > 0 ? [{
226
+ type: "text",
227
+ text: line,
228
+ marks: []
229
+ }] : []
230
+ }))
231
+ });
232
+ }
233
+ const validated = /* @__PURE__ */ new WeakMap();
234
+ /** Why a value is not a valid document for a schema, or `null` when it is. */
235
+ function validateRichTextDoc(schema, value) {
236
+ if (isRecord(value) && validated.get(schema)?.has(value)) return null;
237
+ const error = validateUncached(schema, value);
238
+ if (error === null && isRecord(value)) {
239
+ let known = validated.get(schema);
240
+ if (!known) {
241
+ known = /* @__PURE__ */ new WeakSet();
242
+ validated.set(schema, known);
243
+ }
244
+ known.add(value);
245
+ }
246
+ return error;
247
+ }
248
+ /** Type guard to the value-erased document shape, backed by schema validation. */
249
+ function isRtDoc(schema, value) {
250
+ return validateRichTextDoc(schema, value) === null;
251
+ }
252
+ /** Erase a (typed) document to {@link RtDoc}, re-checking it against the schema. */
253
+ function toRtDoc(schema, value) {
254
+ if (!isRtDoc(schema, value)) throw new TypeError(`${modelDiagnostic}: invalid document`);
255
+ return value;
256
+ }
257
+ function validateUncached(schema, value) {
258
+ if (!isRecord(value) || value.type !== "doc" || !Array.isArray(value.content)) return "root must be { type: \"doc\", content: [] }";
259
+ if (value.content.length === 0) return "document must contain at least one block";
260
+ const visitBlock = (node, where, parentRole) => {
261
+ if (!isRecord(node) || typeof node.type !== "string") return `${where}: not a node`;
262
+ const spec = schema.nodes[node.type];
263
+ if (!spec || spec.role === "inline") return `${where}: "${String(node.type)}" is not a block type`;
264
+ if (!isRecord(node.attrs)) return `${where}: missing attrs`;
265
+ if (!Array.isArray(node.content)) return `${where}: missing content`;
266
+ if (parentRole === "list" && spec.role !== "listItem") return `${where}: lists hold list items`;
267
+ if (spec.role === "listItem" && parentRole !== "list") return `${where}: list items need a list`;
268
+ for (const [index, child] of node.content.entries()) {
269
+ const childWhere = `${where}.${index}`;
270
+ const error = spec.role === "textblock" ? visitInline(child, childWhere, spec.code === true) : visitBlock(child, childWhere, spec.role);
271
+ if (error) return error;
272
+ }
273
+ return null;
274
+ };
275
+ const visitInline = (node, where, code) => {
276
+ if (!isRecord(node) || typeof node.type !== "string" || !Array.isArray(node.marks)) return `${where}: not an inline node`;
277
+ if (code && node.marks.length > 0) return `${where}: code blocks hold unmarked text`;
278
+ for (const mark of node.marks) if (!isRecord(mark) || typeof mark.type !== "string" || !schema.marks[mark.type]) return `${where}: unknown mark`;
279
+ if (node.type === "text") return typeof node.text === "string" ? null : `${where}: text needs a string`;
280
+ if (code) return `${where}: code blocks hold text only`;
281
+ if (schema.nodes[node.type]?.role !== "inline" || !isRecord(node.attrs)) return `${where}: unknown inline node`;
282
+ return null;
283
+ };
284
+ for (const [index, child] of value.content.entries()) {
285
+ const error = visitBlock(child, String(index), "doc");
286
+ if (error) return error;
287
+ }
288
+ return null;
289
+ }
290
+ /** Type guard backed by {@link validateRichTextDoc}. */
291
+ function isRichTextDoc(schema, value) {
292
+ return validateRichTextDoc(schema, value) === null;
293
+ }
294
+ /** Narrow to a typed document or throw a diagnostic describing the first problem. */
295
+ function assertRichTextDoc(schema, value) {
296
+ const error = validateRichTextDoc(schema, value);
297
+ if (error !== null || !isRichTextDoc(schema, value)) throw new TypeError(`${modelDiagnostic}: invalid document (${error ?? "unknown"})`);
298
+ return value;
299
+ }
300
+ function isRecord(value) {
301
+ return typeof value === "object" && value !== null && !Array.isArray(value);
302
+ }
303
+ //#endregion
304
+ //#region src/families/editor/rich-text/rich-text-transform.ts
305
+ const transformDiagnostic = "VIZE_UI_RICH_TEXT_TRANSFORM";
306
+ function entryIndex(entries, position) {
307
+ const index = entries.findIndex((entry) => samePath(entry.path, position.path));
308
+ if (index === -1) throw new Error(`${transformDiagnostic}: ${position.path.join(".")} is not a textblock`);
309
+ return index;
310
+ }
311
+ /** Clamp a position into its textblock (or the nearest textblock). */
312
+ function clampPosition(schema, doc, position) {
313
+ const entries = textblocks(schema, doc);
314
+ const exact = entries.find((entry) => samePath(entry.path, position.path));
315
+ if (exact) return {
316
+ path: exact.path,
317
+ offset: Math.max(0, Math.min(position.offset, textblockSize(exact.node)))
318
+ };
319
+ const after = entries.find((entry) => comparePositions({
320
+ path: entry.path,
321
+ offset: 0
322
+ }, position) >= 0);
323
+ const target = after ?? entries.at(-1);
324
+ if (!target) throw new Error(`${transformDiagnostic}: document has no textblocks`);
325
+ return {
326
+ path: target.path,
327
+ offset: after ? 0 : textblockSize(target.node)
328
+ };
329
+ }
330
+ /**
331
+ * Remove empty wrappers (including emptied list items), keep at least one
332
+ * block, and strip marks/leaves from code blocks.
333
+ */
334
+ function normalizeDoc(schema, doc) {
335
+ const fixBlock = (block) => {
336
+ if (roleOf(schema, block.type) === "textblock") {
337
+ const inline = inlineContent(block);
338
+ const content = schema.nodes[block.type]?.code ? normalizeInline(inline.flatMap((node) => isText(node) ? [{
339
+ type: "text",
340
+ text: node.text,
341
+ marks: []
342
+ }] : [])) : normalizeInline(inline);
343
+ return {
344
+ ...block,
345
+ content
346
+ };
347
+ }
348
+ const children = blockContent(block).map(fixBlock).filter((child) => child !== null);
349
+ return children.length > 0 ? {
350
+ ...block,
351
+ content: children
352
+ } : null;
353
+ };
354
+ const content = doc.content.map(fixBlock).filter((block) => block !== null);
355
+ return {
356
+ type: "doc",
357
+ content: content.length > 0 ? content : [emptyBlock(schema)]
358
+ };
359
+ }
360
+ /** Replace the range `[from, to]` with inline nodes, merging across blocks. */
361
+ function replaceRange(schema, doc, from, to, inline) {
362
+ const entries = textblocks(schema, doc);
363
+ const fromIndex = entryIndex(entries, from);
364
+ const toIndex = entryIndex(entries, to);
365
+ const first = entries[fromIndex];
366
+ const last = entries[toIndex];
367
+ if (!first || !last || toIndex < fromIndex) throw new Error(`${transformDiagnostic}: invalid range`);
368
+ const inserted = schema.nodes[first.node.type]?.code === true ? inline.flatMap((node) => isText(node) ? [{
369
+ ...node,
370
+ marks: []
371
+ }] : []) : inline;
372
+ const head = sliceInline(inlineContent(first.node), 0, from.offset);
373
+ const tail = sliceInline(inlineContent(last.node), to.offset, textblockSize(last.node));
374
+ let next = doc;
375
+ for (let index = toIndex; index > fromIndex; index--) {
376
+ const entry = entries[index];
377
+ if (entry) next = updateAt(next, entry.path, () => []);
378
+ }
379
+ next = updateAt(next, first.path, (node) => [{
380
+ ...node,
381
+ content: normalizeInline([
382
+ ...head,
383
+ ...inserted,
384
+ ...tail
385
+ ])
386
+ }]);
387
+ const insertedSize = inserted.reduce((total, node) => total + inlineSize(node), 0);
388
+ const normalized = normalizeDoc(schema, next);
389
+ return {
390
+ doc: normalized,
391
+ position: clampPosition(schema, normalized, {
392
+ path: first.path,
393
+ offset: from.offset + insertedSize
394
+ })
395
+ };
396
+ }
397
+ /** Split the textblock at `position` (splitting its list item when inside one). */
398
+ function splitTextblock(schema, doc, position) {
399
+ const block = blockAt(doc, position.path);
400
+ if (!block) throw new Error(`${transformDiagnostic}: no textblock to split`);
401
+ const size = textblockSize(block);
402
+ const before = {
403
+ ...block,
404
+ content: sliceInline(inlineContent(block), 0, position.offset)
405
+ };
406
+ const after = {
407
+ ...position.offset >= size && block.type !== schema.defaultBlock ? emptyBlock(schema) : block,
408
+ content: sliceInline(inlineContent(block), position.offset, size)
409
+ };
410
+ const parentPath = position.path.slice(0, -1);
411
+ const index = position.path.at(-1) ?? 0;
412
+ const parent = parentPath.length > 0 ? blockAt(doc, parentPath) : void 0;
413
+ if (parent && roleOf(schema, parent.type) === "listItem") {
414
+ const siblings = blockContent(parent);
415
+ const itemIndex = parentPath.at(-1) ?? 0;
416
+ return {
417
+ doc: normalizeDoc(schema, updateAt(doc, parentPath, (item) => [{
418
+ ...item,
419
+ content: [...siblings.slice(0, index), before]
420
+ }, {
421
+ ...item,
422
+ content: [after, ...siblings.slice(index + 1)]
423
+ }])),
424
+ position: {
425
+ path: [
426
+ ...parentPath.slice(0, -1),
427
+ itemIndex + 1,
428
+ 0
429
+ ],
430
+ offset: 0
431
+ }
432
+ };
433
+ }
434
+ return {
435
+ doc: normalizeDoc(schema, updateAt(doc, position.path, () => [before, after])),
436
+ position: {
437
+ path: [...parentPath, index + 1],
438
+ offset: 0
439
+ }
440
+ };
441
+ }
442
+ /** Change every textblock in `[from, to]` to `type`. */
443
+ function setTextblockType(schema, doc, from, to, type, attrs) {
444
+ const entries = textblocks(schema, doc);
445
+ let next = doc;
446
+ for (const entry of entries.slice(entryIndex(entries, from), entryIndex(entries, to) + 1)) next = updateAt(next, entry.path, (node) => [{
447
+ ...node,
448
+ type,
449
+ attrs
450
+ }]);
451
+ return normalizeDoc(schema, next);
452
+ }
453
+ function mapMarks(nodes, from, to, change) {
454
+ const result = [];
455
+ let position = 0;
456
+ for (const node of nodes) {
457
+ const size = inlineSize(node);
458
+ const start = position;
459
+ const end = position + size;
460
+ position = end;
461
+ if (end <= from || start >= to) {
462
+ result.push(node);
463
+ continue;
464
+ }
465
+ if (!isText(node)) {
466
+ result.push({
467
+ ...node,
468
+ marks: change(node.marks)
469
+ });
470
+ continue;
471
+ }
472
+ const cutStart = Math.max(from, start) - start;
473
+ const cutEnd = Math.min(to, end) - start;
474
+ if (cutStart > 0) result.push({
475
+ ...node,
476
+ text: node.text.slice(0, cutStart)
477
+ });
478
+ result.push({
479
+ ...node,
480
+ text: node.text.slice(cutStart, cutEnd),
481
+ marks: change(node.marks)
482
+ });
483
+ if (cutEnd < size) result.push({
484
+ ...node,
485
+ text: node.text.slice(cutEnd)
486
+ });
487
+ }
488
+ return normalizeInline(result);
489
+ }
490
+ /** Visit the inline segment of every textblock in `[from, to]`. */
491
+ function rangeSegments(schema, doc, from, to) {
492
+ const entries = textblocks(schema, doc);
493
+ const fromIndex = entryIndex(entries, from);
494
+ const toIndex = entryIndex(entries, to);
495
+ return entries.slice(fromIndex, toIndex + 1).map((entry, index) => ({
496
+ entry,
497
+ start: index === 0 ? from.offset : 0,
498
+ end: fromIndex + index === toIndex ? to.offset : textblockSize(entry.node)
499
+ }));
500
+ }
501
+ /** Add (replacing same-type marks) or remove a mark across `[from, to]`. */
502
+ function changeMark(schema, doc, from, to, mark, add) {
503
+ let next = doc;
504
+ for (const { entry, start, end } of rangeSegments(schema, doc, from, to)) {
505
+ if (schema.nodes[entry.node.type]?.code || start === end) continue;
506
+ next = updateAt(next, entry.path, (node) => [{
507
+ ...node,
508
+ content: mapMarks(inlineContent(node), start, end, (marks) => {
509
+ const others = marks.filter((candidate) => candidate.type !== mark.type);
510
+ return add ? [...others, mark] : others;
511
+ })
512
+ }]);
513
+ }
514
+ return next;
515
+ }
516
+ /** Whether every non-empty text in `[from, to]` carries `type` (optionally with `attrs`). */
517
+ function rangeHasMark(schema, doc, from, to, mark) {
518
+ let seen = false;
519
+ for (const { entry, start, end } of rangeSegments(schema, doc, from, to)) for (const node of sliceInline(inlineContent(entry.node), start, end)) {
520
+ seen = true;
521
+ if (!node.marks.some((candidate) => typeof mark === "string" ? candidate.type === mark : sameMark(candidate, mark))) return false;
522
+ }
523
+ return seen;
524
+ }
525
+ /** Common parent and sibling span covering `[from, to]`, lifted out of lists. */
526
+ function wrapSpan(schema, doc, from, to) {
527
+ let common = 0;
528
+ while (common < from.path.length - 1 && common < to.path.length - 1 && from.path[common] === to.path[common]) common++;
529
+ let parentPath = from.path.slice(0, common);
530
+ let start = from.path[common] ?? 0;
531
+ let end = to.path[common] ?? start;
532
+ while (parentPath.length > 0) {
533
+ const parent = blockAt(doc, parentPath);
534
+ if (!parent || roleOf(schema, parent.type) !== "list") break;
535
+ start = parentPath.at(-1) ?? 0;
536
+ end = start;
537
+ parentPath = parentPath.slice(0, -1);
538
+ }
539
+ return {
540
+ parentPath,
541
+ start,
542
+ end
543
+ };
544
+ }
545
+ /** Wrap the blocks covering `[from, to]` in a container or list. */
546
+ function wrapRange(schema, doc, from, to, type, attrs) {
547
+ const role = roleOf(schema, type);
548
+ if (role !== "container" && role !== "list") throw new Error(`${transformDiagnostic}: "${type}" cannot wrap blocks`);
549
+ const itemType = Object.keys(schema.nodes).find((name) => schema.nodes[name]?.role === "listItem");
550
+ const { parentPath, start, end } = wrapSpan(schema, doc, from, to);
551
+ const covered = (parentPath.length > 0 ? blockContent(blockAt(doc, parentPath) ?? doc) : doc.content).slice(start, end + 1);
552
+ const wrapper = {
553
+ type,
554
+ attrs,
555
+ content: role === "list" && itemType ? covered.map((block) => ({
556
+ type: itemType,
557
+ attrs: schema.nodes[itemType]?.defaults ?? {},
558
+ content: [block]
559
+ })) : covered
560
+ };
561
+ const replaceChildren = (children) => [
562
+ ...children.slice(0, start),
563
+ wrapper,
564
+ ...children.slice(end + 1)
565
+ ];
566
+ const next = parentPath.length === 0 ? {
567
+ type: "doc",
568
+ content: replaceChildren(doc.content)
569
+ } : updateAt(doc, parentPath, (parent) => [{
570
+ ...parent,
571
+ content: replaceChildren(blockContent(parent))
572
+ }]);
573
+ const depth = parentPath.length;
574
+ const map = (position) => {
575
+ const index = position.path[depth];
576
+ if (!samePath(position.path.slice(0, depth), parentPath) || index === void 0) return position;
577
+ if (index < start) return position;
578
+ if (index > end) return {
579
+ ...position,
580
+ path: [
581
+ ...parentPath,
582
+ index - (end - start),
583
+ ...position.path.slice(depth + 1)
584
+ ]
585
+ };
586
+ const inner = role === "list" ? [index - start, 0] : [index - start];
587
+ return {
588
+ ...position,
589
+ path: [
590
+ ...parentPath,
591
+ start,
592
+ ...inner,
593
+ ...position.path.slice(depth + 1)
594
+ ]
595
+ };
596
+ };
597
+ return {
598
+ doc: normalizeDoc(schema, next),
599
+ map
600
+ };
601
+ }
602
+ /** Nearest ancestor of `position` whose type satisfies `match`. */
603
+ function findWrapper(schema, doc, position, match) {
604
+ for (let depth = position.path.length - 1; depth >= 1; depth--) {
605
+ const path = position.path.slice(0, depth);
606
+ const node = blockAt(doc, path);
607
+ if (node && match(node.type)) return {
608
+ path,
609
+ node
610
+ };
611
+ }
612
+ return null;
613
+ }
614
+ /** Unwrap the wrapper at `wrapperPath`, splicing its (list items') children into its parent. */
615
+ function liftWrapper(schema, doc, wrapperPath) {
616
+ const wrapper = blockAt(doc, wrapperPath);
617
+ if (!wrapper) throw new Error(`${transformDiagnostic}: no wrapper to lift`);
618
+ const isList = roleOf(schema, wrapper.type) === "list";
619
+ const groups = blockContent(wrapper).map((child) => isList ? blockContent(child) : [child]);
620
+ const next = updateAt(doc, wrapperPath, () => groups.flat());
621
+ const depth = wrapperPath.length;
622
+ const base = wrapperPath.at(-1) ?? 0;
623
+ const lifted = groups.flat().length;
624
+ const map = (position) => {
625
+ const parentPath = wrapperPath.slice(0, -1);
626
+ if (!samePath(position.path.slice(0, depth - 1), parentPath)) return position;
627
+ const index = position.path[depth - 1];
628
+ if (index === void 0 || index < base) return position;
629
+ if (index > base) return {
630
+ ...position,
631
+ path: [
632
+ ...parentPath,
633
+ index + lifted - 1,
634
+ ...position.path.slice(depth)
635
+ ]
636
+ };
637
+ const child = position.path[depth] ?? 0;
638
+ if (!isList) return {
639
+ ...position,
640
+ path: [
641
+ ...parentPath,
642
+ base + child,
643
+ ...position.path.slice(depth + 1)
644
+ ]
645
+ };
646
+ const before = groups.slice(0, child).reduce((total, group) => total + group.length, 0);
647
+ const within = position.path[depth + 1] ?? 0;
648
+ return {
649
+ ...position,
650
+ path: [
651
+ ...parentPath,
652
+ base + before + within,
653
+ ...position.path.slice(depth + 2)
654
+ ]
655
+ };
656
+ };
657
+ return {
658
+ doc: normalizeDoc(schema, next),
659
+ map
660
+ };
661
+ }
662
+ /** Move one list item's blocks out of its list, splitting the list around it. */
663
+ function liftListItem(schema, doc, itemPath) {
664
+ const listPath = itemPath.slice(0, -1);
665
+ const list = blockAt(doc, listPath);
666
+ const itemIndex = itemPath.at(-1) ?? 0;
667
+ if (!list || roleOf(schema, list.type) !== "list") throw new Error(`${transformDiagnostic}: ${itemPath.join(".")} is not a list item`);
668
+ const items = blockContent(list);
669
+ const item = items[itemIndex];
670
+ if (!item) throw new Error(`${transformDiagnostic}: missing list item`);
671
+ const before = items.slice(0, itemIndex);
672
+ const after = items.slice(itemIndex + 1);
673
+ const replacement = [
674
+ ...before.length > 0 ? [{
675
+ ...list,
676
+ content: before
677
+ }] : [],
678
+ ...blockContent(item),
679
+ ...after.length > 0 ? [{
680
+ ...list,
681
+ content: after
682
+ }] : []
683
+ ];
684
+ const next = updateAt(doc, listPath, () => replacement);
685
+ const depth = listPath.length;
686
+ const parentPath = listPath.slice(0, -1);
687
+ const listIndex = listPath.at(-1) ?? 0;
688
+ const shift = before.length > 0 ? 1 : 0;
689
+ const map = (position) => {
690
+ if (!samePath(position.path.slice(0, depth), listPath)) return position;
691
+ const index = position.path[depth] ?? 0;
692
+ const child = position.path[depth + 1] ?? 0;
693
+ if (index === itemIndex) return {
694
+ ...position,
695
+ path: [
696
+ ...parentPath,
697
+ listIndex + shift + child,
698
+ ...position.path.slice(depth + 2)
699
+ ]
700
+ };
701
+ if (index > itemIndex) return {
702
+ ...position,
703
+ path: [
704
+ ...parentPath,
705
+ listIndex + shift + blockContent(item).length,
706
+ index - itemIndex - 1,
707
+ ...position.path.slice(depth + 1)
708
+ ]
709
+ };
710
+ return position;
711
+ };
712
+ return {
713
+ doc: normalizeDoc(schema, next),
714
+ map
715
+ };
716
+ }
717
+ //#endregion
718
+ //#region src/families/editor/rich-text/rich-text-state.ts
719
+ const emptyHistory = Object.freeze({
720
+ done: [],
721
+ undone: [],
722
+ last: null
723
+ });
724
+ /** Create an editor state; the document is validated against the schema. */
725
+ function createRichTextState(schema, options = {}) {
726
+ const doc = options.doc ? assertRichTextDoc(schema, options.doc) : emptyRichTextDoc(schema);
727
+ const start = {
728
+ path: textblocks(schema, doc)[0]?.path ?? [0],
729
+ offset: 0
730
+ };
731
+ return Object.freeze({
732
+ schema,
733
+ doc,
734
+ selection: options.selection ? clampSelection(schema, doc, options.selection) : caret(start),
735
+ storedMarks: null,
736
+ history: emptyHistory
737
+ });
738
+ }
739
+ /** Clamp both ends of a selection into the document. */
740
+ function clampSelection(schema, doc, selection) {
741
+ return {
742
+ anchor: clampPosition(schema, doc, selection.anchor),
743
+ head: clampPosition(schema, doc, selection.head)
744
+ };
745
+ }
746
+ function record(before, kind, options) {
747
+ const time = options.time ?? Date.now();
748
+ const history = before.history;
749
+ return {
750
+ done: kind === "input" && history.last?.kind === "input" && time - history.last.time <= (options.groupDelay ?? 500) && history.done.length > 0 ? history.done : [...history.done, {
751
+ doc: before.doc,
752
+ selection: before.selection
753
+ }].slice(-(options.historyDepth ?? 100)),
754
+ undone: [],
755
+ last: {
756
+ kind,
757
+ time
758
+ }
759
+ };
760
+ }
761
+ /**
762
+ * Build a transaction from a state and the changed parts. The resulting
763
+ * document is re-validated, so a transaction can never produce a document the
764
+ * schema rejects.
765
+ */
766
+ function createTransaction(before, change, kind, options = {}) {
767
+ const docChanged = change.doc !== void 0 && change.doc !== before.doc;
768
+ const doc = docChanged && change.doc ? toRtDoc(before.schema, change.doc) : before.doc;
769
+ const selection = clampSelection(before.schema, doc, change.selection ?? before.selection);
770
+ const selectionMoved = comparePositions(selection.anchor, before.selection.anchor) !== 0 || comparePositions(selection.head, before.selection.head) !== 0;
771
+ const storedMarks = change.storedMarks !== void 0 ? change.storedMarks : docChanged || selectionMoved ? null : before.storedMarks;
772
+ const history = change.history ?? (docChanged && (options.addToHistory ?? true) ? record(before, kind, options) : before.history);
773
+ const state = Object.freeze({
774
+ schema: before.schema,
775
+ doc,
776
+ selection,
777
+ storedMarks,
778
+ history
779
+ });
780
+ return Object.freeze({
781
+ before,
782
+ state,
783
+ kind,
784
+ docChanged
785
+ });
786
+ }
787
+ /** Re-type a state produced by commands for its schema (the document is re-validated, cached). */
788
+ function toRichTextState(schema, state) {
789
+ return Object.freeze({
790
+ schema,
791
+ doc: assertRichTextDoc(schema, state.doc),
792
+ selection: state.selection,
793
+ storedMarks: state.storedMarks,
794
+ history: state.history
795
+ });
796
+ }
797
+ /** Erase a typed state for schema-agnostic code (the document is re-validated, cached). */
798
+ function toRtState(state) {
799
+ return {
800
+ schema: state.schema,
801
+ doc: toRtDoc(state.schema, state.doc),
802
+ selection: state.selection,
803
+ storedMarks: state.storedMarks,
804
+ history: state.history
805
+ };
806
+ }
807
+ /** Undo the last recorded change. */
808
+ function undo(state, dispatch) {
809
+ const entry = state.history.done.at(-1);
810
+ if (!entry) return false;
811
+ dispatch?.(createTransaction(state, {
812
+ doc: entry.doc,
813
+ selection: entry.selection,
814
+ history: {
815
+ done: state.history.done.slice(0, -1),
816
+ undone: [...state.history.undone, {
817
+ doc: state.doc,
818
+ selection: state.selection
819
+ }],
820
+ last: null
821
+ }
822
+ }, "history"));
823
+ return true;
824
+ }
825
+ /** Redo the last undone change. */
826
+ function redo(state, dispatch) {
827
+ const entry = state.history.undone.at(-1);
828
+ if (!entry) return false;
829
+ dispatch?.(createTransaction(state, {
830
+ doc: entry.doc,
831
+ selection: entry.selection,
832
+ history: {
833
+ done: [...state.history.done, {
834
+ doc: state.doc,
835
+ selection: state.selection
836
+ }],
837
+ undone: state.history.undone.slice(0, -1),
838
+ last: null
839
+ }
840
+ }, "history"));
841
+ return true;
842
+ }
843
+ //#endregion
844
+ //#region src/families/editor/rich-text/rich-text-commands.ts
845
+ function withDefaults(defaults, attrs) {
846
+ const merged = { ...defaults };
847
+ for (const [name, value] of Object.entries(attrs ?? {})) if (value !== void 0) merged[name] = value;
848
+ return merged;
849
+ }
850
+ function isCode(state, position) {
851
+ const block = blockAt(state.doc, position.path);
852
+ return block !== void 0 && state.schema.nodes[block.type]?.code === true;
853
+ }
854
+ function replaceSelection(state, inline, kind, dispatch) {
855
+ const [from, to] = selectionRange(state.selection);
856
+ const result = replaceRange(state.schema, state.doc, from, to, inline);
857
+ dispatch?.(createTransaction(state, {
858
+ doc: result.doc,
859
+ selection: caret(result.position)
860
+ }, kind));
861
+ return true;
862
+ }
863
+ /** Marks typed text receives at the current caret. */
864
+ function activeMarks(state) {
865
+ if (state.storedMarks) return state.storedMarks;
866
+ const [from] = selectionRange(state.selection);
867
+ const block = blockAt(state.doc, from.path);
868
+ return block ? marksBefore(state.schema, block, from.offset) : [];
869
+ }
870
+ /** Insert text at the selection with the active marks. */
871
+ function insertText(text) {
872
+ return (state, dispatch) => {
873
+ if (text.length === 0) return false;
874
+ const [from] = selectionRange(state.selection);
875
+ return replaceSelection(state, [{
876
+ type: "text",
877
+ text,
878
+ marks: isCode(state, from) ? [] : activeMarks(state)
879
+ }], "input", dispatch);
880
+ };
881
+ }
882
+ /** Delete a non-empty selection. */
883
+ function deleteSelection(state, dispatch) {
884
+ if (isCollapsed(state.selection)) return false;
885
+ return replaceSelection(state, [], "delete", dispatch);
886
+ }
887
+ function previousBoundary(text, offset, unit) {
888
+ if (unit === "word") {
889
+ const before = text.slice(0, offset);
890
+ const match = /[\p{L}\p{N}_]+[^\p{L}\p{N}_]*$|[^\p{L}\p{N}_]+$/u.exec(before);
891
+ return match ? offset - match[0].length : Math.max(0, offset - 1);
892
+ }
893
+ const code = text.charCodeAt(offset - 1);
894
+ return code >= 56320 && code <= 57343 && offset >= 2 ? offset - 2 : offset - 1;
895
+ }
896
+ function nextBoundary(text, offset, unit) {
897
+ if (unit === "word") {
898
+ const match = /^[^\p{L}\p{N}_]*[\p{L}\p{N}_]+|^[^\p{L}\p{N}_]+/u.exec(text.slice(offset));
899
+ return match ? offset + match[0].length : offset + 1;
900
+ }
901
+ const code = text.charCodeAt(offset);
902
+ return code >= 55296 && code <= 56319 ? offset + 2 : offset + 1;
903
+ }
904
+ function plainText(state, position) {
905
+ const block = blockAt(state.doc, position.path);
906
+ if (!block) return "";
907
+ return inlineContent(block).map((node) => isText(node) ? node.text : "").join("");
908
+ }
909
+ /** Backspace: delete the selection, the previous character/word, or join with the previous block. */
910
+ function deleteBackward(unit = "character") {
911
+ return (state, dispatch) => {
912
+ if (!isCollapsed(state.selection)) return deleteSelection(state, dispatch);
913
+ const position = state.selection.head;
914
+ if (position.offset > 0) {
915
+ const from = {
916
+ ...position,
917
+ offset: previousBoundary(plainText(state, position), position.offset, unit)
918
+ };
919
+ const result = replaceRange(state.schema, state.doc, from, position, []);
920
+ dispatch?.(createTransaction(state, {
921
+ doc: result.doc,
922
+ selection: caret(result.position)
923
+ }, "delete"));
924
+ return true;
925
+ }
926
+ return joinBackward(state, dispatch);
927
+ };
928
+ }
929
+ /** At the start of a textblock: lift it out of its list item/wrapper, reset its type, or merge it into the previous block. */
930
+ function joinBackward(state, dispatch) {
931
+ const position = state.selection.head;
932
+ if (position.offset !== 0 || !isCollapsed(state.selection)) return false;
933
+ const { schema } = state;
934
+ const entries = textblocks(schema, state.doc);
935
+ const index = entries.findIndex((entry) => samePath(entry.path, position.path));
936
+ const previous = index > 0 ? entries[index - 1] : void 0;
937
+ const item = findWrapper(schema, state.doc, position, (type) => roleOf(schema, type) === "listItem");
938
+ const listPath = item?.path.slice(0, -1);
939
+ if (item && listPath && (!previous || !samePath(previous.path.slice(0, listPath.length), listPath))) {
940
+ const lifted = liftListItem(schema, state.doc, item.path);
941
+ dispatch?.(createTransaction(state, {
942
+ doc: lifted.doc,
943
+ selection: caret(lifted.map(position))
944
+ }, "structure"));
945
+ return true;
946
+ }
947
+ const wrapper = findWrapper(schema, state.doc, position, (type) => roleOf(schema, type) === "container");
948
+ if (wrapper && (!previous || !samePath(previous.path.slice(0, wrapper.path.length), wrapper.path))) {
949
+ const lifted = liftWrapper(schema, state.doc, wrapper.path);
950
+ dispatch?.(createTransaction(state, {
951
+ doc: lifted.doc,
952
+ selection: caret(lifted.map(position))
953
+ }, "structure"));
954
+ return true;
955
+ }
956
+ const block = entries[index]?.node;
957
+ if (block && block.type !== schema.defaultBlock && !previous) {
958
+ const doc = setTextblockType(schema, state.doc, position, position, schema.defaultBlock, schema.nodes[schema.defaultBlock]?.defaults ?? {});
959
+ dispatch?.(createTransaction(state, { doc }, "structure"));
960
+ return true;
961
+ }
962
+ if (!previous) return false;
963
+ const end = {
964
+ path: previous.path,
965
+ offset: textblockSize(previous.node)
966
+ };
967
+ const result = replaceRange(schema, state.doc, end, position, []);
968
+ dispatch?.(createTransaction(state, {
969
+ doc: result.doc,
970
+ selection: caret(result.position)
971
+ }, "delete"));
972
+ return true;
973
+ }
974
+ /** Delete: the selection, the next character/word, or merge the next block into this one. */
975
+ function deleteForward(unit = "character") {
976
+ return (state, dispatch) => {
977
+ if (!isCollapsed(state.selection)) return deleteSelection(state, dispatch);
978
+ const position = state.selection.head;
979
+ const block = blockAt(state.doc, position.path);
980
+ if (!block) return false;
981
+ const size = textblockSize(block);
982
+ if (position.offset < size) {
983
+ const to = {
984
+ ...position,
985
+ offset: Math.min(size, nextBoundary(plainText(state, position), position.offset, unit))
986
+ };
987
+ const result = replaceRange(state.schema, state.doc, position, to, []);
988
+ dispatch?.(createTransaction(state, {
989
+ doc: result.doc,
990
+ selection: caret(result.position)
991
+ }, "delete"));
992
+ return true;
993
+ }
994
+ const entries = textblocks(state.schema, state.doc);
995
+ const next = entries[entries.findIndex((entry) => samePath(entry.path, position.path)) + 1];
996
+ if (!next) return false;
997
+ const result = replaceRange(state.schema, state.doc, position, {
998
+ path: next.path,
999
+ offset: 0
1000
+ }, []);
1001
+ dispatch?.(createTransaction(state, {
1002
+ doc: result.doc,
1003
+ selection: caret(result.position)
1004
+ }, "delete"));
1005
+ return true;
1006
+ };
1007
+ }
1008
+ /** Enter: newline in code blocks, leave an empty list item, or split the block. */
1009
+ function splitBlock(state, dispatch) {
1010
+ const [from, to] = selectionRange(state.selection);
1011
+ const { schema } = state;
1012
+ if (isCode(state, from)) return insertText("\n")(state, dispatch);
1013
+ let doc = state.doc;
1014
+ let position = from;
1015
+ if (comparePositions(from, to) !== 0) {
1016
+ const cleared = replaceRange(schema, doc, from, to, []);
1017
+ doc = cleared.doc;
1018
+ position = cleared.position;
1019
+ }
1020
+ const block = blockAt(doc, position.path);
1021
+ const item = findWrapper(schema, doc, position, (type) => roleOf(schema, type) === "listItem");
1022
+ if (block && item && textblockSize(block) === 0 && samePath(position.path.slice(0, -1), item.path)) {
1023
+ const lifted = liftListItem(schema, doc, item.path);
1024
+ dispatch?.(createTransaction(state, {
1025
+ doc: lifted.doc,
1026
+ selection: caret(lifted.map(position))
1027
+ }, "structure"));
1028
+ return true;
1029
+ }
1030
+ const result = splitTextblock(schema, doc, position);
1031
+ dispatch?.(createTransaction(state, {
1032
+ doc: result.doc,
1033
+ selection: caret(result.position)
1034
+ }, "structure"));
1035
+ return true;
1036
+ }
1037
+ /** Insert a document fragment (pasted content) at the selection. */
1038
+ function insertFragment(fragment) {
1039
+ return (state, dispatch) => {
1040
+ const { schema } = state;
1041
+ const [from, to] = selectionRange(state.selection);
1042
+ const blocks = fragment.content;
1043
+ const first = blocks[0];
1044
+ if (!first) return false;
1045
+ if (isCode(state, from)) return replaceSelection(state, [{
1046
+ type: "text",
1047
+ text: textContent(fragment),
1048
+ marks: []
1049
+ }], "paste", dispatch);
1050
+ const isTextblock = (block) => roleOf(schema, block.type) === "textblock";
1051
+ if (blocks.length === 1 && isTextblock(first)) return replaceSelection(state, inlineContent(first), "paste", dispatch);
1052
+ const cleared = replaceRange(schema, state.doc, from, to, []);
1053
+ const split = splitTextblock(schema, cleared.doc, cleared.position);
1054
+ const firstPath = cleared.position.path;
1055
+ const head = isTextblock(first) ? inlineContent(first) : [];
1056
+ const last = blocks.at(-1);
1057
+ const tail = blocks.length > 1 && last && isTextblock(last) ? inlineContent(last) : null;
1058
+ const middle = blocks.slice(isTextblock(first) ? 1 : 0, tail ? -1 : void 0);
1059
+ let doc = updateAt(split.doc, firstPath, (node) => [{
1060
+ ...node,
1061
+ content: [...inlineContent(node), ...head]
1062
+ }, ...middle]);
1063
+ const secondPath = [...split.position.path];
1064
+ if (samePath(secondPath.slice(0, -1), firstPath.slice(0, -1))) secondPath[secondPath.length - 1] = (secondPath.at(-1) ?? 0) + middle.length;
1065
+ let caretAt = {
1066
+ path: secondPath,
1067
+ offset: 0
1068
+ };
1069
+ if (tail) {
1070
+ doc = updateAt(doc, secondPath, (node) => [{
1071
+ ...node,
1072
+ content: [...tail, ...inlineContent(node)]
1073
+ }]);
1074
+ caretAt = {
1075
+ path: secondPath,
1076
+ offset: tail.reduce((total, node) => total + (isText(node) ? node.text.length : 1), 0)
1077
+ };
1078
+ }
1079
+ const normalized = normalizeDoc(schema, doc);
1080
+ dispatch?.(createTransaction(state, {
1081
+ doc: normalized,
1082
+ selection: caret(caretAt)
1083
+ }, "paste"));
1084
+ return true;
1085
+ };
1086
+ }
1087
+ /** Select the whole document. */
1088
+ function selectAll(state, dispatch) {
1089
+ const entries = textblocks(state.schema, state.doc);
1090
+ const first = entries[0];
1091
+ const last = entries.at(-1);
1092
+ if (!first || !last) return false;
1093
+ const selection = {
1094
+ anchor: {
1095
+ path: first.path,
1096
+ offset: 0
1097
+ },
1098
+ head: {
1099
+ path: last.path,
1100
+ offset: textblockSize(last.node)
1101
+ }
1102
+ };
1103
+ dispatch?.(createTransaction(state, { selection }, "selection"));
1104
+ return true;
1105
+ }
1106
+ /** Whether the selection (or stored marks at a caret) carries a mark type. */
1107
+ function isMarkActive(state, type) {
1108
+ const [from, to] = selectionRange(state.selection);
1109
+ if (comparePositions(from, to) === 0) return activeMarks(state).some((mark) => mark.type === type);
1110
+ return rangeHasMark(state.schema, state.doc, from, to, type);
1111
+ }
1112
+ /** Whether every selected textblock has `type` (and matching `attrs`). */
1113
+ function isBlockActive(state, type, attrs = {}) {
1114
+ const [from, to] = selectionRange(state.selection);
1115
+ const entries = textblocks(state.schema, state.doc);
1116
+ const start = entries.findIndex((entry) => samePath(entry.path, from.path));
1117
+ const end = entries.findIndex((entry) => samePath(entry.path, to.path));
1118
+ return entries.slice(start, end + 1).every((entry) => entry.node.type === type && Object.entries(attrs).every(([key, value]) => entry.node.attrs[key] === value));
1119
+ }
1120
+ /** Whether the selection sits inside a wrapper of `type`. */
1121
+ function isWrappedIn(state, type) {
1122
+ return findWrapper(state.schema, state.doc, state.selection.head, (candidate) => candidate === type) !== null;
1123
+ }
1124
+ /** Create the typed command set for a schema. */
1125
+ function createRichTextCommands(schema) {
1126
+ return createUntypedRichTextCommands(schema);
1127
+ }
1128
+ /**
1129
+ * Commands that take plain type names; they return `false` for names the
1130
+ * schema does not declare. Prefer {@link createRichTextCommands} in app code.
1131
+ */
1132
+ function createUntypedRichTextCommands(schema) {
1133
+ const hasMark = (name) => Object.hasOwn(schema.marks, name);
1134
+ const hasNode = (name, ...roles) => Object.hasOwn(schema.nodes, name) && roles.includes(schema.nodes[name]?.role ?? "");
1135
+ const markDefaults = (name) => schema.marks[name]?.defaults ?? {};
1136
+ const nodeDefaults = (name) => schema.nodes[name]?.defaults ?? {};
1137
+ const linkType = Object.keys(schema.marks).find((name) => name === "link");
1138
+ const setMark = (name, attrs) => (state, dispatch) => {
1139
+ const [from, to] = selectionRange(state.selection);
1140
+ if (!hasMark(name) || comparePositions(from, to) === 0) return false;
1141
+ const mark = {
1142
+ type: name,
1143
+ attrs: withDefaults(markDefaults(name), attrs)
1144
+ };
1145
+ const doc = changeMark(state.schema, state.doc, from, to, mark, true);
1146
+ dispatch?.(createTransaction(state, { doc }, "format"));
1147
+ return true;
1148
+ };
1149
+ const removeMark = (name) => (state, dispatch) => {
1150
+ const [from, to] = selectionRange(state.selection);
1151
+ if (comparePositions(from, to) === 0) {
1152
+ const marks = activeMarks(state);
1153
+ if (!marks.some((mark) => mark.type === name)) return false;
1154
+ dispatch?.(createTransaction(state, { storedMarks: marks.filter((mark) => mark.type !== name) }, "format"));
1155
+ return true;
1156
+ }
1157
+ const doc = changeMark(state.schema, state.doc, from, to, {
1158
+ type: name,
1159
+ attrs: {}
1160
+ }, false);
1161
+ dispatch?.(createTransaction(state, { doc }, "format"));
1162
+ return true;
1163
+ };
1164
+ const toggleMark = (name, attrs) => (state, dispatch) => {
1165
+ const [from] = selectionRange(state.selection);
1166
+ if (!hasMark(name) || isCode(state, from)) return false;
1167
+ if (isCollapsed(state.selection)) {
1168
+ const marks = activeMarks(state);
1169
+ const storedMarks = marks.some((mark) => mark.type === name) ? marks.filter((mark) => mark.type !== name) : [...marks, {
1170
+ type: name,
1171
+ attrs: withDefaults(markDefaults(name), attrs)
1172
+ }];
1173
+ dispatch?.(createTransaction(state, { storedMarks }, "format"));
1174
+ return true;
1175
+ }
1176
+ return isMarkActive(state, name) ? removeMark(name)(state, dispatch) : setMark(name, attrs)(state, dispatch);
1177
+ };
1178
+ const setBlockType = (name, attrs) => (state, dispatch) => {
1179
+ const [from, to] = selectionRange(state.selection);
1180
+ if (!hasNode(name, "textblock")) return false;
1181
+ const resolved = withDefaults(nodeDefaults(name), attrs);
1182
+ if (isBlockActive(state, name, resolved)) return false;
1183
+ const doc = setTextblockType(state.schema, state.doc, from, to, name, resolved);
1184
+ dispatch?.(createTransaction(state, { doc }, "structure"));
1185
+ return true;
1186
+ };
1187
+ const wrapIn = (name, attrs) => (state, dispatch) => {
1188
+ if (!hasNode(name, "container", "list")) return false;
1189
+ const [from, to] = selectionRange(state.selection);
1190
+ const wrapped = wrapRange(state.schema, state.doc, from, to, name, withDefaults(nodeDefaults(name), attrs));
1191
+ dispatch?.(createTransaction(state, {
1192
+ doc: wrapped.doc,
1193
+ selection: {
1194
+ anchor: wrapped.map(state.selection.anchor),
1195
+ head: wrapped.map(state.selection.head)
1196
+ }
1197
+ }, "structure"));
1198
+ return true;
1199
+ };
1200
+ const unwrap = (name) => (state, dispatch) => {
1201
+ const wrapper = findWrapper(state.schema, state.doc, state.selection.head, (type) => type === name);
1202
+ if (!wrapper) return false;
1203
+ const lifted = liftWrapper(state.schema, state.doc, wrapper.path);
1204
+ dispatch?.(createTransaction(state, {
1205
+ doc: lifted.doc,
1206
+ selection: {
1207
+ anchor: lifted.map(state.selection.anchor),
1208
+ head: lifted.map(state.selection.head)
1209
+ }
1210
+ }, "structure"));
1211
+ return true;
1212
+ };
1213
+ const insertInline = (name, attrs) => (state, dispatch) => {
1214
+ const [from] = selectionRange(state.selection);
1215
+ if (!hasNode(name, "inline") || isCode(state, from)) return false;
1216
+ return replaceSelection(state, [{
1217
+ type: name,
1218
+ attrs: withDefaults(nodeDefaults(name), attrs),
1219
+ marks: activeMarks(state)
1220
+ }], "input", dispatch);
1221
+ };
1222
+ const setLink = (href, text) => (state, dispatch) => {
1223
+ if (!linkType) return false;
1224
+ if (href === null) return removeMark(linkType)(state, dispatch);
1225
+ if (!isCollapsed(state.selection)) return setMark(linkType, { href })(state, dispatch);
1226
+ const [from] = selectionRange(state.selection);
1227
+ if (!text || isCode(state, from)) return false;
1228
+ return replaceSelection(state, [{
1229
+ type: "text",
1230
+ text,
1231
+ marks: [...activeMarks(state).filter((mark) => mark.type !== linkType), {
1232
+ type: linkType,
1233
+ attrs: withDefaults(markDefaults(linkType), { href })
1234
+ }]
1235
+ }], "input", dispatch);
1236
+ };
1237
+ return {
1238
+ insertText,
1239
+ deleteSelection,
1240
+ deleteBackward,
1241
+ deleteForward,
1242
+ splitBlock,
1243
+ selectAll,
1244
+ undo,
1245
+ redo,
1246
+ toggleMark,
1247
+ setMark,
1248
+ removeMark,
1249
+ setBlockType,
1250
+ toggleBlockType: (name, attrs) => (state, dispatch) => isBlockActive(state, name, withDefaults(nodeDefaults(name), attrs)) && name !== schema.defaultBlock ? setBlockType(schema.defaultBlock)(state, dispatch) : setBlockType(name, attrs)(state, dispatch),
1251
+ wrapIn,
1252
+ toggleWrap: (name, attrs) => (state, dispatch) => isWrappedIn(state, name) ? unwrap(name)(state, dispatch) : wrapIn(name, attrs)(state, dispatch),
1253
+ insertInline,
1254
+ setLink,
1255
+ insertContent: insertFragment
1256
+ };
1257
+ }
1258
+ /** Text before the caret in its textblock (leaves become U+FFFC). */
1259
+ function textBeforeCaret(state) {
1260
+ const head = state.selection.head;
1261
+ const block = blockAt(state.doc, head.path);
1262
+ if (!block) return "";
1263
+ return sliceInline(inlineContent(block), 0, head.offset).map((node) => isText(node) ? node.text : "").join("");
1264
+ }
1265
+ //#endregion
1266
+ //#region src/families/editor/rich-text/rich-text-context.ts
1267
+ const richTextContext = createContext("RichText");
1268
+ const richTextToolbarContext = createContext("RichTextToolbar");
1269
+ //#endregion
1270
+ //#region src/families/editor/rich-text/rich-text-html.ts
1271
+ const htmlEscapes = {
1272
+ "&": "&amp;",
1273
+ "<": "&lt;",
1274
+ ">": "&gt;",
1275
+ "\"": "&quot;",
1276
+ "'": "&#39;"
1277
+ };
1278
+ /** Escape text or attribute content for HTML. */
1279
+ function escapeHtml(value) {
1280
+ return value.replace(/[&<>"']/gu, (character) => htmlEscapes[character] ?? character);
1281
+ }
1282
+ const voidTags = new Set([
1283
+ "br",
1284
+ "hr",
1285
+ "img",
1286
+ "input",
1287
+ "wbr"
1288
+ ]);
1289
+ const tagName = /^[a-z][a-z0-9-]*$/u;
1290
+ const attrName = /^[a-z_:][a-z0-9_.:-]*$/u;
1291
+ function openTag(spec, extra = {}) {
1292
+ if (!tagName.test(spec.tag)) throw new TypeError(`VIZE_UI_RICH_TEXT_HTML: invalid tag "${spec.tag}"`);
1293
+ let html = `<${spec.tag}`;
1294
+ for (const [name, value] of Object.entries({
1295
+ ...spec.attrs,
1296
+ ...extra
1297
+ })) {
1298
+ if (value === null || value === void 0 || !attrName.test(name) || name.startsWith("on")) continue;
1299
+ html += ` ${name}="${escapeHtml(value)}"`;
1300
+ }
1301
+ return `${html}>`;
1302
+ }
1303
+ function closeTag(spec) {
1304
+ return voidTags.has(spec.tag) ? "" : `</${spec.tag}>`;
1305
+ }
1306
+ function markOrder(schema, marks) {
1307
+ const order = Object.keys(schema.marks);
1308
+ return [...marks].sort((left, right) => order.indexOf(left.type) - order.indexOf(right.type));
1309
+ }
1310
+ function leafHtml(schema, node, editor) {
1311
+ if (isText(node)) return escapeHtml(node.text);
1312
+ const spec = schema.nodes[node.type]?.render(node.attrs) ?? { tag: "span" };
1313
+ return `${openTag(spec, editor ? {
1314
+ "data-rt-leaf": "",
1315
+ contenteditable: "false"
1316
+ } : {})}${closeTag(spec)}`;
1317
+ }
1318
+ /** Serialize inline content, sharing mark elements across adjacent runs. */
1319
+ function inlineHtml(schema, nodes, editor) {
1320
+ let html = "";
1321
+ const open = [];
1322
+ for (const node of nodes) {
1323
+ const marks = markOrder(schema, node.marks);
1324
+ let keep = 0;
1325
+ while (keep < marks.length) {
1326
+ const current = open[keep];
1327
+ const mark = marks[keep];
1328
+ if (!current || !mark || !sameMark(current.mark, mark)) break;
1329
+ keep++;
1330
+ }
1331
+ while (open.length > keep) {
1332
+ const closing = open.pop();
1333
+ if (closing) html += closeTag(closing.spec);
1334
+ }
1335
+ for (const mark of marks.slice(keep)) {
1336
+ const spec = schema.marks[mark.type]?.render(mark.attrs);
1337
+ if (!spec) continue;
1338
+ open.push({
1339
+ mark,
1340
+ spec
1341
+ });
1342
+ html += openTag(spec);
1343
+ }
1344
+ html += leafHtml(schema, node, editor);
1345
+ }
1346
+ while (open.length > 0) {
1347
+ const closing = open.pop();
1348
+ if (closing) html += closeTag(closing.spec);
1349
+ }
1350
+ return html;
1351
+ }
1352
+ function blockHtml(schema, block, path, editor) {
1353
+ const role = roleOf(schema, block.type);
1354
+ const spec = schema.nodes[block.type]?.render(block.attrs) ?? { tag: "div" };
1355
+ const hooks = editor ? {
1356
+ "data-rt-path": path.join("."),
1357
+ ...role === "textblock" ? { "data-rt-textblock": "" } : {}
1358
+ } : {};
1359
+ let inner;
1360
+ if (role === "textblock") {
1361
+ const inline = inlineContent(block);
1362
+ inner = inlineHtml(schema, inline, editor);
1363
+ const last = inline.at(-1);
1364
+ if (editor && (textblockSize(block) === 0 || last && !isText(last) && schema.nodes[last.type]?.render(last.attrs).tag === "br")) inner += "<br data-rt-filler=\"\">";
1365
+ } else inner = blockContent(block).map((child, index) => blockHtml(schema, child, [...path, index], editor)).join("");
1366
+ return `${openTag(spec, hooks)}${inner}${closeTag(spec)}`;
1367
+ }
1368
+ /** Serialize a document to HTML (escaped text, sanitized attributes). */
1369
+ function richTextToHtml(schema, doc, options = {}) {
1370
+ return doc.content.map((block, index) => blockHtml(schema, block, [index], options.editor === true)).join("");
1371
+ }
1372
+ const droppedTags = new Set([
1373
+ "button",
1374
+ "embed",
1375
+ "head",
1376
+ "iframe",
1377
+ "input",
1378
+ "link",
1379
+ "meta",
1380
+ "noscript",
1381
+ "object",
1382
+ "script",
1383
+ "select",
1384
+ "style",
1385
+ "svg",
1386
+ "template",
1387
+ "textarea",
1388
+ "title"
1389
+ ]);
1390
+ const blockTags = new Set([
1391
+ "address",
1392
+ "article",
1393
+ "aside",
1394
+ "blockquote",
1395
+ "dd",
1396
+ "div",
1397
+ "dl",
1398
+ "dt",
1399
+ "fieldset",
1400
+ "figcaption",
1401
+ "figure",
1402
+ "footer",
1403
+ "form",
1404
+ "h1",
1405
+ "h2",
1406
+ "h3",
1407
+ "h4",
1408
+ "h5",
1409
+ "h6",
1410
+ "header",
1411
+ "hr",
1412
+ "li",
1413
+ "main",
1414
+ "nav",
1415
+ "ol",
1416
+ "p",
1417
+ "pre",
1418
+ "section",
1419
+ "table",
1420
+ "tbody",
1421
+ "td",
1422
+ "tfoot",
1423
+ "th",
1424
+ "thead",
1425
+ "tr",
1426
+ "ul"
1427
+ ]);
1428
+ function matchRule(specs, element, accept) {
1429
+ const tag = element.localName;
1430
+ for (const [name, spec] of Object.entries(specs)) {
1431
+ if (!accept(name)) continue;
1432
+ for (const rule of spec.parse) {
1433
+ if (rule.tag !== tag) continue;
1434
+ const parsed = rule.attrs ? rule.attrs(element) : {};
1435
+ if (parsed === null) continue;
1436
+ const attrs = { ...spec.defaults };
1437
+ for (const [key, value] of Object.entries(parsed)) if (value !== void 0 && Object.hasOwn(spec.defaults, key)) attrs[key] = value;
1438
+ return {
1439
+ name,
1440
+ attrs
1441
+ };
1442
+ }
1443
+ }
1444
+ return null;
1445
+ }
1446
+ var HtmlReader = class {
1447
+ #schema;
1448
+ constructor(schema) {
1449
+ this.#schema = schema;
1450
+ }
1451
+ blocks(nodes, marks) {
1452
+ const blocks = [];
1453
+ let pending = [];
1454
+ const flush = () => {
1455
+ const content = trimInline(normalizeInline(pending));
1456
+ pending = [];
1457
+ if (content.length > 0) blocks.push({
1458
+ ...emptyBlock(this.#schema),
1459
+ content
1460
+ });
1461
+ };
1462
+ for (const node of nodes) {
1463
+ if (node.nodeType === 3) {
1464
+ pending.push(...this.text(node.textContent ?? "", marks, false));
1465
+ continue;
1466
+ }
1467
+ if (!isElement$1(node) || droppedTags.has(node.localName)) continue;
1468
+ const rule = matchRule(this.#schema.nodes, node, (name) => roleOf(this.#schema, name) !== "inline");
1469
+ const transparent = rule !== null && roleOf(this.#schema, rule.name) === "textblock" && [...node.children].some((child) => blockTags.has(child.localName));
1470
+ if (rule && !transparent) {
1471
+ flush();
1472
+ blocks.push(...this.block(rule, node));
1473
+ } else if (transparent || blockTags.has(node.localName)) {
1474
+ flush();
1475
+ blocks.push(...this.blocks(node.childNodes, marks));
1476
+ } else pending.push(...this.inline(node, marks, false));
1477
+ }
1478
+ flush();
1479
+ return blocks;
1480
+ }
1481
+ block(rule, element) {
1482
+ const role = roleOf(this.#schema, rule.name);
1483
+ if (role === "textblock") {
1484
+ const code = this.#schema.nodes[rule.name]?.code === true;
1485
+ const content = normalizeInline([...element.childNodes].flatMap((child) => this.inlineNode(child, [], code)));
1486
+ return [{
1487
+ type: rule.name,
1488
+ attrs: rule.attrs,
1489
+ content: code ? content : trimInline(content)
1490
+ }];
1491
+ }
1492
+ if (role === "list") {
1493
+ const itemType = Object.keys(this.#schema.nodes).find((name) => this.#schema.nodes[name]?.role === "listItem");
1494
+ if (!itemType) return this.blocks(element.childNodes, []);
1495
+ const items = [...element.childNodes].flatMap((child) => {
1496
+ if (isElement$1(child) && droppedTags.has(child.localName)) return [];
1497
+ const nodes = isElement$1(child) && child.localName === "li" ? child.childNodes : [child];
1498
+ const content = this.blocks(nodes, []);
1499
+ return content.length > 0 ? [{
1500
+ type: itemType,
1501
+ attrs: this.#schema.nodes[itemType]?.defaults ?? {},
1502
+ content
1503
+ }] : [];
1504
+ });
1505
+ return items.length > 0 ? [{
1506
+ type: rule.name,
1507
+ attrs: rule.attrs,
1508
+ content: items
1509
+ }] : [];
1510
+ }
1511
+ if (role === "listItem") return this.blocks(element.childNodes, []);
1512
+ const content = this.blocks(element.childNodes, []);
1513
+ return content.length > 0 ? [{
1514
+ type: rule.name,
1515
+ attrs: rule.attrs,
1516
+ content
1517
+ }] : [];
1518
+ }
1519
+ inlineNode(node, marks, code) {
1520
+ if (node.nodeType === 3) return this.text(node.textContent ?? "", marks, code);
1521
+ if (!isElement$1(node) || droppedTags.has(node.localName)) return [];
1522
+ return this.inline(node, marks, code);
1523
+ }
1524
+ inline(element, marks, code) {
1525
+ if (!code) {
1526
+ const leaf = matchRule(this.#schema.nodes, element, (name) => roleOf(this.#schema, name) === "inline");
1527
+ if (leaf) return [{
1528
+ type: leaf.name,
1529
+ attrs: leaf.attrs,
1530
+ marks
1531
+ }];
1532
+ } else if (element.localName === "br") return [{
1533
+ type: "text",
1534
+ text: "\n",
1535
+ marks: []
1536
+ }];
1537
+ const mark = code ? null : matchRule(this.#schema.marks, element, () => true);
1538
+ const nextMarks = mark ? [...marks.filter((candidate) => candidate.type !== mark.name), {
1539
+ type: mark.name,
1540
+ attrs: mark.attrs
1541
+ }] : marks;
1542
+ return [...element.childNodes].flatMap((child) => this.inlineNode(child, nextMarks, code));
1543
+ }
1544
+ text(value, marks, code) {
1545
+ const text = code ? value : value.replace(/[\t\n\r\f ]+/gu, " ");
1546
+ return text.length > 0 ? [{
1547
+ type: "text",
1548
+ text,
1549
+ marks: code ? [] : marks
1550
+ }] : [];
1551
+ }
1552
+ };
1553
+ function isElement$1(node) {
1554
+ return node.nodeType === 1;
1555
+ }
1556
+ function trimInline(nodes) {
1557
+ const result = [...nodes];
1558
+ const first = result[0];
1559
+ if (first && isText(first)) result[0] = {
1560
+ ...first,
1561
+ text: first.text.replace(/^ +/u, "")
1562
+ };
1563
+ const lastIndex = result.length - 1;
1564
+ const last = result[lastIndex];
1565
+ if (last && isText(last)) result[lastIndex] = {
1566
+ ...last,
1567
+ text: last.text.replace(/ +$/u, "")
1568
+ };
1569
+ return normalizeInline(result);
1570
+ }
1571
+ /**
1572
+ * Parse (untrusted) HTML into a document of the schema. Only elements the
1573
+ * schema declares survive; scripts, styles, frames, forms, and event
1574
+ * attributes are dropped and URLs are checked by each spec's parse rule.
1575
+ */
1576
+ function richTextFromHtml(schema, html, options = {}) {
1577
+ const Parser = (options.document ?? globalThis.document)?.defaultView?.DOMParser;
1578
+ if (!Parser) throw new Error("VIZE_UI_RICH_TEXT_HTML: parsing HTML requires a DOM (pass options.document)");
1579
+ const parsed = new Parser().parseFromString(html, "text/html");
1580
+ return assertRichTextDoc(schema, normalizeDoc(schema, {
1581
+ type: "doc",
1582
+ content: new HtmlReader(schema).blocks(parsed.body.childNodes, [])
1583
+ }));
1584
+ }
1585
+ //#endregion
1586
+ //#region src/families/editor/rich-text/rich-text-input-rules.ts
1587
+ /** Remove the matched prefix, then run `command` on the result, as one undo step. */
1588
+ function blockInputRule(match, command) {
1589
+ return {
1590
+ match,
1591
+ apply: (state, result, start, end) => {
1592
+ const head = state.selection.head;
1593
+ const removed = replaceRange(state.schema, state.doc, {
1594
+ ...head,
1595
+ offset: start
1596
+ }, {
1597
+ ...head,
1598
+ offset: end
1599
+ }, []);
1600
+ const intermediate = createTransaction(state, {
1601
+ doc: removed.doc,
1602
+ selection: caret(removed.position)
1603
+ }, "input", { addToHistory: false }).state;
1604
+ const captured = { state: null };
1605
+ if (!command(result)(intermediate, (transaction) => {
1606
+ captured.state = transaction.state;
1607
+ }) || captured.state === null) return null;
1608
+ return createTransaction(state, {
1609
+ doc: captured.state.doc,
1610
+ selection: captured.state.selection
1611
+ }, "structure");
1612
+ }
1613
+ };
1614
+ }
1615
+ /** Replace the matched text with its first capture group carrying a mark. */
1616
+ function markInputRule(match, mark) {
1617
+ return {
1618
+ match,
1619
+ apply: (state, result, start, end) => {
1620
+ const text = result[1];
1621
+ if (!text || !Object.hasOwn(state.schema.marks, mark)) return null;
1622
+ const head = state.selection.head;
1623
+ const leading = result[0].length - result[0].trimStart().length;
1624
+ const from = {
1625
+ ...head,
1626
+ offset: start + leading
1627
+ };
1628
+ const replaced = replaceRange(state.schema, state.doc, from, {
1629
+ ...head,
1630
+ offset: end
1631
+ }, [{
1632
+ type: "text",
1633
+ text,
1634
+ marks: [{
1635
+ type: mark,
1636
+ attrs: state.schema.marks[mark]?.defaults ?? {}
1637
+ }]
1638
+ }]);
1639
+ return createTransaction(state, {
1640
+ doc: replaced.doc,
1641
+ selection: caret(replaced.position),
1642
+ storedMarks: []
1643
+ }, "format");
1644
+ }
1645
+ };
1646
+ }
1647
+ /** Markdown-style input rules for every built-in node and mark the schema declares. */
1648
+ function defaultRichTextInputRules(schema) {
1649
+ const commands = createUntypedRichTextCommands(schema);
1650
+ const has = (name) => Object.hasOwn(schema.nodes, name) || Object.hasOwn(schema.marks, name);
1651
+ const rules = [];
1652
+ if (has("heading")) rules.push(blockInputRule(/^(#{1,6}) $/u, (match) => commands.setBlockType("heading", { level: match[1]?.length ?? 1 })));
1653
+ if (has("blockquote")) rules.push(blockInputRule(/^> $/u, () => commands.wrapIn("blockquote")));
1654
+ if (has("bulletList")) rules.push(blockInputRule(/^[-*+] $/u, () => commands.wrapIn("bulletList")));
1655
+ if (has("orderedList")) rules.push(blockInputRule(/^(\d{1,9})\. $/u, (match) => commands.wrapIn("orderedList", { start: Number(match[1] ?? 1) })));
1656
+ if (has("codeBlock")) rules.push(blockInputRule(/^```$/u, () => commands.setBlockType("codeBlock")));
1657
+ if (has("bold")) rules.push(markInputRule(/\*\*([^*]+)\*\*$/u, "bold"));
1658
+ if (has("italic")) rules.push(markInputRule(/(?:^|\s)_([^_]+)_$/u, "italic"));
1659
+ if (has("code")) rules.push(markInputRule(/`([^`]+)`$/u, "code"));
1660
+ if (has("strike")) rules.push(markInputRule(/~~([^~]+)~~$/u, "strike"));
1661
+ return rules;
1662
+ }
1663
+ /** Insert text, letting the first matching input rule transform it instead. */
1664
+ function insertTextWithRules(text, rules) {
1665
+ return (state, dispatch) => {
1666
+ const head = state.selection.head;
1667
+ const block = blockAt(state.doc, head.path);
1668
+ const code = block !== void 0 && state.schema.nodes[block.type]?.code === true;
1669
+ if (isCollapsed(state.selection) && !code) {
1670
+ const before = textBeforeCaret(state);
1671
+ const probe = before + text;
1672
+ for (const rule of rules) {
1673
+ const match = new RegExp(rule.match.source, rule.match.flags.replace("g", "")).exec(probe);
1674
+ if (!match) continue;
1675
+ const start = probe.length - match[0].length;
1676
+ if (start > before.length) continue;
1677
+ const transaction = rule.apply(state, match, start, head.offset);
1678
+ if (!transaction) continue;
1679
+ dispatch?.(transaction);
1680
+ return true;
1681
+ }
1682
+ }
1683
+ return insertText(text)(state, dispatch);
1684
+ };
1685
+ }
1686
+ //#endregion
1687
+ //#region src/families/editor/rich-text/rich-text-keymap.ts
1688
+ /** Normalized binding name of a keyboard event, e.g. `Mod-Shift-z`. */
1689
+ function richTextKeyName(event) {
1690
+ const parts = [];
1691
+ if (event.ctrlKey || event.metaKey) parts.push("Mod");
1692
+ if (event.altKey) parts.push("Alt");
1693
+ if (event.shiftKey) parts.push("Shift");
1694
+ const digit = /^Digit(\d)$/u.exec(event.code)?.[1];
1695
+ const key = digit !== void 0 && parts.length > 0 ? digit : event.key.length === 1 ? event.key.toLowerCase() : event.key;
1696
+ parts.push(key);
1697
+ return parts.join("-");
1698
+ }
1699
+ /** Standard shortcuts for every built-in node and mark the schema declares. */
1700
+ function defaultRichTextKeymap(schema) {
1701
+ const commands = createUntypedRichTextCommands(schema);
1702
+ const has = (name) => Object.hasOwn(schema.nodes, name) || Object.hasOwn(schema.marks, name);
1703
+ const keymap = {
1704
+ "Mod-z": commands.undo,
1705
+ "Mod-Shift-z": commands.redo,
1706
+ "Mod-y": commands.redo,
1707
+ "Mod-a": commands.selectAll,
1708
+ Enter: commands.splitBlock,
1709
+ Backspace: commands.deleteBackward("character"),
1710
+ "Alt-Backspace": commands.deleteBackward("word"),
1711
+ "Mod-Backspace": commands.deleteBackward("word"),
1712
+ Delete: commands.deleteForward("character"),
1713
+ "Alt-Delete": commands.deleteForward("word")
1714
+ };
1715
+ for (const [mark, key] of [
1716
+ ["bold", "Mod-b"],
1717
+ ["italic", "Mod-i"],
1718
+ ["underline", "Mod-u"],
1719
+ ["strike", "Mod-Shift-x"],
1720
+ ["code", "Mod-e"]
1721
+ ]) if (has(mark)) keymap[key] = commands.toggleMark(mark);
1722
+ if (has("hardBreak")) keymap["Shift-Enter"] = commands.insertInline("hardBreak");
1723
+ keymap["Mod-Alt-0"] = commands.setBlockType(schema.defaultBlock);
1724
+ if (has("heading")) for (let level = 1; level <= 6; level++) keymap[`Mod-Alt-${level}`] = commands.toggleBlockType("heading", { level });
1725
+ if (has("codeBlock")) keymap["Mod-Alt-c"] = commands.toggleBlockType("codeBlock");
1726
+ if (has("orderedList")) keymap["Mod-Shift-7"] = commands.toggleWrap("orderedList");
1727
+ if (has("bulletList")) keymap["Mod-Shift-8"] = commands.toggleWrap("bulletList");
1728
+ if (has("blockquote")) keymap["Mod-Shift-9"] = commands.toggleWrap("blockquote");
1729
+ return keymap;
1730
+ }
1731
+ //#endregion
1732
+ //#region src/families/editor/rich-text/rich-text-root.vue?vue&type=script&setup=true&lang.ts
1733
+ const _hoisted_1$4 = [
1734
+ "id",
1735
+ "data-editable",
1736
+ "data-focused"
1737
+ ];
1738
+ //#endregion
1739
+ //#region src/families/editor/rich-text/rich-text-root.vue
1740
+ var rich_text_root_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
1741
+ __name: "rich-text-root",
1742
+ props: {
1743
+ schema: {
1744
+ type: null,
1745
+ required: true
1746
+ },
1747
+ modelValue: {
1748
+ type: Object,
1749
+ required: false,
1750
+ default: () => void 0
1751
+ },
1752
+ defaultValue: {
1753
+ type: Object,
1754
+ required: false,
1755
+ default: () => void 0
1756
+ },
1757
+ id: {
1758
+ type: [String, null],
1759
+ required: false,
1760
+ default: () => void 0
1761
+ },
1762
+ editable: {
1763
+ type: Boolean,
1764
+ required: false,
1765
+ default: true
1766
+ },
1767
+ inputRules: {
1768
+ type: Array,
1769
+ required: false,
1770
+ default: () => void 0
1771
+ },
1772
+ keymap: {
1773
+ type: Object,
1774
+ required: false,
1775
+ default: () => void 0
1776
+ },
1777
+ historyDepth: {
1778
+ type: Number,
1779
+ required: false,
1780
+ default: 100
1781
+ }
1782
+ },
1783
+ emits: ["update:modelValue", "transaction"],
1784
+ setup(__props, { expose: __expose, emit: __emit }) {
1785
+ const emit = __emit;
1786
+ const baseId = useDeterministicId({
1787
+ id: () => __props.id,
1788
+ hint: "rich-text"
1789
+ });
1790
+ const contentId = computed(() => deriveDeterministicId(baseId.value, "content"));
1791
+ const state = shallowRef(createRichTextState(__props.schema, {
1792
+ ...initialDoc(),
1793
+ historyDepth: __props.historyDepth
1794
+ }));
1795
+ const focused = shallowRef(false);
1796
+ const contentElement = shallowRef(null);
1797
+ const toolbars = shallowRef([]);
1798
+ const editableState = computed(() => __props.editable);
1799
+ function initialDoc() {
1800
+ const doc = __props.modelValue ?? __props.defaultValue;
1801
+ return doc === void 0 ? {} : { doc };
1802
+ }
1803
+ const defaultRules = computed(() => defaultRichTextInputRules(__props.schema));
1804
+ const defaultKeymap = computed(() => defaultRichTextKeymap(__props.schema));
1805
+ const erased = computed(() => toRtState(state.value));
1806
+ function dispatch(transaction) {
1807
+ state.value = toRichTextState(__props.schema, transaction.state);
1808
+ emit("transaction", transaction);
1809
+ if (transaction.docChanged) emit("update:modelValue", state.value.doc);
1810
+ }
1811
+ function run(command) {
1812
+ if (!__props.editable) return false;
1813
+ return command(erased.value, dispatch);
1814
+ }
1815
+ watch(() => __props.modelValue, (next) => {
1816
+ if (next === void 0 || next === state.value.doc) return;
1817
+ state.value = createRichTextState(__props.schema, {
1818
+ doc: next,
1819
+ selection: state.value.selection,
1820
+ historyDepth: __props.historyDepth
1821
+ });
1822
+ });
1823
+ function focus() {
1824
+ nextTick(() => contentElement.value?.focus({ preventScroll: true }));
1825
+ }
1826
+ richTextContext.provide({
1827
+ id: baseId,
1828
+ contentId,
1829
+ state: erased,
1830
+ editable: editableState,
1831
+ focused,
1832
+ contentElement,
1833
+ commands: createUntypedRichTextCommands(__props.schema),
1834
+ typeText: (text) => run(insertTextWithRules(text, __props.inputRules ?? defaultRules.value)),
1835
+ runKey: (name) => {
1836
+ const command = (__props.keymap ?? defaultKeymap.value)[name];
1837
+ return command !== void 0 && run(command);
1838
+ },
1839
+ run,
1840
+ can: (command) => __props.editable && command(erased.value),
1841
+ select: (selection) => {
1842
+ dispatch(createTransaction(erased.value, { selection }, "selection"));
1843
+ },
1844
+ focus,
1845
+ toolbars
1846
+ });
1847
+ const slotProps = computed(() => ({
1848
+ state: state.value,
1849
+ editable: __props.editable,
1850
+ focused: focused.value,
1851
+ run
1852
+ }));
1853
+ __expose({
1854
+ state,
1855
+ run,
1856
+ focus,
1857
+ toHtml: () => richTextToHtml(__props.schema, state.value.doc)
1858
+ });
1859
+ return (_ctx, _cache) => {
1860
+ return openBlock(), createElementBlock("div", {
1861
+ id: unref(baseId),
1862
+ "data-vize-ui": "rich-text",
1863
+ part: "root",
1864
+ "data-editable": __props.editable ? "true" : "false",
1865
+ "data-focused": focused.value ? "true" : void 0
1866
+ }, [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)), void 0, true)], 8, _hoisted_1$4);
1867
+ };
1868
+ }
1869
+ }), [["__scopeId", "data-v-77eea66d"]]);
1870
+ //#endregion
1871
+ //#region src/families/editor/rich-text/rich-text-dom.ts
1872
+ function isElement(node) {
1873
+ return node.nodeType === 1;
1874
+ }
1875
+ function isLeaf(node) {
1876
+ return isElement(node) && node.hasAttribute("data-rt-leaf");
1877
+ }
1878
+ function isFiller(node) {
1879
+ return isElement(node) && node.hasAttribute("data-rt-filler");
1880
+ }
1881
+ function sizeOf(node) {
1882
+ if (node.nodeType === 3) return node.textContent?.length ?? 0;
1883
+ if (isLeaf(node)) return 1;
1884
+ if (isFiller(node) || !isElement(node)) return 0;
1885
+ let total = 0;
1886
+ for (const child of node.childNodes) total += sizeOf(child);
1887
+ return total;
1888
+ }
1889
+ function textblockOf(node, root) {
1890
+ let current = node;
1891
+ while (current && current !== root) {
1892
+ if (isElement(current) && current.hasAttribute("data-rt-textblock")) return current;
1893
+ current = current.parentNode;
1894
+ }
1895
+ return null;
1896
+ }
1897
+ function pathOf(block) {
1898
+ return (block.getAttribute("data-rt-path") ?? "").split(".").filter((part) => part !== "").map(Number);
1899
+ }
1900
+ function offsetWithin(block, target, targetOffset) {
1901
+ let count = 0;
1902
+ let done = false;
1903
+ const visit = (node) => {
1904
+ if (done) return;
1905
+ if (node === target) {
1906
+ if (node.nodeType === 3) count += Math.min(targetOffset, sizeOf(node));
1907
+ else if (isLeaf(node)) count += targetOffset > 0 ? 1 : 0;
1908
+ else for (const child of [...node.childNodes].slice(0, targetOffset)) count += sizeOf(child);
1909
+ done = true;
1910
+ return;
1911
+ }
1912
+ if (node.nodeType === 3 || isLeaf(node) || isFiller(node)) {
1913
+ count += sizeOf(node);
1914
+ return;
1915
+ }
1916
+ for (const child of node.childNodes) visit(child);
1917
+ };
1918
+ visit(block);
1919
+ return count;
1920
+ }
1921
+ /** Map a DOM point inside the editable root to a model position. */
1922
+ function positionFromDom(root, node, offset) {
1923
+ if (!root.contains(node)) return null;
1924
+ const block = textblockOf(node, root);
1925
+ if (block) return {
1926
+ path: pathOf(block),
1927
+ offset: offsetWithin(block, node, offset)
1928
+ };
1929
+ if (!isElement(node)) return null;
1930
+ const blocks = [...root.querySelectorAll("[data-rt-textblock]")];
1931
+ const after = node.childNodes[offset];
1932
+ if (after) {
1933
+ const next = blocks.find((candidate) => after === candidate || after.contains(candidate) || (after.compareDocumentPosition(candidate) & 4) !== 0);
1934
+ if (next) return {
1935
+ path: pathOf(next),
1936
+ offset: 0
1937
+ };
1938
+ }
1939
+ const before = node.childNodes[offset - 1] ?? node;
1940
+ const previous = [...blocks].reverse().find((candidate) => before === candidate || before.contains(candidate) || (before.compareDocumentPosition(candidate) & 2) !== 0);
1941
+ return previous ? {
1942
+ path: pathOf(previous),
1943
+ offset: sizeOf(previous)
1944
+ } : null;
1945
+ }
1946
+ /** Map a model position to a DOM point, preferring text nodes. */
1947
+ function domFromPosition(root, position) {
1948
+ const path = position.path.join(".");
1949
+ const block = [...root.querySelectorAll("[data-rt-textblock]")].find((candidate) => candidate.getAttribute("data-rt-path") === path);
1950
+ if (!block) return null;
1951
+ let remaining = position.offset;
1952
+ let found = null;
1953
+ const visit = (node) => {
1954
+ if (found) return;
1955
+ if (node.nodeType === 3) {
1956
+ const length = node.textContent?.length ?? 0;
1957
+ if (remaining <= length) found = {
1958
+ node,
1959
+ offset: remaining
1960
+ };
1961
+ else remaining -= length;
1962
+ return;
1963
+ }
1964
+ if (isLeaf(node) || isFiller(node)) {
1965
+ const parent = node.parentNode;
1966
+ const index = parent ? [...parent.childNodes].indexOf(node) : 0;
1967
+ if (remaining === 0 && parent) found = {
1968
+ node: parent,
1969
+ offset: index
1970
+ };
1971
+ else if (isLeaf(node)) {
1972
+ remaining -= 1;
1973
+ if (remaining === 0 && parent && !node.nextSibling) found = {
1974
+ node: parent,
1975
+ offset: index + 1
1976
+ };
1977
+ }
1978
+ return;
1979
+ }
1980
+ for (const child of node.childNodes) visit(child);
1981
+ };
1982
+ visit(block);
1983
+ return found ?? {
1984
+ node: block,
1985
+ offset: remaining > 0 ? block.childNodes.length : 0
1986
+ };
1987
+ }
1988
+ /** Read the document selection when it lies inside `root`. */
1989
+ function readDomSelection(root) {
1990
+ const selection = root.ownerDocument.getSelection();
1991
+ if (!selection?.anchorNode || !selection.focusNode) return null;
1992
+ const anchor = positionFromDom(root, selection.anchorNode, selection.anchorOffset);
1993
+ const head = positionFromDom(root, selection.focusNode, selection.focusOffset);
1994
+ return anchor && head ? {
1995
+ anchor,
1996
+ head
1997
+ } : null;
1998
+ }
1999
+ /** Write a model selection into the document selection. */
2000
+ function writeDomSelection(root, selection) {
2001
+ const anchor = domFromPosition(root, selection.anchor);
2002
+ const head = domFromPosition(root, selection.head);
2003
+ const domSelection = root.ownerDocument.getSelection();
2004
+ if (!anchor || !head || !domSelection) return false;
2005
+ if (domSelection.anchorNode === anchor.node && domSelection.anchorOffset === anchor.offset && domSelection.focusNode === head.node && domSelection.focusOffset === head.offset) return true;
2006
+ domSelection.setBaseAndExtent(anchor.node, anchor.offset, head.node, head.offset);
2007
+ return true;
2008
+ }
2009
+ /** Viewport rectangle of the current DOM selection, when measurable. */
2010
+ function selectionRect(root) {
2011
+ const selection = root.ownerDocument.getSelection();
2012
+ if (!selection || selection.rangeCount === 0) return null;
2013
+ const range = selection.getRangeAt(0);
2014
+ if (!root.contains(range.commonAncestorContainer)) return null;
2015
+ return typeof range.getBoundingClientRect === "function" ? range.getBoundingClientRect() : null;
2016
+ }
2017
+ //#endregion
2018
+ //#region src/families/editor/rich-text/rich-text-toolbar-runtime.ts
2019
+ /** Roving focus for a toolbar-like container of RichTextToolbarButtons. */
2020
+ function useRichTextToolbar(editor, element) {
2021
+ const registry = createCollectionRegistry({ disabledBehavior: "skip" });
2022
+ const context = { registry };
2023
+ richTextToolbarContext.provide(context);
2024
+ function focusKey(key) {
2025
+ if (key === null) return false;
2026
+ registry.setActiveKey(key);
2027
+ const target = registry.getItem(key)?.element;
2028
+ if (!(target instanceof HTMLElement)) return false;
2029
+ target.focus();
2030
+ return true;
2031
+ }
2032
+ const focusFirst = () => focusKey(registry.activeKey.value ?? registry.getNavigationKey("first"));
2033
+ editor.toolbars.value = [...editor.toolbars.value, focusFirst];
2034
+ onScopeDispose(() => {
2035
+ editor.toolbars.value = editor.toolbars.value.filter((entry) => entry !== focusFirst);
2036
+ });
2037
+ function onKeydown(event) {
2038
+ const rtl = element.value?.closest("[dir]")?.getAttribute("dir") === "rtl";
2039
+ const forward = rtl ? "ArrowLeft" : "ArrowRight";
2040
+ const backward = rtl ? "ArrowRight" : "ArrowLeft";
2041
+ let key = null;
2042
+ if (event.key === forward) key = registry.getNavigationKey("next", { loop: true });
2043
+ else if (event.key === backward) key = registry.getNavigationKey("previous", { loop: true });
2044
+ else if (event.key === "Home") key = registry.getNavigationKey("first");
2045
+ else if (event.key === "End") key = registry.getNavigationKey("last");
2046
+ else if (event.key === "Escape") {
2047
+ event.preventDefault();
2048
+ editor.focus();
2049
+ return;
2050
+ } else return;
2051
+ event.preventDefault();
2052
+ focusKey(key);
2053
+ }
2054
+ return {
2055
+ context,
2056
+ onKeydown
2057
+ };
2058
+ }
2059
+ //#endregion
2060
+ //#region src/families/editor/rich-text/rich-text-bubble-menu.vue?vue&type=script&setup=true&lang.ts
2061
+ const _hoisted_1$3 = ["hidden"];
2062
+ const _hoisted_2 = ["aria-label", "aria-controls"];
2063
+ //#endregion
2064
+ //#region src/families/editor/rich-text/rich-text-bubble-menu.vue
2065
+ var rich_text_bubble_menu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2066
+ __name: "rich-text-bubble-menu",
2067
+ props: {
2068
+ ariaLabel: {
2069
+ type: String,
2070
+ required: false,
2071
+ default: "Selection formatting"
2072
+ },
2073
+ placement: {
2074
+ type: String,
2075
+ required: false,
2076
+ default: "top"
2077
+ },
2078
+ offset: {
2079
+ type: Number,
2080
+ required: false,
2081
+ default: 8
2082
+ },
2083
+ open: {
2084
+ type: Boolean,
2085
+ required: false,
2086
+ default: () => void 0
2087
+ }
2088
+ },
2089
+ setup(__props, { expose: __expose }) {
2090
+ const editor = richTextContext.use();
2091
+ const element = useTemplateRef("element");
2092
+ const toolbar = useRichTextToolbar(editor, element);
2093
+ const menuFocused = shallowRef(false);
2094
+ const visible = computed(() => __props.open ?? (editor.editable.value && (editor.focused.value || menuFocused.value) && !isCollapsed(editor.state.value.selection)));
2095
+ const anchor = shallowRef(null);
2096
+ watch([visible, () => editor.state.value.selection], () => {
2097
+ const root = editor.contentElement.value;
2098
+ const rect = visible.value && root ? selectionRect(root) : null;
2099
+ anchor.value = rect ? { getBoundingClientRect: () => rect } : null;
2100
+ }, { flush: "post" });
2101
+ const menuProps = computed(() => ({
2102
+ role: "toolbar",
2103
+ "aria-orientation": "horizontal",
2104
+ onKeydown: toolbar.onKeydown,
2105
+ onFocusin: () => {
2106
+ menuFocused.value = true;
2107
+ },
2108
+ onFocusout: (event) => {
2109
+ const next = event.relatedTarget;
2110
+ menuFocused.value = next instanceof Node && element.value?.contains(next) === true;
2111
+ }
2112
+ }));
2113
+ __expose({ element });
2114
+ return (_ctx, _cache) => {
2115
+ return openBlock(), createElementBlock("div", {
2116
+ "data-vize-ui": "rich-text-bubble-menu-host",
2117
+ part: "bubble-menu-host",
2118
+ hidden: visible.value ? void 0 : true
2119
+ }, [visible.value ? (openBlock(), createBlock(positioner_default, {
2120
+ key: 0,
2121
+ reference: anchor.value,
2122
+ placement: __props.placement,
2123
+ offset: __props.offset
2124
+ }, {
2125
+ default: withCtx(() => [createElementVNode("div", mergeProps({
2126
+ ref_key: "element",
2127
+ ref: element
2128
+ }, menuProps.value, {
2129
+ "aria-label": __props.ariaLabel,
2130
+ "aria-controls": unref(editor).contentId.value,
2131
+ "data-vize-ui": "rich-text-bubble-menu",
2132
+ part: "bubble-menu"
2133
+ }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_2)]),
2134
+ _: 3
2135
+ }, 8, [
2136
+ "reference",
2137
+ "placement",
2138
+ "offset"
2139
+ ])) : createCommentVNode("v-if", true)], 8, _hoisted_1$3);
2140
+ };
2141
+ }
2142
+ }), [["__scopeId", "data-v-92737893"]]);
2143
+ //#endregion
2144
+ //#region src/families/editor/rich-text/rich-text-content.vue?vue&type=script&setup=true&lang.ts
2145
+ const _hoisted_1$2 = [
2146
+ "id",
2147
+ "aria-label",
2148
+ "aria-labelledby",
2149
+ "aria-describedby",
2150
+ "spellcheck",
2151
+ "data-empty",
2152
+ "data-placeholder",
2153
+ "innerHTML"
2154
+ ];
2155
+ //#endregion
2156
+ //#region src/families/editor/rich-text/rich-text-content.vue
2157
+ var rich_text_content_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2158
+ __name: "rich-text-content",
2159
+ props: {
2160
+ ariaLabel: {
2161
+ type: String,
2162
+ required: false,
2163
+ default: () => void 0
2164
+ },
2165
+ ariaLabelledby: {
2166
+ type: String,
2167
+ required: false,
2168
+ default: () => void 0
2169
+ },
2170
+ ariaDescribedby: {
2171
+ type: String,
2172
+ required: false,
2173
+ default: () => void 0
2174
+ },
2175
+ placeholder: {
2176
+ type: String,
2177
+ required: false,
2178
+ default: () => void 0
2179
+ },
2180
+ spellcheck: {
2181
+ type: Boolean,
2182
+ required: false,
2183
+ default: true
2184
+ }
2185
+ },
2186
+ setup(__props, { expose: __expose }) {
2187
+ const editor = richTextContext.use();
2188
+ const element = useTemplateRef("element");
2189
+ const html = computed(() => richTextToHtml(editor.state.value.schema, editor.state.value.doc, { editor: true }));
2190
+ const empty = computed(() => {
2191
+ const blocks = editor.state.value.doc.content;
2192
+ const first = blocks[0];
2193
+ return blocks.length === 1 && first !== void 0 && first.content.every((node) => "text" in node && node.text === "");
2194
+ });
2195
+ let composing = false;
2196
+ let compositionSelection = null;
2197
+ let restoring = false;
2198
+ function syncFromDom() {
2199
+ if (!element.value || composing || restoring) return;
2200
+ const selection = readDomSelection(element.value);
2201
+ if (!selection) return;
2202
+ const current = editor.state.value.selection;
2203
+ if (comparePositions(selection.anchor, current.anchor) !== 0 || comparePositions(selection.head, current.head) !== 0) editor.select(selection);
2204
+ }
2205
+ function restoreSelection() {
2206
+ if (!element.value || composing || element.value.ownerDocument.activeElement !== element.value) return;
2207
+ restoring = true;
2208
+ try {
2209
+ writeDomSelection(element.value, editor.state.value.selection);
2210
+ } finally {
2211
+ restoring = false;
2212
+ }
2213
+ }
2214
+ watch(() => editor.state.value, () => void nextTick(restoreSelection), { flush: "post" });
2215
+ function run(command) {
2216
+ editor.run(command);
2217
+ }
2218
+ function onBeforeinput(event) {
2219
+ if (!editor.editable.value) {
2220
+ event.preventDefault();
2221
+ return;
2222
+ }
2223
+ if (event.inputType === "insertCompositionText" || composing) return;
2224
+ event.preventDefault();
2225
+ syncFromDom();
2226
+ const commands = editor.commands;
2227
+ switch (event.inputType) {
2228
+ case "insertText":
2229
+ case "insertReplacementText":
2230
+ if (event.data) editor.typeText(event.data);
2231
+ break;
2232
+ case "insertParagraph":
2233
+ run(commands.splitBlock);
2234
+ break;
2235
+ case "insertLineBreak":
2236
+ if (!editor.run(commands.insertInline("hardBreak"))) run(commands.splitBlock);
2237
+ break;
2238
+ case "deleteContentBackward":
2239
+ run(commands.deleteBackward("character"));
2240
+ break;
2241
+ case "deleteWordBackward":
2242
+ run(commands.deleteBackward("word"));
2243
+ break;
2244
+ case "deleteContentForward":
2245
+ run(commands.deleteForward("character"));
2246
+ break;
2247
+ case "deleteWordForward":
2248
+ run(commands.deleteForward("word"));
2249
+ break;
2250
+ case "deleteByCut":
2251
+ case "deleteContent":
2252
+ run(commands.deleteSelection);
2253
+ break;
2254
+ case "formatBold":
2255
+ run(commands.toggleMark("bold"));
2256
+ break;
2257
+ case "formatItalic":
2258
+ run(commands.toggleMark("italic"));
2259
+ break;
2260
+ case "formatUnderline":
2261
+ run(commands.toggleMark("underline"));
2262
+ break;
2263
+ case "historyUndo":
2264
+ run(commands.undo);
2265
+ break;
2266
+ case "historyRedo":
2267
+ run(commands.redo);
2268
+ break;
2269
+ default: break;
2270
+ }
2271
+ }
2272
+ function onKeydown(event) {
2273
+ if (event.isComposing || composing || event.defaultPrevented) return;
2274
+ const name = richTextKeyName(event);
2275
+ if (name === "Alt-F10") {
2276
+ const [first] = editor.toolbars.value;
2277
+ if (first?.()) event.preventDefault();
2278
+ return;
2279
+ }
2280
+ if (!editor.editable.value) return;
2281
+ syncFromDom();
2282
+ if (editor.runKey(name)) event.preventDefault();
2283
+ }
2284
+ function onPaste(event) {
2285
+ event.preventDefault();
2286
+ if (!editor.editable.value) return;
2287
+ const data = event.clipboardData;
2288
+ if (!data) return;
2289
+ syncFromDom();
2290
+ const schema = editor.state.value.schema;
2291
+ const htmlData = data.getData("text/html");
2292
+ const textData = data.getData("text/plain");
2293
+ const fragment = htmlData && element.value ? richTextFromHtml(schema, htmlData, { document: element.value.ownerDocument }) : textData ? richTextDocFromText(schema, textData) : null;
2294
+ if (fragment) run(editor.commands.insertContent(fragment));
2295
+ }
2296
+ function onCut(event) {
2297
+ const selection = element.value?.ownerDocument.getSelection();
2298
+ if (!element.value || !selection || selection.rangeCount === 0 || !event.clipboardData) return;
2299
+ event.preventDefault();
2300
+ const container = element.value.ownerDocument.createElement("div");
2301
+ container.append(selection.getRangeAt(0).cloneContents());
2302
+ event.clipboardData.setData("text/html", container.innerHTML);
2303
+ event.clipboardData.setData("text/plain", selection.toString());
2304
+ if (editor.editable.value && !isCollapsed(editor.state.value.selection)) {
2305
+ syncFromDom();
2306
+ run(editor.commands.deleteSelection);
2307
+ }
2308
+ }
2309
+ function onCompositionstart() {
2310
+ syncFromDom();
2311
+ composing = true;
2312
+ compositionSelection = editor.state.value.selection;
2313
+ }
2314
+ function onCompositionend(event) {
2315
+ composing = false;
2316
+ const selection = compositionSelection;
2317
+ compositionSelection = null;
2318
+ if (selection) editor.select(selection);
2319
+ const inserted = event.data ? editor.run(editor.commands.insertText(event.data)) : false;
2320
+ nextTick(() => {
2321
+ if (!inserted && element.value) element.value.innerHTML = html.value;
2322
+ restoreSelection();
2323
+ });
2324
+ }
2325
+ function onSelectionchange() {
2326
+ if (element.value && element.value.ownerDocument.activeElement === element.value) syncFromDom();
2327
+ }
2328
+ function onDragstart(event) {
2329
+ event.preventDefault();
2330
+ }
2331
+ onMounted(() => {
2332
+ editor.contentElement.value = element.value;
2333
+ element.value?.ownerDocument.addEventListener("selectionchange", onSelectionchange);
2334
+ });
2335
+ onUnmounted(() => {
2336
+ element.value?.ownerDocument.removeEventListener("selectionchange", onSelectionchange);
2337
+ if (editor.contentElement.value === element.value) editor.contentElement.value = null;
2338
+ });
2339
+ const contentProps = computed(() => ({
2340
+ role: "textbox",
2341
+ contenteditable: editor.editable.value,
2342
+ tabindex: 0,
2343
+ "aria-multiline": true,
2344
+ "aria-readonly": editor.editable.value ? void 0 : true,
2345
+ "aria-placeholder": empty.value ? __props.placeholder : void 0,
2346
+ onBeforeinput,
2347
+ onBlur: () => {
2348
+ editor.focused.value = false;
2349
+ },
2350
+ onCompositionend,
2351
+ onCompositionstart,
2352
+ onCut,
2353
+ onDragstart,
2354
+ onDrop: onDragstart,
2355
+ onFocus: () => {
2356
+ editor.focused.value = true;
2357
+ syncFromDom();
2358
+ },
2359
+ onKeydown,
2360
+ onPaste
2361
+ }));
2362
+ function focus() {
2363
+ element.value?.focus({ preventScroll: true });
2364
+ }
2365
+ __expose({
2366
+ element,
2367
+ focus
2368
+ });
2369
+ return (_ctx, _cache) => {
2370
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" eslint-disable-next-line vue/no-v-html -- markup comes from richTextToHtml: text is escaped and attributes pass the schema's sanitizing render specs "), createElementVNode("div", mergeProps({
2371
+ id: unref(editor).contentId.value,
2372
+ ref_key: "element",
2373
+ ref: element
2374
+ }, contentProps.value, {
2375
+ "aria-label": __props.ariaLabel,
2376
+ "aria-labelledby": __props.ariaLabelledby,
2377
+ "aria-describedby": __props.ariaDescribedby,
2378
+ spellcheck: __props.spellcheck ? "true" : "false",
2379
+ "data-vize-ui": "rich-text-content",
2380
+ part: "content",
2381
+ "data-empty": empty.value ? "true" : void 0,
2382
+ "data-placeholder": __props.placeholder,
2383
+ innerHTML: html.value
2384
+ }), null, 16, _hoisted_1$2)], 2112);
2385
+ };
2386
+ }
2387
+ }), [["__scopeId", "data-v-f834c1a7"]]);
2388
+ //#endregion
2389
+ //#region src/families/editor/rich-text/rich-text-toolbar.vue?vue&type=script&setup=true&lang.ts
2390
+ const _hoisted_1$1 = ["aria-label", "aria-controls"];
2391
+ //#endregion
2392
+ //#region src/families/editor/rich-text/rich-text-toolbar.vue
2393
+ var rich_text_toolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2394
+ __name: "rich-text-toolbar",
2395
+ props: { ariaLabel: {
2396
+ type: String,
2397
+ required: false,
2398
+ default: "Formatting"
2399
+ } },
2400
+ setup(__props, { expose: __expose }) {
2401
+ const editor = richTextContext.use();
2402
+ const element = useTemplateRef("element");
2403
+ const toolbar = useRichTextToolbar(editor, element);
2404
+ const toolbarProps = computed(() => ({
2405
+ role: "toolbar",
2406
+ "aria-orientation": "horizontal",
2407
+ onKeydown: toolbar.onKeydown
2408
+ }));
2409
+ __expose({ element });
2410
+ return (_ctx, _cache) => {
2411
+ return openBlock(), createElementBlock("div", mergeProps({
2412
+ ref_key: "element",
2413
+ ref: element
2414
+ }, toolbarProps.value, {
2415
+ "aria-label": __props.ariaLabel,
2416
+ "aria-controls": unref(editor).contentId.value,
2417
+ "data-vize-ui": "rich-text-toolbar",
2418
+ part: "toolbar"
2419
+ }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1$1);
2420
+ };
2421
+ }
2422
+ }), [["__scopeId", "data-v-da012c62"]]);
2423
+ //#endregion
2424
+ //#region src/families/editor/rich-text/rich-text-toolbar-button.vue?vue&type=script&setup=true&lang.ts
2425
+ const _hoisted_1 = [
2426
+ "aria-label",
2427
+ "aria-pressed",
2428
+ "aria-disabled",
2429
+ "data-active",
2430
+ "data-disabled"
2431
+ ];
2432
+ //#endregion
2433
+ //#region src/families/editor/rich-text/rich-text-toolbar-button.vue
2434
+ var rich_text_toolbar_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2435
+ __name: "rich-text-toolbar-button",
2436
+ props: {
2437
+ command: {
2438
+ type: Function,
2439
+ required: true
2440
+ },
2441
+ active: {
2442
+ type: Function,
2443
+ required: false,
2444
+ default: void 0
2445
+ },
2446
+ ariaLabel: {
2447
+ type: String,
2448
+ required: false,
2449
+ default: () => void 0
2450
+ },
2451
+ disabled: {
2452
+ type: Boolean,
2453
+ required: false,
2454
+ default: false
2455
+ }
2456
+ },
2457
+ setup(__props) {
2458
+ const editor = richTextContext.use();
2459
+ const toolbar = richTextToolbarContext.useOptional();
2460
+ const element = useTemplateRef("element");
2461
+ const key = useDeterministicId({ hint: "rich-text-tool" });
2462
+ const unavailable = computed(() => __props.disabled || !editor.can(__props.command));
2463
+ const pressed = computed(() => __props.active ? __props.active(editor.state.value) : null);
2464
+ const registration = toolbar?.registry.register({
2465
+ key: key.value,
2466
+ value: null,
2467
+ element,
2468
+ disabled: () => unavailable.value
2469
+ });
2470
+ onScopeDispose(() => registration?.unregister());
2471
+ const tabStop = computed(() => {
2472
+ if (!toolbar) return true;
2473
+ return (toolbar.registry.activeKey.value ?? toolbar.registry.navigableItems.value[0]?.key) === key.value;
2474
+ });
2475
+ function onClick() {
2476
+ if (unavailable.value) return;
2477
+ editor.run(__props.command);
2478
+ editor.focus();
2479
+ }
2480
+ const buttonProps = computed(() => ({
2481
+ tabindex: tabStop.value ? 0 : -1,
2482
+ onMousedown: (event) => event.preventDefault(),
2483
+ onFocus: () => toolbar?.registry.setActiveKey(key.value),
2484
+ onClick
2485
+ }));
2486
+ return (_ctx, _cache) => {
2487
+ return openBlock(), createElementBlock("button", mergeProps({
2488
+ ref_key: "element",
2489
+ ref: element
2490
+ }, buttonProps.value, {
2491
+ type: "button",
2492
+ "aria-label": __props.ariaLabel,
2493
+ "aria-pressed": pressed.value === null ? void 0 : pressed.value ? "true" : "false",
2494
+ "aria-disabled": unavailable.value ? "true" : void 0,
2495
+ "data-vize-ui": "rich-text-toolbar-button",
2496
+ part: "toolbar-button",
2497
+ "data-active": pressed.value ? "true" : void 0,
2498
+ "data-disabled": unavailable.value ? "true" : void 0
2499
+ }), [renderSlot(_ctx.$slots, "default", {
2500
+ active: pressed.value === true,
2501
+ disabled: unavailable.value
2502
+ }, void 0, true)], 16, _hoisted_1);
2503
+ };
2504
+ }
2505
+ }), [["__scopeId", "data-v-8934f908"]]);
2506
+ //#endregion
2507
+ //#region src/families/editor/rich-text/rich-text-schema.ts
2508
+ const schemaDiagnostic = "VIZE_UI_RICH_TEXT_SCHEMA";
2509
+ const reservedNames = new Set(["doc", "text"]);
2510
+ /**
2511
+ * Validate and freeze a schema. Node and mark names, roles, and attribute
2512
+ * types stay literal, so documents and commands are typed from it.
2513
+ *
2514
+ * ```ts
2515
+ * const schema = defineRichTextSchema({
2516
+ * nodes: { paragraph: paragraphSpec(), heading: headingSpec(), image: imageSpec() },
2517
+ * marks: { bold: boldSpec(), link: linkSpec() },
2518
+ * });
2519
+ * ```
2520
+ */
2521
+ function defineRichTextSchema(definition) {
2522
+ const names = Object.keys(definition.nodes);
2523
+ for (const name of [...names, ...Object.keys(definition.marks)]) if (reservedNames.has(name) || !/^[A-Za-z][\w-]*$/u.test(name)) throw new TypeError(`${schemaDiagnostic}: "${name}" is not a valid node or mark name`);
2524
+ const textblocks = names.filter((name) => definition.nodes[name]?.role === "textblock");
2525
+ const defaultBlock = definition.defaultBlock ?? textblocks[0];
2526
+ if (defaultBlock === void 0 || definition.nodes[defaultBlock]?.role !== "textblock") throw new TypeError(`${schemaDiagnostic}: the default block must be a textblock node`);
2527
+ if (names.some((name) => definition.nodes[name]?.role === "list") !== names.some((name) => definition.nodes[name]?.role === "listItem")) throw new TypeError(`${schemaDiagnostic}: list and listItem nodes must be declared together`);
2528
+ return Object.freeze({
2529
+ nodes: definition.nodes,
2530
+ marks: definition.marks,
2531
+ defaultBlock
2532
+ });
2533
+ }
2534
+ /** Declare a custom node type with inferred role and attributes. */
2535
+ function richTextNode(spec) {
2536
+ return Object.freeze(spec);
2537
+ }
2538
+ /** Declare a custom mark type with inferred attributes. */
2539
+ function richTextMark(spec) {
2540
+ return Object.freeze(spec);
2541
+ }
2542
+ const safeUrl = /^(?:https?:|mailto:|tel:|\/|\.{0,2}\/|#|[^:]*$)/iu;
2543
+ const safeImageUrl = /^(?:https?:|data:image\/(?:png|gif|jpe?g|webp|avif);|\/|\.{0,2}\/|[^:]*$)/iu;
2544
+ /** Whether a link target uses a safe scheme (http(s), mailto, tel, or relative). */
2545
+ function isSafeUrl(value) {
2546
+ return safeUrl.test(value.trim());
2547
+ }
2548
+ /** Whether an image source uses a safe scheme (http(s), raster data URLs, or relative). */
2549
+ function isSafeImageUrl(value) {
2550
+ return safeImageUrl.test(value.trim());
2551
+ }
2552
+ /** Paragraph textblock. */
2553
+ function paragraphSpec() {
2554
+ return richTextNode({
2555
+ role: "textblock",
2556
+ defaults: {},
2557
+ render: () => ({ tag: "p" }),
2558
+ parse: [{ tag: "p" }, { tag: "div" }]
2559
+ });
2560
+ }
2561
+ /** Heading textblock with a `level` attribute (1–6). */
2562
+ function headingSpec() {
2563
+ return richTextNode({
2564
+ role: "textblock",
2565
+ defaults: { level: 1 },
2566
+ render: ({ level }) => ({ tag: `h${Math.min(6, Math.max(1, Math.trunc(level)))}` }),
2567
+ parse: [
2568
+ 1,
2569
+ 2,
2570
+ 3,
2571
+ 4,
2572
+ 5,
2573
+ 6
2574
+ ].map((level) => ({
2575
+ tag: `h${level}`,
2576
+ attrs: () => ({ level })
2577
+ }))
2578
+ });
2579
+ }
2580
+ /** Code block textblock (plain text, no marks). */
2581
+ function codeBlockSpec() {
2582
+ return richTextNode({
2583
+ role: "textblock",
2584
+ code: true,
2585
+ defaults: { language: null },
2586
+ render: ({ language }) => ({
2587
+ tag: "pre",
2588
+ attrs: { "data-language": language }
2589
+ }),
2590
+ parse: [{
2591
+ tag: "pre",
2592
+ attrs: (element) => ({ language: element.getAttribute("data-language") })
2593
+ }]
2594
+ });
2595
+ }
2596
+ /** Blockquote container. */
2597
+ function blockquoteSpec() {
2598
+ return richTextNode({
2599
+ role: "container",
2600
+ defaults: {},
2601
+ render: () => ({ tag: "blockquote" }),
2602
+ parse: [{ tag: "blockquote" }]
2603
+ });
2604
+ }
2605
+ /** Bullet list. */
2606
+ function bulletListSpec() {
2607
+ return richTextNode({
2608
+ role: "list",
2609
+ defaults: {},
2610
+ render: () => ({ tag: "ul" }),
2611
+ parse: [{ tag: "ul" }]
2612
+ });
2613
+ }
2614
+ /** Ordered list with a `start` attribute. */
2615
+ function orderedListSpec() {
2616
+ return richTextNode({
2617
+ role: "list",
2618
+ defaults: { start: 1 },
2619
+ render: ({ start }) => ({
2620
+ tag: "ol",
2621
+ attrs: { start: start === 1 ? null : String(start) }
2622
+ }),
2623
+ parse: [{
2624
+ tag: "ol",
2625
+ attrs: (element) => {
2626
+ const start = Number(element.getAttribute("start") ?? 1);
2627
+ return { start: Number.isSafeInteger(start) ? start : 1 };
2628
+ }
2629
+ }]
2630
+ });
2631
+ }
2632
+ /** List item. */
2633
+ function listItemSpec() {
2634
+ return richTextNode({
2635
+ role: "listItem",
2636
+ defaults: {},
2637
+ render: () => ({ tag: "li" }),
2638
+ parse: [{ tag: "li" }]
2639
+ });
2640
+ }
2641
+ /** Inline image with sanitized `src`. */
2642
+ function imageSpec() {
2643
+ return richTextNode({
2644
+ role: "inline",
2645
+ defaults: {
2646
+ src: "",
2647
+ alt: ""
2648
+ },
2649
+ render: ({ src, alt }) => ({
2650
+ tag: "img",
2651
+ attrs: {
2652
+ src: isSafeImageUrl(src) ? src : null,
2653
+ alt
2654
+ }
2655
+ }),
2656
+ parse: [{
2657
+ tag: "img",
2658
+ attrs: (element) => {
2659
+ const src = element.getAttribute("src") ?? "";
2660
+ return isSafeImageUrl(src) && src !== "" ? {
2661
+ src,
2662
+ alt: element.getAttribute("alt") ?? ""
2663
+ } : null;
2664
+ }
2665
+ }]
2666
+ });
2667
+ }
2668
+ /** Inline hard line break. */
2669
+ function hardBreakSpec() {
2670
+ return richTextNode({
2671
+ role: "inline",
2672
+ defaults: {},
2673
+ render: () => ({ tag: "br" }),
2674
+ parse: [{ tag: "br" }]
2675
+ });
2676
+ }
2677
+ /** Bold mark. */
2678
+ function boldSpec() {
2679
+ return richTextMark({
2680
+ defaults: {},
2681
+ render: () => ({ tag: "strong" }),
2682
+ parse: [{ tag: "strong" }, { tag: "b" }]
2683
+ });
2684
+ }
2685
+ /** Italic mark. */
2686
+ function italicSpec() {
2687
+ return richTextMark({
2688
+ defaults: {},
2689
+ render: () => ({ tag: "em" }),
2690
+ parse: [{ tag: "em" }, { tag: "i" }]
2691
+ });
2692
+ }
2693
+ /** Underline mark. */
2694
+ function underlineSpec() {
2695
+ return richTextMark({
2696
+ defaults: {},
2697
+ render: () => ({ tag: "u" }),
2698
+ parse: [{ tag: "u" }]
2699
+ });
2700
+ }
2701
+ /** Strikethrough mark. */
2702
+ function strikeSpec() {
2703
+ return richTextMark({
2704
+ defaults: {},
2705
+ render: () => ({ tag: "s" }),
2706
+ parse: [
2707
+ { tag: "s" },
2708
+ { tag: "del" },
2709
+ { tag: "strike" }
2710
+ ]
2711
+ });
2712
+ }
2713
+ /** Inline code mark. */
2714
+ function codeSpec() {
2715
+ return richTextMark({
2716
+ defaults: {},
2717
+ render: () => ({ tag: "code" }),
2718
+ parse: [{ tag: "code" }]
2719
+ });
2720
+ }
2721
+ /** Link mark with a sanitized `href`; not inclusive, so typing after a link leaves it. */
2722
+ function linkSpec() {
2723
+ return richTextMark({
2724
+ inclusive: false,
2725
+ defaults: { href: "" },
2726
+ render: ({ href }) => ({
2727
+ tag: "a",
2728
+ attrs: {
2729
+ href: isSafeUrl(href) ? href : null,
2730
+ rel: "noopener noreferrer"
2731
+ }
2732
+ }),
2733
+ parse: [{
2734
+ tag: "a",
2735
+ attrs: (element) => {
2736
+ const href = element.getAttribute("href") ?? "";
2737
+ return href !== "" && isSafeUrl(href) ? { href } : null;
2738
+ }
2739
+ }]
2740
+ });
2741
+ }
2742
+ /** A schema with every built-in node and mark. */
2743
+ function createDefaultRichTextSchema() {
2744
+ return defineRichTextSchema({
2745
+ nodes: {
2746
+ paragraph: paragraphSpec(),
2747
+ heading: headingSpec(),
2748
+ blockquote: blockquoteSpec(),
2749
+ codeBlock: codeBlockSpec(),
2750
+ bulletList: bulletListSpec(),
2751
+ orderedList: orderedListSpec(),
2752
+ listItem: listItemSpec(),
2753
+ image: imageSpec(),
2754
+ hardBreak: hardBreakSpec()
2755
+ },
2756
+ marks: {
2757
+ bold: boldSpec(),
2758
+ italic: italicSpec(),
2759
+ underline: underlineSpec(),
2760
+ strike: strikeSpec(),
2761
+ code: codeSpec(),
2762
+ link: linkSpec()
2763
+ }
2764
+ });
2765
+ }
2766
+ //#endregion
2767
+ export { emptyRichTextDoc as $, rich_text_root_default as A, activeMarks as B, rich_text_toolbar_default as C, positionFromDom as D, domFromPosition as E, insertTextWithRules as F, isWrappedIn as G, createUntypedRichTextCommands as H, markInputRule as I, redo as J, createRichTextState as K, escapeHtml as L, richTextKeyName as M, blockInputRule as N, readDomSelection as O, defaultRichTextInputRules as P, assertRichTextDoc as Q, richTextFromHtml as R, rich_text_toolbar_button_default as S, rich_text_bubble_menu_default as T, isBlockActive as U, createRichTextCommands as V, isMarkActive as W, toRtState as X, toRichTextState as Y, undo as Z, paragraphSpec as _, codeSpec as a, strikeSpec as b, hardBreakSpec as c, isSafeImageUrl as d, isRichTextDoc as et, isSafeUrl as f, orderedListSpec as g, listItemSpec as h, codeBlockSpec as i, defaultRichTextKeymap as j, writeDomSelection as k, headingSpec as l, linkSpec as m, boldSpec as n, textContent as nt, createDefaultRichTextSchema as o, italicSpec as p, createTransaction as q, bulletListSpec as r, validateRichTextDoc as rt, defineRichTextSchema as s, blockquoteSpec as t, richTextDocFromText as tt, imageSpec as u, richTextMark as v, rich_text_content_default as w, underlineSpec as x, richTextNode as y, richTextToHtml as z };