@threadlabs/looma 0.28.11 → 0.28.12

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.
@@ -1,6 +1,6 @@
1
1
  import { computed, createApp, defineComponent, h, nextTick, onBeforeUnmount, onMounted, reactive, ref, shallowRef, useId, watch } from "vue";
2
- import { DEFAULT_MENTION_RESULT_LIMIT, LOOMA_CHIP_COLORS, LOOMA_ICONS, createLoomaMentionExtension, createLoomaSlashCommandExtension, getActiveTableUiState, getDefaultEditorExtensions, getDefaultSlashCommands, getTableOfContentsEntries, getVisualViewportRect, handleTableAction, handleTableOverlayAction, measureTableOverlayGeometry, normalizeActiveTableColumnWidths, normalizeLoomaChipColor, normalizeTableOfContentsConfig } from "@threadlabs/looma/editor";
3
- import { Button, Callout, Card, Checkbox, Cluster, Disclosure, EditorBlockActions, EditorCodeLanguage, EditorImageToolbar, EditorInsertTableGrid, EditorLinkCard, EditorLinkForm, EditorMentionMenu, EditorMentionMenuItem, EditorSlashMenu, EditorSlashMenuGroup, EditorSlashMenuItem, EditorSurface, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, FormField, Icon, IconButton, Image, Input, List, Menu, MenuItem, Popover, Separator, Stack, Text, Tooltip } from "@threadlabs/looma/vue";
2
+ import { DEFAULT_MENTION_RESULT_LIMIT, LOOMA_ICONS, createLoomaMentionExtension, createLoomaSlashCommandExtension, getActiveTableUiState, getDefaultEditorExtensions, getDefaultSlashCommands, getTableOfContentsEntries, getVisualViewportRect, handleTableAction, handleTableOverlayAction, measureTableOverlayGeometry, normalizeActiveTableColumnWidths, normalizeLoomaChipColor, normalizeTableOfContentsConfig } from "@threadlabs/looma/editor";
3
+ import { Button, Callout, Card, Checkbox, Cluster, Disclosure, EditorBlockActions, EditorChipEditor, EditorCodeLanguage, EditorImageToolbar, EditorInsertTableGrid, EditorLinkCard, EditorLinkForm, EditorMentionMenu, EditorMentionMenuItem, EditorSlashMenu, EditorSlashMenuGroup, EditorSlashMenuItem, EditorSurface, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, FormField, Icon, IconButton, Image, Input, List, Menu, MenuItem, Popover, Separator, Stack, Text, Tooltip } from "@threadlabs/looma/vue";
4
4
  import { Editor, Extension, Node as Node$1, getText, getTextSerializersFromSchema, isNodeSelection, mergeAttributes, nodeInputRule, posToDOMRect } from "@tiptap/core";
5
5
  import { Editor as Editor$1 } from "@tiptap/vue-3";
6
6
  import { closeHistory } from "@tiptap/pm/history";
@@ -28,7 +28,8 @@ var EDITOR_ADAPTER_COMPONENT_TAG_MAP = {
28
28
  EditorLinkCard: "ui-editor-link-card",
29
29
  EditorLinkForm: "ui-editor-link-form",
30
30
  EditorBlockActions: "ui-editor-block-actions",
31
- EditorCodeLanguage: "ui-editor-code-language"
31
+ EditorCodeLanguage: "ui-editor-code-language",
32
+ EditorChipEditor: "ui-editor-chip-editor"
32
33
  };
33
34
  //#endregion
34
35
  //#region src/components/shared/overlay.js
