@threadlabs/looma 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -12
- package/components/shared/editor.js +69 -0
- package/components/shared/input-modality.js +20 -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 +198 -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 +167 -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 +206 -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 +169 -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 +229 -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 +268 -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 +4405 -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 +48 -604
- package/vue/index.js +49 -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
package/editor/index.js
CHANGED
|
@@ -1,72 +1,97 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
createLoomaMentionExtension,
|
|
54
|
-
createLoomaSlashCommandExtension,
|
|
55
|
-
filterLoomaMentionItems,
|
|
56
|
-
getActiveTableCellAlignment,
|
|
57
|
-
getActiveTableCellBackground,
|
|
58
|
-
getActiveTableUiState,
|
|
59
|
-
getDefaultEditorExtensions,
|
|
60
|
-
getDefaultSlashCommands,
|
|
61
|
-
getLoomaTableExtensions,
|
|
62
|
-
handleTableAction,
|
|
63
|
-
handleTableOverlayAction,
|
|
64
|
-
insertTableAtRange,
|
|
65
|
-
measureTableOverlayGeometry,
|
|
66
|
-
normalizeActiveTableColumnWidths,
|
|
67
|
-
normalizeMentionResultLimit,
|
|
68
|
-
resolveTableCellAt,
|
|
69
|
-
setActiveTableCellAlignment,
|
|
70
|
-
setActiveTableCellBackground,
|
|
71
|
-
shouldShowTextFormattingToolbar
|
|
1
|
+
import { n as TABLE_CELL_BACKGROUND_PRESETS, t as TABLE_CELL_BACKGROUND_OPTIONS } from "./chunks/table-backgrounds.js";
|
|
2
|
+
import { n as resolveTableCellAt, t as measureTableOverlayGeometry } from "./chunks/ui.js";
|
|
3
|
+
import { C as DEFAULT_MENTION_RESULT_LIMIT, D as LOOMA_CALLOUT_TONES, E as normalizeMentionResultLimit, O as LoomaCallout, S as createLoomaMentionExtension, T as filterLoomaMentionItems, _ as getActiveTableCellBackground, a as handleTableAction, b as LoomaSmartPaste, c as normalizeActiveTableColumnWidths, d as getDefaultEditorExtensions, f as getLoomaTableExtensions, g as getActiveTableCellAlignment, h as LoomaTableHeader, i as getActiveTableUiState, l as shouldShowTextFormattingToolbar, m as LoomaTableCell, n as createLoomaSlashCommandExtension, o as handleTableOverlayAction, p as LoomaTable, r as getDefaultSlashCommands, s as insertTableAtRange, t as LoomaSlashCommand, u as LoomaTableKit, v as setActiveTableCellAlignment, w as MAX_MENTION_RESULT_LIMIT, x as LoomaMentionSuggestionPluginKey, y as setActiveTableCellBackground } from "./chunks/extensions.js";
|
|
4
|
+
import { AlignCenter, AlignLeft, AlignRight, Bold, Braces, ChevronDown, ChevronLeft, CircleCheck, CircleX, CodeXml, Columns3, Ellipsis, Eraser, GripHorizontal, GripVertical, Heading1, Heading2, Heading3, Highlighter, Image, Info, Italic, List, ListOrdered, ListTodo, Merge, Minus, NotebookPen, PaintBucket, PanelBottom, PanelLeft, PanelRight, PanelTop, Pilcrow, Plus, Quote, Redo2, Rows3, Split, Strikethrough, Table2, Trash2, TriangleAlert, Underline, Undo2 } from "lucide";
|
|
5
|
+
//#region src/editor/icons.ts
|
|
6
|
+
/** The opinionated Lucide set used by Looma's shipped interaction surfaces. */
|
|
7
|
+
var LOOMA_ICONS = {
|
|
8
|
+
"align-center": AlignCenter,
|
|
9
|
+
"align-left": AlignLeft,
|
|
10
|
+
"align-right": AlignRight,
|
|
11
|
+
bold: Bold,
|
|
12
|
+
braces: Braces,
|
|
13
|
+
"circle-check": CircleCheck,
|
|
14
|
+
"circle-x": CircleX,
|
|
15
|
+
"chevron-down": ChevronDown,
|
|
16
|
+
"chevron-left": ChevronLeft,
|
|
17
|
+
"code-xml": CodeXml,
|
|
18
|
+
columns: Columns3,
|
|
19
|
+
ellipsis: Ellipsis,
|
|
20
|
+
eraser: Eraser,
|
|
21
|
+
"grip-horizontal": GripHorizontal,
|
|
22
|
+
"grip-vertical": GripVertical,
|
|
23
|
+
"heading-1": Heading1,
|
|
24
|
+
"heading-2": Heading2,
|
|
25
|
+
"heading-3": Heading3,
|
|
26
|
+
highlighter: Highlighter,
|
|
27
|
+
image: Image,
|
|
28
|
+
info: Info,
|
|
29
|
+
italic: Italic,
|
|
30
|
+
list: List,
|
|
31
|
+
"list-ordered": ListOrdered,
|
|
32
|
+
"list-todo": ListTodo,
|
|
33
|
+
merge: Merge,
|
|
34
|
+
"notebook-pen": NotebookPen,
|
|
35
|
+
minus: Minus,
|
|
36
|
+
"paint-bucket": PaintBucket,
|
|
37
|
+
"panel-bottom": PanelBottom,
|
|
38
|
+
"panel-left": PanelLeft,
|
|
39
|
+
"panel-right": PanelRight,
|
|
40
|
+
"panel-top": PanelTop,
|
|
41
|
+
pilcrow: Pilcrow,
|
|
42
|
+
plus: Plus,
|
|
43
|
+
quote: Quote,
|
|
44
|
+
redo: Redo2,
|
|
45
|
+
rows: Rows3,
|
|
46
|
+
split: Split,
|
|
47
|
+
strikethrough: Strikethrough,
|
|
48
|
+
table: Table2,
|
|
49
|
+
trash: Trash2,
|
|
50
|
+
"triangle-alert": TriangleAlert,
|
|
51
|
+
underline: Underline,
|
|
52
|
+
undo: Undo2
|
|
72
53
|
};
|
|
54
|
+
function serializeAttributes(attributes) {
|
|
55
|
+
return Object.entries(attributes).map(([name, value]) => ` ${name}="${escapeAttribute(value)}"`).join("");
|
|
56
|
+
}
|
|
57
|
+
function escapeAttribute(value) {
|
|
58
|
+
return String(value).replaceAll("&", "&").replaceAll("\"", """);
|
|
59
|
+
}
|
|
60
|
+
function serializeIconNode(node) {
|
|
61
|
+
const [tag, attributes] = node;
|
|
62
|
+
return `<${tag}${serializeAttributes(attributes)}></${tag}>`;
|
|
63
|
+
}
|
|
64
|
+
/** Creates consistent, currentColor-driven SVG markup for framework-neutral components. */
|
|
65
|
+
function loomaIconMarkup(name, className = "looma-icon") {
|
|
66
|
+
return [
|
|
67
|
+
`<svg class="${escapeAttribute(className)}" data-looma-icon="${name}" aria-hidden="true" focusable="false"`,
|
|
68
|
+
" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"",
|
|
69
|
+
" stroke-linecap=\"round\" stroke-linejoin=\"round\">",
|
|
70
|
+
LOOMA_ICONS[name].map(serializeIconNode).join(""),
|
|
71
|
+
"</svg>"
|
|
72
|
+
].join("");
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/editor/viewport.ts
|
|
76
|
+
/**
|
|
77
|
+
* The visual viewport (what is on screen, net of the on-screen keyboard and pinch zoom).
|
|
78
|
+
*
|
|
79
|
+
* @contract Falls back to the layout viewport where `visualViewport` is unavailable.
|
|
80
|
+
*/
|
|
81
|
+
function getVisualViewportRect(owner = window) {
|
|
82
|
+
const viewport = owner.visualViewport;
|
|
83
|
+
const left = viewport?.offsetLeft ?? 0;
|
|
84
|
+
const top = viewport?.offsetTop ?? 0;
|
|
85
|
+
const width = viewport?.width ?? owner.innerWidth;
|
|
86
|
+
const height = viewport?.height ?? owner.innerHeight;
|
|
87
|
+
return {
|
|
88
|
+
left,
|
|
89
|
+
top,
|
|
90
|
+
right: left + width,
|
|
91
|
+
bottom: top + height,
|
|
92
|
+
width,
|
|
93
|
+
height
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
export { DEFAULT_MENTION_RESULT_LIMIT, LOOMA_CALLOUT_TONES, LOOMA_ICONS, LoomaCallout, LoomaMentionSuggestionPluginKey, LoomaSlashCommand, LoomaSmartPaste, LoomaTable, LoomaTableCell, LoomaTableHeader, LoomaTableKit, MAX_MENTION_RESULT_LIMIT, TABLE_CELL_BACKGROUND_OPTIONS, TABLE_CELL_BACKGROUND_PRESETS, createLoomaMentionExtension, createLoomaSlashCommandExtension, filterLoomaMentionItems, getActiveTableCellAlignment, getActiveTableCellBackground, getActiveTableUiState, getDefaultEditorExtensions, getDefaultSlashCommands, getLoomaTableExtensions, getVisualViewportRect, handleTableAction, handleTableOverlayAction, insertTableAtRange, loomaIconMarkup, measureTableOverlayGeometry, normalizeActiveTableColumnWidths, normalizeMentionResultLimit, resolveTableCellAt, setActiveTableCellAlignment, setActiveTableCellBackground, shouldShowTextFormattingToolbar };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/** Default visible candidate budget when an application does not set a limit. */
|
|
2
|
+
export declare const DEFAULT_MENTION_RESULT_LIMIT = 8;
|
|
3
|
+
/** Hard candidate ceiling shared by providers, keyboard state, and menu rendering. */
|
|
4
|
+
export declare const MAX_MENTION_RESULT_LIMIT = 20;
|
|
5
|
+
/**
|
|
6
|
+
* Application-owned identity and display data for one mention candidate.
|
|
7
|
+
* Looma persists `id` and `label` in the editor document; `detail` and
|
|
8
|
+
* `initials` are presentation hints and are not part of mention identity.
|
|
9
|
+
*/
|
|
10
|
+
export interface LoomaMentionItem {
|
|
11
|
+
id: string;
|
|
12
|
+
label: string;
|
|
13
|
+
detail?: string;
|
|
14
|
+
initials?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Bounded result budget passed to a directory provider for the current query. */
|
|
17
|
+
export interface LoomaMentionProviderContext {
|
|
18
|
+
limit: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolves candidates for the current query.
|
|
22
|
+
*
|
|
23
|
+
* Providers may perform asynchronous directory lookup, but should return no
|
|
24
|
+
* more than `context.limit`. The extension also clamps and filters results so a
|
|
25
|
+
* provider cannot accidentally create an unbounded suggestion surface.
|
|
26
|
+
*
|
|
27
|
+
* @ownership The application owns directory access and returned item data;
|
|
28
|
+
* Looma owns filtering, clamping, and the suggestion state that consumes it.
|
|
29
|
+
*/
|
|
30
|
+
export type LoomaMentionProvider = (query: string, context: LoomaMentionProviderContext) => readonly LoomaMentionItem[] | Promise<readonly LoomaMentionItem[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Complete render state handed from the headless Tiptap extension to UI chrome.
|
|
33
|
+
*
|
|
34
|
+
* The snapshot owns selection commands only while `active` is true. Consumers
|
|
35
|
+
* should replace, not merge, snapshots: callbacks and rectangles are tied to a
|
|
36
|
+
* particular suggestion range and become stale as soon as the query changes.
|
|
37
|
+
*
|
|
38
|
+
* @lifecycle `highlight` and `select` are valid only while this snapshot remains
|
|
39
|
+
* active; the next query update or exit invalidates both callbacks.
|
|
40
|
+
*/
|
|
41
|
+
export interface LoomaMentionMenuSnapshot {
|
|
42
|
+
active: boolean;
|
|
43
|
+
items: LoomaMentionItem[];
|
|
44
|
+
selectedIndex: number;
|
|
45
|
+
query: string;
|
|
46
|
+
rect: DOMRect | null;
|
|
47
|
+
loading: boolean;
|
|
48
|
+
highlight: ((index: number) => void) | null;
|
|
49
|
+
select: ((index: number) => void) | null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Mention policy supplied by the application.
|
|
53
|
+
*
|
|
54
|
+
* Looma owns suggestion mechanics and accessibility state; the application
|
|
55
|
+
* owns the directory and may render the snapshot with Looma's menu or custom
|
|
56
|
+
* UI. `menuId` must match that UI's listbox id so `aria-controls` and
|
|
57
|
+
* `aria-activedescendant` reference real elements.
|
|
58
|
+
*
|
|
59
|
+
* @ownership The application owns provider work and rendering callbacks; Looma
|
|
60
|
+
* owns transient selection state and restores every borrowed editor ARIA value.
|
|
61
|
+
*/
|
|
62
|
+
export interface LoomaMentionOptions {
|
|
63
|
+
items?: readonly LoomaMentionItem[] | LoomaMentionProvider;
|
|
64
|
+
limit?: number;
|
|
65
|
+
menuId?: string;
|
|
66
|
+
onStateChange?: (state: LoomaMentionMenuSnapshot) => void;
|
|
67
|
+
}
|
|
68
|
+
/** Clamps public/provider limits so keyboard navigation remains predictably bounded. */
|
|
69
|
+
export declare function normalizeMentionResultLimit(limit?: number): number;
|
|
70
|
+
/**
|
|
71
|
+
* Applies Looma's local fallback matching to static or provider results.
|
|
72
|
+
* Matching is intentionally limited to display text; stable ids and arbitrary
|
|
73
|
+
* metadata must not become discoverable search fields by accident.
|
|
74
|
+
*
|
|
75
|
+
* @contract Preserves source order, does not mutate the input, and returns no
|
|
76
|
+
* more than the normalized public result limit.
|
|
77
|
+
*/
|
|
78
|
+
export declare function filterLoomaMentionItems(items: readonly LoomaMentionItem[], query: string, limit?: number): LoomaMentionItem[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Event contracts for the declarative mention menu. */
|
|
2
|
+
/** Zero-based candidate position requested by pointer-driven menu highlighting. */
|
|
3
|
+
export interface MentionMenuHighlightEventDetail {
|
|
4
|
+
index: number;
|
|
5
|
+
}
|
|
6
|
+
/** Zero-based candidate position the host should commit as the chosen mention. */
|
|
7
|
+
export interface MentionMenuSelectEventDetail {
|
|
8
|
+
index: number;
|
|
9
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Public data and event contracts for the declarative slash-command menu. */
|
|
2
|
+
import type { LoomaIconName } from "./icons.js";
|
|
3
|
+
/**
|
|
4
|
+
* Presentation projection of a slash command.
|
|
5
|
+
* It intentionally omits editor callbacks: the menu emits an index and the
|
|
6
|
+
* headless extension executes the command from its current ephemeral snapshot.
|
|
7
|
+
*/
|
|
8
|
+
export interface SlashMenuItem {
|
|
9
|
+
title: string;
|
|
10
|
+
description: string;
|
|
11
|
+
icon: LoomaIconName;
|
|
12
|
+
}
|
|
13
|
+
/** Pointer-hover request; selection remains owned by the suggestion extension. */
|
|
14
|
+
export interface SlashMenuHighlightEventDetail {
|
|
15
|
+
index: number;
|
|
16
|
+
}
|
|
17
|
+
/** Activation request for an item in the current published snapshot. */
|
|
18
|
+
export interface SlashMenuSelectEventDetail {
|
|
19
|
+
index: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A viewport rectangle accepted by the slash-menu anchor.
|
|
23
|
+
*
|
|
24
|
+
* Browser DOMRect objects satisfy both variants. Plain rectangles from Tiptap
|
|
25
|
+
* and ProseMirror are also supported when they provide either edge coordinates
|
|
26
|
+
* or an origin plus dimensions. Values use CSS-pixel viewport coordinates; the
|
|
27
|
+
* menu converts them into visual-viewport-aware fixed positioning.
|
|
28
|
+
*/
|
|
29
|
+
export type SlashMenuAnchorRect = Pick<DOMRectReadOnly, "left" | "top" | "right" | "bottom"> | Pick<DOMRectReadOnly, "x" | "y" | "width" | "height">;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Canonical persisted colors shared by editor commands and table UI swatches. */
|
|
2
|
+
export declare const TABLE_CELL_BACKGROUND_PRESETS: {
|
|
3
|
+
readonly none: null;
|
|
4
|
+
readonly gray: "#f3f4f6";
|
|
5
|
+
readonly yellow: "#fef3c7";
|
|
6
|
+
readonly blue: "#dbeafe";
|
|
7
|
+
readonly green: "#dcfce7";
|
|
8
|
+
readonly red: "#fee2e2";
|
|
9
|
+
};
|
|
10
|
+
/** Ordered menu choices coupling each UI intent to its persisted color value. */
|
|
11
|
+
export declare const TABLE_CELL_BACKGROUND_OPTIONS: readonly [{
|
|
12
|
+
readonly action: "background-none";
|
|
13
|
+
readonly label: "Default";
|
|
14
|
+
readonly value: null;
|
|
15
|
+
readonly swatch: null;
|
|
16
|
+
}, {
|
|
17
|
+
readonly action: "background-gray";
|
|
18
|
+
readonly label: "Gray";
|
|
19
|
+
readonly value: "#f3f4f6";
|
|
20
|
+
readonly swatch: "#f3f4f6";
|
|
21
|
+
}, {
|
|
22
|
+
readonly action: "background-yellow";
|
|
23
|
+
readonly label: "Yellow";
|
|
24
|
+
readonly value: "#fef3c7";
|
|
25
|
+
readonly swatch: "#fef3c7";
|
|
26
|
+
}, {
|
|
27
|
+
readonly action: "background-blue";
|
|
28
|
+
readonly label: "Blue";
|
|
29
|
+
readonly value: "#dbeafe";
|
|
30
|
+
readonly swatch: "#dbeafe";
|
|
31
|
+
}, {
|
|
32
|
+
readonly action: "background-green";
|
|
33
|
+
readonly label: "Green";
|
|
34
|
+
readonly value: "#dcfce7";
|
|
35
|
+
readonly swatch: "#dcfce7";
|
|
36
|
+
}, {
|
|
37
|
+
readonly action: "background-red";
|
|
38
|
+
readonly label: "Red";
|
|
39
|
+
readonly value: "#fee2e2";
|
|
40
|
+
readonly swatch: "#fee2e2";
|
|
41
|
+
}];
|
|
42
|
+
/** Background-only action vocabulary derived from the canonical menu choices. */
|
|
43
|
+
export type TableCellBackgroundAction = typeof TABLE_CELL_BACKGROUND_OPTIONS[number]["action"];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Intent contracts shared by declarative table menus and editor adapters. */
|
|
2
|
+
import type { TableCellBackgroundAction } from "./table-backgrounds.js";
|
|
3
|
+
/**
|
|
4
|
+
* Complete intent vocabulary emitted by table chrome for an adapter to execute.
|
|
5
|
+
* Keeping this as data prevents the reusable menu from importing or mutating a
|
|
6
|
+
* particular editor implementation.
|
|
7
|
+
*/
|
|
8
|
+
export type TableContextMenuAction = "align-left" | "align-center" | "align-right" | TableCellBackgroundAction | "add-row-before" | "add-row-after" | "add-column-before" | "add-column-after" | "delete-row" | "delete-column" | "delete-table" | "clear-cells" | "merge-cells" | "split-cell";
|
|
9
|
+
/** Adapter-facing payload that keeps the menu independent of editor commands. */
|
|
10
|
+
export interface TableContextMenuActionEventDetail {
|
|
11
|
+
action: TableContextMenuAction;
|
|
12
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table overlay action and geometry contracts, and the measurements the editor supplies to
|
|
3
|
+
* ui-editor-table-overlay.
|
|
4
|
+
*/
|
|
5
|
+
/** Table-structure mutations addressed by a measured row/column boundary. */
|
|
6
|
+
export type TableInsertionAction = "add-row-before" | "add-row-after" | "add-column-before" | "add-column-after";
|
|
7
|
+
/**
|
|
8
|
+
* Intent vocabulary emitted by the headless table overlay.
|
|
9
|
+
* UI stays independent of Tiptap/ProseMirror positions; adapters translate
|
|
10
|
+
* these logical coordinates with `handleTableOverlayAction`.
|
|
11
|
+
*/
|
|
12
|
+
export type TableOverlayAction = TableInsertionAction | "select-row" | "select-column" | "open-cell-menu";
|
|
13
|
+
/**
|
|
14
|
+
* Discriminated action payload.
|
|
15
|
+
* Boundary indices refer to entries in the measured boundary arrays. Cell
|
|
16
|
+
* indices refer to the logical grid after row/column spans are expanded. The
|
|
17
|
+
* menu anchor uses CSS-pixel viewport coordinates suitable for fixed surfaces.
|
|
18
|
+
*/
|
|
19
|
+
export type TableOverlayActionEventDetail = {
|
|
20
|
+
action: TableInsertionAction;
|
|
21
|
+
boundaryIndex: number;
|
|
22
|
+
} | {
|
|
23
|
+
action: "select-row" | "select-column";
|
|
24
|
+
rowIndex: number;
|
|
25
|
+
columnIndex: number;
|
|
26
|
+
} | {
|
|
27
|
+
action: "open-cell-menu";
|
|
28
|
+
rowIndex: number;
|
|
29
|
+
columnIndex: number;
|
|
30
|
+
anchor: {
|
|
31
|
+
left: number;
|
|
32
|
+
top: number;
|
|
33
|
+
right: number;
|
|
34
|
+
bottom: number;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* A cell rectangle relative to the table's border box, plus logical grid
|
|
39
|
+
* coordinates. Width/height include spans because they come from the rendered
|
|
40
|
+
* cell rather than an inferred uniform grid.
|
|
41
|
+
*/
|
|
42
|
+
export interface ActiveCellRect {
|
|
43
|
+
left: number;
|
|
44
|
+
top: number;
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
rowIndex: number;
|
|
48
|
+
columnIndex: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Replaceable geometry snapshot for overlay rendering.
|
|
52
|
+
* Boundaries are CSS-pixel offsets relative to the table; callers should
|
|
53
|
+
* remeasure after editor transactions or layout changes rather than mutate the
|
|
54
|
+
* arrays in place.
|
|
55
|
+
*/
|
|
56
|
+
export interface TableOverlayGeometry {
|
|
57
|
+
rowBoundaries: number[];
|
|
58
|
+
columnBoundaries: number[];
|
|
59
|
+
activeCell: ActiveCellRect | null;
|
|
60
|
+
hoveredCell?: ActiveCellRect | null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Resolves a logical grid coordinate to its owning DOM cell.
|
|
64
|
+
* A spanning cell can therefore be returned for more than one coordinate; this
|
|
65
|
+
* is intentional and prevents overlay actions from inventing nonexistent cells.
|
|
66
|
+
*
|
|
67
|
+
* @contract Coordinates outside the expanded table grid return null; coordinates
|
|
68
|
+
* covered by a span resolve to the single DOM cell that owns them.
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveTableCellAt(table: HTMLTableElement, rowIndex: number, columnIndex: number): HTMLTableCellElement | null;
|
|
71
|
+
/**
|
|
72
|
+
* Measures rendered boundaries rather than assuming a uniform table grid.
|
|
73
|
+
* Returned offsets are table-relative and rounded to hundredths of a CSS pixel
|
|
74
|
+
* to suppress observer churn without losing subpixel layout fidelity.
|
|
75
|
+
*
|
|
76
|
+
* @contract Active and hovered rectangles are returned only for cells contained
|
|
77
|
+
* by the supplied table; detached or foreign cells are represented as null.
|
|
78
|
+
*/
|
|
79
|
+
export declare function measureTableOverlayGeometry(table: HTMLTableElement, activeCell: HTMLTableCellElement | null, hoveredCell?: HTMLTableCellElement | null): TableOverlayGeometry;
|
package/editor/ui.d.ts
CHANGED
|
@@ -1,52 +1,12 @@
|
|
|
1
|
-
export { A as ActiveCellRect, T as TABLE_CELL_BACKGROUND_OPTIONS, a as TABLE_CELL_BACKGROUND_PRESETS, b as TableCellBackgroundAction, c as TableContextMenuAction, d as TableContextMenuActionEventDetail, e as TableInsertionAction, f as TableOverlayAction, g as TableOverlayActionEventDetail, h as TableOverlayGeometry, d as TableToolbarActionEventDetail, m as measureTableOverlayGeometry, r as resolveTableCellAt } from './table-overlay-DZFGHQDt.js';
|
|
2
|
-
import { LoomaIconName } from '@threadlabs/looma/core';
|
|
3
|
-
|
|
4
|
-
/** Event contract for the declarative table-dimension picker. */
|
|
5
|
-
/** Confirmed table dimensions emitted after preview state has been committed. */
|
|
6
|
-
interface InsertTableEventDetail {
|
|
7
|
-
rows: number;
|
|
8
|
-
cols: number;
|
|
9
|
-
withHeaderRow: boolean;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/** Event contracts for the declarative mention menu. */
|
|
13
|
-
/** Zero-based candidate position requested by pointer-driven menu highlighting. */
|
|
14
|
-
interface MentionMenuHighlightEventDetail {
|
|
15
|
-
index: number;
|
|
16
|
-
}
|
|
17
|
-
/** Zero-based candidate position the host should commit as the chosen mention. */
|
|
18
|
-
interface MentionMenuSelectEventDetail {
|
|
19
|
-
index: number;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** Public data and event contracts for the declarative slash-command menu. */
|
|
23
|
-
|
|
24
1
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
2
|
+
* The editor components' framework-neutral event and geometry contracts. The components emit
|
|
3
|
+
* intent and never change a document; an integration translates intent to Tiptap, another editor,
|
|
4
|
+
* or application state.
|
|
28
5
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
index: number;
|
|
37
|
-
}
|
|
38
|
-
/** Activation request for an item in the current published snapshot. */
|
|
39
|
-
interface SlashMenuSelectEventDetail {
|
|
40
|
-
index: number;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* A viewport rectangle accepted by the slash-menu anchor.
|
|
44
|
-
*
|
|
45
|
-
* Browser DOMRect objects satisfy both variants. Plain rectangles from Tiptap
|
|
46
|
-
* and ProseMirror are also supported when they provide either edge coordinates
|
|
47
|
-
* or an origin plus dimensions. Values use CSS-pixel viewport coordinates; the
|
|
48
|
-
* menu converts them into visual-viewport-aware fixed positioning.
|
|
49
|
-
*/
|
|
50
|
-
type SlashMenuAnchorRect = Pick<DOMRectReadOnly, "left" | "top" | "right" | "bottom"> | Pick<DOMRectReadOnly, "x" | "y" | "width" | "height">;
|
|
51
|
-
|
|
52
|
-
export type { InsertTableEventDetail, MentionMenuHighlightEventDetail, MentionMenuSelectEventDetail, SlashMenuAnchorRect, SlashMenuHighlightEventDetail, SlashMenuItem, SlashMenuSelectEventDetail };
|
|
6
|
+
export type { TableContextMenuAction, TableContextMenuActionEventDetail } from "./table-context-menu.js";
|
|
7
|
+
export { TABLE_CELL_BACKGROUND_OPTIONS, TABLE_CELL_BACKGROUND_PRESETS, type TableCellBackgroundAction, } from "./table-backgrounds.js";
|
|
8
|
+
export type { InsertTableEventDetail } from "./insert-table-grid.js";
|
|
9
|
+
export type { MentionMenuHighlightEventDetail, MentionMenuSelectEventDetail, } from "./mention-menu.js";
|
|
10
|
+
export { measureTableOverlayGeometry, resolveTableCellAt, type ActiveCellRect, type TableInsertionAction, type TableOverlayAction, type TableOverlayActionEventDetail, type TableOverlayGeometry, } from "./table-overlay.js";
|
|
11
|
+
export type { TableContextMenuActionEventDetail as TableToolbarActionEventDetail } from "./table-context-menu.js";
|
|
12
|
+
export type { SlashMenuAnchorRect, SlashMenuHighlightEventDetail, SlashMenuItem, SlashMenuSelectEventDetail, } from "./slash-menu.js";
|
package/editor/ui.js
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "./chunk-U36XNFJN.js";
|
|
5
|
-
import {
|
|
6
|
-
TABLE_CELL_BACKGROUND_OPTIONS,
|
|
7
|
-
TABLE_CELL_BACKGROUND_PRESETS
|
|
8
|
-
} from "./chunk-JK53ENSG.js";
|
|
9
|
-
export {
|
|
10
|
-
TABLE_CELL_BACKGROUND_OPTIONS,
|
|
11
|
-
TABLE_CELL_BACKGROUND_PRESETS,
|
|
12
|
-
measureTableOverlayGeometry,
|
|
13
|
-
resolveTableCellAt
|
|
14
|
-
};
|
|
1
|
+
import { n as TABLE_CELL_BACKGROUND_PRESETS, t as TABLE_CELL_BACKGROUND_OPTIONS } from "./chunks/table-backgrounds.js";
|
|
2
|
+
import { n as resolveTableCellAt, t as measureTableOverlayGeometry } from "./chunks/ui.js";
|
|
3
|
+
export { TABLE_CELL_BACKGROUND_OPTIONS, TABLE_CELL_BACKGROUND_PRESETS, measureTableOverlayGeometry, resolveTableCellAt };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** A viewport rectangle in client coordinates. */
|
|
2
|
+
export interface ViewportRect {
|
|
3
|
+
readonly left: number;
|
|
4
|
+
readonly top: number;
|
|
5
|
+
readonly right: number;
|
|
6
|
+
readonly bottom: number;
|
|
7
|
+
readonly width: number;
|
|
8
|
+
readonly height: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The visual viewport (what is on screen, net of the on-screen keyboard and pinch zoom).
|
|
12
|
+
*
|
|
13
|
+
* @contract Falls back to the layout viewport where `visualViewport` is unavailable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getVisualViewportRect(owner?: Window): ViewportRect;
|