@domternal/vue 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +12 -10
  2. package/dist/Domternal.d.ts +34 -0
  3. package/dist/Domternal.d.ts.map +1 -0
  4. package/dist/DomternalEditor.d.ts +224 -0
  5. package/dist/DomternalEditor.d.ts.map +1 -0
  6. package/dist/DomternalFloatingMenu.d.ts +94 -0
  7. package/dist/DomternalFloatingMenu.d.ts.map +1 -0
  8. package/dist/EditorContent.d.ts +44 -0
  9. package/dist/EditorContent.d.ts.map +1 -0
  10. package/dist/EditorContext.d.ts +38 -0
  11. package/dist/EditorContext.d.ts.map +1 -0
  12. package/dist/bubble-menu/DomternalBubbleMenu.d.ts +87 -0
  13. package/dist/bubble-menu/DomternalBubbleMenu.d.ts.map +1 -0
  14. package/dist/bubble-menu/useBubbleMenu.d.ts +56 -0
  15. package/dist/bubble-menu/useBubbleMenu.d.ts.map +1 -0
  16. package/dist/emoji-picker/DomternalEmojiPicker.d.ts +31 -0
  17. package/dist/emoji-picker/DomternalEmojiPicker.d.ts.map +1 -0
  18. package/dist/emoji-picker/useEmojiPicker.d.ts +24 -0
  19. package/dist/emoji-picker/useEmojiPicker.d.ts.map +1 -0
  20. package/dist/index.d.ts +152 -40
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +1178 -302
  23. package/dist/index.js.map +1 -1
  24. package/dist/node-views/NodeViewContent.d.ts +30 -0
  25. package/dist/node-views/NodeViewContent.d.ts.map +1 -0
  26. package/dist/node-views/NodeViewWrapper.d.ts +29 -0
  27. package/dist/node-views/NodeViewWrapper.d.ts.map +1 -0
  28. package/dist/node-views/VueNodeViewContext.d.ts +27 -0
  29. package/dist/node-views/VueNodeViewContext.d.ts.map +1 -0
  30. package/dist/node-views/VueNodeViewRenderer.d.ts +88 -0
  31. package/dist/node-views/VueNodeViewRenderer.d.ts.map +1 -0
  32. package/dist/notion-color-picker/DomternalNotionColorPicker.d.ts +22 -0
  33. package/dist/notion-color-picker/DomternalNotionColorPicker.d.ts.map +1 -0
  34. package/dist/notion-color-picker/index.d.ts +5 -0
  35. package/dist/notion-color-picker/index.d.ts.map +1 -0
  36. package/dist/notion-color-picker/useNotionColorPicker.d.ts +35 -0
  37. package/dist/notion-color-picker/useNotionColorPicker.d.ts.map +1 -0
  38. package/dist/toolbar/DomternalToolbar.d.ts +41 -0
  39. package/dist/toolbar/DomternalToolbar.d.ts.map +1 -0
  40. package/dist/toolbar/ToolbarButton.d.ts +72 -0
  41. package/dist/toolbar/ToolbarButton.d.ts.map +1 -0
  42. package/dist/toolbar/ToolbarDropdown.d.ts +76 -0
  43. package/dist/toolbar/ToolbarDropdown.d.ts.map +1 -0
  44. package/dist/toolbar/ToolbarDropdownPanel.d.ts +34 -0
  45. package/dist/toolbar/ToolbarDropdownPanel.d.ts.map +1 -0
  46. package/dist/toolbar/useComputedStyle.d.ts +12 -0
  47. package/dist/toolbar/useComputedStyle.d.ts.map +1 -0
  48. package/dist/toolbar/useKeyboardNav.d.ts +9 -0
  49. package/dist/toolbar/useKeyboardNav.d.ts.map +1 -0
  50. package/dist/toolbar/useToolbarController.d.ts +24 -0
  51. package/dist/toolbar/useToolbarController.d.ts.map +1 -0
  52. package/dist/toolbar/useToolbarIcons.d.ts +12 -0
  53. package/dist/toolbar/useToolbarIcons.d.ts.map +1 -0
  54. package/dist/toolbar/useTooltip.d.ts +5 -0
  55. package/dist/toolbar/useTooltip.d.ts.map +1 -0
  56. package/dist/useEditor.d.ts +63 -0
  57. package/dist/useEditor.d.ts.map +1 -0
  58. package/dist/useEditorState.d.ts +28 -0
  59. package/dist/useEditorState.d.ts.map +1 -0
  60. package/dist/utils.d.ts +39 -0
  61. package/dist/utils.d.ts.map +1 -0
  62. package/package.json +4 -2
