@prosekit/web 0.4.2 → 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.
@@ -1,4 +1,3 @@
1
- import { AutoUpdateOptions } from '@floating-ui/dom';
2
1
  import { BaseElementConstructor } from '@aria-ui/core';
3
2
  import { ConnectableElement } from '@aria-ui/core';
4
3
  import { Context } from '@aria-ui/core';
@@ -6,7 +5,6 @@ import { config as default_alias_1 } from '@prosekit/dev/config-vitest';
6
5
  import type { defineTableCommands } from '@prosekit/extensions/table';
7
6
  import { Editor } from '@prosekit/core';
8
7
  import type { EditorView } from '@prosekit/pm/view';
9
- import { ElementContext } from '@floating-ui/dom';
10
8
  import { EventDeclarations } from '@aria-ui/core';
11
9
  import type { Extension } from '@prosekit/core';
12
10
  import { FocusChangeHandler } from '@prosekit/core';
@@ -24,7 +22,7 @@ import { OverlayPositionerEvents } from '@aria-ui/overlay/elements';
24
22
  import { OverlayPositionerEvents as OverlayPositionerEvents_2 } from '@aria-ui/overlay';
25
23
  import { OverlayPositionerProps } from '@aria-ui/overlay/elements';
26
24
  import { OverlayPositionerProps as OverlayPositionerProps_2 } from '@aria-ui/overlay';
27
- import { Placement } from '@floating-ui/dom';
25
+ import type { Placement } from '@floating-ui/dom';
28
26
  import { PlainExtension } from '@prosekit/core';
29
27
  import { popoverContentEvents } from '@aria-ui/popover/elements';
30
28
  import type { PopoverContentEvents as PopoverContentEvents_2 } from '@aria-ui/popover/elements';
@@ -43,12 +41,12 @@ import { PropDeclarations } from '@aria-ui/core';
43
41
  import type { ProseMirrorNode } from '@prosekit/pm/model';
44
42
  import { ReadonlySignal } from '@aria-ui/core';
45
43
  import type { ReferenceElement } from '@floating-ui/dom';
46
- import { RootBoundary } from '@floating-ui/dom';
47
44
  import { SetupOptions } from '@aria-ui/core';
48
45
  import { SignalState } from '@aria-ui/core';
49
- import { tooltipContentEvents } from '@aria-ui/tooltip';
50
- import { TooltipContentEvents as TooltipContentEvents_2 } from '@aria-ui/tooltip';
51
- import { TooltipContentProps as TooltipContentProps_2 } from '@aria-ui/tooltip';
46
+ import { tooltipContentEvents } from '@aria-ui/tooltip/elements';
47
+ import type { TooltipContentEvents as TooltipContentEvents_2 } from '@aria-ui/tooltip/elements';
48
+ import { tooltipContentProps } from '@aria-ui/tooltip/elements';
49
+ import type { TooltipContentProps as TooltipContentProps_2 } from '@aria-ui/tooltip/elements';
52
50
  import { tooltipRootEvents } from '@aria-ui/tooltip/elements';
53
51
  import type { TooltipRootEvents as TooltipRootEvents_2 } from '@aria-ui/tooltip/elements';
54
52
  import { tooltipRootProps } from '@aria-ui/tooltip/elements';
@@ -177,6 +175,14 @@ export { AutocompletePopoverElement as AutocompletePopoverElement_alias_1 }
177
175
  declare const AutocompletePopoverElement_base: BaseElementConstructor<AutocompletePopoverProps>;
178
176
 
179
177
  declare interface AutocompletePopoverEvents extends OverlayPositionerEvents {
178
+ /**
179
+ * Fired when the open state changes.
180
+ */
181
+ openChange: CustomEvent<boolean>;
182
+ /**
183
+ * Fired when the query changes.
184
+ */
185
+ queryChange: CustomEvent<string>;
180
186
  }
181
187
  export { AutocompletePopoverEvents }
