@threadlabs/looma 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. package/README.md +43 -12
  2. package/components/shared/editor.js +69 -0
  3. package/components/shared/input-modality.d.ts +8 -0
  4. package/components/shared/input-modality.js +22 -0
  5. package/components/shared/overlay.js +281 -0
  6. package/components/shared/trigger.js +17 -0
  7. package/components/ui-affordance-scope/ui-affordance-scope.html +22 -0
  8. package/components/ui-affordance-scope/ui-affordance-scope.js +76 -0
  9. package/components/ui-avatar/ui-avatar.html +59 -0
  10. package/components/ui-avatar/ui-avatar.js +47 -0
  11. package/components/ui-avatar-group/ui-avatar-group.html +62 -0
  12. package/components/ui-avatar-group/ui-avatar-group.js +27 -0
  13. package/components/ui-badge/ui-badge.html +94 -0
  14. package/components/ui-button/ui-button.html +226 -0
  15. package/components/ui-callout/ui-callout.html +104 -0
  16. package/components/ui-checkbox/ui-checkbox.html +107 -0
  17. package/components/ui-checkbox/ui-checkbox.js +24 -0
  18. package/components/ui-cluster/ui-cluster.html +49 -0
  19. package/components/ui-combobox/ui-combobox.html +377 -0
  20. package/components/ui-combobox/ui-combobox.js +432 -0
  21. package/components/ui-container/ui-container.html +39 -0
  22. package/components/ui-context-menu/ui-context-menu.html +75 -0
  23. package/components/ui-context-menu/ui-context-menu.js +143 -0
  24. package/components/ui-dialog/ui-dialog.html +178 -0
  25. package/components/ui-dialog/ui-dialog.js +105 -0
  26. package/components/ui-disclosure/ui-disclosure.html +109 -0
  27. package/components/ui-disclosure/ui-disclosure.js +28 -0
  28. package/components/ui-editable/ui-editable.html +163 -0
  29. package/components/ui-editable/ui-editable.js +113 -0
  30. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +97 -0
  31. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +71 -0
  32. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +157 -0
  33. package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +50 -0
  34. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +197 -0
  35. package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +44 -0
  36. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +164 -0
  37. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +75 -0
  38. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +422 -0
  39. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +119 -0
  40. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +271 -0
  41. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +54 -0
  42. package/components/ui-editor-toolbar/ui-editor-toolbar.html +110 -0
  43. package/components/ui-floating-action-button/ui-floating-action-button.html +83 -0
  44. package/components/ui-form-field/ui-form-field.html +45 -0
  45. package/components/ui-form-field/ui-form-field.js +71 -0
  46. package/components/ui-grid/ui-grid.html +46 -0
  47. package/components/ui-icon/ui-icon.html +34 -0
  48. package/components/ui-icon/ui-icon.js +8 -0
  49. package/components/ui-icon-button/ui-icon-button.html +180 -0
  50. package/components/ui-icon-button/ui-icon-button.js +7 -0
  51. package/components/ui-input/ui-input.html +81 -0
  52. package/components/ui-input/ui-input.js +7 -0
  53. package/components/ui-menu/ui-menu.html +87 -0
  54. package/components/ui-menu/ui-menu.js +114 -0
  55. package/components/ui-menu-item/ui-menu-item.html +37 -0
  56. package/components/ui-popover/ui-popover.html +85 -0
  57. package/components/ui-popover/ui-popover.js +70 -0
  58. package/components/ui-radio/ui-radio.html +57 -0
  59. package/components/ui-radio/ui-radio.js +25 -0
  60. package/components/ui-radio-group/ui-radio-group.html +51 -0
  61. package/components/ui-radio-group/ui-radio-group.js +42 -0
  62. package/components/ui-reel/ui-reel.html +67 -0
  63. package/components/ui-search-result-row/ui-search-result-row.html +101 -0
  64. package/components/ui-search-shell/ui-search-shell.html +142 -0
  65. package/components/ui-search-shell/ui-search-shell.js +60 -0
  66. package/components/ui-select/ui-select.html +87 -0
  67. package/components/ui-select/ui-select.js +16 -0
  68. package/components/ui-separator/ui-separator.html +22 -0
  69. package/components/ui-sidebar/ui-sidebar.html +183 -0
  70. package/components/ui-sidebar/ui-sidebar.js +178 -0
  71. package/components/ui-stack/ui-stack.html +59 -0
  72. package/components/ui-switch/ui-switch.html +95 -0
  73. package/components/ui-switch/ui-switch.js +24 -0
  74. package/components/ui-switcher/ui-switcher.html +65 -0
  75. package/components/ui-tabs/ui-tabs.html +134 -0
  76. package/components/ui-tabs/ui-tabs.js +81 -0
  77. package/components/ui-textarea/ui-textarea.html +80 -0
  78. package/components/ui-textarea/ui-textarea.js +7 -0
  79. package/components/ui-toast-region/ui-toast-region.html +127 -0
  80. package/components/ui-toast-region/ui-toast-region.js +119 -0
  81. package/components/ui-tooltip/ui-tooltip.html +122 -0
  82. package/components/ui-tooltip/ui-tooltip.js +134 -0
  83. package/components/ui-top-bar/ui-top-bar.html +53 -0
  84. package/components/ui-tree/ui-tree.html +29 -0
  85. package/components/ui-tree/ui-tree.js +250 -0
  86. package/components/ui-tree-item/ui-tree-item.html +326 -0
  87. package/components/ui-tree-item/ui-tree-item.js +94 -0
  88. package/dist/index.d.ts +4 -414
  89. package/dist/index.js +55 -657
  90. package/editor/chunks/extensions.js +7267 -0
  91. package/editor/chunks/table-backgrounds.js +51 -0
  92. package/editor/chunks/ui.js +92 -0
  93. package/editor/extensions/callout.d.ts +20 -0
  94. package/editor/extensions/index.d.ts +12 -441
  95. package/editor/extensions/index.js +3 -64
  96. package/editor/extensions/list-behavior.d.ts +7 -0
  97. package/editor/extensions/mention.d.ts +35 -0
  98. package/editor/extensions/preset.d.ts +42 -0
  99. package/editor/extensions/slash-command.d.ts +80 -0
  100. package/editor/extensions/smart-paste.d.ts +13 -0
  101. package/editor/extensions/table-commands.d.ts +114 -0
  102. package/editor/extensions/table-formatting.d.ts +60 -0
  103. package/editor/icons.d.ts +55 -0
  104. package/editor/index.d.ts +8 -6
  105. package/editor/index.js +96 -71
  106. package/editor/insert-table-grid.d.ts +7 -0
  107. package/editor/mention-contract.d.ts +78 -0
  108. package/editor/mention-menu.d.ts +9 -0
  109. package/editor/slash-menu.d.ts +29 -0
  110. package/editor/table-backgrounds.d.ts +43 -0
  111. package/editor/table-context-menu.d.ts +12 -0
  112. package/editor/table-overlay.d.ts +79 -0
  113. package/editor/ui.d.ts +10 -50
  114. package/editor/ui.js +3 -14
  115. package/editor/viewport.d.ts +15 -0
  116. package/package.json +84 -60
  117. package/styles/ui-affordance-scope.css +19 -0
  118. package/styles/ui-avatar-group.css +56 -0
  119. package/styles/ui-avatar.css +47 -0
  120. package/styles/ui-badge.css +91 -0
  121. package/styles/ui-button.css +236 -0
  122. package/styles/ui-callout.css +76 -0
  123. package/styles/ui-checkbox.css +98 -0
  124. package/styles/ui-cluster.css +46 -0
  125. package/styles/ui-combobox.css +213 -0
  126. package/styles/ui-container.css +36 -0
  127. package/styles/ui-context-menu.css +68 -0
  128. package/styles/ui-dialog.css +160 -0
  129. package/styles/ui-disclosure.css +95 -0
  130. package/styles/ui-editable.css +139 -0
  131. package/styles/ui-editor-insert-table-grid.css +65 -0
  132. package/styles/ui-editor-mention-menu.css +121 -0
  133. package/styles/ui-editor-slash-menu.css +179 -0
  134. package/styles/ui-editor-table-context-menu.css +118 -0
  135. package/styles/ui-editor-table-overlay.css +318 -0
  136. package/styles/ui-editor-table-toolbar.css +191 -0
  137. package/styles/ui-editor-toolbar.css +115 -0
  138. package/styles/ui-floating-action-button.css +82 -0
  139. package/styles/ui-form-field.css +36 -0
  140. package/styles/ui-grid.css +43 -0
  141. package/styles/ui-icon-button.css +184 -0
  142. package/styles/ui-icon.css +23 -0
  143. package/styles/ui-input.css +82 -0
  144. package/styles/ui-menu-item.css +34 -0
  145. package/styles/ui-menu.css +80 -0
  146. package/styles/ui-popover.css +76 -0
  147. package/styles/ui-radio-group.css +38 -0
  148. package/styles/ui-radio.css +46 -0
  149. package/styles/ui-reel.css +63 -0
  150. package/styles/ui-search-result-row.css +92 -0
  151. package/styles/ui-search-shell.css +128 -0
  152. package/styles/ui-select.css +86 -0
  153. package/styles/ui-separator.css +16 -0
  154. package/styles/ui-sidebar.css +166 -0
  155. package/styles/ui-stack.css +55 -0
  156. package/styles/ui-switch.css +88 -0
  157. package/styles/ui-switcher.css +61 -0
  158. package/styles/ui-tabs.css +114 -0
  159. package/styles/ui-textarea.css +77 -0
  160. package/styles/ui-toast-region.css +103 -0
  161. package/styles/ui-tooltip.css +113 -0
  162. package/styles/ui-top-bar.css +51 -0
  163. package/styles/ui-tree-item.css +267 -0
  164. package/styles/ui-tree.css +16 -0
  165. package/vanilla/UiAffordanceScope.d.ts +14 -0
  166. package/vanilla/UiAffordanceScope.js +30 -0
  167. package/vanilla/UiAvatar.d.ts +17 -0
  168. package/vanilla/UiAvatar.js +41 -0
  169. package/vanilla/UiAvatarGroup.d.ts +15 -0
  170. package/vanilla/UiAvatarGroup.js +40 -0
  171. package/vanilla/UiBadge.d.ts +15 -0
  172. package/vanilla/UiBadge.js +30 -0
  173. package/vanilla/UiButton.d.ts +16 -0
  174. package/vanilla/UiButton.js +32 -0
  175. package/vanilla/UiCallout.d.ts +14 -0
  176. package/vanilla/UiCallout.js +124 -0
  177. package/vanilla/UiCheckbox.d.ts +19 -0
  178. package/vanilla/UiCheckbox.js +47 -0
  179. package/vanilla/UiCluster.d.ts +15 -0
  180. package/vanilla/UiCluster.js +30 -0
  181. package/vanilla/UiCombobox.d.ts +42 -0
  182. package/vanilla/UiCombobox.js +194 -0
  183. package/vanilla/UiContainer.d.ts +15 -0
  184. package/vanilla/UiContainer.js +30 -0
  185. package/vanilla/UiContextMenu.d.ts +18 -0
  186. package/vanilla/UiContextMenu.js +35 -0
  187. package/vanilla/UiDialog.d.ts +19 -0
  188. package/vanilla/UiDialog.js +53 -0
  189. package/vanilla/UiDisclosure.d.ts +18 -0
  190. package/vanilla/UiDisclosure.js +49 -0
  191. package/vanilla/UiEditable.d.ts +22 -0
  192. package/vanilla/UiEditable.js +59 -0
  193. package/vanilla/UiEditorInsertTableGrid.d.ts +18 -0
  194. package/vanilla/UiEditorInsertTableGrid.js +46 -0
  195. package/vanilla/UiEditorMentionMenu.d.ts +21 -0
  196. package/vanilla/UiEditorMentionMenu.js +63 -0
  197. package/vanilla/UiEditorSlashMenu.d.ts +20 -0
  198. package/vanilla/UiEditorSlashMenu.js +74 -0
  199. package/vanilla/UiEditorTableContextMenu.d.ts +17 -0
  200. package/vanilla/UiEditorTableContextMenu.js +69 -0
  201. package/vanilla/UiEditorTableOverlay.d.ts +16 -0
  202. package/vanilla/UiEditorTableOverlay.js +113 -0
  203. package/vanilla/UiEditorTableToolbar.d.ts +18 -0
  204. package/vanilla/UiEditorTableToolbar.js +121 -0
  205. package/vanilla/UiEditorToolbar.d.ts +14 -0
  206. package/vanilla/UiEditorToolbar.js +30 -0
  207. package/vanilla/UiFloatingActionButton.d.ts +16 -0
  208. package/vanilla/UiFloatingActionButton.js +35 -0
  209. package/vanilla/UiFormField.d.ts +16 -0
  210. package/vanilla/UiFormField.js +54 -0
  211. package/vanilla/UiGrid.d.ts +15 -0
  212. package/vanilla/UiGrid.js +30 -0
  213. package/vanilla/UiIcon.d.ts +14 -0
  214. package/vanilla/UiIcon.js +40 -0
  215. package/vanilla/UiIconButton.d.ts +19 -0
  216. package/vanilla/UiIconButton.js +37 -0
  217. package/vanilla/UiInput.d.ts +18 -0
  218. package/vanilla/UiInput.js +37 -0
  219. package/vanilla/UiMenu.d.ts +19 -0
  220. package/vanilla/UiMenu.js +35 -0
  221. package/vanilla/UiMenuItem.d.ts +15 -0
  222. package/vanilla/UiMenuItem.js +43 -0
  223. package/vanilla/UiPopover.d.ts +18 -0
  224. package/vanilla/UiPopover.js +33 -0
  225. package/vanilla/UiRadio.d.ts +19 -0
  226. package/vanilla/UiRadio.js +48 -0
  227. package/vanilla/UiRadioGroup.d.ts +21 -0
  228. package/vanilla/UiRadioGroup.js +35 -0
  229. package/vanilla/UiReel.d.ts +16 -0
  230. package/vanilla/UiReel.js +34 -0
  231. package/vanilla/UiSearchResultRow.d.ts +15 -0
  232. package/vanilla/UiSearchResultRow.js +82 -0
  233. package/vanilla/UiSearchShell.d.ts +18 -0
  234. package/vanilla/UiSearchShell.js +74 -0
  235. package/vanilla/UiSelect.d.ts +18 -0
  236. package/vanilla/UiSelect.js +42 -0
  237. package/vanilla/UiSeparator.d.ts +14 -0
  238. package/vanilla/UiSeparator.js +28 -0
  239. package/vanilla/UiSidebar.d.ts +24 -0
  240. package/vanilla/UiSidebar.js +47 -0
  241. package/vanilla/UiStack.d.ts +16 -0
  242. package/vanilla/UiStack.js +32 -0
  243. package/vanilla/UiSwitch.d.ts +18 -0
  244. package/vanilla/UiSwitch.js +46 -0
  245. package/vanilla/UiSwitcher.d.ts +16 -0
  246. package/vanilla/UiSwitcher.js +32 -0
  247. package/vanilla/UiTabs.d.ts +18 -0
  248. package/vanilla/UiTabs.js +47 -0
  249. package/vanilla/UiTextarea.d.ts +19 -0
  250. package/vanilla/UiTextarea.js +40 -0
  251. package/vanilla/UiToastRegion.d.ts +20 -0
  252. package/vanilla/UiToastRegion.js +58 -0
  253. package/vanilla/UiTooltip.d.ts +21 -0
  254. package/vanilla/UiTooltip.js +34 -0
  255. package/vanilla/UiTopBar.d.ts +13 -0
  256. package/vanilla/UiTopBar.js +59 -0
  257. package/vanilla/UiTree.d.ts +18 -0
  258. package/vanilla/UiTree.js +31 -0
  259. package/vanilla/UiTreeItem.d.ts +26 -0
  260. package/vanilla/UiTreeItem.js +164 -0
  261. package/vanilla/index.js +48 -0
  262. package/vue/UiAffordanceScope.d.ts +18 -0
  263. package/vue/UiAffordanceScope.js +2 -0
  264. package/vue/UiAffordanceScope.vue +118 -0
  265. package/vue/UiAvatar.d.ts +23 -0
  266. package/vue/UiAvatar.js +2 -0
  267. package/vue/UiAvatar.vue +152 -0
  268. package/vue/UiAvatarGroup.d.ts +20 -0
  269. package/vue/UiAvatarGroup.js +2 -0
  270. package/vue/UiAvatarGroup.vue +167 -0
  271. package/vue/UiBadge.d.ts +20 -0
  272. package/vue/UiBadge.js +2 -0
  273. package/vue/UiBadge.vue +123 -0
  274. package/vue/UiButton.d.ts +22 -0
  275. package/vue/UiButton.js +2 -0
  276. package/vue/UiButton.vue +257 -0
  277. package/vue/UiCallout.d.ts +18 -0
  278. package/vue/UiCallout.js +2 -0
  279. package/vue/UiCallout.vue +104 -0
  280. package/vue/UiCheckbox.d.ts +38 -0
  281. package/vue/UiCheckbox.js +2 -0
  282. package/vue/UiCheckbox.vue +216 -0
  283. package/vue/UiCluster.d.ts +17 -0
  284. package/vue/UiCluster.js +2 -0
  285. package/vue/UiCluster.vue +75 -0
  286. package/vue/UiCombobox.d.ts +255 -0
  287. package/vue/UiCombobox.js +2 -0
  288. package/vue/UiCombobox.vue +466 -0
  289. package/vue/UiContainer.d.ts +17 -0
  290. package/vue/UiContainer.js +2 -0
  291. package/vue/UiContainer.vue +65 -0
  292. package/vue/UiContextMenu.d.ts +50 -0
  293. package/vue/UiContextMenu.js +2 -0
  294. package/vue/UiContextMenu.vue +166 -0
  295. package/vue/UiDialog.d.ts +39 -0
  296. package/vue/UiDialog.js +2 -0
  297. package/vue/UiDialog.vue +273 -0
  298. package/vue/UiDisclosure.d.ts +44 -0
  299. package/vue/UiDisclosure.js +2 -0
  300. package/vue/UiDisclosure.vue +211 -0
  301. package/vue/UiEditable.d.ts +48 -0
  302. package/vue/UiEditable.js +2 -0
  303. package/vue/UiEditable.vue +267 -0
  304. package/vue/UiEditorInsertTableGrid.d.ts +26 -0
  305. package/vue/UiEditorInsertTableGrid.js +2 -0
  306. package/vue/UiEditorInsertTableGrid.vue +210 -0
  307. package/vue/UiEditorMentionMenu.d.ts +44 -0
  308. package/vue/UiEditorMentionMenu.js +2 -0
  309. package/vue/UiEditorMentionMenu.vue +284 -0
  310. package/vue/UiEditorSlashMenu.d.ts +41 -0
  311. package/vue/UiEditorSlashMenu.js +2 -0
  312. package/vue/UiEditorSlashMenu.vue +306 -0
  313. package/vue/UiEditorTableContextMenu.d.ts +19 -0
  314. package/vue/UiEditorTableContextMenu.js +2 -0
  315. package/vue/UiEditorTableContextMenu.vue +252 -0
  316. package/vue/UiEditorTableOverlay.d.ts +66 -0
  317. package/vue/UiEditorTableOverlay.js +2 -0
  318. package/vue/UiEditorTableOverlay.vue +455 -0
  319. package/vue/UiEditorTableToolbar.d.ts +21 -0
  320. package/vue/UiEditorTableToolbar.js +2 -0
  321. package/vue/UiEditorTableToolbar.vue +339 -0
  322. package/vue/UiEditorToolbar.d.ts +18 -0
  323. package/vue/UiEditorToolbar.js +2 -0
  324. package/vue/UiEditorToolbar.vue +138 -0
  325. package/vue/UiFloatingActionButton.d.ts +22 -0
  326. package/vue/UiFloatingActionButton.js +2 -0
  327. package/vue/UiFloatingActionButton.vue +116 -0
  328. package/vue/UiFormField.d.ts +28 -0
  329. package/vue/UiFormField.js +2 -0
  330. package/vue/UiFormField.vue +124 -0
  331. package/vue/UiGrid.d.ts +17 -0
  332. package/vue/UiGrid.js +2 -0
  333. package/vue/UiGrid.vue +72 -0
  334. package/vue/UiIcon.d.ts +8 -0
  335. package/vue/UiIcon.js +2 -0
  336. package/vue/UiIcon.vue +135 -0
  337. package/vue/UiIconButton.d.ts +27 -0
  338. package/vue/UiIconButton.js +2 -0
  339. package/vue/UiIconButton.vue +281 -0
  340. package/vue/UiInput.d.ts +20 -0
  341. package/vue/UiInput.js +2 -0
  342. package/vue/UiInput.vue +177 -0
  343. package/vue/UiMenu.d.ts +52 -0
  344. package/vue/UiMenu.js +2 -0
  345. package/vue/UiMenu.vue +194 -0
  346. package/vue/UiMenuItem.d.ts +20 -0
  347. package/vue/UiMenuItem.js +2 -0
  348. package/vue/UiMenuItem.vue +55 -0
  349. package/vue/UiPopover.d.ts +44 -0
  350. package/vue/UiPopover.js +2 -0
  351. package/vue/UiPopover.vue +188 -0
  352. package/vue/UiRadio.d.ts +38 -0
  353. package/vue/UiRadio.js +2 -0
  354. package/vue/UiRadio.vue +166 -0
  355. package/vue/UiRadioGroup.d.ts +50 -0
  356. package/vue/UiRadioGroup.js +2 -0
  357. package/vue/UiRadioGroup.vue +161 -0
  358. package/vue/UiReel.d.ts +18 -0
  359. package/vue/UiReel.js +2 -0
  360. package/vue/UiReel.vue +93 -0
  361. package/vue/UiSearchResultRow.d.ts +28 -0
  362. package/vue/UiSearchResultRow.js +2 -0
  363. package/vue/UiSearchResultRow.vue +124 -0
  364. package/vue/UiSearchShell.d.ts +42 -0
  365. package/vue/UiSearchShell.js +2 -0
  366. package/vue/UiSearchShell.vue +233 -0
  367. package/vue/UiSelect.d.ts +30 -0
  368. package/vue/UiSelect.js +2 -0
  369. package/vue/UiSelect.vue +183 -0
  370. package/vue/UiSeparator.d.ts +8 -0
  371. package/vue/UiSeparator.js +2 -0
  372. package/vue/UiSeparator.vue +38 -0
  373. package/vue/UiSidebar.d.ts +54 -0
  374. package/vue/UiSidebar.js +2 -0
  375. package/vue/UiSidebar.vue +288 -0
  376. package/vue/UiStack.d.ts +18 -0
  377. package/vue/UiStack.js +2 -0
  378. package/vue/UiStack.vue +85 -0
  379. package/vue/UiSwitch.d.ts +36 -0
  380. package/vue/UiSwitch.js +2 -0
  381. package/vue/UiSwitch.vue +203 -0
  382. package/vue/UiSwitcher.d.ts +18 -0
  383. package/vue/UiSwitcher.js +2 -0
  384. package/vue/UiSwitcher.vue +91 -0
  385. package/vue/UiTabs.d.ts +36 -0
  386. package/vue/UiTabs.js +2 -0
  387. package/vue/UiTabs.vue +269 -0
  388. package/vue/UiTextarea.d.ts +22 -0
  389. package/vue/UiTextarea.js +2 -0
  390. package/vue/UiTextarea.vue +177 -0
  391. package/vue/UiToastRegion.d.ts +48 -0
  392. package/vue/UiToastRegion.js +2 -0
  393. package/vue/UiToastRegion.vue +256 -0
  394. package/vue/UiTooltip.d.ts +50 -0
  395. package/vue/UiTooltip.js +2 -0
  396. package/vue/UiTooltip.vue +230 -0
  397. package/vue/UiTopBar.d.ts +19 -0
  398. package/vue/UiTopBar.js +2 -0
  399. package/vue/UiTopBar.vue +56 -0
  400. package/vue/UiTree.d.ts +62 -0
  401. package/vue/UiTree.js +2 -0
  402. package/vue/UiTree.vue +117 -0
  403. package/vue/UiTreeItem.d.ts +56 -0
  404. package/vue/UiTreeItem.js +2 -0
  405. package/vue/UiTreeItem.vue +418 -0
  406. package/vue/chunks/UiAffordanceScope.js +112 -0
  407. package/vue/chunks/UiAvatar.js +144 -0
  408. package/vue/chunks/UiAvatarGroup.js +142 -0
  409. package/vue/chunks/UiBadge.js +33 -0
  410. package/vue/chunks/UiButton.js +47 -0
  411. package/vue/chunks/UiCallout.js +117 -0
  412. package/vue/chunks/UiCheckbox.js +167 -0
  413. package/vue/chunks/UiCluster.js +33 -0
  414. package/vue/chunks/UiCombobox.js +684 -0
  415. package/vue/chunks/UiContainer.js +33 -0
  416. package/vue/chunks/UiContextMenu.js +153 -0
  417. package/vue/chunks/UiDialog.js +162 -0
  418. package/vue/chunks/UiDisclosure.js +185 -0
  419. package/vue/chunks/UiEditable.js +223 -0
  420. package/vue/chunks/UiEditorInsertTableGrid.js +221 -0
  421. package/vue/chunks/UiEditorMentionMenu.js +245 -0
  422. package/vue/chunks/UiEditorSlashMenu.js +210 -0
  423. package/vue/chunks/UiEditorTableContextMenu.js +201 -0
  424. package/vue/chunks/UiEditorTableOverlay.js +301 -0
  425. package/vue/chunks/UiEditorTableToolbar.js +299 -0
  426. package/vue/chunks/UiEditorToolbar.js +37 -0
  427. package/vue/chunks/UiFloatingActionButton.js +56 -0
  428. package/vue/chunks/UiFormField.js +113 -0
  429. package/vue/chunks/UiGrid.js +33 -0
  430. package/vue/chunks/UiIcon.js +170 -0
  431. package/vue/chunks/UiIconButton.js +141 -0
  432. package/vue/chunks/UiInput.js +136 -0
  433. package/vue/chunks/UiMenu.js +163 -0
  434. package/vue/chunks/UiMenuItem.js +37 -0
  435. package/vue/chunks/UiPopover.js +149 -0
  436. package/vue/chunks/UiRadio.js +164 -0
  437. package/vue/chunks/UiRadioGroup.js +160 -0
  438. package/vue/chunks/UiReel.js +42 -0
  439. package/vue/chunks/UiSearchResultRow.js +63 -0
  440. package/vue/chunks/UiSearchShell.js +152 -0
  441. package/vue/chunks/UiSelect.js +134 -0
  442. package/vue/chunks/UiSeparator.js +24 -0
  443. package/vue/chunks/UiSidebar.js +180 -0
  444. package/vue/chunks/UiStack.js +38 -0
  445. package/vue/chunks/UiSwitch.js +162 -0
  446. package/vue/chunks/UiSwitcher.js +38 -0
  447. package/vue/chunks/UiTabs.js +210 -0
  448. package/vue/chunks/UiTextarea.js +139 -0
  449. package/vue/chunks/UiToastRegion.js +227 -0
  450. package/vue/chunks/UiTooltip.js +163 -0
  451. package/vue/chunks/UiTopBar.js +25 -0
  452. package/vue/chunks/UiTree.js +140 -0
  453. package/vue/chunks/UiTreeItem.js +315 -0
  454. package/vue/chunks/_plugin-vue_export-helper.js +8 -0
  455. package/vue/components.css +4442 -0
  456. package/vue/editor/LoomaEditor.d.ts +171 -0
  457. package/vue/editor/image-delivery.d.ts +61 -0
  458. package/vue/editor/index.d.ts +4 -386
  459. package/vue/editor/index.js +995 -1134
  460. package/vue/editor/primitives.d.ts +23 -0
  461. package/vue/index.d.ts +49 -604
  462. package/vue/index.js +50 -86
  463. package/dist/chunk-MLKGABMK.js +0 -9
  464. package/dist/chunk-RWLYVQY6.js +0 -5719
  465. package/dist/chunk-XDNZIKNI.js +0 -2721
  466. package/dist/declarative-generated.cjs +0 -149
  467. package/dist/declarative-generated.d.cts +0 -16
  468. package/dist/declarative-generated.d.ts +0 -16
  469. package/dist/declarative-generated.js +0 -124
  470. package/dist/declarative.cjs +0 -2750
  471. package/dist/declarative.d.cts +0 -101
  472. package/dist/declarative.d.ts +0 -101
  473. package/dist/declarative.js +0 -15
  474. package/dist/index.cjs +0 -9077
  475. package/dist/index.d.cts +0 -414
  476. package/dist/loader.cjs +0 -8442
  477. package/dist/loader.d.cts +0 -4
  478. package/dist/loader.d.ts +0 -4
  479. package/dist/loader.js +0 -16
  480. package/editor/chunk-EUIH3TBV.js +0 -6826
  481. package/editor/chunk-JK53ENSG.js +0 -29
  482. package/editor/chunk-U36XNFJN.js +0 -2592
  483. package/editor/table-overlay-DZFGHQDt.d.ts +0 -138
  484. package/editor.css +0 -1592
  485. package/layout/index.cjs +0 -356
  486. package/layout/index.d.cts +0 -18
  487. package/layout/index.d.ts +0 -18
  488. package/layout/index.js +0 -341
  489. package/layout.css +0 -191
  490. package/styles.css +0 -940
  491. package/vue/chunk-OX3EACZ7.js +0 -4369
