@prosekit/web 0.8.0-beta.0 → 0.8.0-beta.1

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 (207) hide show
  1. package/dist/prosekit-web-autocomplete.d.ts +112 -90
  2. package/dist/prosekit-web-autocomplete.d.ts.map +1 -1
  3. package/dist/prosekit-web-autocomplete.js +292 -217
  4. package/dist/prosekit-web-autocomplete.js.map +1 -1
  5. package/dist/prosekit-web-block-handle.d.ts +95 -62
  6. package/dist/prosekit-web-block-handle.d.ts.map +1 -1
  7. package/dist/prosekit-web-block-handle.js +219 -114
  8. package/dist/prosekit-web-block-handle.js.map +1 -1
  9. package/dist/prosekit-web-drop-indicator.d.ts +13 -15
  10. package/dist/prosekit-web-drop-indicator.d.ts.map +1 -1
  11. package/dist/prosekit-web-drop-indicator.js +34 -30
  12. package/dist/prosekit-web-drop-indicator.js.map +1 -1
  13. package/dist/prosekit-web-inline-popover.d.ts +88 -54
  14. package/dist/prosekit-web-inline-popover.d.ts.map +1 -1
  15. package/dist/prosekit-web-inline-popover.js +129 -79
  16. package/dist/prosekit-web-inline-popover.js.map +1 -1
  17. package/dist/prosekit-web-menu.d.ts +13 -0
  18. package/dist/prosekit-web-menu.d.ts.map +1 -0
  19. package/dist/prosekit-web-menu.js +53 -0
  20. package/dist/prosekit-web-menu.js.map +1 -0
  21. package/dist/prosekit-web-popover.d.ts +7 -26
  22. package/dist/prosekit-web-popover.d.ts.map +1 -1
  23. package/dist/prosekit-web-popover.js +31 -29
  24. package/dist/prosekit-web-popover.js.map +1 -1
  25. package/dist/prosekit-web-resizable.d.ts +92 -51
  26. package/dist/prosekit-web-resizable.d.ts.map +1 -1
  27. package/dist/prosekit-web-resizable.js +139 -131
  28. package/dist/prosekit-web-resizable.js.map +1 -1
  29. package/dist/prosekit-web-table-handle.d.ts +166 -199
  30. package/dist/prosekit-web-table-handle.d.ts.map +1 -1
  31. package/dist/prosekit-web-table-handle.js +495 -496
  32. package/dist/prosekit-web-table-handle.js.map +1 -1
  33. package/dist/prosekit-web-tooltip.d.ts +7 -26
  34. package/dist/prosekit-web-tooltip.d.ts.map +1 -1
  35. package/dist/prosekit-web-tooltip.js +31 -29
  36. package/dist/prosekit-web-tooltip.js.map +1 -1
  37. package/dist/use-editor-extension.js +2 -2
  38. package/dist/use-editor-extension.js.map +1 -1
  39. package/dist/use-scrolling.js +17 -8
  40. package/dist/use-scrolling.js.map +1 -1
  41. package/package.json +28 -23
  42. package/src/components/autocomplete/autocomplete-empty.ts +45 -0
  43. package/src/components/autocomplete/autocomplete-item.ts +65 -0
  44. package/src/components/autocomplete/autocomplete-popup.ts +95 -0
  45. package/src/components/autocomplete/autocomplete-positioner.ts +98 -0
  46. package/src/components/autocomplete/autocomplete-root.ts +280 -0
  47. package/src/components/autocomplete/context.ts +16 -14
  48. package/src/components/autocomplete/index.ts +65 -0
  49. package/src/components/block-handle/block-handle-add.ts +71 -0
  50. package/src/components/block-handle/block-handle-draggable.ts +158 -0
  51. package/src/components/block-handle/block-handle-popup.ts +43 -0
  52. package/src/components/block-handle/block-handle-positioner.ts +89 -0
  53. package/src/components/block-handle/block-handle-root.ts +116 -0
  54. package/src/components/block-handle/context.ts +9 -18
  55. package/src/components/block-handle/hover-state.ts +16 -0
  56. package/src/components/block-handle/index.ts +59 -0
  57. package/src/components/block-handle/{block-handle-popover/pointer-move.ts → pointer-move.ts} +8 -7
  58. package/src/components/block-handle/{block-handle-draggable/set-drag-preview.ts → set-drag-preview.ts} +4 -4
  59. package/src/components/block-handle/use-hover-extension.ts +65 -0
  60. package/src/components/drop-indicator/drop-indicator.ts +128 -0
  61. package/src/components/drop-indicator/index.ts +18 -0
  62. package/src/components/inline-popover/index.ts +41 -0
  63. package/src/components/inline-popover/inline-popover-popup.ts +52 -0
  64. package/src/components/inline-popover/inline-popover-positioner.ts +98 -0
  65. package/src/components/inline-popover/inline-popover-root.ts +122 -0
  66. package/src/components/inline-popover/store.ts +6 -0
  67. package/src/components/menu/index.ts +92 -0
  68. package/src/components/popover/index.ts +53 -0
  69. package/src/components/resizable/{resizable-handle/calc-resize.ts → calc-resize.ts} +1 -1
  70. package/src/components/resizable/context.ts +3 -6
  71. package/src/components/resizable/index.ts +32 -0
  72. package/src/components/resizable/resizable-handle.ts +134 -0
  73. package/src/components/resizable/resizable-root.ts +184 -0
  74. package/src/components/table-handle/dnd.ts +16 -27
  75. package/src/components/table-handle/index.ts +125 -0
  76. package/src/components/table-handle/{table-handle-drag-preview/render-preview.ts → render-preview.ts} +5 -5
  77. package/src/components/table-handle/shared.ts +61 -0
  78. package/src/components/table-handle/store.ts +117 -0
  79. package/src/components/table-handle/table-handle-column-menu-root.ts +51 -0
  80. package/src/components/table-handle/table-handle-column-menu-trigger.ts +107 -0
  81. package/src/components/table-handle/table-handle-column-popup.ts +44 -0
  82. package/src/components/table-handle/table-handle-column-positioner.ts +67 -0
  83. package/src/components/table-handle/table-handle-drag-preview.ts +169 -0
  84. package/src/components/table-handle/table-handle-drop-indicator.ts +166 -0
  85. package/src/components/table-handle/table-handle-root.ts +103 -0
  86. package/src/components/table-handle/table-handle-row-menu-root.ts +51 -0
  87. package/src/components/table-handle/table-handle-row-menu-trigger.ts +107 -0
  88. package/src/components/table-handle/table-handle-row-popup.ts +42 -0
  89. package/src/components/table-handle/table-handle-row-positioner.ts +67 -0
  90. package/src/components/table-handle/use-drop.ts +74 -0
  91. package/src/components/table-handle/{hooks/use-empty-image.ts → use-empty-image.ts} +2 -3
  92. package/src/components/table-handle/utils.ts +0 -11
  93. package/src/components/tooltip/index.ts +52 -0
  94. package/src/hooks/use-editor-extension.ts +4 -4
  95. package/src/hooks/use-editor-focus-event.ts +4 -4
  96. package/src/hooks/use-editor-typing.ts +12 -16
  97. package/src/hooks/use-editor-update-event.ts +4 -4
  98. package/src/hooks/use-keymap.ts +4 -4
  99. package/src/hooks/use-scrolling.ts +11 -10
  100. package/src/hooks/use-selecting.ts +8 -15
  101. package/src/utils/event.ts +28 -0
  102. package/src/utils/lazy-signal.spec.ts +68 -0
  103. package/src/utils/lazy-signal.ts +17 -0
  104. package/src/utils/prefers-reduced-motion.ts +6 -0
  105. package/src/utils/prevent-default.ts +3 -0
  106. package/src/utils/use-html-element-at.ts +17 -0
  107. package/src/utils/use-no-focus.ts +7 -0
  108. package/dist/get-default-state.js +0 -11
  109. package/dist/get-default-state.js.map +0 -1
  110. package/src/components/autocomplete/autocomplete-empty/element.gen.ts +0 -18
  111. package/src/components/autocomplete/autocomplete-empty/setup.ts +0 -6
  112. package/src/components/autocomplete/autocomplete-empty/types.ts +0 -13
  113. package/src/components/autocomplete/autocomplete-item/element.gen.ts +0 -18
  114. package/src/components/autocomplete/autocomplete-item/setup.ts +0 -30
  115. package/src/components/autocomplete/autocomplete-item/types.ts +0 -25
  116. package/src/components/autocomplete/autocomplete-list/element.gen.ts +0 -18
  117. package/src/components/autocomplete/autocomplete-list/setup.ts +0 -125
  118. package/src/components/autocomplete/autocomplete-list/types.ts +0 -22
  119. package/src/components/autocomplete/autocomplete-popover/element.gen.ts +0 -18
  120. package/src/components/autocomplete/autocomplete-popover/setup.ts +0 -169
  121. package/src/components/autocomplete/autocomplete-popover/types.ts +0 -100
  122. package/src/components/autocomplete/index.gen.ts +0 -17
  123. package/src/components/block-handle/block-handle-add/element.gen.ts +0 -18
  124. package/src/components/block-handle/block-handle-add/setup.ts +0 -33
  125. package/src/components/block-handle/block-handle-add/types.ts +0 -23
  126. package/src/components/block-handle/block-handle-draggable/element.gen.ts +0 -18
  127. package/src/components/block-handle/block-handle-draggable/setup.ts +0 -113
  128. package/src/components/block-handle/block-handle-draggable/types.ts +0 -23
  129. package/src/components/block-handle/block-handle-popover/element.gen.ts +0 -18
  130. package/src/components/block-handle/block-handle-popover/setup.ts +0 -68
  131. package/src/components/block-handle/block-handle-popover/types.ts +0 -81
  132. package/src/components/block-handle/index.gen.ts +0 -13
  133. package/src/components/drop-indicator/drop-indicator/element.gen.ts +0 -18
  134. package/src/components/drop-indicator/drop-indicator/setup.ts +0 -75
  135. package/src/components/drop-indicator/drop-indicator/types.ts +0 -31
  136. package/src/components/drop-indicator/index.gen.ts +0 -5
  137. package/src/components/inline-popover/index.gen.ts +0 -5
  138. package/src/components/inline-popover/inline-popover/element.gen.ts +0 -18
  139. package/src/components/inline-popover/inline-popover/setup.ts +0 -111
  140. package/src/components/inline-popover/inline-popover/types.ts +0 -112
  141. package/src/components/popover/index.gen.ts +0 -13
  142. package/src/components/popover/popover-content/element.gen.ts +0 -18
  143. package/src/components/popover/popover-content/setup.ts +0 -1
  144. package/src/components/popover/popover-content/types.ts +0 -6
  145. package/src/components/popover/popover-root/element.gen.ts +0 -18
  146. package/src/components/popover/popover-root/setup.ts +0 -1
  147. package/src/components/popover/popover-root/types.ts +0 -6
  148. package/src/components/popover/popover-trigger/element.gen.ts +0 -18
  149. package/src/components/popover/popover-trigger/setup.ts +0 -1
  150. package/src/components/popover/popover-trigger/types.ts +0 -6
  151. package/src/components/resizable/index.gen.ts +0 -9
  152. package/src/components/resizable/resizable-handle/element.gen.ts +0 -18
  153. package/src/components/resizable/resizable-handle/setup.ts +0 -106
  154. package/src/components/resizable/resizable-handle/types.ts +0 -29
  155. package/src/components/resizable/resizable-root/element.gen.ts +0 -18
  156. package/src/components/resizable/resizable-root/setup.ts +0 -84
  157. package/src/components/resizable/resizable-root/types.ts +0 -59
  158. package/src/components/table-handle/context.ts +0 -43
  159. package/src/components/table-handle/hooks/use-drop.ts +0 -85
  160. package/src/components/table-handle/index.gen.ts +0 -37
  161. package/src/components/table-handle/table-handle-column-root/element.gen.ts +0 -18
  162. package/src/components/table-handle/table-handle-column-root/setup.ts +0 -60
  163. package/src/components/table-handle/table-handle-column-root/types.ts +0 -73
  164. package/src/components/table-handle/table-handle-column-trigger/element.gen.ts +0 -18
  165. package/src/components/table-handle/table-handle-column-trigger/setup.ts +0 -64
  166. package/src/components/table-handle/table-handle-column-trigger/types.ts +0 -20
  167. package/src/components/table-handle/table-handle-drag-preview/element.gen.ts +0 -18
  168. package/src/components/table-handle/table-handle-drag-preview/setup.ts +0 -57
  169. package/src/components/table-handle/table-handle-drag-preview/types.ts +0 -14
  170. package/src/components/table-handle/table-handle-drag-preview/updater.ts +0 -90
  171. package/src/components/table-handle/table-handle-drop-indicator/element.gen.ts +0 -18
  172. package/src/components/table-handle/table-handle-drop-indicator/setup.ts +0 -52
  173. package/src/components/table-handle/table-handle-drop-indicator/types.ts +0 -15
  174. package/src/components/table-handle/table-handle-drop-indicator/updater.ts +0 -96
  175. package/src/components/table-handle/table-handle-popover-content/element.gen.ts +0 -18
  176. package/src/components/table-handle/table-handle-popover-content/setup.ts +0 -83
  177. package/src/components/table-handle/table-handle-popover-content/types.ts +0 -32
  178. package/src/components/table-handle/table-handle-popover-item/element.gen.ts +0 -18
  179. package/src/components/table-handle/table-handle-popover-item/setup.ts +0 -17
  180. package/src/components/table-handle/table-handle-popover-item/types.ts +0 -16
  181. package/src/components/table-handle/table-handle-root/element.gen.ts +0 -18
  182. package/src/components/table-handle/table-handle-root/setup.ts +0 -86
  183. package/src/components/table-handle/table-handle-root/types.ts +0 -23
  184. package/src/components/table-handle/table-handle-row-root/element.gen.ts +0 -18
  185. package/src/components/table-handle/table-handle-row-root/setup.ts +0 -70
  186. package/src/components/table-handle/table-handle-row-root/types.ts +0 -68
  187. package/src/components/table-handle/table-handle-row-trigger/element.gen.ts +0 -18
  188. package/src/components/table-handle/table-handle-row-trigger/setup.ts +0 -63
  189. package/src/components/table-handle/table-handle-row-trigger/types.ts +0 -23
  190. package/src/components/tooltip/index.gen.ts +0 -13
  191. package/src/components/tooltip/tooltip-content/element.gen.ts +0 -18
  192. package/src/components/tooltip/tooltip-content/setup.ts +0 -1
  193. package/src/components/tooltip/tooltip-content/types.ts +0 -6
  194. package/src/components/tooltip/tooltip-root/element.gen.ts +0 -18
  195. package/src/components/tooltip/tooltip-root/setup.ts +0 -1
  196. package/src/components/tooltip/tooltip-root/types.ts +0 -6
  197. package/src/components/tooltip/tooltip-trigger/element.gen.ts +0 -18
  198. package/src/components/tooltip/tooltip-trigger/setup.ts +0 -1
  199. package/src/components/tooltip/tooltip-trigger/types.ts +0 -6
  200. package/src/hooks/use-first-rendering.ts +0 -15
  201. package/src/utils/get-default-state.spec.ts +0 -42
  202. package/src/utils/get-default-state.ts +0 -18
  203. /package/src/components/autocomplete/{autocomplete-popover/helpers.spec.ts → helpers.spec.ts} +0 -0
  204. /package/src/components/autocomplete/{autocomplete-popover/helpers.ts → helpers.ts} +0 -0
  205. /package/src/components/inline-popover/{inline-popover/virtual-selection-element.ts → virtual-selection-element.ts} +0 -0
  206. /package/src/components/resizable/{resizable-handle/calc-resize.spec.ts → calc-resize.spec.ts} +0 -0
  207. /package/src/components/table-handle/{table-handle-drop-indicator/calc-drag-over.ts → calc-drag-over.ts} +0 -0
