@prosekit/web 0.3.16 → 0.3.18

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.
@@ -11,8 +11,7 @@ import type { defineTableCommands } from '@prosekit/extensions/table';
11
11
  import { Editor } from '@prosekit/core';
12
12
  import type { EditorView } from '@prosekit/pm/view';
13
13
  import type { EmptyObject } from '@aria-ui/core';
14
- import { Extension } from '@prosekit/core';
15
- import { ExtensionTyping } from '@prosekit/core';
14
+ import type { Extension } from '@prosekit/core';
16
15
  import { FocusChangeHandler } from '@prosekit/core';
17
16
  import { ItemFilter } from '@aria-ui/collection';
18
17
  import { Keymap } from '@prosekit/core';
@@ -22,6 +21,7 @@ import { MenuItemProps } from '@aria-ui/menu';
22
21
  import { Options } from 'tsup';
23
22
  import { OverlayPositionerProps } from '@aria-ui/overlay';
24
23
  import type { Placement } from '@floating-ui/dom';
24
+ import { PlainExtension } from '@prosekit/core';
25
25
  import { PopoverContentProps } from '@aria-ui/popover';
26
26
  import { PopoverRootProps } from '@aria-ui/popover';
27
27
  import { PopoverTriggerProps } from '@aria-ui/popover';
@@ -614,11 +614,9 @@ export { defaultTooltipRootProps as defaultTooltipRootProps_alias_1 }
614
614
  export { defaultTooltipTriggerProps }
615
615
  export { defaultTooltipTriggerProps as defaultTooltipTriggerProps_alias_1 }
616
616
 
