@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.
- package/README.md +43 -12
- package/components/shared/editor.js +69 -0
- package/components/shared/input-modality.d.ts +8 -0
- package/components/shared/input-modality.js +22 -0
- package/components/shared/overlay.js +281 -0
- package/components/shared/trigger.js +17 -0
- package/components/ui-affordance-scope/ui-affordance-scope.html +22 -0
- package/components/ui-affordance-scope/ui-affordance-scope.js +76 -0
- package/components/ui-avatar/ui-avatar.html +59 -0
- package/components/ui-avatar/ui-avatar.js +47 -0
- package/components/ui-avatar-group/ui-avatar-group.html +62 -0
- package/components/ui-avatar-group/ui-avatar-group.js +27 -0
- package/components/ui-badge/ui-badge.html +94 -0
- package/components/ui-button/ui-button.html +226 -0
- package/components/ui-callout/ui-callout.html +104 -0
- package/components/ui-checkbox/ui-checkbox.html +107 -0
- package/components/ui-checkbox/ui-checkbox.js +24 -0
- package/components/ui-cluster/ui-cluster.html +49 -0
- package/components/ui-combobox/ui-combobox.html +377 -0
- package/components/ui-combobox/ui-combobox.js +432 -0
- package/components/ui-container/ui-container.html +39 -0
- package/components/ui-context-menu/ui-context-menu.html +75 -0
- package/components/ui-context-menu/ui-context-menu.js +143 -0
- package/components/ui-dialog/ui-dialog.html +178 -0
- package/components/ui-dialog/ui-dialog.js +105 -0
- package/components/ui-disclosure/ui-disclosure.html +109 -0
- package/components/ui-disclosure/ui-disclosure.js +28 -0
- package/components/ui-editable/ui-editable.html +163 -0
- package/components/ui-editable/ui-editable.js +113 -0
- package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +97 -0
- package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +71 -0
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +157 -0
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +50 -0
- package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +197 -0
- package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +44 -0
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +164 -0
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +75 -0
- package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +422 -0
- package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +119 -0
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +271 -0
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +54 -0
- package/components/ui-editor-toolbar/ui-editor-toolbar.html +110 -0
- package/components/ui-floating-action-button/ui-floating-action-button.html +83 -0
- package/components/ui-form-field/ui-form-field.html +45 -0
- package/components/ui-form-field/ui-form-field.js +71 -0
- package/components/ui-grid/ui-grid.html +46 -0
- package/components/ui-icon/ui-icon.html +34 -0
- package/components/ui-icon/ui-icon.js +8 -0
- package/components/ui-icon-button/ui-icon-button.html +180 -0
- package/components/ui-icon-button/ui-icon-button.js +7 -0
- package/components/ui-input/ui-input.html +81 -0
- package/components/ui-input/ui-input.js +7 -0
- package/components/ui-menu/ui-menu.html +87 -0
- package/components/ui-menu/ui-menu.js +114 -0
- package/components/ui-menu-item/ui-menu-item.html +37 -0
- package/components/ui-popover/ui-popover.html +85 -0
- package/components/ui-popover/ui-popover.js +70 -0
- package/components/ui-radio/ui-radio.html +57 -0
- package/components/ui-radio/ui-radio.js +25 -0
- package/components/ui-radio-group/ui-radio-group.html +51 -0
- package/components/ui-radio-group/ui-radio-group.js +42 -0
- package/components/ui-reel/ui-reel.html +67 -0
- package/components/ui-search-result-row/ui-search-result-row.html +101 -0
- package/components/ui-search-shell/ui-search-shell.html +142 -0
- package/components/ui-search-shell/ui-search-shell.js +60 -0
- package/components/ui-select/ui-select.html +87 -0
- package/components/ui-select/ui-select.js +16 -0
- package/components/ui-separator/ui-separator.html +22 -0
- package/components/ui-sidebar/ui-sidebar.html +183 -0
- package/components/ui-sidebar/ui-sidebar.js +178 -0
- package/components/ui-stack/ui-stack.html +59 -0
- package/components/ui-switch/ui-switch.html +95 -0
- package/components/ui-switch/ui-switch.js +24 -0
- package/components/ui-switcher/ui-switcher.html +65 -0
- package/components/ui-tabs/ui-tabs.html +134 -0
- package/components/ui-tabs/ui-tabs.js +81 -0
- package/components/ui-textarea/ui-textarea.html +80 -0
- package/components/ui-textarea/ui-textarea.js +7 -0
- package/components/ui-toast-region/ui-toast-region.html +127 -0
- package/components/ui-toast-region/ui-toast-region.js +119 -0
- package/components/ui-tooltip/ui-tooltip.html +122 -0
- package/components/ui-tooltip/ui-tooltip.js +134 -0
- package/components/ui-top-bar/ui-top-bar.html +53 -0
- package/components/ui-tree/ui-tree.html +29 -0
- package/components/ui-tree/ui-tree.js +250 -0
- package/components/ui-tree-item/ui-tree-item.html +326 -0
- package/components/ui-tree-item/ui-tree-item.js +94 -0
- package/dist/index.d.ts +4 -414
- package/dist/index.js +55 -657
- package/editor/chunks/extensions.js +7267 -0
- package/editor/chunks/table-backgrounds.js +51 -0
- package/editor/chunks/ui.js +92 -0
- package/editor/extensions/callout.d.ts +20 -0
- package/editor/extensions/index.d.ts +12 -441
- package/editor/extensions/index.js +3 -64
- package/editor/extensions/list-behavior.d.ts +7 -0
- package/editor/extensions/mention.d.ts +35 -0
- package/editor/extensions/preset.d.ts +42 -0
- package/editor/extensions/slash-command.d.ts +80 -0
- package/editor/extensions/smart-paste.d.ts +13 -0
- package/editor/extensions/table-commands.d.ts +114 -0
- package/editor/extensions/table-formatting.d.ts +60 -0
- package/editor/icons.d.ts +55 -0
- package/editor/index.d.ts +8 -6
- package/editor/index.js +96 -71
- package/editor/insert-table-grid.d.ts +7 -0
- package/editor/mention-contract.d.ts +78 -0
- package/editor/mention-menu.d.ts +9 -0
- package/editor/slash-menu.d.ts +29 -0
- package/editor/table-backgrounds.d.ts +43 -0
- package/editor/table-context-menu.d.ts +12 -0
- package/editor/table-overlay.d.ts +79 -0
- package/editor/ui.d.ts +10 -50
- package/editor/ui.js +3 -14
- package/editor/viewport.d.ts +15 -0
- package/package.json +84 -60
- package/styles/ui-affordance-scope.css +19 -0
- package/styles/ui-avatar-group.css +56 -0
- package/styles/ui-avatar.css +47 -0
- package/styles/ui-badge.css +91 -0
- package/styles/ui-button.css +236 -0
- package/styles/ui-callout.css +76 -0
- package/styles/ui-checkbox.css +98 -0
- package/styles/ui-cluster.css +46 -0
- package/styles/ui-combobox.css +213 -0
- package/styles/ui-container.css +36 -0
- package/styles/ui-context-menu.css +68 -0
- package/styles/ui-dialog.css +160 -0
- package/styles/ui-disclosure.css +95 -0
- package/styles/ui-editable.css +139 -0
- package/styles/ui-editor-insert-table-grid.css +65 -0
- package/styles/ui-editor-mention-menu.css +121 -0
- package/styles/ui-editor-slash-menu.css +179 -0
- package/styles/ui-editor-table-context-menu.css +118 -0
- package/styles/ui-editor-table-overlay.css +318 -0
- package/styles/ui-editor-table-toolbar.css +191 -0
- package/styles/ui-editor-toolbar.css +115 -0
- package/styles/ui-floating-action-button.css +82 -0
- package/styles/ui-form-field.css +36 -0
- package/styles/ui-grid.css +43 -0
- package/styles/ui-icon-button.css +184 -0
- package/styles/ui-icon.css +23 -0
- package/styles/ui-input.css +82 -0
- package/styles/ui-menu-item.css +34 -0
- package/styles/ui-menu.css +80 -0
- package/styles/ui-popover.css +76 -0
- package/styles/ui-radio-group.css +38 -0
- package/styles/ui-radio.css +46 -0
- package/styles/ui-reel.css +63 -0
- package/styles/ui-search-result-row.css +92 -0
- package/styles/ui-search-shell.css +128 -0
- package/styles/ui-select.css +86 -0
- package/styles/ui-separator.css +16 -0
- package/styles/ui-sidebar.css +166 -0
- package/styles/ui-stack.css +55 -0
- package/styles/ui-switch.css +88 -0
- package/styles/ui-switcher.css +61 -0
- package/styles/ui-tabs.css +114 -0
- package/styles/ui-textarea.css +77 -0
- package/styles/ui-toast-region.css +103 -0
- package/styles/ui-tooltip.css +113 -0
- package/styles/ui-top-bar.css +51 -0
- package/styles/ui-tree-item.css +267 -0
- package/styles/ui-tree.css +16 -0
- package/vanilla/UiAffordanceScope.d.ts +14 -0
- package/vanilla/UiAffordanceScope.js +30 -0
- package/vanilla/UiAvatar.d.ts +17 -0
- package/vanilla/UiAvatar.js +41 -0
- package/vanilla/UiAvatarGroup.d.ts +15 -0
- package/vanilla/UiAvatarGroup.js +40 -0
- package/vanilla/UiBadge.d.ts +15 -0
- package/vanilla/UiBadge.js +30 -0
- package/vanilla/UiButton.d.ts +16 -0
- package/vanilla/UiButton.js +32 -0
- package/vanilla/UiCallout.d.ts +14 -0
- package/vanilla/UiCallout.js +124 -0
- package/vanilla/UiCheckbox.d.ts +19 -0
- package/vanilla/UiCheckbox.js +47 -0
- package/vanilla/UiCluster.d.ts +15 -0
- package/vanilla/UiCluster.js +30 -0
- package/vanilla/UiCombobox.d.ts +42 -0
- package/vanilla/UiCombobox.js +194 -0
- package/vanilla/UiContainer.d.ts +15 -0
- package/vanilla/UiContainer.js +30 -0
- package/vanilla/UiContextMenu.d.ts +18 -0
- package/vanilla/UiContextMenu.js +35 -0
- package/vanilla/UiDialog.d.ts +19 -0
- package/vanilla/UiDialog.js +53 -0
- package/vanilla/UiDisclosure.d.ts +18 -0
- package/vanilla/UiDisclosure.js +49 -0
- package/vanilla/UiEditable.d.ts +22 -0
- package/vanilla/UiEditable.js +59 -0
- package/vanilla/UiEditorInsertTableGrid.d.ts +18 -0
- package/vanilla/UiEditorInsertTableGrid.js +46 -0
- package/vanilla/UiEditorMentionMenu.d.ts +21 -0
- package/vanilla/UiEditorMentionMenu.js +63 -0
- package/vanilla/UiEditorSlashMenu.d.ts +20 -0
- package/vanilla/UiEditorSlashMenu.js +74 -0
- package/vanilla/UiEditorTableContextMenu.d.ts +17 -0
- package/vanilla/UiEditorTableContextMenu.js +69 -0
- package/vanilla/UiEditorTableOverlay.d.ts +16 -0
- package/vanilla/UiEditorTableOverlay.js +113 -0
- package/vanilla/UiEditorTableToolbar.d.ts +18 -0
- package/vanilla/UiEditorTableToolbar.js +121 -0
- package/vanilla/UiEditorToolbar.d.ts +14 -0
- package/vanilla/UiEditorToolbar.js +30 -0
- package/vanilla/UiFloatingActionButton.d.ts +16 -0
- package/vanilla/UiFloatingActionButton.js +35 -0
- package/vanilla/UiFormField.d.ts +16 -0
- package/vanilla/UiFormField.js +54 -0
- package/vanilla/UiGrid.d.ts +15 -0
- package/vanilla/UiGrid.js +30 -0
- package/vanilla/UiIcon.d.ts +14 -0
- package/vanilla/UiIcon.js +40 -0
- package/vanilla/UiIconButton.d.ts +19 -0
- package/vanilla/UiIconButton.js +37 -0
- package/vanilla/UiInput.d.ts +18 -0
- package/vanilla/UiInput.js +37 -0
- package/vanilla/UiMenu.d.ts +19 -0
- package/vanilla/UiMenu.js +35 -0
- package/vanilla/UiMenuItem.d.ts +15 -0
- package/vanilla/UiMenuItem.js +43 -0
- package/vanilla/UiPopover.d.ts +18 -0
- package/vanilla/UiPopover.js +33 -0
- package/vanilla/UiRadio.d.ts +19 -0
- package/vanilla/UiRadio.js +48 -0
- package/vanilla/UiRadioGroup.d.ts +21 -0
- package/vanilla/UiRadioGroup.js +35 -0
- package/vanilla/UiReel.d.ts +16 -0
- package/vanilla/UiReel.js +34 -0
- package/vanilla/UiSearchResultRow.d.ts +15 -0
- package/vanilla/UiSearchResultRow.js +82 -0
- package/vanilla/UiSearchShell.d.ts +18 -0
- package/vanilla/UiSearchShell.js +74 -0
- package/vanilla/UiSelect.d.ts +18 -0
- package/vanilla/UiSelect.js +42 -0
- package/vanilla/UiSeparator.d.ts +14 -0
- package/vanilla/UiSeparator.js +28 -0
- package/vanilla/UiSidebar.d.ts +24 -0
- package/vanilla/UiSidebar.js +47 -0
- package/vanilla/UiStack.d.ts +16 -0
- package/vanilla/UiStack.js +32 -0
- package/vanilla/UiSwitch.d.ts +18 -0
- package/vanilla/UiSwitch.js +46 -0
- package/vanilla/UiSwitcher.d.ts +16 -0
- package/vanilla/UiSwitcher.js +32 -0
- package/vanilla/UiTabs.d.ts +18 -0
- package/vanilla/UiTabs.js +47 -0
- package/vanilla/UiTextarea.d.ts +19 -0
- package/vanilla/UiTextarea.js +40 -0
- package/vanilla/UiToastRegion.d.ts +20 -0
- package/vanilla/UiToastRegion.js +58 -0
- package/vanilla/UiTooltip.d.ts +21 -0
- package/vanilla/UiTooltip.js +34 -0
- package/vanilla/UiTopBar.d.ts +13 -0
- package/vanilla/UiTopBar.js +59 -0
- package/vanilla/UiTree.d.ts +18 -0
- package/vanilla/UiTree.js +31 -0
- package/vanilla/UiTreeItem.d.ts +26 -0
- package/vanilla/UiTreeItem.js +164 -0
- package/vanilla/index.js +48 -0
- package/vue/UiAffordanceScope.d.ts +18 -0
- package/vue/UiAffordanceScope.js +2 -0
- package/vue/UiAffordanceScope.vue +118 -0
- package/vue/UiAvatar.d.ts +23 -0
- package/vue/UiAvatar.js +2 -0
- package/vue/UiAvatar.vue +152 -0
- package/vue/UiAvatarGroup.d.ts +20 -0
- package/vue/UiAvatarGroup.js +2 -0
- package/vue/UiAvatarGroup.vue +167 -0
- package/vue/UiBadge.d.ts +20 -0
- package/vue/UiBadge.js +2 -0
- package/vue/UiBadge.vue +123 -0
- package/vue/UiButton.d.ts +22 -0
- package/vue/UiButton.js +2 -0
- package/vue/UiButton.vue +257 -0
- package/vue/UiCallout.d.ts +18 -0
- package/vue/UiCallout.js +2 -0
- package/vue/UiCallout.vue +104 -0
- package/vue/UiCheckbox.d.ts +38 -0
- package/vue/UiCheckbox.js +2 -0
- package/vue/UiCheckbox.vue +216 -0
- package/vue/UiCluster.d.ts +17 -0
- package/vue/UiCluster.js +2 -0
- package/vue/UiCluster.vue +75 -0
- package/vue/UiCombobox.d.ts +255 -0
- package/vue/UiCombobox.js +2 -0
- package/vue/UiCombobox.vue +466 -0
- package/vue/UiContainer.d.ts +17 -0
- package/vue/UiContainer.js +2 -0
- package/vue/UiContainer.vue +65 -0
- package/vue/UiContextMenu.d.ts +50 -0
- package/vue/UiContextMenu.js +2 -0
- package/vue/UiContextMenu.vue +166 -0
- package/vue/UiDialog.d.ts +39 -0
- package/vue/UiDialog.js +2 -0
- package/vue/UiDialog.vue +273 -0
- package/vue/UiDisclosure.d.ts +44 -0
- package/vue/UiDisclosure.js +2 -0
- package/vue/UiDisclosure.vue +211 -0
- package/vue/UiEditable.d.ts +48 -0
- package/vue/UiEditable.js +2 -0
- package/vue/UiEditable.vue +267 -0
- package/vue/UiEditorInsertTableGrid.d.ts +26 -0
- package/vue/UiEditorInsertTableGrid.js +2 -0
- package/vue/UiEditorInsertTableGrid.vue +210 -0
- package/vue/UiEditorMentionMenu.d.ts +44 -0
- package/vue/UiEditorMentionMenu.js +2 -0
- package/vue/UiEditorMentionMenu.vue +284 -0
- package/vue/UiEditorSlashMenu.d.ts +41 -0
- package/vue/UiEditorSlashMenu.js +2 -0
- package/vue/UiEditorSlashMenu.vue +306 -0
- package/vue/UiEditorTableContextMenu.d.ts +19 -0
- package/vue/UiEditorTableContextMenu.js +2 -0
- package/vue/UiEditorTableContextMenu.vue +252 -0
- package/vue/UiEditorTableOverlay.d.ts +66 -0
- package/vue/UiEditorTableOverlay.js +2 -0
- package/vue/UiEditorTableOverlay.vue +455 -0
- package/vue/UiEditorTableToolbar.d.ts +21 -0
- package/vue/UiEditorTableToolbar.js +2 -0
- package/vue/UiEditorTableToolbar.vue +339 -0
- package/vue/UiEditorToolbar.d.ts +18 -0
- package/vue/UiEditorToolbar.js +2 -0
- package/vue/UiEditorToolbar.vue +138 -0
- package/vue/UiFloatingActionButton.d.ts +22 -0
- package/vue/UiFloatingActionButton.js +2 -0
- package/vue/UiFloatingActionButton.vue +116 -0
- package/vue/UiFormField.d.ts +28 -0
- package/vue/UiFormField.js +2 -0
- package/vue/UiFormField.vue +124 -0
- package/vue/UiGrid.d.ts +17 -0
- package/vue/UiGrid.js +2 -0
- package/vue/UiGrid.vue +72 -0
- package/vue/UiIcon.d.ts +8 -0
- package/vue/UiIcon.js +2 -0
- package/vue/UiIcon.vue +135 -0
- package/vue/UiIconButton.d.ts +27 -0
- package/vue/UiIconButton.js +2 -0
- package/vue/UiIconButton.vue +281 -0
- package/vue/UiInput.d.ts +20 -0
- package/vue/UiInput.js +2 -0
- package/vue/UiInput.vue +177 -0
- package/vue/UiMenu.d.ts +52 -0
- package/vue/UiMenu.js +2 -0
- package/vue/UiMenu.vue +194 -0
- package/vue/UiMenuItem.d.ts +20 -0
- package/vue/UiMenuItem.js +2 -0
- package/vue/UiMenuItem.vue +55 -0
- package/vue/UiPopover.d.ts +44 -0
- package/vue/UiPopover.js +2 -0
- package/vue/UiPopover.vue +188 -0
- package/vue/UiRadio.d.ts +38 -0
- package/vue/UiRadio.js +2 -0
- package/vue/UiRadio.vue +166 -0
- package/vue/UiRadioGroup.d.ts +50 -0
- package/vue/UiRadioGroup.js +2 -0
- package/vue/UiRadioGroup.vue +161 -0
- package/vue/UiReel.d.ts +18 -0
- package/vue/UiReel.js +2 -0
- package/vue/UiReel.vue +93 -0
- package/vue/UiSearchResultRow.d.ts +28 -0
- package/vue/UiSearchResultRow.js +2 -0
- package/vue/UiSearchResultRow.vue +124 -0
- package/vue/UiSearchShell.d.ts +42 -0
- package/vue/UiSearchShell.js +2 -0
- package/vue/UiSearchShell.vue +233 -0
- package/vue/UiSelect.d.ts +30 -0
- package/vue/UiSelect.js +2 -0
- package/vue/UiSelect.vue +183 -0
- package/vue/UiSeparator.d.ts +8 -0
- package/vue/UiSeparator.js +2 -0
- package/vue/UiSeparator.vue +38 -0
- package/vue/UiSidebar.d.ts +54 -0
- package/vue/UiSidebar.js +2 -0
- package/vue/UiSidebar.vue +288 -0
- package/vue/UiStack.d.ts +18 -0
- package/vue/UiStack.js +2 -0
- package/vue/UiStack.vue +85 -0
- package/vue/UiSwitch.d.ts +36 -0
- package/vue/UiSwitch.js +2 -0
- package/vue/UiSwitch.vue +203 -0
- package/vue/UiSwitcher.d.ts +18 -0
- package/vue/UiSwitcher.js +2 -0
- package/vue/UiSwitcher.vue +91 -0
- package/vue/UiTabs.d.ts +36 -0
- package/vue/UiTabs.js +2 -0
- package/vue/UiTabs.vue +269 -0
- package/vue/UiTextarea.d.ts +22 -0
- package/vue/UiTextarea.js +2 -0
- package/vue/UiTextarea.vue +177 -0
- package/vue/UiToastRegion.d.ts +48 -0
- package/vue/UiToastRegion.js +2 -0
- package/vue/UiToastRegion.vue +256 -0
- package/vue/UiTooltip.d.ts +50 -0
- package/vue/UiTooltip.js +2 -0
- package/vue/UiTooltip.vue +230 -0
- package/vue/UiTopBar.d.ts +19 -0
- package/vue/UiTopBar.js +2 -0
- package/vue/UiTopBar.vue +56 -0
- package/vue/UiTree.d.ts +62 -0
- package/vue/UiTree.js +2 -0
- package/vue/UiTree.vue +117 -0
- package/vue/UiTreeItem.d.ts +56 -0
- package/vue/UiTreeItem.js +2 -0
- package/vue/UiTreeItem.vue +418 -0
- package/vue/chunks/UiAffordanceScope.js +112 -0
- package/vue/chunks/UiAvatar.js +144 -0
- package/vue/chunks/UiAvatarGroup.js +142 -0
- package/vue/chunks/UiBadge.js +33 -0
- package/vue/chunks/UiButton.js +47 -0
- package/vue/chunks/UiCallout.js +117 -0
- package/vue/chunks/UiCheckbox.js +167 -0
- package/vue/chunks/UiCluster.js +33 -0
- package/vue/chunks/UiCombobox.js +684 -0
- package/vue/chunks/UiContainer.js +33 -0
- package/vue/chunks/UiContextMenu.js +153 -0
- package/vue/chunks/UiDialog.js +162 -0
- package/vue/chunks/UiDisclosure.js +185 -0
- package/vue/chunks/UiEditable.js +223 -0
- package/vue/chunks/UiEditorInsertTableGrid.js +221 -0
- package/vue/chunks/UiEditorMentionMenu.js +245 -0
- package/vue/chunks/UiEditorSlashMenu.js +210 -0
- package/vue/chunks/UiEditorTableContextMenu.js +201 -0
- package/vue/chunks/UiEditorTableOverlay.js +301 -0
- package/vue/chunks/UiEditorTableToolbar.js +299 -0
- package/vue/chunks/UiEditorToolbar.js +37 -0
- package/vue/chunks/UiFloatingActionButton.js +56 -0
- package/vue/chunks/UiFormField.js +113 -0
- package/vue/chunks/UiGrid.js +33 -0
- package/vue/chunks/UiIcon.js +170 -0
- package/vue/chunks/UiIconButton.js +141 -0
- package/vue/chunks/UiInput.js +136 -0
- package/vue/chunks/UiMenu.js +163 -0
- package/vue/chunks/UiMenuItem.js +37 -0
- package/vue/chunks/UiPopover.js +149 -0
- package/vue/chunks/UiRadio.js +164 -0
- package/vue/chunks/UiRadioGroup.js +160 -0
- package/vue/chunks/UiReel.js +42 -0
- package/vue/chunks/UiSearchResultRow.js +63 -0
- package/vue/chunks/UiSearchShell.js +152 -0
- package/vue/chunks/UiSelect.js +134 -0
- package/vue/chunks/UiSeparator.js +24 -0
- package/vue/chunks/UiSidebar.js +180 -0
- package/vue/chunks/UiStack.js +38 -0
- package/vue/chunks/UiSwitch.js +162 -0
- package/vue/chunks/UiSwitcher.js +38 -0
- package/vue/chunks/UiTabs.js +210 -0
- package/vue/chunks/UiTextarea.js +139 -0
- package/vue/chunks/UiToastRegion.js +227 -0
- package/vue/chunks/UiTooltip.js +163 -0
- package/vue/chunks/UiTopBar.js +25 -0
- package/vue/chunks/UiTree.js +140 -0
- package/vue/chunks/UiTreeItem.js +315 -0
- package/vue/chunks/_plugin-vue_export-helper.js +8 -0
- package/vue/components.css +4442 -0
- package/vue/editor/LoomaEditor.d.ts +171 -0
- package/vue/editor/image-delivery.d.ts +61 -0
- package/vue/editor/index.d.ts +4 -386
- package/vue/editor/index.js +995 -1134
- package/vue/editor/primitives.d.ts +23 -0
- package/vue/index.d.ts +49 -604
- package/vue/index.js +50 -86
- package/dist/chunk-MLKGABMK.js +0 -9
- package/dist/chunk-RWLYVQY6.js +0 -5719
- package/dist/chunk-XDNZIKNI.js +0 -2721
- package/dist/declarative-generated.cjs +0 -149
- package/dist/declarative-generated.d.cts +0 -16
- package/dist/declarative-generated.d.ts +0 -16
- package/dist/declarative-generated.js +0 -124
- package/dist/declarative.cjs +0 -2750
- package/dist/declarative.d.cts +0 -101
- package/dist/declarative.d.ts +0 -101
- package/dist/declarative.js +0 -15
- package/dist/index.cjs +0 -9077
- package/dist/index.d.cts +0 -414
- package/dist/loader.cjs +0 -8442
- package/dist/loader.d.cts +0 -4
- package/dist/loader.d.ts +0 -4
- package/dist/loader.js +0 -16
- package/editor/chunk-EUIH3TBV.js +0 -6826
- package/editor/chunk-JK53ENSG.js +0 -29
- package/editor/chunk-U36XNFJN.js +0 -2592
- package/editor/table-overlay-DZFGHQDt.d.ts +0 -138
- package/editor.css +0 -1592
- package/layout/index.cjs +0 -356
- package/layout/index.d.cts +0 -18
- package/layout/index.d.ts +0 -18
- package/layout/index.js +0 -341
- package/layout.css +0 -191
- package/styles.css +0 -940
- package/vue/chunk-OX3EACZ7.js +0 -4369
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import "./looma-editor.css";
|
|
2
|
+
import type { AnyExtension, Editor, JSONContent } from "@tiptap/core";
|
|
3
|
+
import { type PropType, type VNode } from "vue";
|
|
4
|
+
import { type LoomaMentionItem, type LoomaMentionProvider } from "@threadlabs/looma/editor";
|
|
5
|
+
import { type LoomaImageActivationDetail, type LoomaImageAttributeResolver, type LoomaImageDescriptor, type LoomaImageRenditionErrorDetail } from "./image-delivery.js";
|
|
6
|
+
/**
|
|
7
|
+
* Host upload result normalized into the editor's durable image descriptor.
|
|
8
|
+
* `url` becomes the stored `src`; optional dimensions preserve layout before
|
|
9
|
+
* the image loads and `responsive` opts into host-provided rendition policy.
|
|
10
|
+
*/
|
|
11
|
+
export interface LoomaImageUploadResult extends Omit<LoomaImageDescriptor, "src"> {
|
|
12
|
+
url: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Application-owned upload boundary used by paste, drop, and file selection.
|
|
16
|
+
*
|
|
17
|
+
* @ownership The application owns network requests, persistence, and returned
|
|
18
|
+
* URLs. Looma owns only editor insertion after the promise fulfills.
|
|
19
|
+
* @failure Rejection leaves the document unchanged and is surfaced through the
|
|
20
|
+
* editor's `uploadError` event so the host chooses retry and user messaging.
|
|
21
|
+
*/
|
|
22
|
+
export type LoomaImageUploader = (file: File) => Promise<string | LoomaImageUploadResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Chooses whether formatting controls follow a selection or occupy persistent
|
|
25
|
+
* editor chrome; it does not alter document commands or stored content.
|
|
26
|
+
*/
|
|
27
|
+
export type LoomaEditorToolbarMode = "bubble" | "sticky";
|
|
28
|
+
/**
|
|
29
|
+
* Turnkey Vue editor that composes Looma's framework-neutral Tiptap extensions
|
|
30
|
+
* with declarative menus, image delivery, and table interaction chrome.
|
|
31
|
+
*
|
|
32
|
+
* @ownership The component owns its Tiptap instance and transient UI state;
|
|
33
|
+
* callers own controlled `modelValue`, extension instances, and host services.
|
|
34
|
+
* @lifecycle Mount creates one editor and browser listener set, prop watchers
|
|
35
|
+
* synchronize external state, and unmount cancels frames/listeners and destroys
|
|
36
|
+
* the editor-owned resources.
|
|
37
|
+
* @failure Upload and responsive-rendition failures are emitted to the host;
|
|
38
|
+
* durable document content is retained or left unchanged for recovery.
|
|
39
|
+
*/
|
|
40
|
+
export declare const LoomaEditor: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
41
|
+
modelValue: {
|
|
42
|
+
type: PropType<JSONContent>;
|
|
43
|
+
default: () => {
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
type?: string;
|
|
46
|
+
attrs?: Record<string, any>;
|
|
47
|
+
content?: JSONContent[];
|
|
48
|
+
marks?: {
|
|
49
|
+
type: string;
|
|
50
|
+
attrs?: Record<string, any>;
|
|
51
|
+
[key: string]: any;
|
|
52
|
+
}[];
|
|
53
|
+
text?: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
editable: {
|
|
57
|
+
type: BooleanConstructor;
|
|
58
|
+
default: boolean;
|
|
59
|
+
};
|
|
60
|
+
placeholder: {
|
|
61
|
+
type: StringConstructor;
|
|
62
|
+
default: string;
|
|
63
|
+
};
|
|
64
|
+
extensions: {
|
|
65
|
+
type: PropType<AnyExtension[]>;
|
|
66
|
+
default: () => never[];
|
|
67
|
+
};
|
|
68
|
+
mentionItems: {
|
|
69
|
+
type: PropType<LoomaMentionItem[]>;
|
|
70
|
+
default: () => never[];
|
|
71
|
+
};
|
|
72
|
+
mentionProvider: {
|
|
73
|
+
type: PropType<LoomaMentionProvider | undefined>;
|
|
74
|
+
default: undefined;
|
|
75
|
+
};
|
|
76
|
+
mentionLimit: {
|
|
77
|
+
type: NumberConstructor;
|
|
78
|
+
default: number;
|
|
79
|
+
};
|
|
80
|
+
uploadImage: {
|
|
81
|
+
type: PropType<LoomaImageUploader | undefined>;
|
|
82
|
+
default: undefined;
|
|
83
|
+
};
|
|
84
|
+
resolveImageAttributes: {
|
|
85
|
+
type: PropType<LoomaImageAttributeResolver | undefined>;
|
|
86
|
+
default: undefined;
|
|
87
|
+
};
|
|
88
|
+
toolbarMode: {
|
|
89
|
+
type: PropType<LoomaEditorToolbarMode>;
|
|
90
|
+
default: string;
|
|
91
|
+
};
|
|
92
|
+
}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
93
|
+
[key: string]: any;
|
|
94
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
95
|
+
"update:modelValue": (_value: JSONContent) => true;
|
|
96
|
+
update: (_value: JSONContent) => true;
|
|
97
|
+
ready: (_editor: Editor) => true;
|
|
98
|
+
uploadError: (_error: unknown, _file: File) => true;
|
|
99
|
+
imageActivate: (_detail: LoomaImageActivationDetail) => true;
|
|
100
|
+
imageRenditionError: (_detail: LoomaImageRenditionErrorDetail) => true;
|
|
101
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
102
|
+
modelValue: {
|
|
103
|
+
type: PropType<JSONContent>;
|
|
104
|
+
default: () => {
|
|
105
|
+
[key: string]: any;
|
|
106
|
+
type?: string;
|
|
107
|
+
attrs?: Record<string, any>;
|
|
108
|
+
content?: JSONContent[];
|
|
109
|
+
marks?: {
|
|
110
|
+
type: string;
|
|
111
|
+
attrs?: Record<string, any>;
|
|
112
|
+
[key: string]: any;
|
|
113
|
+
}[];
|
|
114
|
+
text?: string;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
editable: {
|
|
118
|
+
type: BooleanConstructor;
|
|
119
|
+
default: boolean;
|
|
120
|
+
};
|
|
121
|
+
placeholder: {
|
|
122
|
+
type: StringConstructor;
|
|
123
|
+
default: string;
|
|
124
|
+
};
|
|
125
|
+
extensions: {
|
|
126
|
+
type: PropType<AnyExtension[]>;
|
|
127
|
+
default: () => never[];
|
|
128
|
+
};
|
|
129
|
+
mentionItems: {
|
|
130
|
+
type: PropType<LoomaMentionItem[]>;
|
|
131
|
+
default: () => never[];
|
|
132
|
+
};
|
|
133
|
+
mentionProvider: {
|
|
134
|
+
type: PropType<LoomaMentionProvider | undefined>;
|
|
135
|
+
default: undefined;
|
|
136
|
+
};
|
|
137
|
+
mentionLimit: {
|
|
138
|
+
type: NumberConstructor;
|
|
139
|
+
default: number;
|
|
140
|
+
};
|
|
141
|
+
uploadImage: {
|
|
142
|
+
type: PropType<LoomaImageUploader | undefined>;
|
|
143
|
+
default: undefined;
|
|
144
|
+
};
|
|
145
|
+
resolveImageAttributes: {
|
|
146
|
+
type: PropType<LoomaImageAttributeResolver | undefined>;
|
|
147
|
+
default: undefined;
|
|
148
|
+
};
|
|
149
|
+
toolbarMode: {
|
|
150
|
+
type: PropType<LoomaEditorToolbarMode>;
|
|
151
|
+
default: string;
|
|
152
|
+
};
|
|
153
|
+
}>> & Readonly<{
|
|
154
|
+
"onUpdate:modelValue"?: ((_value: JSONContent) => any) | undefined;
|
|
155
|
+
onUpdate?: ((_value: JSONContent) => any) | undefined;
|
|
156
|
+
onReady?: ((_editor: Editor) => any) | undefined;
|
|
157
|
+
onUploadError?: ((_error: unknown, _file: File) => any) | undefined;
|
|
158
|
+
onImageActivate?: ((_detail: LoomaImageActivationDetail) => any) | undefined;
|
|
159
|
+
onImageRenditionError?: ((_detail: LoomaImageRenditionErrorDetail) => any) | undefined;
|
|
160
|
+
}>, {
|
|
161
|
+
placeholder: string;
|
|
162
|
+
modelValue: JSONContent;
|
|
163
|
+
editable: boolean;
|
|
164
|
+
extensions: AnyExtension[];
|
|
165
|
+
mentionItems: LoomaMentionItem[];
|
|
166
|
+
mentionProvider: LoomaMentionProvider | undefined;
|
|
167
|
+
mentionLimit: number;
|
|
168
|
+
uploadImage: LoomaImageUploader | undefined;
|
|
169
|
+
resolveImageAttributes: LoomaImageAttributeResolver | undefined;
|
|
170
|
+
toolbarMode: LoomaEditorToolbarMode;
|
|
171
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Extension, type Editor, type JSONContent } from "@tiptap/core";
|
|
2
|
+
/** What caused an overlay to open or close. */
|
|
3
|
+
type OverlayTrigger = "keyboard" | "pointer" | "programmatic";
|
|
4
|
+
/**
|
|
5
|
+
* Durable image data stored in the editor document.
|
|
6
|
+
* Delivery-specific attributes are intentionally absent so serialized content
|
|
7
|
+
* remains portable across CDNs, viewport policies, and Vue applications.
|
|
8
|
+
*/
|
|
9
|
+
export interface LoomaImageDescriptor {
|
|
10
|
+
src: string;
|
|
11
|
+
alt?: string;
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
responsive?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Browser-only attributes resolved by a host image-delivery provider. */
|
|
17
|
+
export interface LoomaImageRenditionAttributes {
|
|
18
|
+
src?: string;
|
|
19
|
+
srcset?: string;
|
|
20
|
+
sizes?: string;
|
|
21
|
+
loading?: "eager" | "lazy";
|
|
22
|
+
decoding?: "async" | "auto" | "sync";
|
|
23
|
+
fetchPriority?: "auto" | "high" | "low";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Host policy for deriving transient browser-delivery attributes.
|
|
27
|
+
*
|
|
28
|
+
* @ownership The application owns the resolver and any URL/signing policy it
|
|
29
|
+
* consults; Looma reads its result without persisting it into editor JSON.
|
|
30
|
+
* @failure Throwing or returning `undefined` falls back to the durable source
|
|
31
|
+
* instead of interrupting rendering or mutating the document.
|
|
32
|
+
*/
|
|
33
|
+
export type LoomaImageAttributeResolver = (image: LoomaImageDescriptor) => LoomaImageRenditionAttributes | undefined;
|
|
34
|
+
/** User-originated interaction that may request the host's image viewer. */
|
|
35
|
+
export type LoomaImageActivationTrigger = Exclude<OverlayTrigger, "programmatic">;
|
|
36
|
+
/**
|
|
37
|
+
* Image identity and user trigger emitted when an editor image is activated.
|
|
38
|
+
* Hosts may use the stable descriptor to open a viewer without inspecting DOM.
|
|
39
|
+
*/
|
|
40
|
+
export interface LoomaImageActivationDetail extends LoomaImageDescriptor {
|
|
41
|
+
trigger: LoomaImageActivationTrigger;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Durable image identity reported after a transient responsive rendition fails.
|
|
45
|
+
* The programmatic trigger distinguishes delivery fallback from user intent.
|
|
46
|
+
*/
|
|
47
|
+
export interface LoomaImageRenditionErrorDetail extends LoomaImageDescriptor {
|
|
48
|
+
trigger: "programmatic";
|
|
49
|
+
}
|
|
50
|
+
interface LoomaImageDeliveryExtensionOptions {
|
|
51
|
+
resolveAttributes: () => LoomaImageAttributeResolver | undefined;
|
|
52
|
+
}
|
|
53
|
+
export declare function normalizeImageDimension(value: unknown): number | undefined;
|
|
54
|
+
export declare function imageDescriptorFromAttrs(attrs: Record<string, unknown>): LoomaImageDescriptor | null;
|
|
55
|
+
export declare function createLoomaImageDeliveryController(options: LoomaImageDeliveryExtensionOptions): {
|
|
56
|
+
extension: Extension;
|
|
57
|
+
markRenditionFailed: (editor: Editor, src: string) => boolean;
|
|
58
|
+
reset: (editor: Editor) => void;
|
|
59
|
+
};
|
|
60
|
+
export declare function imageUploadContent(image: LoomaImageDescriptor): JSONContent;
|
|
61
|
+
export {};
|
package/vue/editor/index.d.ts
CHANGED
|
@@ -1,386 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export * from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { MentionMenuHighlightEventDetail, SlashMenuHighlightEventDetail, MentionMenuSelectEventDetail, SlashMenuSelectEventDetail, TableContextMenuActionEventDetail, TableOverlayActionEventDetail, InsertTableEventDetail } from '@threadlabs/looma/editor/ui';
|
|
6
|
-
import { JSONContent, AnyExtension, Editor } from '@tiptap/core';
|
|
7
|
-
import { OverlayTrigger } from '@threadlabs/looma/core';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Native editor event details unwrapped for Vue callback attributes.
|
|
11
|
-
* Multiple menu primitives share `highlight` and `select` because their index
|
|
12
|
-
* semantics are identical; table primitives share the typed action channel.
|
|
13
|
-
*/
|
|
14
|
-
interface VueEditorAdapterEventMap {
|
|
15
|
-
highlight: MentionMenuHighlightEventDetail | SlashMenuHighlightEventDetail;
|
|
16
|
-
select: MentionMenuSelectEventDetail | SlashMenuSelectEventDetail;
|
|
17
|
-
action: TableContextMenuActionEventDetail | TableOverlayActionEventDetail;
|
|
18
|
-
insert: InsertTableEventDetail;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Vue projection of the slash suggestion menu with lifecycle-safe event wiring.
|
|
22
|
-
*/
|
|
23
|
-
declare const EditorSlashMenu: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
24
|
-
open: {
|
|
25
|
-
type: BooleanConstructor;
|
|
26
|
-
default: boolean;
|
|
27
|
-
};
|
|
28
|
-
query: {
|
|
29
|
-
type: StringConstructor;
|
|
30
|
-
default: string;
|
|
31
|
-
};
|
|
32
|
-
items: {
|
|
33
|
-
type: PropType<SlashMenuItem[]>;
|
|
34
|
-
default: () => never[];
|
|
35
|
-
};
|
|
36
|
-
selectedIndex: {
|
|
37
|
-
type: NumberConstructor;
|
|
38
|
-
default: number;
|
|
39
|
-
};
|
|
40
|
-
anchorRect: {
|
|
41
|
-
type: PropType<SlashMenuAnchorRect | null>;
|
|
42
|
-
default: null;
|
|
43
|
-
};
|
|
44
|
-
loading: {
|
|
45
|
-
type: BooleanConstructor;
|
|
46
|
-
default: boolean;
|
|
47
|
-
};
|
|
48
|
-
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
49
|
-
[key: string]: any;
|
|
50
|
-
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
51
|
-
open: {
|
|
52
|
-
type: BooleanConstructor;
|
|
53
|
-
default: boolean;
|
|
54
|
-
};
|
|
55
|
-
query: {
|
|
56
|
-
type: StringConstructor;
|
|
57
|
-
default: string;
|
|
58
|
-
};
|
|
59
|
-
items: {
|
|
60
|
-
type: PropType<SlashMenuItem[]>;
|
|
61
|
-
default: () => never[];
|
|
62
|
-
};
|
|
63
|
-
selectedIndex: {
|
|
64
|
-
type: NumberConstructor;
|
|
65
|
-
default: number;
|
|
66
|
-
};
|
|
67
|
-
anchorRect: {
|
|
68
|
-
type: PropType<SlashMenuAnchorRect | null>;
|
|
69
|
-
default: null;
|
|
70
|
-
};
|
|
71
|
-
loading: {
|
|
72
|
-
type: BooleanConstructor;
|
|
73
|
-
default: boolean;
|
|
74
|
-
};
|
|
75
|
-
}>> & Readonly<{}>, {
|
|
76
|
-
open: boolean;
|
|
77
|
-
items: SlashMenuItem[];
|
|
78
|
-
query: string;
|
|
79
|
-
loading: boolean;
|
|
80
|
-
anchorRect: SlashMenuAnchorRect | null;
|
|
81
|
-
selectedIndex: number;
|
|
82
|
-
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
83
|
-
/** Vue projection of the mention menu using the shared suggestion lifecycle. */
|
|
84
|
-
declare const EditorMentionMenu: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
85
|
-
open: {
|
|
86
|
-
type: BooleanConstructor;
|
|
87
|
-
default: boolean;
|
|
88
|
-
};
|
|
89
|
-
query: {
|
|
90
|
-
type: StringConstructor;
|
|
91
|
-
default: string;
|
|
92
|
-
};
|
|
93
|
-
items: {
|
|
94
|
-
type: PropType<LoomaMentionItem[]>;
|
|
95
|
-
default: () => never[];
|
|
96
|
-
};
|
|
97
|
-
selectedIndex: {
|
|
98
|
-
type: NumberConstructor;
|
|
99
|
-
default: number;
|
|
100
|
-
};
|
|
101
|
-
anchorRect: {
|
|
102
|
-
type: PropType<SlashMenuAnchorRect | null>;
|
|
103
|
-
default: null;
|
|
104
|
-
};
|
|
105
|
-
loading: {
|
|
106
|
-
type: BooleanConstructor;
|
|
107
|
-
default: boolean;
|
|
108
|
-
};
|
|
109
|
-
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
110
|
-
[key: string]: any;
|
|
111
|
-
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
112
|
-
open: {
|
|
113
|
-
type: BooleanConstructor;
|
|
114
|
-
default: boolean;
|
|
115
|
-
};
|
|
116
|
-
query: {
|
|
117
|
-
type: StringConstructor;
|
|
118
|
-
default: string;
|
|
119
|
-
};
|
|
120
|
-
items: {
|
|
121
|
-
type: PropType<LoomaMentionItem[]>;
|
|
122
|
-
default: () => never[];
|
|
123
|
-
};
|
|
124
|
-
selectedIndex: {
|
|
125
|
-
type: NumberConstructor;
|
|
126
|
-
default: number;
|
|
127
|
-
};
|
|
128
|
-
anchorRect: {
|
|
129
|
-
type: PropType<SlashMenuAnchorRect | null>;
|
|
130
|
-
default: null;
|
|
131
|
-
};
|
|
132
|
-
loading: {
|
|
133
|
-
type: BooleanConstructor;
|
|
134
|
-
default: boolean;
|
|
135
|
-
};
|
|
136
|
-
}>> & Readonly<{}>, {
|
|
137
|
-
open: boolean;
|
|
138
|
-
items: LoomaMentionItem[];
|
|
139
|
-
query: string;
|
|
140
|
-
loading: boolean;
|
|
141
|
-
anchorRect: SlashMenuAnchorRect | null;
|
|
142
|
-
selectedIndex: number;
|
|
143
|
-
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
144
|
-
/** Vue projection of the editor toolbar's semantic layout shell. */
|
|
145
|
-
declare const EditorToolbar: vue.DefineComponent<Record<string, never>>;
|
|
146
|
-
/** Vue projection that unwraps context-menu table actions for callbacks. */
|
|
147
|
-
declare const EditorTableContextMenu: vue.DefineComponent<Record<string, never>>;
|
|
148
|
-
/** Vue projection that unwraps toolbar table actions for callbacks. */
|
|
149
|
-
declare const EditorTableToolbar: vue.DefineComponent<Record<string, never>>;
|
|
150
|
-
/** Vue projection that reports the selected table dimensions as insert intent. */
|
|
151
|
-
declare const EditorInsertTableGrid: vue.DefineComponent<Record<string, never>>;
|
|
152
|
-
/**
|
|
153
|
-
* Vue projection of editor-owned table geometry and boundary actions.
|
|
154
|
-
* Geometry is assigned as a DOM property so structured measurements are never
|
|
155
|
-
* serialized through attributes.
|
|
156
|
-
*/
|
|
157
|
-
declare const EditorTableOverlay: vue.DefineComponent<Record<string, never>>;
|
|
158
|
-
/**
|
|
159
|
-
* Canonical Vue editor export-to-native-tag correspondence used by parity
|
|
160
|
-
* checks and tooling that must enumerate opt-in editor primitives.
|
|
161
|
-
*/
|
|
162
|
-
declare const EDITOR_ADAPTER_COMPONENT_TAG_MAP: {
|
|
163
|
-
readonly EditorToolbar: "ui-editor-toolbar";
|
|
164
|
-
readonly EditorSlashMenu: "ui-editor-slash-menu";
|
|
165
|
-
readonly EditorMentionMenu: "ui-editor-mention-menu";
|
|
166
|
-
readonly EditorTableContextMenu: "ui-editor-table-context-menu";
|
|
167
|
-
readonly EditorTableToolbar: "ui-editor-table-toolbar";
|
|
168
|
-
readonly EditorInsertTableGrid: "ui-editor-insert-table-grid";
|
|
169
|
-
readonly EditorTableOverlay: "ui-editor-table-overlay";
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Durable image data stored in the editor document.
|
|
174
|
-
* Delivery-specific attributes are intentionally absent so serialized content
|
|
175
|
-
* remains portable across CDNs, viewport policies, and Vue applications.
|
|
176
|
-
*/
|
|
177
|
-
interface LoomaImageDescriptor {
|
|
178
|
-
src: string;
|
|
179
|
-
alt?: string;
|
|
180
|
-
width?: number;
|
|
181
|
-
height?: number;
|
|
182
|
-
responsive?: boolean;
|
|
183
|
-
}
|
|
184
|
-
/** Browser-only attributes resolved by a host image-delivery provider. */
|
|
185
|
-
interface LoomaImageRenditionAttributes {
|
|
186
|
-
src?: string;
|
|
187
|
-
srcset?: string;
|
|
188
|
-
sizes?: string;
|
|
189
|
-
loading?: "eager" | "lazy";
|
|
190
|
-
decoding?: "async" | "auto" | "sync";
|
|
191
|
-
fetchPriority?: "auto" | "high" | "low";
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Host policy for deriving transient browser-delivery attributes.
|
|
195
|
-
*
|
|
196
|
-
* @ownership The application owns the resolver and any URL/signing policy it
|
|
197
|
-
* consults; Looma reads its result without persisting it into editor JSON.
|
|
198
|
-
* @failure Throwing or returning `undefined` falls back to the durable source
|
|
199
|
-
* instead of interrupting rendering or mutating the document.
|
|
200
|
-
*/
|
|
201
|
-
type LoomaImageAttributeResolver = (image: LoomaImageDescriptor) => LoomaImageRenditionAttributes | undefined;
|
|
202
|
-
/** User-originated interaction that may request the host's image viewer. */
|
|
203
|
-
type LoomaImageActivationTrigger = Exclude<OverlayTrigger, "programmatic">;
|
|
204
|
-
/**
|
|
205
|
-
* Image identity and user trigger emitted when an editor image is activated.
|
|
206
|
-
* Hosts may use the stable descriptor to open a viewer without inspecting DOM.
|
|
207
|
-
*/
|
|
208
|
-
interface LoomaImageActivationDetail extends LoomaImageDescriptor {
|
|
209
|
-
trigger: LoomaImageActivationTrigger;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Durable image identity reported after a transient responsive rendition fails.
|
|
213
|
-
* The programmatic trigger distinguishes delivery fallback from user intent.
|
|
214
|
-
*/
|
|
215
|
-
interface LoomaImageRenditionErrorDetail extends LoomaImageDescriptor {
|
|
216
|
-
trigger: "programmatic";
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Host upload result normalized into the editor's durable image descriptor.
|
|
221
|
-
* `url` becomes the stored `src`; optional dimensions preserve layout before
|
|
222
|
-
* the image loads and `responsive` opts into host-provided rendition policy.
|
|
223
|
-
*/
|
|
224
|
-
interface LoomaImageUploadResult extends Omit<LoomaImageDescriptor, "src"> {
|
|
225
|
-
url: string;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Application-owned upload boundary used by paste, drop, and file selection.
|
|
229
|
-
*
|
|
230
|
-
* @ownership The application owns network requests, persistence, and returned
|
|
231
|
-
* URLs. Looma owns only editor insertion after the promise fulfills.
|
|
232
|
-
* @failure Rejection leaves the document unchanged and is surfaced through the
|
|
233
|
-
* editor's `uploadError` event so the host chooses retry and user messaging.
|
|
234
|
-
*/
|
|
235
|
-
type LoomaImageUploader = (file: File) => Promise<string | LoomaImageUploadResult>;
|
|
236
|
-
/**
|
|
237
|
-
* Chooses whether formatting controls follow a selection or occupy persistent
|
|
238
|
-
* editor chrome; it does not alter document commands or stored content.
|
|
239
|
-
*/
|
|
240
|
-
type LoomaEditorToolbarMode = "bubble" | "sticky";
|
|
241
|
-
/**
|
|
242
|
-
* Turnkey Vue editor that composes Looma's framework-neutral Tiptap extensions
|
|
243
|
-
* with declarative menus, image delivery, and table interaction chrome.
|
|
244
|
-
*
|
|
245
|
-
* @ownership The component owns its Tiptap instance and transient UI state;
|
|
246
|
-
* callers own controlled `modelValue`, extension instances, and host services.
|
|
247
|
-
* @lifecycle Mount creates one editor and browser listener set, prop watchers
|
|
248
|
-
* synchronize external state, and unmount cancels frames/listeners and destroys
|
|
249
|
-
* the editor-owned resources.
|
|
250
|
-
* @failure Upload and responsive-rendition failures are emitted to the host;
|
|
251
|
-
* durable document content is retained or left unchanged for recovery.
|
|
252
|
-
*/
|
|
253
|
-
declare const LoomaEditor: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
254
|
-
modelValue: {
|
|
255
|
-
type: PropType<JSONContent>;
|
|
256
|
-
default: () => {
|
|
257
|
-
[key: string]: any;
|
|
258
|
-
type?: string;
|
|
259
|
-
attrs?: Record<string, any>;
|
|
260
|
-
content?: JSONContent[];
|
|
261
|
-
marks?: {
|
|
262
|
-
type: string;
|
|
263
|
-
attrs?: Record<string, any>;
|
|
264
|
-
[key: string]: any;
|
|
265
|
-
}[];
|
|
266
|
-
text?: string;
|
|
267
|
-
};
|
|
268
|
-
};
|
|
269
|
-
editable: {
|
|
270
|
-
type: BooleanConstructor;
|
|
271
|
-
default: boolean;
|
|
272
|
-
};
|
|
273
|
-
placeholder: {
|
|
274
|
-
type: StringConstructor;
|
|
275
|
-
default: string;
|
|
276
|
-
};
|
|
277
|
-
extensions: {
|
|
278
|
-
type: PropType<AnyExtension[]>;
|
|
279
|
-
default: () => never[];
|
|
280
|
-
};
|
|
281
|
-
mentionItems: {
|
|
282
|
-
type: PropType<LoomaMentionItem[]>;
|
|
283
|
-
default: () => never[];
|
|
284
|
-
};
|
|
285
|
-
mentionProvider: {
|
|
286
|
-
type: PropType<LoomaMentionProvider | undefined>;
|
|
287
|
-
default: undefined;
|
|
288
|
-
};
|
|
289
|
-
mentionLimit: {
|
|
290
|
-
type: NumberConstructor;
|
|
291
|
-
default: number;
|
|
292
|
-
};
|
|
293
|
-
uploadImage: {
|
|
294
|
-
type: PropType<LoomaImageUploader | undefined>;
|
|
295
|
-
default: undefined;
|
|
296
|
-
};
|
|
297
|
-
resolveImageAttributes: {
|
|
298
|
-
type: PropType<LoomaImageAttributeResolver | undefined>;
|
|
299
|
-
default: undefined;
|
|
300
|
-
};
|
|
301
|
-
toolbarMode: {
|
|
302
|
-
type: PropType<LoomaEditorToolbarMode>;
|
|
303
|
-
default: string;
|
|
304
|
-
};
|
|
305
|
-
}>, () => VNode<vue.RendererNode, vue.RendererElement, {
|
|
306
|
-
[key: string]: any;
|
|
307
|
-
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
308
|
-
"update:modelValue": (_value: JSONContent) => true;
|
|
309
|
-
update: (_value: JSONContent) => true;
|
|
310
|
-
ready: (_editor: Editor) => true;
|
|
311
|
-
uploadError: (_error: unknown, _file: File) => true;
|
|
312
|
-
imageActivate: (_detail: LoomaImageActivationDetail) => true;
|
|
313
|
-
imageRenditionError: (_detail: LoomaImageRenditionErrorDetail) => true;
|
|
314
|
-
}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
315
|
-
modelValue: {
|
|
316
|
-
type: PropType<JSONContent>;
|
|
317
|
-
default: () => {
|
|
318
|
-
[key: string]: any;
|
|
319
|
-
type?: string;
|
|
320
|
-
attrs?: Record<string, any>;
|
|
321
|
-
content?: JSONContent[];
|
|
322
|
-
marks?: {
|
|
323
|
-
type: string;
|
|
324
|
-
attrs?: Record<string, any>;
|
|
325
|
-
[key: string]: any;
|
|
326
|
-
}[];
|
|
327
|
-
text?: string;
|
|
328
|
-
};
|
|
329
|
-
};
|
|
330
|
-
editable: {
|
|
331
|
-
type: BooleanConstructor;
|
|
332
|
-
default: boolean;
|
|
333
|
-
};
|
|
334
|
-
placeholder: {
|
|
335
|
-
type: StringConstructor;
|
|
336
|
-
default: string;
|
|
337
|
-
};
|
|
338
|
-
extensions: {
|
|
339
|
-
type: PropType<AnyExtension[]>;
|
|
340
|
-
default: () => never[];
|
|
341
|
-
};
|
|
342
|
-
mentionItems: {
|
|
343
|
-
type: PropType<LoomaMentionItem[]>;
|
|
344
|
-
default: () => never[];
|
|
345
|
-
};
|
|
346
|
-
mentionProvider: {
|
|
347
|
-
type: PropType<LoomaMentionProvider | undefined>;
|
|
348
|
-
default: undefined;
|
|
349
|
-
};
|
|
350
|
-
mentionLimit: {
|
|
351
|
-
type: NumberConstructor;
|
|
352
|
-
default: number;
|
|
353
|
-
};
|
|
354
|
-
uploadImage: {
|
|
355
|
-
type: PropType<LoomaImageUploader | undefined>;
|
|
356
|
-
default: undefined;
|
|
357
|
-
};
|
|
358
|
-
resolveImageAttributes: {
|
|
359
|
-
type: PropType<LoomaImageAttributeResolver | undefined>;
|
|
360
|
-
default: undefined;
|
|
361
|
-
};
|
|
362
|
-
toolbarMode: {
|
|
363
|
-
type: PropType<LoomaEditorToolbarMode>;
|
|
364
|
-
default: string;
|
|
365
|
-
};
|
|
366
|
-
}>> & Readonly<{
|
|
367
|
-
"onUpdate:modelValue"?: (_value: JSONContent) => any;
|
|
368
|
-
onUpdate?: (_value: JSONContent) => any;
|
|
369
|
-
onReady?: (_editor: Editor) => any;
|
|
370
|
-
onUploadError?: (_error: unknown, _file: File) => any;
|
|
371
|
-
onImageActivate?: (_detail: LoomaImageActivationDetail) => any;
|
|
372
|
-
onImageRenditionError?: (_detail: LoomaImageRenditionErrorDetail) => any;
|
|
373
|
-
}>, {
|
|
374
|
-
placeholder: string;
|
|
375
|
-
modelValue: JSONContent;
|
|
376
|
-
editable: boolean;
|
|
377
|
-
extensions: AnyExtension[];
|
|
378
|
-
mentionItems: LoomaMentionItem[];
|
|
379
|
-
mentionProvider: LoomaMentionProvider | undefined;
|
|
380
|
-
mentionLimit: number;
|
|
381
|
-
uploadImage: LoomaImageUploader | undefined;
|
|
382
|
-
resolveImageAttributes: LoomaImageAttributeResolver | undefined;
|
|
383
|
-
toolbarMode: LoomaEditorToolbarMode;
|
|
384
|
-
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
385
|
-
|
|
386
|
-
export { EDITOR_ADAPTER_COMPONENT_TAG_MAP, EditorInsertTableGrid, EditorMentionMenu, EditorSlashMenu, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, LoomaEditor, type LoomaEditorToolbarMode, type LoomaImageActivationDetail, type LoomaImageActivationTrigger, type LoomaImageAttributeResolver, type LoomaImageDescriptor, type LoomaImageRenditionAttributes, type LoomaImageRenditionErrorDetail, type LoomaImageUploadResult, type LoomaImageUploader, type VueEditorAdapterEventMap };
|
|
1
|
+
export * from "@threadlabs/looma/editor";
|
|
2
|
+
export * from "./primitives.js";
|
|
3
|
+
export { LoomaEditor, type LoomaEditorToolbarMode, type LoomaImageUploader, type LoomaImageUploadResult, } from "./LoomaEditor.js";
|
|
4
|
+
export type { LoomaImageActivationDetail, LoomaImageActivationTrigger, LoomaImageAttributeResolver, LoomaImageDescriptor, LoomaImageRenditionErrorDetail, LoomaImageRenditionAttributes, } from "./image-delivery.js";
|