@@ -1,86 +0,0 @@
1
- import {
2
- createComputed,
3
- createSignal,
4
- useEffect,
5
- type ConnectableElement,
6
- type ReadonlySignal,
7
- type Signal,
8
- type SignalState,
9
- } from '@aria-ui/core'
10
- import { defineDOMEventHandler, type Editor } from '@prosekit/core'
11
- import type { EditorView } from '@prosekit/pm/view'
12
-
13
- import { useEditorExtension } from '../../../hooks/use-editor-extension.ts'
14
- import { useEditorTyping } from '../../../hooks/use-editor-typing.ts'
15
- import { useScrolling } from '../../../hooks/use-scrolling.ts'
16
- import { useSelecting } from '../../../hooks/use-selecting.ts'
17
- import {
18
- defaultTableHandleDndContext,
19
- tableHandleDndContext,
20
- tableHandleRootContext,
21
- type TableHandleDndContext,
22
- type TableHandleRootContext,
23
- } from '../context.ts'
24
- import { useDrop } from '../hooks/use-drop.ts'
25
- import { getHoveringCell, isHoveringCellInfoEqual, type HoveringCellInfo } from '../utils.ts'
26
-
27
- import type { TableHandleRootProps } from './types.ts'
28
-
29
- /**
30
- * @internal
31
- */
32
- export function useTableHandleRoot(
33
- host: ConnectableElement,
34
- { state }: { state: SignalState<TableHandleRootProps> },
35
- ): void {
36
- const { editor } = state
37
-
38
- const context = createSignal<TableHandleRootContext>(null)
39
- const dndContext = createSignal<TableHandleDndContext>(defaultTableHandleDndContext)
40
-
41
- const hoveringCell = useHoveringCell(host, editor)
42
- const typing = useEditorTyping(host, editor)
43
- const isInTable = createComputed(() => !!hoveringCell.get())
44
- const selecting = useSelecting(host, editor, isInTable)
45
- const scrolling = useScrolling(host)
46
- const canShow = createComputed(() => {
47
- return !typing.get() && !selecting.get() && !scrolling.get()
48
- })
49
-
50
- useEffect(host, () => {
51
- context.set(canShow.get() ? hoveringCell.get() : null)
52
- })
53
-
54
- tableHandleRootContext.provide(host, context)
55
- tableHandleDndContext.provide(host, dndContext)
56
-
57
- useDrop(host, editor, dndContext)
58
- }
59
-
60
- function useHoveringCell(
61
- host: ConnectableElement,
62
- editor: ReadonlySignal<Editor | null>,
63
- ): Signal<HoveringCellInfo | null> {
64
- const hoveringCell = createSignal<HoveringCellInfo | null>(null)
65
-
66
- const extension = defineCellHoverHandler((curr: HoveringCellInfo | null) => {
67
- const prev = hoveringCell.peek()
68
- if (!isHoveringCellInfoEqual(prev, curr)) {
69
- hoveringCell.set(curr)
70
- }
71
- })
72
-
73
- useEditorExtension(host, editor, extension)
74
-
75
- return hoveringCell
76
- }
77
-
78
- function defineCellHoverHandler(
79
- handler: (hoveringCell: HoveringCellInfo | null) => void,
80
- ) {
81
- const pointerHandler = (view: EditorView, event: PointerEvent) => {
82
- const hoveringCell = getHoveringCell(view, event)
83
- return handler(hoveringCell ?? null)
84
- }
85
- return defineDOMEventHandler('pointerover', pointerHandler)
86
- }
@@ -1,23 +0,0 @@
1
- import type { EventDeclarations, PropDeclarations } from '@aria-ui/core'
2
- import type { Editor } from '@prosekit/core'
3
-
4
- export interface TableHandleRootProps {
5
- /**
6
- * The ProseKit editor instance.
7
- *
8
- * @default null
9
- * @hidden
10
- */
11
- editor: Editor | null
12
- }
13
-
14
- /** @internal */
15
- export const tableHandleRootProps: PropDeclarations<TableHandleRootProps> = {
16
- editor: { default: null },
17
- }
18
-
19
- /** @internal */
20
- export interface TableHandleRootEvents {}
21
-
22
- /** @internal */
23
- export const tableHandleRootEvents: EventDeclarations<TableHandleRootEvents> = {}
@@ -1,18 +0,0 @@
1
- import { defineCustomElement, registerCustomElement, type BaseElementConstructor } from "@aria-ui/core"
2
-
3
- import { useTableHandleRowRoot } from "./setup.ts"
4
- import { tableHandleRowRootEvents, tableHandleRowRootProps, type TableHandleRowRootEvents, type TableHandleRowRootProps } from "./types.ts"
5
-
6
- const TableHandleRowRootElementBase: BaseElementConstructor<TableHandleRowRootProps> = defineCustomElement<
7
- TableHandleRowRootProps,
8
- TableHandleRowRootEvents
9
- >({
10
- props: tableHandleRowRootProps,
11
- events: tableHandleRowRootEvents,
12
- setup: useTableHandleRowRoot,
13
- })
14
- class TableHandleRowRootElement extends TableHandleRowRootElementBase {}
15
-
16
- registerCustomElement('prosekit-table-handle-row-root', TableHandleRowRootElement)
17
-
18
- export { TableHandleRowRootElement }
@@ -1,70 +0,0 @@
1
- import {
2
- createComputed,
3
- createSignal,
4
- defineEmit,
5
- useAttribute,
6
- useEffect,
7
- type ConnectableElement,
8
- type SetupOptions,
9
- } from '@aria-ui/core'
10
- import { menuRootEvents, menuRootProps, useMenuRoot } from '@aria-ui/menu/elements'
11
- import { useOverlayPositionerState } from '@aria-ui/overlay/elements'
12
- import { usePresence } from '@aria-ui/presence'
13
-
14
- import { getStateWithDefaults } from '../../../utils/get-default-state.ts'
15
- import { getSafeEditorView } from '../../../utils/get-safe-editor-view.ts'
16
- import { tableHandleRootContext } from '../context.ts'
17
-
18
- import type { TableHandleRowRootEvents, TableHandleRowRootProps } from './types.ts'
19
-
20
- /**
21
- * @internal
22
- */
23
- export function useTableHandleRowRoot(
24
- host: ConnectableElement,
25
- { state }: SetupOptions<TableHandleRowRootProps, TableHandleRowRootEvents>,
26
- ): void {
27
- const { editor, ...overlayState } = state
28
-
29
- const rootContext = tableHandleRootContext.consume(host)
30
-
31
- const rowFirstCellPos = createComputed<number | undefined>(() => {
32
- return rootContext.get()?.rowFirstCellPos
33
- })
34
-
35
- const referenceCell = createComputed<HTMLElement | null>(() => {
36
- const pos = rowFirstCellPos.get()
37
- const view = getSafeEditorView(editor.get())
38
- if (!pos || !view) return null
39
- return view.nodeDOM(pos) as HTMLElement | null
40
- })
41
-
42
- const contentOpen = createSignal(false)
43
-
44
- // Close the menu when the hovering element is changed
45
- // TODO: add a delay
46
- useEffect(host, () => {
47
- rowFirstCellPos.get()
48
- contentOpen.set(false)
49
- })
50
-
51
- useOverlayPositionerState(host, overlayState, {
52
- reference: referenceCell,
53
- })
54
-
55
- const presence = createComputed(() => !!referenceCell.get())
56
- useAttribute(host, 'data-state', () => (presence.get() ? 'open' : 'closed'))
57
- usePresence(host, presence)
58
-
59
- const menuRootState = getStateWithDefaults(
60
- {
61
- open: contentOpen,
62
- },
63
- menuRootProps,
64
- )
65
-
66
- useMenuRoot(host, {
67
- state: menuRootState,
68
- emit: defineEmit(host, menuRootEvents),
69
- })
70
- }
@@ -1,68 +0,0 @@
1
- import type { EventDeclarations, PropDeclarations } from '@aria-ui/core'
2
- import { overlayPositionerProps, type OverlayPositionerEvents, type OverlayPositionerProps } from '@aria-ui/overlay'
3
- import type { Placement } from '@floating-ui/dom'
4
- import type { Editor } from '@prosekit/core'
5
-
6
- export interface TableHandleRowRootProps extends Omit<OverlayPositionerProps, 'placement' | 'hoist' | 'flip' | 'shift' | 'hide'> {
7
- /**
8
- * The ProseKit editor instance.
9
- *
10
- * @default null
11
- * @hidden
12
- */
13
- editor: Editor | null
14
-
15
- /**
16
- * The placement of the popover, relative to the hovered table cell.
17
- *
18
- * @default "left"
19
- */
20
- placement: Placement
21
-
22
- /**
23
- * Whether to use the browser [Popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API)
24
- * to place the floating element on top of other page content.
25
- *
26
- * @default false
27
- */
28
- hoist: boolean
29
-
30
- /**
31
- * @default false
32
- * @hidden
33
- */
34
- flip: boolean
35
-
36
- /**
37
- * @default false
38
- * @hidden
39
- */
40
- shift: boolean
41
-
42
- /**
43
- * @default true
44
- * @hidden
45
- */
46
- hide: boolean
47
- }
48
-
49
- /** @internal */
50
- export const tableHandleRowRootProps: PropDeclarations<TableHandleRowRootProps> = {
51
- ...overlayPositionerProps,
52
- editor: { default: null },
53
- placement: { default: 'left' },
54
-
55
- // Enabling `hoist` will cause the popover to have a small delay when
56
- // scrolling the page.
57
- hoist: { default: false },
58
-
59
- flip: { default: false },
60
- shift: { default: false },
61
- hide: { default: true },
62
- }
63
-
64
- /** @internal */
65
- export interface TableHandleRowRootEvents extends OverlayPositionerEvents {}
66
-
67
- /** @internal */
68
- export const tableHandleRowRootEvents: EventDeclarations<TableHandleRowRootEvents> = {}
@@ -1,18 +0,0 @@
1
- import { defineCustomElement, registerCustomElement, type BaseElementConstructor } from "@aria-ui/core"
2
-
3
- import { useTableHandleRowTrigger } from "./setup.ts"
4
- import { tableHandleRowTriggerEvents, tableHandleRowTriggerProps, type TableHandleRowTriggerEvents, type TableHandleRowTriggerProps } from "./types.ts"
5
-
6
- const TableHandleRowTriggerElementBase: BaseElementConstructor<TableHandleRowTriggerProps> = defineCustomElement<
7
- TableHandleRowTriggerProps,
8
- TableHandleRowTriggerEvents
9
- >({
10
- props: tableHandleRowTriggerProps,
11
- events: tableHandleRowTriggerEvents,
12
- setup: useTableHandleRowTrigger,
13
- })
14
- class TableHandleRowTriggerElement extends TableHandleRowTriggerElementBase {}
15
-
16
- registerCustomElement('prosekit-table-handle-row-trigger', TableHandleRowTriggerElement)
17
-
18
- export { TableHandleRowTriggerElement }
@@ -1,63 +0,0 @@
1
- import { useEffect, useEventListener, type ConnectableElement, type SetupOptions } from '@aria-ui/core'
2
- import { useMenuTrigger } from '@aria-ui/menu/elements'
3
- import { selectTableRow } from '@prosekit/extensions/table'
4
-
5
- import { tableHandleDndContext, tableHandleRootContext } from '../context.ts'
6
- import { useEmptyImage } from '../hooks/use-empty-image.ts'
7
-
8
- import type { TableHandleRowTriggerEvents, TableHandleRowTriggerProps } from './types.ts'
9
-
10
- /**
11
- * @internal
12
- */
13
- export function useTableHandleRowTrigger(
14
- host: ConnectableElement,
15
- { state }: SetupOptions<TableHandleRowTriggerProps, TableHandleRowTriggerEvents>,
16
- ): void {
17
- useMenuTrigger(host)
18
-
19
- const context = tableHandleRootContext.consume(host)
20
-
21
- const dndContext = tableHandleDndContext.consume(host)
22
-
23
- useEventListener(host, 'pointerdown', () => {
24
- const editor = state.editor.peek()
25
- const cellPos = context.peek()?.cellPos
26
- if (!editor || !cellPos) return
27
- editor.exec(selectTableRow({ head: cellPos }))
28
- })
29
-
30
- useEffect(host, () => {
31
- host.draggable = true
32
- })
33
-
34
- const getEmptyImage = useEmptyImage(host)
35
-
36
- useEventListener(host, 'dragstart', (event: DragEvent) => {
37
- const dataTransfer = event.dataTransfer
38
- if (dataTransfer) {
39
- dataTransfer.effectAllowed = 'move'
40
- const emptyImage = getEmptyImage()
41
- if (emptyImage) {
42
- dataTransfer.setDragImage(emptyImage, 0, 0)
43
- }
44
- }
45
- const prev = dndContext.peek()
46
- const index = context.peek()?.rowIndex
47
-
48
- if (index == null || index < 0) {
49
- console.warn('[prosekit] Invalid row index for drag operation:', index)
50
- event.preventDefault()
51
- return
52
- }
53
-
54
- dndContext.set({
55
- ...prev,
56
- direction: 'row',
57
- dragging: true,
58
- draggingIndex: index,
59
- startX: event.clientX,
60
- startY: event.clientY,
61
- })
62
- })
63
- }
@@ -1,23 +0,0 @@
1
- import type { EventDeclarations, PropDeclarations } from '@aria-ui/core'
2
- import type { Editor } from '@prosekit/core'
3
- import type { defineTableCommands } from '@prosekit/extensions/table'
4
-
5
- type TableCommandsExtension = ReturnType<typeof defineTableCommands>
6
-
7
- export interface TableHandleRowTriggerProps {
8
- editor: Editor<TableCommandsExtension> | null
9
- }
10
-
11
- /** @internal */
12
- export const tableHandleRowTriggerProps: PropDeclarations<TableHandleRowTriggerProps> = {
13
- editor: { default: null },
14
- }
15
-
16
- export interface TableHandleRowTriggerEvents {
17
- select: CustomEvent<void>
18
- }
19
-
20
- /** @internal */
21
- export const tableHandleRowTriggerEvents: EventDeclarations<TableHandleRowTriggerEvents> = {
22
- select: {},
23
- }
@@ -1,13 +0,0 @@
1
- // This file is generated by packages/dev/src/gen-components.ts
2
-
3
- export { TooltipContentElement } from './tooltip-content/element.gen.ts'
4
- export { tooltipContentEvents, tooltipContentProps, type TooltipContentEvents, type TooltipContentProps } from './tooltip-content/types.ts'
5
- export { useTooltipContent } from './tooltip-content/setup.ts'
6
-
7
- export { TooltipRootElement } from './tooltip-root/element.gen.ts'
8
- export { tooltipRootEvents, tooltipRootProps, type TooltipRootEvents, type TooltipRootProps } from './tooltip-root/types.ts'
9
- export { useTooltipRoot } from './tooltip-root/setup.ts'
10
-
11
- export { TooltipTriggerElement } from './tooltip-trigger/element.gen.ts'
12
- export { tooltipTriggerEvents, tooltipTriggerProps, type TooltipTriggerEvents, type TooltipTriggerProps } from './tooltip-trigger/types.ts'
13
- export { useTooltipTrigger } from './tooltip-trigger/setup.ts'
@@ -1,18 +0,0 @@
1
- import { defineCustomElement, registerCustomElement, type BaseElementConstructor } from "@aria-ui/core"
2
-
3
- import { useTooltipContent } from "./setup.ts"
4
- import { tooltipContentEvents, tooltipContentProps, type TooltipContentEvents, type TooltipContentProps } from "./types.ts"
5
-
6
- const TooltipContentElementBase: BaseElementConstructor<TooltipContentProps> = defineCustomElement<
7
- TooltipContentProps,
8
- TooltipContentEvents
9
- >({
10
- props: tooltipContentProps,
11
- events: tooltipContentEvents,
12
- setup: useTooltipContent,
13
- })
14
- class TooltipContentElement extends TooltipContentElementBase {}
15
-
16
- registerCustomElement('prosekit-tooltip-content', TooltipContentElement)
17
-
18
- export { TooltipContentElement }
@@ -1 +0,0 @@
1
- export { useTooltipContent } from '@aria-ui/tooltip/elements'
@@ -1,6 +0,0 @@
1
- import type { TooltipContentEvents as Events, TooltipContentProps as Props } from '@aria-ui/tooltip/elements'
2
-
3
- export { tooltipContentEvents, tooltipContentProps } from '@aria-ui/tooltip/elements'
4
-
5
- export interface TooltipContentProps extends Props {}
6
- export interface TooltipContentEvents extends Events {}
@@ -1,18 +0,0 @@
1
- import { defineCustomElement, registerCustomElement, type BaseElementConstructor } from "@aria-ui/core"
2
-
3
- import { useTooltipRoot } from "./setup.ts"
4
- import { tooltipRootEvents, tooltipRootProps, type TooltipRootEvents, type TooltipRootProps } from "./types.ts"
5
-
6
- const TooltipRootElementBase: BaseElementConstructor<TooltipRootProps> = defineCustomElement<
7
- TooltipRootProps,
8
- TooltipRootEvents
9
- >({
10
- props: tooltipRootProps,
11
- events: tooltipRootEvents,
12
- setup: useTooltipRoot,
13
- })
14
- class TooltipRootElement extends TooltipRootElementBase {}
15
-
16
- registerCustomElement('prosekit-tooltip-root', TooltipRootElement)
17
-
18
- export { TooltipRootElement }
@@ -1 +0,0 @@
1
- export { useTooltipRoot } from '@aria-ui/tooltip/elements'
@@ -1,6 +0,0 @@
1
- import type { TooltipRootEvents as Events, TooltipRootProps as Props } from '@aria-ui/tooltip/elements'
2
-
3
- export { tooltipRootEvents, tooltipRootProps } from '@aria-ui/tooltip/elements'
4
-
5
- export interface TooltipRootProps extends Props {}
6
- export interface TooltipRootEvents extends Events {}
@@ -1,18 +0,0 @@
1
- import { defineCustomElement, registerCustomElement, type BaseElementConstructor } from "@aria-ui/core"
2
-
3
- import { useTooltipTrigger } from "./setup.ts"
4
- import { tooltipTriggerEvents, tooltipTriggerProps, type TooltipTriggerEvents, type TooltipTriggerProps } from "./types.ts"
5
-
6
- const TooltipTriggerElementBase: BaseElementConstructor<TooltipTriggerProps> = defineCustomElement<
7
- TooltipTriggerProps,
8
- TooltipTriggerEvents
9
- >({
10
- props: tooltipTriggerProps,
11
- events: tooltipTriggerEvents,
12
- setup: useTooltipTrigger,
13
- })
14
- class TooltipTriggerElement extends TooltipTriggerElementBase {}
15
-
16
- registerCustomElement('prosekit-tooltip-trigger', TooltipTriggerElement)
17
-
18
- export { TooltipTriggerElement }
@@ -1 +0,0 @@
1
- export { useTooltipTrigger } from '@aria-ui/tooltip/elements'
@@ -1,6 +0,0 @@
1
- import type { TooltipTriggerEvents as Events, TooltipTriggerProps as Props } from '@aria-ui/tooltip/elements'
2
-
3
- export { tooltipTriggerEvents, tooltipTriggerProps } from '@aria-ui/tooltip/elements'
4
-
5
- export interface TooltipTriggerProps extends Props {}
6
- export interface TooltipTriggerEvents extends Events {}
@@ -1,15 +0,0 @@
1
- import { createSignal, useEffect, type ConnectableElement, type ReadonlySignal } from '@aria-ui/core'
2
-
3
- export function useFirstRendering(
4
- host: ConnectableElement,
5
- ): ReadonlySignal<boolean> {
6
- const firstRendering = createSignal(true)
7
-
8
- useEffect(host, () => {
9
- requestAnimationFrame(() => {
10
- firstRendering.set(false)
11
- })
12
- })
13
-
14
- return firstRendering
15
- }
@@ -1,42 +0,0 @@
1
- import { createSignal, type PropDeclarations, type SignalState } from '@aria-ui/core'
2
- import { describe, expect, it } from 'vitest'
3
-
4
- import { getStateWithDefaults } from './get-default-state.ts'
5
-
6
- type TestProps = {
7
- bool: boolean
8
- num: number
9
- }
10
-
11
- describe('getStateWithDefaults', () => {
12
- it('keeps falsy signal values from state', () => {
13
- const props: PropDeclarations<TestProps> = {
14
- bool: { default: true },
15
- num: { default: 1 },
16
- }
17
-
18
- const state: Partial<SignalState<TestProps>> = {
19
- bool: createSignal(false),
20
- num: createSignal(0),
21
- }
22
-
23
- const merged = getStateWithDefaults(state, props)
24
- expect(merged.bool.get()).toBe(false)
25
- expect(merged.num.get()).toBe(0)
26
- })
27
-
28
- it('uses default value when state property is undefined', () => {
29
- const props: PropDeclarations<TestProps> = {
30
- bool: { default: true },
31
- num: { default: 1 },
32
- }
33
-
34
- const state: Partial<SignalState<TestProps>> = {
35
- bool: undefined,
36
- }
37
-
38
- const merged = getStateWithDefaults(state, props)
39
- expect(merged.bool.get()).toBe(true)
40
- expect(merged.num.get()).toBe(1)
41
- })
42
- })
@@ -1,18 +0,0 @@
1
- import { createSignal, type PropDeclarations, type SignalState } from '@aria-ui/core'
2
-
3
- export function getStateWithDefaults<
4
- Props extends Record<string, any> = Record<string, any>,
5
- >(
6
- state: Partial<SignalState<Props>>,
7
- props: PropDeclarations<Props>,
8
- ): SignalState<Props> {
9
- const merged = { ...state } as SignalState<Props>
10
-
11
- for (const key of Object.keys(props) as (keyof Props)[]) {
12
- if (!merged[key]) {
13
- merged[key] = createSignal(props[key].default)
14
- }
15
- }
16
-
17
- return merged
18
- }