@@ -2856,7 +2857,12 @@ var LoomaEditor = defineComponent({
2856
2857
  let linkEditing;
2857
2858
  const linkState = shallowRef(LOOMA_LINK_EDITING_IDLE);
2858
2859
  const chipAnchorId = `looma-editor-chip-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}`;
2859
- const chipInput = ref(null);
2860
+ const chipEditorRoot = ref(null);
2861
+ const setChipEditorRoot = (instance) => {
2862
+ const element = instance?.$el;
2863
+ chipEditorRoot.value = element instanceof HTMLElement ? element : null;
2864
+ };
2865
+ const chipInput = () => chipEditorRoot.value?.querySelector("[data-chip-label]");
2860
2866
  const chipOpen = ref(false);
2861
2867
  const chipLabel = ref("");
2862
2868
  const chipColor = ref("neutral");
@@ -2979,7 +2985,7 @@ var LoomaEditor = defineComponent({
2979
2985
  chipLabel.value = String(node.attrs.label ?? "");
2980
2986
  chipColor.value = normalizeLoomaChipColor(node.attrs.color);
2981
2987
  chipOpen.value = true;
2982
- nextTick(() => chipInput.value?.focus());
2988
+ nextTick(() => chipInput()?.focus());
2983
2989
  };
2984
2990
  const changeChip = (changes) => {
2985
2991
  const instance = editor.value;
@@ -4267,46 +4273,20 @@ var LoomaEditor = defineComponent({
4267
4273
  onClose: () => {
4268
4274
  chipOpen.value = false;
4269
4275
  }
4270
- }, () => h("div", {
4271
- class: "looma-editor__chip-form",
4272
- role: "dialog",
4273
- "aria-label": "Edit chip"
4274
- }, [h("input", {
4275
- ref: chipInput,
4276
- type: "text",
4277
- value: chipLabel.value,
4278
- placeholder: "Set a label",
4279
- "aria-label": "Chip text",
4280
- onInput: (event) => {
4281
- chipLabel.value = event.target.value;
4276
+ }, () => h(EditorChipEditor, {
4277
+ ref: setChipEditorRoot,
4278
+ label: chipLabel.value,
4279
+ color: chipColor.value,
4280
+ onLabel: (event) => {
4281
+ chipLabel.value = event.detail.label;
4282
4282
  changeChip({ label: chipLabel.value });
4283
4283
  },
4284
- onKeydown: (event) => {
4285
- if (event.key === "Enter" || event.key === "Escape") {
4286
- event.preventDefault();
4287
- closeChip(true);
4288
- }
4289
- }
4290
- }), h("div", {
4291
- class: "looma-editor__chip-colors",
4292
- role: "group",
4293
- "aria-label": "Chip color"
4294
- }, LOOMA_CHIP_COLORS.map((color) => h("button", {
4295
- type: "button",
4296
- class: "looma-editor__chip-color",
4297
- "data-color": color,
4298
- "aria-label": `${color[0].toUpperCase()}${color.slice(1)} chip`,
4299
- "aria-pressed": chipColor.value === color,
4300
- onClick: () => {
4301
- if (chipColor.value === color) {
4302
- chipInput.value?.focus();
4303
- return;
4304
- }
4305
- chipColor.value = color;
4306
- changeChip({ color });
4307
- chipInput.value?.focus();
4308
- }
4309
- }, chipColor.value === color ? "✓" : "")))])),
4284
+ onColor: (event) => {
4285
+ chipColor.value = event.detail.color;
4286
+ changeChip({ color: event.detail.color });
4287
+ },
4288
+ onDone: () => closeChip(true)
4289
+ })),
4310
4290
  h(Popover, {
4311
4291
  class: "looma-editor__link-popover",
4312
4292
  size: "sm",
@@ -4470,4 +4450,4 @@ var LoomaEditor = defineComponent({
4470
4450
  }
4471
4451
  });
4472
4452
  //#endregion
4473
- export { EDITOR_ADAPTER_COMPONENT_TAG_MAP, EditorBlockActions, EditorCodeLanguage, EditorImageToolbar, EditorInsertTableGrid, EditorLinkCard, EditorLinkForm, EditorMentionMenu, EditorMentionMenuItem, EditorSlashMenu, EditorSlashMenuGroup, EditorSlashMenuItem, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, LoomaEditor };
4453
+ export { EDITOR_ADAPTER_COMPONENT_TAG_MAP, EditorBlockActions, EditorChipEditor, EditorCodeLanguage, EditorImageToolbar, EditorInsertTableGrid, EditorLinkCard, EditorLinkForm, EditorMentionMenu, EditorMentionMenuItem, EditorSlashMenu, EditorSlashMenuGroup, EditorSlashMenuItem, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, LoomaEditor };
@@ -3,7 +3,7 @@
3
3
  * `@threadlabs/looma/vue`, re-exported beside the editor that composes them.
4
4
  */
5
5
  import type { InsertTableEventDetail, MentionMenuHighlightEventDetail, MentionMenuSelectEventDetail, SlashMenuHighlightEventDetail, SlashMenuSelectEventDetail, TableContextMenuActionEventDetail } from "@threadlabs/looma/editor";
6
- export { EditorBlockActions, EditorCodeLanguage, EditorImageToolbar, EditorInsertTableGrid, EditorLinkCard, EditorLinkForm, EditorMentionMenu, EditorMentionMenuItem, EditorSlashMenu, EditorSlashMenuGroup, EditorSlashMenuItem, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, } from "@threadlabs/looma/vue";
6
+ export { EditorBlockActions, EditorChipEditor, EditorCodeLanguage, EditorImageToolbar, EditorInsertTableGrid, EditorLinkCard, EditorLinkForm, EditorMentionMenu, EditorMentionMenuItem, EditorSlashMenu, EditorSlashMenuGroup, EditorSlashMenuItem, EditorTableContextMenu, EditorTableOverlay, EditorTableToolbar, EditorToolbar, } from "@threadlabs/looma/vue";
7
7
  /** The editor components' event details, by event name. */
8
8
  export interface VueEditorAdapterEventMap {
9
9
  highlight: MentionMenuHighlightEventDetail | SlashMenuHighlightEventDetail;
@@ -39,6 +39,13 @@ export interface VueEditorAdapterEventMap {
39
39
  language: {
40
40
  value: string;
41
41
  };
42
+ label: {
43
+ label: string;
44
+ };
45
+ color: {
46
+ color: "neutral" | "blue" | "green" | "yellow" | "red" | "purple";
47
+ };
48
+ done: Record<string, never>;
42
49
  "add-row-before": {
43
50
  boundaryIndex: number;
44
51
  };
@@ -107,4 +114,5 @@ export declare const EDITOR_ADAPTER_COMPONENT_TAG_MAP: {
107
114
  readonly EditorLinkForm: "ui-editor-link-form";
108
115
  readonly EditorBlockActions: "ui-editor-block-actions";
109
116
  readonly EditorCodeLanguage: "ui-editor-code-language";
117
+ readonly EditorChipEditor: "ui-editor-chip-editor";
110
118
  };
package/vue/index.d.ts CHANGED
@@ -20,6 +20,7 @@ export { default as Dialog } from "./UiDialog.js";
20
20
  export { default as Disclosure } from "./UiDisclosure.js";
21
21
  export { default as Editable } from "./UiEditable.js";
22
22
  export { default as EditorBlockActions } from "./UiEditorBlockActions.js";
23
+ export { default as EditorChipEditor } from "./UiEditorChipEditor.js";
23
24
  export { default as EditorCodeLanguage } from "./UiEditorCodeLanguage.js";
24
25
  export { default as EditorImageToolbar } from "./UiEditorImageToolbar.js";
25
26
  export { default as EditorInsertTableGrid } from "./UiEditorInsertTableGrid.js";
@@ -66,6 +67,7 @@ export { default as Sidebar } from "./UiSidebar.js";
66
67
  export { default as Spinner } from "./UiSpinner.js";
67
68
  export { default as Stack } from "./UiStack.js";
68
69
  export { default as StatusMessage } from "./UiStatusMessage.js";
70
+ export { default as Swatch } from "./UiSwatch.js";
69
71
  export { default as Switch } from "./UiSwitch.js";
70
72
  export { default as Switcher } from "./UiSwitcher.js";
71
73
  export { default as Table } from "./UiTable.js";
package/vue/index.js CHANGED
@@ -26,13 +26,16 @@ import { t as UiEditable_default } from "./chunks/UiEditable.js";
26
26
  import { t as UiMenu_default } from "./chunks/UiMenu.js";
27
27
  import { t as UiMenuItem_default } from "./chunks/UiMenuItem.js";
28
28
  import { t as UiEditorBlockActions_default } from "./chunks/UiEditorBlockActions.js";
29
+ import { t as UiInput_default } from "./chunks/UiInput.js";
30
+ import { t as UiRadioGroup_default } from "./chunks/UiRadioGroup.js";
31
+ import { t as UiStack_default } from "./chunks/UiStack.js";
32
+ import { t as UiSwatch_default } from "./chunks/UiSwatch.js";
33
+ import { t as UiEditorChipEditor_default } from "./chunks/UiEditorChipEditor.js";
29
34
  import { t as UiEditorCodeLanguage_default } from "./chunks/UiEditorCodeLanguage.js";
30
35
  import { t as UiEditorToolbar_default } from "./chunks/UiEditorToolbar.js";
31
36
  import { t as UiFormField_default } from "./chunks/UiFormField.js";
32
37
  import { t as UiIconButton_default } from "./chunks/UiIconButton.js";
33
- import { t as UiInput_default } from "./chunks/UiInput.js";
34
38
  import { t as UiPopover_default } from "./chunks/UiPopover.js";
35
- import { t as UiStack_default } from "./chunks/UiStack.js";
36
39
  import { t as UiText_default } from "./chunks/UiText.js";
37
40
  import { t as UiEditorImageToolbar_default } from "./chunks/UiEditorImageToolbar.js";
38
41
  import { t as UiEditorInsertTableGrid_default } from "./chunks/UiEditorInsertTableGrid.js";
@@ -60,7 +63,6 @@ import { t as UiMeter_default } from "./chunks/UiMeter.js";
60
63
  import { t as UiNavItem_default } from "./chunks/UiNavItem.js";
61
64
  import { t as UiPageHeader_default } from "./chunks/UiPageHeader.js";
62
65
  import { t as UiRadio_default } from "./chunks/UiRadio.js";
63
- import { t as UiRadioGroup_default } from "./chunks/UiRadioGroup.js";
64
66
  import { t as UiReel_default } from "./chunks/UiReel.js";
65
67
  import { t as UiSearchShell_default } from "./chunks/UiSearchShell.js";
66
68
  import { t as UiSection_default } from "./chunks/UiSection.js";
@@ -79,4 +81,4 @@ import { t as UiTopBar_default } from "./chunks/UiTopBar.js";
79
81
  import { t as UiTree_default } from "./chunks/UiTree.js";
80
82
  import { t as UiTreeItem_default } from "./chunks/UiTreeItem.js";
81
83
  import { trackInputModality } from "@threadlabs/looma/components/shared/input-modality.js";
82
- export { UiActionBar_default as ActionBar, UiAffordanceScope_default as AffordanceScope, UiAvatar_default as Avatar, UiAvatarGroup_default as AvatarGroup, UiBadge_default as Badge, UiBreadcrumbItem_default as BreadcrumbItem, UiBreadcrumbs_default as Breadcrumbs, UiButton_default as Button, UiCallout_default as Callout, UiCard_default as Card, UiCheckbox_default as Checkbox, UiCluster_default as Cluster, UiCombobox_default as Combobox, UiContainer_default as Container, UiContextMenu_default as ContextMenu, UiCover_default as Cover, UiDescriptionItem_default as DescriptionItem, UiDescriptionList_default as DescriptionList, UiDialog_default as Dialog, UiDisclosure_default as Disclosure, UiEditable_default as Editable, UiEditorBlockActions_default as EditorBlockActions, UiEditorCodeLanguage_default as EditorCodeLanguage, UiEditorImageToolbar_default as EditorImageToolbar, UiEditorInsertTableGrid_default as EditorInsertTableGrid, UiEditorLinkCard_default as EditorLinkCard, UiEditorLinkForm_default as EditorLinkForm, UiEditorMentionMenu_default as EditorMentionMenu, UiEditorMentionMenuItem_default as EditorMentionMenuItem, UiEditorSlashMenu_default as EditorSlashMenu, UiEditorSlashMenuGroup_default as EditorSlashMenuGroup, UiEditorSlashMenuItem_default as EditorSlashMenuItem, UiEditorSurface_default as EditorSurface, UiEditorTableContextMenu_default as EditorTableContextMenu, UiEditorTableOverlay_default as EditorTableOverlay, UiEditorTableToolbar_default as EditorTableToolbar, UiEditorToolbar_default as EditorToolbar, UiFloatingActionButton_default as FloatingActionButton, UiFormField_default as FormField, UiGrid_default as Grid, UiIcon_default as Icon, UiIconButton_default as IconButton, UiImage_default as Image, UiInput_default as Input, UiInputGroup_default as InputGroup, UiList_default as List, UiListItem_default as ListItem, UiListbox_default as Listbox, UiMenu_default as Menu, UiMenuGroup_default as MenuGroup, UiMenuItem_default as MenuItem, UiMeter_default as Meter, UiNavItem_default as NavItem, UiPageHeader_default as PageHeader, UiPopover_default as Popover, UiRadio_default as Radio, UiRadioGroup_default as RadioGroup, UiReel_default as Reel, UiScrollArea_default as ScrollArea, UiSearchResultRow_default as SearchResultRow, UiSearchShell_default as SearchShell, UiSection_default as Section, UiSelect_default as Select, UiSeparator_default as Separator, UiSidebar_default as Sidebar, UiSpinner_default as Spinner, UiStack_default as Stack, UiStatusMessage_default as StatusMessage, UiSwitch_default as Switch, UiSwitcher_default as Switcher, UiTable_default as Table, UiTabs_default as Tabs, UiText_default as Text, UiTextarea_default as Textarea, UiToast_default as Toast, UiToastRegion_default as ToastRegion, UiTooltip_default as Tooltip, UiTopBar_default as TopBar, UiTree_default as Tree, UiTreeItem_default as TreeItem, trackInputModality };
84
+ export { UiActionBar_default as ActionBar, UiAffordanceScope_default as AffordanceScope, UiAvatar_default as Avatar, UiAvatarGroup_default as AvatarGroup, UiBadge_default as Badge, UiBreadcrumbItem_default as BreadcrumbItem, UiBreadcrumbs_default as Breadcrumbs, UiButton_default as Button, UiCallout_default as Callout, UiCard_default as Card, UiCheckbox_default as Checkbox, UiCluster_default as Cluster, UiCombobox_default as Combobox, UiContainer_default as Container, UiContextMenu_default as ContextMenu, UiCover_default as Cover, UiDescriptionItem_default as DescriptionItem, UiDescriptionList_default as DescriptionList, UiDialog_default as Dialog, UiDisclosure_default as Disclosure, UiEditable_default as Editable, UiEditorBlockActions_default as EditorBlockActions, UiEditorChipEditor_default as EditorChipEditor, UiEditorCodeLanguage_default as EditorCodeLanguage, UiEditorImageToolbar_default as EditorImageToolbar, UiEditorInsertTableGrid_default as EditorInsertTableGrid, UiEditorLinkCard_default as EditorLinkCard, UiEditorLinkForm_default as EditorLinkForm, UiEditorMentionMenu_default as EditorMentionMenu, UiEditorMentionMenuItem_default as EditorMentionMenuItem, UiEditorSlashMenu_default as EditorSlashMenu, UiEditorSlashMenuGroup_default as EditorSlashMenuGroup, UiEditorSlashMenuItem_default as EditorSlashMenuItem, UiEditorSurface_default as EditorSurface, UiEditorTableContextMenu_default as EditorTableContextMenu, UiEditorTableOverlay_default as EditorTableOverlay, UiEditorTableToolbar_default as EditorTableToolbar, UiEditorToolbar_default as EditorToolbar, UiFloatingActionButton_default as FloatingActionButton, UiFormField_default as FormField, UiGrid_default as Grid, UiIcon_default as Icon, UiIconButton_default as IconButton, UiImage_default as Image, UiInput_default as Input, UiInputGroup_default as InputGroup, UiList_default as List, UiListItem_default as ListItem, UiListbox_default as Listbox, UiMenu_default as Menu, UiMenuGroup_default as MenuGroup, UiMenuItem_default as MenuItem, UiMeter_default as Meter, UiNavItem_default as NavItem, UiPageHeader_default as PageHeader, UiPopover_default as Popover, UiRadio_default as Radio, UiRadioGroup_default as RadioGroup, UiReel_default as Reel, UiScrollArea_default as ScrollArea, UiSearchResultRow_default as SearchResultRow, UiSearchShell_default as SearchShell, UiSection_default as Section, UiSelect_default as Select, UiSeparator_default as Separator, UiSidebar_default as Sidebar, UiSpinner_default as Spinner, UiStack_default as Stack, UiStatusMessage_default as StatusMessage, UiSwatch_default as Swatch, UiSwitch_default as Switch, UiSwitcher_default as Switcher, UiTable_default as Table, UiTabs_default as Tabs, UiText_default as Text, UiTextarea_default as Textarea, UiToast_default as Toast, UiToastRegion_default as ToastRegion, UiTooltip_default as Tooltip, UiTopBar_default as TopBar, UiTree_default as Tree, UiTreeItem_default as TreeItem, trackInputModality };