182
188
  export { AutocompletePopoverEvents as AutocompletePopoverEvents_alias_1 }
@@ -200,14 +206,6 @@ declare interface AutocompletePopoverProps extends OverlayPositionerProps {
200
206
  * @default null
201
207
  */
202
208
  regex: RegExp | null;
203
- /**
204
- * A callback that is called when the query changes.
205
- */
206
- onQueryChange: ((query: string) => void) | null;
207
- /**
208
- * A callback that is called when the open state changes.
209
- */
210
- onOpenChange: ((open: boolean) => void) | null;
211
209
  /**
212
210
  * The placement of the popover, relative to the text cursor.
213
211
  *
@@ -245,53 +243,7 @@ export { AutocompletePopoverProps }
245
243
  export { AutocompletePopoverProps as AutocompletePopoverProps_alias_1 }
246
244
 
247
245
  /** @internal */
248
- declare const autocompletePopoverProps: {
249
- readonly editor: {
250
- readonly default: null;
251
- };
252
- readonly regex: {
253
- readonly default: null;
254
- };
255
- readonly onQueryChange: {
256
- readonly default: null;
257
- };
258
- readonly onOpenChange: {
259
- readonly default: null;
260
- };
261
- readonly placement: {
262
- readonly default: "bottom-start";
263
- };
264
- readonly offset: {
265
- readonly default: 4;
266
- };
267
- readonly inline: {
268
- readonly default: true;
269
- };
270
- readonly hoist: {
271
- readonly default: true;
272
- };
273
- readonly fitViewport: {
274
- readonly default: true;
275
- };
276
- readonly boundary: {
277
- readonly default: HTMLBodyElement | "clippingAncestors";
278
- };
279
- readonly overflowPadding: {
280
- readonly default: 8;
281
- };
282
- readonly strategy: PropDeclaration<"fixed" | "absolute">;
283
- readonly autoUpdate: PropDeclaration<boolean | AutoUpdateOptions>;
284
- readonly transform: PropDeclaration<boolean>;
285
- readonly flip: PropDeclaration<boolean | Placement[]>;
286
- readonly shift: PropDeclaration<boolean>;
287
- readonly overlap: PropDeclaration<boolean>;
288
- readonly sameWidth: PropDeclaration<boolean>;
289
- readonly sameHeight: PropDeclaration<boolean>;
290
- readonly hide: PropDeclaration<boolean>;
291
- readonly rootBoundary: PropDeclaration<RootBoundary>;
292
- readonly elementContext: PropDeclaration<ElementContext>;
293
- readonly altBoundary: PropDeclaration<boolean>;
294
- };
246
+ declare const autocompletePopoverProps: PropDeclarations<AutocompletePopoverProps>;
295
247
  export { autocompletePopoverProps }
296
248
  export { autocompletePopoverProps as autocompletePopoverProps_alias_1 }
297
249
 
@@ -383,7 +335,7 @@ declare const blockHandlePopoverEvents: EventDeclarations<BlockHandlePopoverEven
383
335
  export { blockHandlePopoverEvents }
384
336
  export { blockHandlePopoverEvents as blockHandlePopoverEvents_alias_1 }
385
337
 
386
- declare interface BlockHandlePopoverProps extends Omit<OverlayPositionerProps, 'placement' | 'offset'> {
338
+ declare interface BlockHandlePopoverProps extends Omit<OverlayPositionerProps, 'placement'> {
387
339
  /**
388
340
  * The ProseKit editor instance.
389
341
  *
@@ -397,12 +349,6 @@ declare interface BlockHandlePopoverProps extends Omit<OverlayPositionerProps, '
397
349
  * @default "left-start"
398
350
  */
399
351
  placement: Placement;
400
- /**
401
- * The distance between the popover and the hovered block.
402
- *
403
- * @default 4
404
- */
405
- offset: number;
406
352
  }
407
353
  export { BlockHandlePopoverProps }
408
354
  export { BlockHandlePopoverProps as BlockHandlePopoverProps_alias_1 }
@@ -466,8 +412,11 @@ export { InlinePopoverElement as InlinePopoverElement_alias_1 }
466
412
 
467
413
  declare const InlinePopoverElement_base: BaseElementConstructor<InlinePopoverProps>;
468
414
 
469
- /** @internal */
470
415
  declare interface InlinePopoverEvents extends OverlayPositionerEvents_2 {
416
+ /**
417
+ * Fired when the open state changes.
418
+ */
419
+ openChange: CustomEvent<boolean>;
471
420
  }
472
421
  export { InlinePopoverEvents }
473
422
  export { InlinePopoverEvents as InlinePopoverEvents_alias_1 }
@@ -477,7 +426,7 @@ declare const inlinePopoverEvents: EventDeclarations<InlinePopoverEvents>;
477
426
  export { inlinePopoverEvents }
478
427
  export { inlinePopoverEvents as inlinePopoverEvents_alias_1 }
479
428
 
480
- declare interface InlinePopoverProps extends Omit<OverlayPositionerProps_2, 'placement' | 'offset'> {
429
+ declare interface InlinePopoverProps extends Omit<OverlayPositionerProps_2, 'placement' | 'offset' | 'hide' | 'overlap' | 'inline' | 'overflowPadding'> {
481
430
  /**
482
431
  * The ProseKit editor instance.
483
432
  *
@@ -505,13 +454,6 @@ declare interface InlinePopoverProps extends Omit<OverlayPositionerProps_2, 'pla
505
454
  * @default false
506
455
  */
507
456
  open: boolean;
508
- /**
509
- * Event handler called when the open state changed caused by user interaction
510
- * (i.e. select or unselect inline content).
511
- *
512
- * @default null
513
- */
514
- onOpenChange: ((open: boolean) => void) | null;
515
457
  /**
516
458
  * Whether the inline popover should be dismissed when the editor receives an
517
459
  * Escape key press.
@@ -520,8 +462,6 @@ declare interface InlinePopoverProps extends Omit<OverlayPositionerProps_2, 'pla
520
462
  */
521
463
  dismissOnEscape: boolean;
522
464
  /**
523
- * The placement of the popover, relative to the selected inline content.
524
- *
525
465
  * @default "top"
526
466
  */
527
467
  placement: OverlayPositionerProps_2['placement'];
@@ -529,10 +469,6 @@ declare interface InlinePopoverProps extends Omit<OverlayPositionerProps_2, 'pla
529
469
  * @default 12
530
470
  */
531
471
  offset: OverlayPositionerProps_2['offset'];
532
- /**
533
- * @default true
534
- */
535
- flip: OverlayPositionerProps_2['flip'];
536
472
  /**
537
473
  * @default true
538
474
  */
@@ -546,9 +482,9 @@ declare interface InlinePopoverProps extends Omit<OverlayPositionerProps_2, 'pla
546
482
  */
547
483
  inline: OverlayPositionerProps_2['inline'];
548
484
  /**
549
- * @default true
485
+ * @default 8
550
486
  */
551
- hoist: OverlayPositionerProps_2['hoist'];
487
+ overflowPadding: OverlayPositionerProps_2['overflowPadding'];
552
488
  }
553
489
  export { InlinePopoverProps }
554
490
  export { InlinePopoverProps as InlinePopoverProps_alias_1 }
@@ -1016,39 +952,6 @@ declare interface TooltipContentProps extends TooltipContentProps_2 {
1016
952
  export { TooltipContentProps }
1017
953
  export { TooltipContentProps as TooltipContentProps_alias_1 }
1018
954
 
1019
- declare const tooltipContentProps: {
1020
- shift: {
1021
- default: boolean;
1022
- };
1023
- flip: {
1024
- default: boolean;
1025
- };
1026
- offset: {
1027
- default: number;
1028
- };
1029
- overflowPadding: {
1030
- default: number;
1031
- };
1032
- hoist: {
1033
- default: boolean;
1034
- };
1035
- boundary: {
1036
- default: never[];
1037
- };
1038
- inline: PropDeclaration<boolean>;
1039
- placement: PropDeclaration<Placement>;
1040
- fitViewport: PropDeclaration<boolean>;
1041
- strategy: PropDeclaration<"fixed" | "absolute">;
1042
- autoUpdate: PropDeclaration<boolean | AutoUpdateOptions>;
1043
- transform: PropDeclaration<boolean>;
1044
- overlap: PropDeclaration<boolean>;
1045
- sameWidth: PropDeclaration<boolean>;
1046
- sameHeight: PropDeclaration<boolean>;
1047
- hide: PropDeclaration<boolean>;
1048
- rootBoundary: PropDeclaration<RootBoundary>;
1049
- elementContext: PropDeclaration<ElementContext>;
1050
- altBoundary: PropDeclaration<boolean>;
1051
- };
1052
955
  export { tooltipContentProps }
1053
956
  export { tooltipContentProps as tooltipContentProps_alias_1 }
1054
957
 
@@ -1104,9 +1007,7 @@ export declare function useAutocompleteItem(element: ConnectableElement, { state
1104
1007
 
1105
1008
  export declare function useAutocompleteList(element: ConnectableElement, { state, emit }: SetupOptions<AutocompleteListProps, AutocompleteListEvents>): void;
1106
1009
 
1107
- export declare function useAutocompletePopover(host: ConnectableElement, { state }: {
1108
- state: SignalState<AutocompletePopoverProps>;
1109
- }): void;
1010
+ export declare function useAutocompletePopover(host: ConnectableElement, { state, emit, }: SetupOptions<AutocompletePopoverProps, AutocompletePopoverEvents>): void;
1110
1011
 
1111
1012
  export declare function useBlockHandleAdd(host: ConnectableElement, { state }: {
1112
1013
  state: SignalState<BlockHandleAddProps>;
@@ -1136,9 +1037,7 @@ export declare function useEditorUpdateEvent(host: ConnectableElement, editor: R
1136
1037
 
1137
1038
  export declare function useFirstRendering(host: ConnectableElement): ReadonlySignal<boolean>;
1138
1039
 
1139
- export declare function useInlinePopover(host: ConnectableElement, { state }: {
1140
- state: SignalState<InlinePopoverProps>;
1141
- }): void;
1040
+ export declare function useInlinePopover(host: ConnectableElement, { state, emit }: SetupOptions<InlinePopoverProps, InlinePopoverEvents>): void;
1142
1041
 
1143
1042
  export declare function useKeymap(host: ConnectableElement, editor: ReadonlySignal<Editor | null>, keymap: Keymap): void;
1144
1043
 
@@ -241,7 +241,10 @@ function defaultQueryBuilder(match) {
241
241
  }
242
242
 
243
243
  // src/components/autocomplete/autocomplete-popover/setup.ts
244
- function useAutocompletePopover(host, { state }) {
244
+ function useAutocompletePopover(host, {
245
+ state,
246
+ emit
247
+ }) {
245
248
  const { editor, regex, ...overlayState } = state;
246
249
  const reference = createSignal3(null);
247
250
  const query = createSignal3("");
@@ -266,20 +269,15 @@ function useAutocompletePopover(host, { state }) {
266
269
  usePresence(host, presence);
267
270
  const firstRendering = useFirstRendering(host);
268
271
  useEffect4(host, () => {
269
- var _a;
270
272
  const queryValue = query.get();
271
273
  if (!firstRendering.peek()) {
272
- (_a = state.onQueryChange.peek()) == null ? void 0 : _a(queryValue);
274
+ emit("queryChange", queryValue);
273
275
  }
274
276
  });
275
277
  useAnimationFrame(host, () => {
276
278
  const presenceValue = presence.get();
277
- const onOpenChangeValue = state.onOpenChange.peek();
278
- if (!onOpenChangeValue) {
279
- return;
280
- }
281
279
  return () => {
282
- onOpenChangeValue(presenceValue);
280
+ emit("openChange", presenceValue);
283
281
  };
284
282
  });
285
283
  }
@@ -350,8 +348,6 @@ var autocompletePopoverProps = {
350
348
  ...overlayPositionerProps,
351
349
  editor: { default: null },
352
350
  regex: { default: null },
353
- onQueryChange: { default: null },
354
- onOpenChange: { default: null },
355
351
  placement: { default: "bottom-start" },
356
352
  offset: { default: 4 },
357
353
  inline: { default: true },
@@ -360,7 +356,11 @@ var autocompletePopoverProps = {
360
356
  boundary: { default: defaultBoundary },
361
357
  overflowPadding: { default: 8 }
362
358
  };
363
- var autocompletePopoverEvents = overlayPositionerEvents;
359
+ var autocompletePopoverEvents = {
360
+ ...overlayPositionerEvents,
361
+ openChange: {},
362
+ queryChange: {}
363
+ };
364
364
 
365
365
  // src/components/autocomplete/autocomplete-popover/element.gen.ts
366
366
  var AutocompletePopoverElement = class extends defineCustomElement4({
@@ -266,8 +266,7 @@ import {
266
266
  var blockHandlePopoverProps = {
267
267
  ...overlayPositionerProps,
268
268
  editor: { default: null },
269
- placement: { default: "left-start" },
270
- offset: { default: 4 }
269
+ placement: { default: "left-start" }
271
270
  };
272
271
  var blockHandlePopoverEvents = {};
273
272
 
@@ -94,17 +94,16 @@ function getInlineDecoration(view) {
94
94
  }
95
95
 
96
96
  // src/components/inline-popover/inline-popover/setup.ts
97
- function useInlinePopover(host, { state }) {
98
- const { editor, defaultOpen, open, onOpenChange, ...overlayState } = state;
97
+ function useInlinePopover(host, { state, emit }) {
98
+ const { editor, defaultOpen, open, ...overlayState } = state;
99
99
  const reference = useInlinePopoverReference(host, editor);
100
100
  const hasReference = createComputed(() => !!reference.get());
101
101
  useEffect(host, () => {
102
102
  const hasReferenceValue = hasReference.get();
103
- const onOpenChangeValue = onOpenChange.peek();
104
103
  const defaultOpenValue = defaultOpen.peek();
105
104
  const openValue = open.peek();
106
- if (onOpenChangeValue && (defaultOpenValue || openValue)) {
107
- onOpenChangeValue(hasReferenceValue);
105
+ if (defaultOpenValue || openValue) {
106
+ emit("openChange", hasReferenceValue);
108
107
  }
109
108
  });
110
109
  useEffect(host, () => {
@@ -118,12 +117,11 @@ function useInlinePopover(host, { state }) {
118
117
  });
119
118
  useKeymap(host, editor, {
120
119
  Escape: () => {
121
- var _a;
122
- if (!state.dismissOnEscape.get() || !open.get()) {
120
+ if (!state.dismissOnEscape.peek() || !open.peek()) {
123
121
  return false;
124
122
  }
125
123
  open.set(false);
126
- (_a = onOpenChange.peek()) == null ? void 0 : _a(false);
124
+ emit("openChange", false);
127
125
  return true;
128
126
  }
129
127
  });
@@ -157,21 +155,18 @@ var inlinePopoverProps = Object.freeze({
157
155
  editor: { default: null },
158
156
  defaultOpen: { default: true },
159
157
  open: { default: false },
160
- onOpenChange: { default: null },
161
158
  dismissOnEscape: { default: true },
162
159
  placement: { default: "top" },
163
160
  offset: { default: 12 },
164
- shift: { default: true },
165
- flip: { default: true },
166
161
  hide: { default: true },
167
162
  overlap: { default: true },
168
163
  inline: { default: true },
169
- overflowPadding: { default: 8 },
170
- // Don't need boundary when hoist is true.
171
- hoist: { default: true },
172
- boundary: { default: [] }
164
+ overflowPadding: { default: 8 }
173
165
  });
174
- var inlinePopoverEvents = overlayPositionerEvents;
166
+ var inlinePopoverEvents = {
167
+ ...overlayPositionerEvents,
168
+ openChange: {}
169
+ };
175
170
 
176
171
  // src/components/inline-popover/inline-popover/element.gen.ts
177
172
  var InlinePopoverElement = class extends defineCustomElement({
@@ -6,19 +6,9 @@ import { useTooltipContent } from "@aria-ui/tooltip/elements";
6
6
 
7
7
  // src/components/tooltip/tooltip-content/types.ts
8
8
  import {
9
- tooltipContentProps as props,
10
- tooltipContentEvents
11
- } from "@aria-ui/tooltip";
12
- var tooltipContentProps = {
13
- ...props,
14
- shift: { default: true },
15
- flip: { default: true },
16
- offset: { default: 6 },
17
- overflowPadding: { default: 4 },
18
- // Don't need boundary when hoist is true.
19
- hoist: { default: true },
20
- boundary: { default: [] }
21
- };
9
+ tooltipContentEvents,
10
+ tooltipContentProps
11
+ } from "@aria-ui/tooltip/elements";
22
12
 
23
13
  // src/components/tooltip/tooltip-content/element.gen.ts
24
14
  var TooltipContentElement = class extends defineCustomElement({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prosekit/web",
3
3
  "type": "module",
4
- "version": "0.4.2",
4
+ "version": "0.5.0",
5
5
  "private": false,
6
6
  "author": {
7
7
  "name": "ocavue",
@@ -72,25 +72,25 @@
72
72
  "dependencies": {
73
73
  "@aria-ui/collection": "^0.0.4",
74
74
  "@aria-ui/core": "^0.0.19",
75
- "@aria-ui/listbox": "^0.0.19",
76
- "@aria-ui/menu": "^0.0.13",
77
- "@aria-ui/overlay": "^0.0.20",
78
- "@aria-ui/popover": "^0.0.21",
79
- "@aria-ui/presence": "^0.0.15",
80
- "@aria-ui/tooltip": "^0.0.23",
75
+ "@aria-ui/listbox": "^0.0.20",
76
+ "@aria-ui/menu": "^0.0.15",
77
+ "@aria-ui/overlay": "^0.0.21",
78
+ "@aria-ui/popover": "^0.0.23",
79
+ "@aria-ui/presence": "^0.0.16",
80
+ "@aria-ui/tooltip": "^0.0.25",
81
81
  "@floating-ui/dom": "^1.6.11",
82
- "@zag-js/dom-query": "^0.75.0",
82
+ "@zag-js/dom-query": "^0.76.0",
83
83
  "just-map-values": "^3.2.0",
84
84
  "just-omit": "^2.2.0",
85
- "prosemirror-tables": "^1.5.1",
85
+ "prosemirror-tables": "^1.6.0",
86
+ "@prosekit/pm": "^0.1.8",
86
87
  "@prosekit/core": "^0.7.12",
87
- "@prosekit/extensions": "^0.7.20",
88
- "@prosekit/pm": "^0.1.8"
88
+ "@prosekit/extensions": "^0.7.21"
89
89
  },
90
90
  "devDependencies": {
91
- "tsup": "^8.3.4",
91
+ "tsup": "^8.3.5",
92
92
  "typescript": "^5.6.3",
93
- "vitest": "^2.1.3",
93
+ "vitest": "^2.1.4",
94
94
  "@prosekit/dev": "0.0.0"
95
95
  },
96
96
  "scripts": {