@@ -0,0 +1,163 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
3
+ import * as controllerModule from "@threadlabs/looma/components/ui-menu/ui-menu.js";
4
+ //#region .build/vue/UiMenu.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["data-ui-menu-state"];
6
+ var _hoisted_2 = { class: "surface" };
7
+ //#endregion
8
+ //#region .build/vue/UiMenu.vue
9
+ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
10
+ inheritAttrs: false,
11
+ __name: "UiMenu",
12
+ props: {
13
+ for: { default: "" },
14
+ open: {
15
+ type: [Boolean, null],
16
+ default: false
17
+ },
18
+ placement: { default: "bottom-start" }
19
+ },
20
+ emits: [
21
+ "select",
22
+ "open",
23
+ "close"
24
+ ],
25
+ setup(__props, { emit: __emit }) {
26
+ const hn = { t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false) };
27
+ const props = __props;
28
+ const emit = __emit;
29
+ const root = ref(null);
30
+ const refs = {};
31
+ const state_internalOpen = ref(false);
32
+ /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
33
+ const dispatch = (name, detail) => {
34
+ const declared = {
35
+ "select": {
36
+ "bubbles": true,
37
+ "composed": true,
38
+ "cancelable": false
39
+ },
40
+ "open": {
41
+ "bubbles": true,
42
+ "composed": true,
43
+ "cancelable": false
44
+ },
45
+ "close": {
46
+ "bubbles": true,
47
+ "composed": true,
48
+ "cancelable": false
49
+ }
50
+ };
51
+ const checks = {
52
+ "select": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key)),
53
+ "open": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
54
+ "open",
55
+ "reason",
56
+ "trigger"
57
+ ].includes(key)),
58
+ "close": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
59
+ "open",
60
+ "reason",
61
+ "trigger"
62
+ ].includes(key))
63
+ };
64
+ if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
65
+ emit(name, detail);
66
+ return root.value?.dispatchEvent(new CustomEvent(name, {
67
+ bubbles: true,
68
+ composed: true,
69
+ ...declared[name],
70
+ detail
71
+ })) ?? true;
72
+ };
73
+ /** The resolved values the styles' :host-state() rules test. */
74
+ const hostState = computed(() => ["internalOpen"].flatMap((name) => {
75
+ const value = read(name);
76
+ const tokens = hn.t(value) ? [name] : [];
77
+ if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
78
+ return tokens;
79
+ }).join(" "));
80
+ function read(name) {
81
+ if (name === "internalOpen") return state_internalOpen.value;
82
+ return props[name];
83
+ }
84
+ function write(name, value) {
85
+ if (name === "internalOpen") {
86
+ state_internalOpen.value = value;
87
+ return true;
88
+ }
89
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
90
+ }
91
+ const stops = [];
92
+ const host = {
93
+ get element() {
94
+ return root.value;
95
+ },
96
+ state: new Proxy({}, {
97
+ get: (_target, name) => typeof name === "string" ? read(name) : void 0,
98
+ set: (_target, name, value) => typeof name === "string" && write(name, value)
99
+ }),
100
+ refs,
101
+ elements: new Proxy({}, { get: (_target, name) => {
102
+ if (typeof name !== "string" || root.value === null) return void 0;
103
+ return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
104
+ } }),
105
+ signal(initialValue) {
106
+ const value = shallowRef(initialValue);
107
+ return {
108
+ get: () => value.value,
109
+ set: (next) => {
110
+ if (!Object.is(value.value, next)) value.value = next;
111
+ },
112
+ update: (next) => {
113
+ const updated = next(value.value);
114
+ if (!Object.is(value.value, updated)) value.value = updated;
115
+ }
116
+ };
117
+ },
118
+ computed(compute) {
119
+ const value = computed(compute);
120
+ return { get: () => value.value };
121
+ },
122
+ effect(run) {
123
+ const stop = watchEffect((onCleanup) => {
124
+ const cleanup = run();
125
+ if (typeof cleanup === "function") onCleanup(cleanup);
126
+ }, { flush: "post" });
127
+ stops.push(stop);
128
+ return stop;
129
+ },
130
+ on(event, listener) {
131
+ const element = root.value;
132
+ element?.addEventListener(event, listener);
133
+ const off = () => element?.removeEventListener(event, listener);
134
+ stops.push(off);
135
+ return off;
136
+ },
137
+ dispatch
138
+ };
139
+ let cleanup;
140
+ onMounted(() => {
141
+ Promise.resolve(controllerModule.default(host)).then((result) => {
142
+ cleanup = result;
143
+ });
144
+ });
145
+ onBeforeUnmount(() => {
146
+ for (const stop of stops.splice(0)) stop();
147
+ if (typeof cleanup === "function") cleanup();
148
+ });
149
+ return (_ctx, _cache) => {
150
+ return openBlock(), createElementBlock("div", mergeProps({
151
+ "data-component": "ui-menu",
152
+ role: "menu",
153
+ "aria-orientation": "vertical"
154
+ }, _ctx.$attrs, {
155
+ "data-ui-menu-state": hostState.value || void 0,
156
+ ref_key: "root",
157
+ ref: root
158
+ }), [createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
159
+ };
160
+ }
161
+ }), [["__scopeId", "data-v-75d428d7"]]);
162
+ //#endregion
163
+ export { UiMenu_default as t };
@@ -0,0 +1,37 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
+ import { createElementBlock, defineComponent, mergeProps, openBlock, renderSlot } from "vue";
3
+ //#region .build/vue/UiMenuItem.vue?vue&type=script&setup=true&lang.ts
4
+ var _hoisted_1 = ["aria-disabled", "data-value"];
5
+ //#endregion
6
+ //#region .build/vue/UiMenuItem.vue
7
+ var UiMenuItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
8
+ inheritAttrs: false,
9
+ __name: "UiMenuItem",
10
+ props: {
11
+ disabled: {
12
+ type: [Boolean, null],
13
+ default: false
14
+ },
15
+ value: { default: "" }
16
+ },
17
+ setup(__props) {
18
+ const hn = {
19
+ text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
20
+ attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
21
+ enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
22
+ };
23
+ const props = __props;
24
+ return (_ctx, _cache) => {
25
+ return openBlock(), createElementBlock("div", mergeProps({
26
+ "data-component": "ui-menu-item",
27
+ role: "menuitem",
28
+ tabindex: "-1"
29
+ }, _ctx.$attrs, {
30
+ "aria-disabled": hn.enumerated(props.disabled),
31
+ "data-value": hn.attr(props.value)
32
+ }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
33
+ };
34
+ }
35
+ }), [["__scopeId", "data-v-05a8f163"]]);
36
+ //#endregion
37
+ export { UiMenuItem_default as t };
@@ -0,0 +1,149 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
3
+ import * as controllerModule from "@threadlabs/looma/components/ui-popover/ui-popover.js";
4
+ //#region .build/vue/UiPopover.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["data-ui-popover-state"];
6
+ var _hoisted_2 = { class: "surface" };
7
+ //#endregion
8
+ //#region .build/vue/UiPopover.vue
9
+ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
10
+ inheritAttrs: false,
11
+ __name: "UiPopover",
12
+ props: {
13
+ for: { default: "" },
14
+ open: {
15
+ type: [Boolean, null],
16
+ default: false
17
+ },
18
+ placement: { default: "bottom-start" }
19
+ },
20
+ emits: ["open", "close"],
21
+ setup(__props, { emit: __emit }) {
22
+ const hn = { t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false) };
23
+ const props = __props;
24
+ const emit = __emit;
25
+ const root = ref(null);
26
+ const refs = {};
27
+ const state_internalOpen = ref(false);
28
+ /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
29
+ const dispatch = (name, detail) => {
30
+ const declared = {
31
+ "open": {
32
+ "bubbles": true,
33
+ "composed": true,
34
+ "cancelable": false
35
+ },
36
+ "close": {
37
+ "bubbles": true,
38
+ "composed": true,
39
+ "cancelable": false
40
+ }
41
+ };
42
+ const checks = {
43
+ "open": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
44
+ "open",
45
+ "reason",
46
+ "trigger"
47
+ ].includes(key)),
48
+ "close": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
49
+ "open",
50
+ "reason",
51
+ "trigger"
52
+ ].includes(key))
53
+ };
54
+ if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
55
+ emit(name, detail);
56
+ return root.value?.dispatchEvent(new CustomEvent(name, {
57
+ bubbles: true,
58
+ composed: true,
59
+ ...declared[name],
60
+ detail
61
+ })) ?? true;
62
+ };
63
+ /** The resolved values the styles' :host-state() rules test. */
64
+ const hostState = computed(() => ["internalOpen"].flatMap((name) => {
65
+ const value = read(name);
66
+ const tokens = hn.t(value) ? [name] : [];
67
+ if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
68
+ return tokens;
69
+ }).join(" "));
70
+ function read(name) {
71
+ if (name === "internalOpen") return state_internalOpen.value;
72
+ return props[name];
73
+ }
74
+ function write(name, value) {
75
+ if (name === "internalOpen") {
76
+ state_internalOpen.value = value;
77
+ return true;
78
+ }
79
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
80
+ }
81
+ const stops = [];
82
+ const host = {
83
+ get element() {
84
+ return root.value;
85
+ },
86
+ state: new Proxy({}, {
87
+ get: (_target, name) => typeof name === "string" ? read(name) : void 0,
88
+ set: (_target, name, value) => typeof name === "string" && write(name, value)
89
+ }),
90
+ refs,
91
+ elements: new Proxy({}, { get: (_target, name) => {
92
+ if (typeof name !== "string" || root.value === null) return void 0;
93
+ return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
94
+ } }),
95
+ signal(initialValue) {
96
+ const value = shallowRef(initialValue);
97
+ return {
98
+ get: () => value.value,
99
+ set: (next) => {
100
+ if (!Object.is(value.value, next)) value.value = next;
101
+ },
102
+ update: (next) => {
103
+ const updated = next(value.value);
104
+ if (!Object.is(value.value, updated)) value.value = updated;
105
+ }
106
+ };
107
+ },
108
+ computed(compute) {
109
+ const value = computed(compute);
110
+ return { get: () => value.value };
111
+ },
112
+ effect(run) {
113
+ const stop = watchEffect((onCleanup) => {
114
+ const cleanup = run();
115
+ if (typeof cleanup === "function") onCleanup(cleanup);
116
+ }, { flush: "post" });
117
+ stops.push(stop);
118
+ return stop;
119
+ },
120
+ on(event, listener) {
121
+ const element = root.value;
122
+ element?.addEventListener(event, listener);
123
+ const off = () => element?.removeEventListener(event, listener);
124
+ stops.push(off);
125
+ return off;
126
+ },
127
+ dispatch
128
+ };
129
+ let cleanup;
130
+ onMounted(() => {
131
+ Promise.resolve(controllerModule.default(host)).then((result) => {
132
+ cleanup = result;
133
+ });
134
+ });
135
+ onBeforeUnmount(() => {
136
+ for (const stop of stops.splice(0)) stop();
137
+ if (typeof cleanup === "function") cleanup();
138
+ });
139
+ return (_ctx, _cache) => {
140
+ return openBlock(), createElementBlock("span", mergeProps({ "data-component": "ui-popover" }, _ctx.$attrs, {
141
+ "data-ui-popover-state": hostState.value || void 0,
142
+ ref_key: "root",
143
+ ref: root
144
+ }), [createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
145
+ };
146
+ }
147
+ }), [["__scopeId", "data-v-3d1188bf"]]);
148
+ //#endregion
149
+ export { UiPopover_default as t };
@@ -0,0 +1,164 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
3
+ import * as controllerModule from "@threadlabs/looma/components/ui-radio/ui-radio.js";
4
+ //#region .build/vue/UiRadio.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["data-ui-radio-state"];
6
+ var _hoisted_2 = [
7
+ ".checked",
8
+ "disabled",
9
+ "required",
10
+ "value",
11
+ "name"
12
+ ];
13
+ var _hoisted_3 = { class: "label" };
14
+ //#endregion
15
+ //#region .build/vue/UiRadio.vue
16
+ var UiRadio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
17
+ inheritAttrs: false,
18
+ __name: "UiRadio",
19
+ props: {
20
+ checked: {
21
+ type: [Boolean, null],
22
+ default: false
23
+ },
24
+ disabled: {
25
+ type: [Boolean, null],
26
+ default: false
27
+ },
28
+ name: { default: "" },
29
+ required: {
30
+ type: [Boolean, null],
31
+ default: false
32
+ },
33
+ value: { default: "on" }
34
+ },
35
+ emits: ["change"],
36
+ setup(__props, { emit: __emit }) {
37
+ const hn = {
38
+ t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
39
+ text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
40
+ attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v)
41
+ };
42
+ const props = __props;
43
+ const emit = __emit;
44
+ const root = ref(null);
45
+ const refs = {};
46
+ const state_internalChecked = ref(false);
47
+ /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
48
+ const dispatch = (name, detail) => {
49
+ const declared = { "change": {
50
+ "bubbles": true,
51
+ "composed": true,
52
+ "cancelable": false
53
+ } };
54
+ const checks = { "change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
55
+ "checked",
56
+ "value",
57
+ "trigger"
58
+ ].includes(key)) };
59
+ if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
60
+ emit(name, detail);
61
+ return root.value?.dispatchEvent(new CustomEvent(name, {
62
+ bubbles: true,
63
+ composed: true,
64
+ ...declared[name],
65
+ detail
66
+ })) ?? true;
67
+ };
68
+ /** The resolved values the styles' :host-state() rules test. */
69
+ const hostState = computed(() => ["disabled"].flatMap((name) => {
70
+ const value = read(name);
71
+ const tokens = hn.t(value) ? [name] : [];
72
+ if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
73
+ return tokens;
74
+ }).join(" "));
75
+ function read(name) {
76
+ if (name === "internalChecked") return state_internalChecked.value;
77
+ return props[name];
78
+ }
79
+ function write(name, value) {
80
+ if (name === "internalChecked") {
81
+ state_internalChecked.value = value;
82
+ return true;
83
+ }
84
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
85
+ }
86
+ const stops = [];
87
+ const host = {
88
+ get element() {
89
+ return root.value;
90
+ },
91
+ state: new Proxy({}, {
92
+ get: (_target, name) => typeof name === "string" ? read(name) : void 0,
93
+ set: (_target, name, value) => typeof name === "string" && write(name, value)
94
+ }),
95
+ refs,
96
+ elements: new Proxy({}, { get: (_target, name) => {
97
+ if (typeof name !== "string" || root.value === null) return void 0;
98
+ return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
99
+ } }),
100
+ signal(initialValue) {
101
+ const value = shallowRef(initialValue);
102
+ return {
103
+ get: () => value.value,
104
+ set: (next) => {
105
+ if (!Object.is(value.value, next)) value.value = next;
106
+ },
107
+ update: (next) => {
108
+ const updated = next(value.value);
109
+ if (!Object.is(value.value, updated)) value.value = updated;
110
+ }
111
+ };
112
+ },
113
+ computed(compute) {
114
+ const value = computed(compute);
115
+ return { get: () => value.value };
116
+ },
117
+ effect(run) {
118
+ const stop = watchEffect((onCleanup) => {
119
+ const cleanup = run();
120
+ if (typeof cleanup === "function") onCleanup(cleanup);
121
+ }, { flush: "post" });
122
+ stops.push(stop);
123
+ return stop;
124
+ },
125
+ on(event, listener) {
126
+ const element = root.value;
127
+ element?.addEventListener(event, listener);
128
+ const off = () => element?.removeEventListener(event, listener);
129
+ stops.push(off);
130
+ return off;
131
+ },
132
+ dispatch
133
+ };
134
+ let cleanup;
135
+ onMounted(() => {
136
+ Promise.resolve(controllerModule.default(host)).then((result) => {
137
+ cleanup = result;
138
+ });
139
+ });
140
+ onBeforeUnmount(() => {
141
+ for (const stop of stops.splice(0)) stop();
142
+ if (typeof cleanup === "function") cleanup();
143
+ });
144
+ return (_ctx, _cache) => {
145
+ return openBlock(), createElementBlock("label", mergeProps({ "data-component": "ui-radio" }, _ctx.$attrs, {
146
+ "data-ui-radio-state": hostState.value || void 0,
147
+ ref_key: "root",
148
+ ref: root
149
+ }), [createElementVNode("input", {
150
+ type: "radio",
151
+ ".checked": state_internalChecked.value,
152
+ disabled: hn.attr(props.disabled),
153
+ required: hn.attr(props.required),
154
+ value: hn.attr(props.value),
155
+ name: hn.attr(props.name),
156
+ ref: (element) => {
157
+ refs["input"] = element;
158
+ }
159
+ }, null, 40, _hoisted_2), createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
160
+ };
161
+ }
162
+ }), [["__scopeId", "data-v-e5d6bc8d"]]);
163
+ //#endregion
164
+ export { UiRadio_default as t };
@@ -0,0 +1,160 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, toDisplayString, watchEffect } from "vue";
3
+ import * as controllerModule from "@threadlabs/looma/components/ui-radio-group/ui-radio-group.js";
4
+ //#region .build/vue/UiRadioGroup.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["data-ui-radio-group-state"];
6
+ //#endregion
7
+ //#region .build/vue/UiRadioGroup.vue
8
+ var UiRadioGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
9
+ inheritAttrs: false,
10
+ __name: "UiRadioGroup",
11
+ props: {
12
+ disabled: {
13
+ type: [Boolean, null],
14
+ default: false
15
+ },
16
+ label: { default: "Options" },
17
+ name: { default: "" },
18
+ orientation: { default: "horizontal" },
19
+ required: {
20
+ type: [Boolean, null],
21
+ default: false
22
+ },
23
+ value: { default: "" }
24
+ },
25
+ emits: ["select", "change"],
26
+ setup(__props, { emit: __emit }) {
27
+ const hn = {
28
+ t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
29
+ text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v)
30
+ };
31
+ const props = __props;
32
+ const emit = __emit;
33
+ const root = ref(null);
34
+ const refs = {};
35
+ const state_internalValue = ref("");
36
+ /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
37
+ const dispatch = (name, detail) => {
38
+ const declared = {
39
+ "select": {
40
+ "bubbles": true,
41
+ "composed": true,
42
+ "cancelable": false
43
+ },
44
+ "change": {
45
+ "bubbles": true,
46
+ "composed": true,
47
+ "cancelable": false
48
+ }
49
+ };
50
+ const checks = {
51
+ "select": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && typeof detail["previousValue"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
52
+ "value",
53
+ "previousValue",
54
+ "trigger"
55
+ ].includes(key)),
56
+ "change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
57
+ "checked",
58
+ "value",
59
+ "trigger"
60
+ ].includes(key))
61
+ };
62
+ if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
63
+ emit(name, detail);
64
+ return root.value?.dispatchEvent(new CustomEvent(name, {
65
+ bubbles: true,
66
+ composed: true,
67
+ ...declared[name],
68
+ detail
69
+ })) ?? true;
70
+ };
71
+ /** The resolved values the styles' :host-state() rules test. */
72
+ const hostState = computed(() => ["orientation"].flatMap((name) => {
73
+ const value = read(name);
74
+ const tokens = hn.t(value) ? [name] : [];
75
+ if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
76
+ return tokens;
77
+ }).join(" "));
78
+ function read(name) {
79
+ if (name === "internalValue") return state_internalValue.value;
80
+ return props[name];
81
+ }
82
+ function write(name, value) {
83
+ if (name === "internalValue") {
84
+ state_internalValue.value = value;
85
+ return true;
86
+ }
87
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
88
+ }
89
+ const stops = [];
90
+ const host = {
91
+ get element() {
92
+ return root.value;
93
+ },
94
+ state: new Proxy({}, {
95
+ get: (_target, name) => typeof name === "string" ? read(name) : void 0,
96
+ set: (_target, name, value) => typeof name === "string" && write(name, value)
97
+ }),
98
+ refs,
99
+ elements: new Proxy({}, { get: (_target, name) => {
100
+ if (typeof name !== "string" || root.value === null) return void 0;
101
+ return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
102
+ } }),
103
+ signal(initialValue) {
104
+ const value = shallowRef(initialValue);
105
+ return {
106
+ get: () => value.value,
107
+ set: (next) => {
108
+ if (!Object.is(value.value, next)) value.value = next;
109
+ },
110
+ update: (next) => {
111
+ const updated = next(value.value);
112
+ if (!Object.is(value.value, updated)) value.value = updated;
113
+ }
114
+ };
115
+ },
116
+ computed(compute) {
117
+ const value = computed(compute);
118
+ return { get: () => value.value };
119
+ },
120
+ effect(run) {
121
+ const stop = watchEffect((onCleanup) => {
122
+ const cleanup = run();
123
+ if (typeof cleanup === "function") onCleanup(cleanup);
124
+ }, { flush: "post" });
125
+ stops.push(stop);
126
+ return stop;
127
+ },
128
+ on(event, listener) {
129
+ const element = root.value;
130
+ element?.addEventListener(event, listener);
131
+ const off = () => element?.removeEventListener(event, listener);
132
+ stops.push(off);
133
+ return off;
134
+ },
135
+ dispatch
136
+ };
137
+ let cleanup;
138
+ onMounted(() => {
139
+ Promise.resolve(controllerModule.default(host)).then((result) => {
140
+ cleanup = result;
141
+ });
142
+ });
143
+ onBeforeUnmount(() => {
144
+ for (const stop of stops.splice(0)) stop();
145
+ if (typeof cleanup === "function") cleanup();
146
+ });
147
+ return (_ctx, _cache) => {
148
+ return openBlock(), createElementBlock("fieldset", mergeProps({
149
+ "data-component": "ui-radio-group",
150
+ role: "radiogroup"
151
+ }, _ctx.$attrs, {
152
+ "data-ui-radio-group-state": hostState.value || void 0,
153
+ ref_key: "root",
154
+ ref: root
155
+ }), [createElementVNode("legend", null, toDisplayString(hn.text(props.label)), 1), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
156
+ };
157
+ }
158
+ }), [["__scopeId", "data-v-9cda8db8"]]);
159
+ //#endregion
160
+ export { UiRadioGroup_default as t };