@@ -0,0 +1,31 @@
1
+ import type { PropType } from 'vue';
2
+ import type { Editor } from '@domternal/core';
3
+ import { type EmojiPickerItem } from './useEmojiPicker.js';
4
+ export interface DomternalEmojiPickerProps {
5
+ editor?: Editor;
6
+ emojis: EmojiPickerItem[];
7
+ }
8
+ export declare const DomternalEmojiPicker: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
9
+ editor: {
10
+ type: PropType<Editor>;
11
+ default: undefined;
12
+ };
13
+ emojis: {
14
+ type: PropType<EmojiPickerItem[]>;
15
+ required: true;
16
+ };
17
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
18
+ [key: string]: any;
19
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
20
+ editor: {
21
+ type: PropType<Editor>;
22
+ default: undefined;
23
+ };
24
+ emojis: {
25
+ type: PropType<EmojiPickerItem[]>;
26
+ required: true;
27
+ };
28
+ }>> & Readonly<{}>, {
29
+ editor: Editor;
30
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
31
+ //# sourceMappingURL=DomternalEmojiPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomternalEmojiPicker.d.ts","sourceRoot":"","sources":["../../src/emoji-picker/DomternalEmojiPicker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,KAAK,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAsB3E,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB;;cAGH,QAAQ,CAAC,MAAM,CAAC;;;;cACjB,QAAQ,CAAC,eAAe,EAAE,CAAC;;;;;;;cAD1B,QAAQ,CAAC,MAAM,CAAC;;;;cACjB,QAAQ,CAAC,eAAe,EAAE,CAAC;;;;;4EAkItD,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ComputedRef, Ref, ShallowRef } from 'vue';
2
+ import type { Editor } from '@domternal/core';
3
+ export interface EmojiPickerItem {
4
+ emoji: string;
5
+ name: string;
6
+ group: string;
7
+ }
8
+ export interface UseEmojiPickerResult {
9
+ isOpen: Ref<boolean>;
10
+ searchQuery: Ref<string>;
11
+ activeCategory: Ref<string>;
12
+ categories: ComputedRef<Map<string, EmojiPickerItem[]>>;
13
+ categoryNames: ComputedRef<string[]>;
14
+ filteredEmojis: ComputedRef<EmojiPickerItem[]>;
15
+ frequentlyUsed: ComputedRef<EmojiPickerItem[]>;
16
+ pickerRef: Ref<HTMLDivElement | undefined>;
17
+ selectEmoji: (item: EmojiPickerItem) => void;
18
+ onSearch: (event: Event) => void;
19
+ scrollToCategory: (cat: string) => void;
20
+ onGridScroll: () => void;
21
+ close: () => void;
22
+ }
23
+ export declare function useEmojiPicker(editor: ShallowRef<Editor | null>, emojis: EmojiPickerItem[]): UseEmojiPickerResult;
24
+ //# sourceMappingURL=useEmojiPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEmojiPicker.d.ts","sourceRoot":"","sources":["../../src/emoji-picker/useEmojiPicker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAQD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IACxD,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,cAAc,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/C,cAAc,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/C,SAAS,EAAE,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAsNjH"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as vue from 'vue';
2
- import { ShallowRef, Ref, ComputedRef, InjectionKey, defineComponent, PropType, Component, AppContext } from 'vue';
3
- import * as _domternal_core from '@domternal/core';
4
- import { AnyExtension, Content, FocusPosition, Editor, JSONContent, IconSet, ToolbarLayoutEntry, BubbleMenuOptions, FloatingMenuOptions } from '@domternal/core';
2
+ import { ShallowRef, Ref, ComputedRef, InjectionKey, Component, PropType, VNode, AppContext } from 'vue';
3
+ import { AnyExtension, Content, FocusPosition, Editor, JSONContent, IconSet, ToolbarLayoutEntry, BubbleMenuOptions, FloatingMenuItemsOverride } from '@domternal/core';
5
4
  export { AnyExtension, Content, Editor, FocusPosition, GenerateHTMLOptions, GenerateJSONOptions, GenerateTextOptions, JSONContent, generateHTML, generateJSON, generateText } from '@domternal/core';
6
5
  import * as prosemirror_state from 'prosemirror-state';
7
6
  import * as prosemirror_view from 'prosemirror-view';
7
+ import { FloatingMenuOptions, FloatingMenuKeymap } from '@domternal/extension-block-menu';
8
8
 
9
9
  declare const DEFAULT_EXTENSIONS: AnyExtension[];
10
10
  interface UseEditorOptions {
@@ -151,13 +151,13 @@ interface DomternalProps extends UseEditorOptions {
151
151
  * </template>
152
152
  * ```
153
153
  */
154
- declare const Domternal: ReturnType<typeof defineComponent> & {
155
- Content: ReturnType<typeof defineComponent>;
156
- Loading: ReturnType<typeof defineComponent>;
157
- Toolbar: ReturnType<typeof defineComponent>;
158
- BubbleMenu: ReturnType<typeof defineComponent>;
159
- FloatingMenu: ReturnType<typeof defineComponent>;
160
- EmojiPicker: ReturnType<typeof defineComponent>;
154
+ declare const Domternal: Component & {
155
+ Content: Component;
156
+ Loading: Component;
157
+ Toolbar: Component;
158
+ BubbleMenu: Component;
159
+ FloatingMenu: Component;
160
+ EmojiPicker: Component;
161
161
  };
162
162
 
163
163
  interface DomternalEditorProps {
@@ -169,19 +169,19 @@ interface DomternalEditorProps {
169
169
  outputFormat?: 'html' | 'json';
170
170
  modelValue?: Content;
171
171
  class?: string;
172
- onCreate?: (editor: _domternal_core.Editor) => void;
172
+ onCreate?: (editor: Editor) => void;
173
173
  onUpdate?: (props: {
174
- editor: _domternal_core.Editor;
174
+ editor: Editor;
175
175
  }) => void;
176
176
  onSelectionChange?: (props: {
177
- editor: _domternal_core.Editor;
177
+ editor: Editor;
178
178
  }) => void;
179
179
  onFocus?: (props: {
180
- editor: _domternal_core.Editor;
180
+ editor: Editor;
181
181
  event: FocusEvent;
182
182
  }) => void;
183
183
  onBlur?: (props: {
184
- editor: _domternal_core.Editor;
184
+ editor: Editor;
185
185
  event: FocusEvent;
186
186
  }) => void;
187
187
  onDestroy?: () => void;
@@ -247,31 +247,31 @@ declare const DomternalEditor: vue.DefineComponent<vue.ExtractPropTypes<{
247
247
  default: undefined;
248
248
  };
249
249
  onCreate: {
250
- type: PropType<(editor: _domternal_core.Editor) => void>;
250
+ type: PropType<(editor: Editor) => void>;
251
251
  default: undefined;
252
252
  };
253
253
  onUpdate: {
254
254
  type: PropType<(props: {
255
- editor: _domternal_core.Editor;
255
+ editor: Editor;
256
256
  }) => void>;
257
257
  default: undefined;
258
258
  };
259
259
  onSelectionChange: {
260
260
  type: PropType<(props: {
261
- editor: _domternal_core.Editor;
261
+ editor: Editor;
262
262
  }) => void>;
263
263
  default: undefined;
264
264
  };
265
265
  onFocus: {
266
266
  type: PropType<(props: {
267
- editor: _domternal_core.Editor;
267
+ editor: Editor;
268
268
  event: FocusEvent;
269
269
  }) => void>;
270
270
  default: undefined;
271
271
  };
272
272
  onBlur: {
273
273
  type: PropType<(props: {
274
- editor: _domternal_core.Editor;
274
+ editor: Editor;
275
275
  event: FocusEvent;
276
276
  }) => void>;
277
277
  default: undefined;
@@ -320,31 +320,31 @@ declare const DomternalEditor: vue.DefineComponent<vue.ExtractPropTypes<{
320
320
  default: undefined;
321
321
  };
322
322
  onCreate: {
323
- type: PropType<(editor: _domternal_core.Editor) => void>;
323
+ type: PropType<(editor: Editor) => void>;
324
324
  default: undefined;
325
325
  };
326
326
  onUpdate: {
327
327
  type: PropType<(props: {
328
- editor: _domternal_core.Editor;
328
+ editor: Editor;
329
329
  }) => void>;
330
330
  default: undefined;
331
331
  };
332
332
  onSelectionChange: {
333
333
  type: PropType<(props: {
334
- editor: _domternal_core.Editor;
334
+ editor: Editor;
335
335
  }) => void>;
336
336
  default: undefined;
337
337
  };
338
338
  onFocus: {
339
339
  type: PropType<(props: {
340
- editor: _domternal_core.Editor;
340
+ editor: Editor;
341
341
  event: FocusEvent;
342
342
  }) => void>;
343
343
  default: undefined;
344
344
  };
345
345
  onBlur: {
346
346
  type: PropType<(props: {
347
- editor: _domternal_core.Editor;
347
+ editor: Editor;
348
348
  event: FocusEvent;
349
349
  }) => void>;
350
350
  default: undefined;
@@ -356,23 +356,23 @@ declare const DomternalEditor: vue.DefineComponent<vue.ExtractPropTypes<{
356
356
  }>> & Readonly<{
357
357
  "onUpdate:modelValue"?: (_value: Content) => any;
358
358
  }>, {
359
- onBlur: (props: {
360
- editor: _domternal_core.Editor;
361
- event: FocusEvent;
359
+ onCreate: (editor: Editor) => void;
360
+ onUpdate: (props: {
361
+ editor: Editor;
362
362
  }) => void;
363
363
  onFocus: (props: {
364
- editor: _domternal_core.Editor;
364
+ editor: Editor;
365
365
  event: FocusEvent;
366
366
  }) => void;
367
- class: string;
368
- onCreate: (editor: _domternal_core.Editor) => void;
369
- onUpdate: (props: {
370
- editor: _domternal_core.Editor;
367
+ onBlur: (props: {
368
+ editor: Editor;
369
+ event: FocusEvent;
371
370
  }) => void;
372
371
  onDestroy: () => void;
373
372
  content: Content;
373
+ class: string;
374
374
  onSelectionChange: (props: {
375
- editor: _domternal_core.Editor;
375
+ editor: Editor;
376
376
  }) => void;
377
377
  extensions: AnyExtension[];
378
378
  editable: boolean;
@@ -459,8 +459,8 @@ declare const DomternalToolbar: vue.DefineComponent<vue.ExtractPropTypes<{
459
459
  };
460
460
  }>> & Readonly<{}>, {
461
461
  editor: Editor;
462
- icons: IconSet;
463
462
  layout: ToolbarLayoutEntry[];
463
+ icons: IconSet;
464
464
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
465
465
 
466
466
  interface DomternalBubbleMenuProps {
@@ -471,6 +471,8 @@ interface DomternalBubbleMenuProps {
471
471
  updateDelay?: number;
472
472
  items?: string[];
473
473
  contexts?: Record<string, string[] | true | null>;
474
+ /** Custom icon overrides. Falls back to default Phosphor icons for unmapped keys. */
475
+ icons?: IconSet;
474
476
  }
475
477
  declare const DomternalBubbleMenu: vue.DefineComponent<vue.ExtractPropTypes<{
476
478
  editor: {
@@ -501,7 +503,11 @@ declare const DomternalBubbleMenu: vue.DefineComponent<vue.ExtractPropTypes<{
501
503
  type: PropType<Record<string, string[] | true | null>>;
502
504
  default: undefined;
503
505
  };
504
- }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
506
+ icons: {
507
+ type: PropType<IconSet>;
508
+ default: undefined;
509
+ };
510
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
505
511
  [key: string]: any;
506
512
  }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
507
513
  editor: {
@@ -532,8 +538,14 @@ declare const DomternalBubbleMenu: vue.DefineComponent<vue.ExtractPropTypes<{
532
538
  type: PropType<Record<string, string[] | true | null>>;
533
539
  default: undefined;
534
540
  };
541
+ icons: {
542
+ type: PropType<IconSet>;
543
+ default: undefined;
544
+ };
535
545
  }>> & Readonly<{}>, {
536
546
  editor: Editor;
547
+ placement: "top" | "bottom";
548
+ items: string[];
537
549
  shouldShow: (props: {
538
550
  editor: Editor;
539
551
  view: prosemirror_view.EditorView;
@@ -541,10 +553,9 @@ declare const DomternalBubbleMenu: vue.DefineComponent<vue.ExtractPropTypes<{
541
553
  from: number;
542
554
  to: number;
543
555
  }) => boolean;
544
- placement: "top" | "bottom";
545
556
  offset: number;
546
557
  updateDelay: number;
547
- items: string[];
558
+ icons: IconSet;
548
559
  contexts: Record<string, true | string[] | null>;
549
560
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
550
561
 
@@ -552,6 +563,18 @@ interface DomternalFloatingMenuProps {
552
563
  editor?: Editor;
553
564
  shouldShow?: FloatingMenuOptions['shouldShow'];
554
565
  offset?: number;
566
+ items?: FloatingMenuItemsOverride;
567
+ keymap?: FloatingMenuKeymap;
568
+ icons?: IconSet;
569
+ /**
570
+ * When true, the menu does NOT auto-show on every empty paragraph;
571
+ * it only opens when the BlockHandle `+` button (or any caller of
572
+ * `showFloatingMenu`) explicitly triggers it. Notion-style behaviour
573
+ * - empty rows show a placeholder, the slash menu is the keyboard
574
+ * trigger, the `+` button is the gutter trigger.
575
+ * @default false
576
+ */
577
+ requireExplicitTrigger?: boolean;
555
578
  }
556
579
  declare const DomternalFloatingMenu: vue.DefineComponent<vue.ExtractPropTypes<{
557
580
  editor: {
@@ -566,6 +589,22 @@ declare const DomternalFloatingMenu: vue.DefineComponent<vue.ExtractPropTypes<{
566
589
  type: NumberConstructor;
567
590
  default: number;
568
591
  };
592
+ items: {
593
+ type: PropType<FloatingMenuItemsOverride>;
594
+ default: undefined;
595
+ };
596
+ keymap: {
597
+ type: PropType<FloatingMenuKeymap>;
598
+ default: undefined;
599
+ };
600
+ icons: {
601
+ type: PropType<IconSet>;
602
+ default: undefined;
603
+ };
604
+ requireExplicitTrigger: {
605
+ type: BooleanConstructor;
606
+ default: boolean;
607
+ };
569
608
  }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
570
609
  [key: string]: any;
571
610
  }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
@@ -581,14 +620,34 @@ declare const DomternalFloatingMenu: vue.DefineComponent<vue.ExtractPropTypes<{
581
620
  type: NumberConstructor;
582
621
  default: number;
583
622
  };
623
+ items: {
624
+ type: PropType<FloatingMenuItemsOverride>;
625
+ default: undefined;
626
+ };
627
+ keymap: {
628
+ type: PropType<FloatingMenuKeymap>;
629
+ default: undefined;
630
+ };
631
+ icons: {
632
+ type: PropType<IconSet>;
633
+ default: undefined;
634
+ };
635
+ requireExplicitTrigger: {
636
+ type: BooleanConstructor;
637
+ default: boolean;
638
+ };
584
639
  }>> & Readonly<{}>, {
585
640
  editor: Editor;
641
+ items: FloatingMenuItemsOverride;
586
642
  shouldShow: (props: {
587
643
  editor: Editor;
588
644
  view: prosemirror_view.EditorView;
589
645
  state: prosemirror_state.EditorState;
590
646
  }) => boolean;
591
647
  offset: number;
648
+ icons: IconSet;
649
+ keymap: FloatingMenuKeymap;
650
+ requireExplicitTrigger: boolean;
592
651
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
593
652
 
594
653
  interface EmojiPickerItem {
@@ -625,6 +684,59 @@ declare const DomternalEmojiPicker: vue.DefineComponent<vue.ExtractPropTypes<{
625
684
  editor: Editor;
626
685
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
627
686
 
687
+ interface DomternalNotionColorPickerProps {
688
+ /** The editor instance. If omitted, uses provideEditor context. */
689
+ editor?: Editor;
690
+ }
691
+ declare const DomternalNotionColorPicker: vue.DefineComponent<vue.ExtractPropTypes<{
692
+ editor: {
693
+ type: PropType<Editor>;
694
+ default: undefined;
695
+ };
696
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
697
+ [key: string]: any;
698
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
699
+ editor: {
700
+ type: PropType<Editor>;
701
+ default: undefined;
702
+ };
703
+ }>> & Readonly<{}>, {
704
+ editor: Editor;
705
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
706
+
707
+ interface UseNotionColorPickerOptions {
708
+ editor: ShallowRef<Editor | null>;
709
+ }
710
+ interface UseNotionColorPickerResult {
711
+ /** Whether the picker panel is currently open. */
712
+ isOpen: Ref<boolean>;
713
+ /** Editor host element (`.dm-editor`) used as the Teleport target. Null until the editor is ready. */
714
+ hostEl: ShallowRef<HTMLElement | null>;
715
+ /** Anchor element the picker positions against (the bubble-menu "A" trigger button). */
716
+ anchorEl: ShallowRef<HTMLElement | null>;
717
+ /** Ref to the panel root, used by the picker UI for positioning + focus management. */
718
+ panelRef: Ref<HTMLDivElement | undefined>;
719
+ /** Currently applied text token at the cursor, or null when default. */
720
+ currentTextToken: Ref<string | null>;
721
+ /** Currently applied background token at the cursor, or null when default. */
722
+ currentBgToken: Ref<string | null>;
723
+ /** Named-token palette (read from the NotionColorPicker extension options). */
724
+ palette: ShallowRef<readonly string[]>;
725
+ /** Apply a text color token to the current selection. Picker stays open. */
726
+ applyText: (token: string | null) => void;
727
+ /** Apply a background color token to the current selection. Picker stays open. */
728
+ applyBg: (token: string | null) => void;
729
+ /** Close the picker. When `refocus` is true, returns focus to the editor view. */
730
+ close: (opts?: {
731
+ refocus?: boolean;
732
+ }) => void;
733
+ /** Display label for a palette token (defaults to title-case fallback). */
734
+ tokenLabel: (token: string) => string;
735
+ /** Arrow / Home / End keyboard navigation across the 5-column swatch grid. */
736
+ onPanelKeydown: (event: KeyboardEvent) => void;
737
+ }
738
+ declare function useNotionColorPicker(options: UseNotionColorPickerOptions): UseNotionColorPickerResult;
739
+
628
740
  /** ProseMirror node shape passed to node views. */
629
741
  interface PMNode {
630
742
  type: {
@@ -677,7 +789,7 @@ interface VueNodeViewRendererOptions {
677
789
  * });
678
790
  * ```
679
791
  */
680
- declare function VueNodeViewRenderer(component: Component, options?: VueNodeViewRendererOptions): (node: PMNode, _view: unknown, getPos: () => number | undefined, decorations: readonly unknown[]) => VueNodeView | {
792
+ declare function VueNodeViewRenderer(component: Component, options?: VueNodeViewRendererOptions): (node: PMNode, view: unknown, getPos: () => number | undefined, decorations: readonly unknown[]) => VueNodeView | {
681
793
  dom: HTMLElement;
682
794
  update: () => boolean;
683
795
  destroy: () => void;
@@ -783,4 +895,4 @@ declare function useVueNodeView(): {
783
895
  nodeViewContentRef: ((el: HTMLElement | null) => void) | undefined;
784
896
  };
785
897
 
786
- export { DEFAULT_EXTENSIONS, Domternal, DomternalBubbleMenu, type DomternalBubbleMenuProps, DomternalEditor, type DomternalEditorProps, DomternalEmojiPicker, type DomternalEmojiPickerProps, DomternalFloatingMenu, type DomternalFloatingMenuProps, type DomternalProps, DomternalToolbar, type DomternalToolbarProps, EDITOR_KEY, EditorContent, type EditorState, type EmojiPickerItem, NodeViewContent, NodeViewWrapper, type UseEditorOptions, type VueNodeViewProps, VueNodeViewRenderer, type VueNodeViewRendererOptions, provideEditor, useCurrentEditor, useEditor, useEditorState, useVueNodeView };
898
+ export { DEFAULT_EXTENSIONS, Domternal, DomternalBubbleMenu, type DomternalBubbleMenuProps, DomternalEditor, type DomternalEditorProps, DomternalEmojiPicker, type DomternalEmojiPickerProps, DomternalFloatingMenu, type DomternalFloatingMenuProps, DomternalNotionColorPicker, type DomternalNotionColorPickerProps, type DomternalProps, DomternalToolbar, type DomternalToolbarProps, EDITOR_KEY, EditorContent, type EditorState, type EmojiPickerItem, NodeViewContent, NodeViewWrapper, type UseEditorOptions, type UseNotionColorPickerOptions, type UseNotionColorPickerResult, type VueNodeViewProps, VueNodeViewRenderer, type VueNodeViewRendererOptions, provideEditor, useCurrentEditor, useEditor, useEditorState, useNotionColorPicker, useVueNodeView };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,YAAY,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,YAAY,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,YAAY,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAClG,YAAY,EACV,+BAA+B,EAC/B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGzF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}