617
- export declare function defineCellHoverHandler(handler: (hoveringCell: HoveringCellInfo | null) => void): Extension<ExtensionTyping<any, any, any>>;
618
-
619
617
  export declare function defineCustomElement(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;
620
618
 
621
- export declare function defineElementHoverHandler(handler: ElementHoverHandler): Union<readonly [Extension<ExtensionTyping<any, any, any>>, Extension<ExtensionTyping<any, any, any>>, Extension<ExtensionTyping<any, any, any>>]>;
619
+ export declare function defineElementHoverHandler(handler: ElementHoverHandler): Union<readonly [PlainExtension, PlainExtension, PlainExtension]>;
622
620
 
623
621
  export declare type ElementHoverHandler = (reference: VirtualElement | null, hoverState: HoverState | null) => void;
624
622
 
@@ -219,6 +219,7 @@ var defaultTableHandleRootProps = Object.freeze({
219
219
 
220
220
  // src/components/table-handle/table-handle-root/state.ts
221
221
  import {
222
+ createComputed as createComputed3,
222
223
  createSignal as createSignal4,
223
224
  useEffect as useEffect3
224
225
  } from "@aria-ui/core";
@@ -301,10 +302,13 @@ function useTableHandleRoot(host, state) {
301
302
  const context = createSignal4(null);
302
303
  const hoveringCell = useHoveringCell(host, editor);
303
304
  const typing = useEditorTyping(host, editor);
305
+ const isInTable = createComputed3(() => !!hoveringCell.get());
306
+ const selecting = useSelecting(host, editor, isInTable);
304
307
  useEffect3(host, () => {
305
308
  const typingValue = typing.get();
309
+ const selectingValue = selecting.get();
306
310
  const hoveringCellValue = hoveringCell.get();
307
- context.set(typingValue ? null : hoveringCellValue);
311
+ context.set(typingValue || selectingValue ? null : hoveringCellValue);
308
312
  });
309
313
  tableHandleRootContext.provide(host, context);
310
314
  }
@@ -326,6 +330,36 @@ function defineCellHoverHandler(handler) {
326
330
  };
327
331
  return defineDOMEventHandler2("pointerover", pointerHandler);
328
332
  }
333
+ function useSelecting(host, editor, isInTable) {
334
+ const selecting = createSignal4(false);
335
+ useEffect3(host, () => {
336
+ var _a;
337
+ if (!isInTable.get()) {
338
+ return;
339
+ }
340
+ const root = (_a = editor.peek()) == null ? void 0 : _a.view.root;
341
+ if (!root) {
342
+ return;
343
+ }
344
+ const pointerDownHandler = (event) => {
345
+ const target = event.target;
346
+ if (!target || host.contains(event.target)) {
347
+ return;
348
+ }
349
+ selecting.set(true);
350
+ };
351
+ const pointerUpHandler = () => {
352
+ selecting.set(false);
353
+ };
354
+ root.addEventListener("pointerdown", pointerDownHandler);
355
+ root.addEventListener("pointerup", pointerUpHandler);
356
+ return () => {
357
+ root.removeEventListener("pointerdown", pointerDownHandler);
358
+ root.removeEventListener("pointerup", pointerUpHandler);
359
+ };
360
+ });
361
+ return selecting;
362
+ }
329
363
 
330
364
  // src/components/table-handle/table-handle-root/element.gen.ts
331
365
  var TableHandleRootElement = class extends ElementBuilder5(useTableHandleRoot, defaultTableHandleRootProps) {
@@ -347,7 +381,7 @@ var defaultTableHandleRowRootProps = Object.freeze({
347
381
 
348
382
  // src/components/table-handle/table-handle-row-root/state.ts
349
383
  import {
350
- createComputed as createComputed3,
384
+ createComputed as createComputed4,
351
385
  createSignal as createSignal5,
352
386
  mapSignals as mapSignals3,
353
387
  useAttribute as useAttribute3,
@@ -359,11 +393,11 @@ import { usePresence as usePresence2 } from "@aria-ui/presence";
359
393
  function useTableHandleRowRoot(host, state) {
360
394
  const { editor, ...overlayState } = state;
361
395
  const rootContext = tableHandleRootContext.consume(host);
362
- const rowFirstCellPos = createComputed3(() => {
396
+ const rowFirstCellPos = createComputed4(() => {
363
397
  var _a;
364
398
  return (_a = rootContext.get()) == null ? void 0 : _a.rowFirstCellPos;
365
399
  });
366
- const referenceCell = createComputed3(() => {
400
+ const referenceCell = createComputed4(() => {
367
401
  var _a;
368
402
  const pos = rowFirstCellPos.get();
369
403
  const view = (_a = editor.get()) == null ? void 0 : _a.view;
@@ -378,7 +412,7 @@ function useTableHandleRowRoot(host, state) {
378
412
  useOverlayPositionerState2(host, overlayState, {
379
413
  reference: referenceCell
380
414
  });
381
- const presence = createComputed3(() => !!referenceCell.get());
415
+ const presence = createComputed4(() => !!referenceCell.get());
382
416
  useAttribute3(host, "data-state", () => presence.get() ? "open" : "closed");
383
417
  usePresence2(host, presence);
384
418
  useMenuRoot2(host, {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prosekit/web",
3
3
  "type": "module",
4
- "version": "0.3.16",
4
+ "version": "0.3.18",
5
5
  "private": false,
6
6
  "author": {
7
7
  "name": "ocavue",
@@ -78,18 +78,18 @@
78
78
  "@aria-ui/popover": "^0.0.20",
79
79
  "@aria-ui/presence": "^0.0.14",
80
80
  "@aria-ui/tooltip": "^0.0.22",
81
- "@floating-ui/dom": "^1.6.10",
82
- "@zag-js/dom-query": "^0.65.1",
81
+ "@floating-ui/dom": "^1.6.11",
82
+ "@zag-js/dom-query": "^0.68.1",
83
83
  "just-omit": "^2.2.0",
84
84
  "prosemirror-tables": "^1.5.0",
85
85
  "@prosekit/core": "^0.7.11",
86
- "@prosekit/extensions": "^0.7.16",
86
+ "@prosekit/extensions": "^0.7.17",
87
87
  "@prosekit/pm": "^0.1.8"
88
88
  },
89
89
  "devDependencies": {
90
- "tsup": "^8.2.4",
91
- "typescript": "^5.5.4",
92
- "vitest": "^2.0.5",
90
+ "tsup": "^8.3.0",
91
+ "typescript": "^5.6.2",
92
+ "vitest": "^2.1.1",
93
93
  "@prosekit/dev": "0.0.0"
94
94
  },
95
95
  "scripts": {