@prosekit/react 0.5.3 → 0.6.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.
- package/dist/create-component-CBvs05W1.js +2 -1
- package/dist/create-component-CBvs05W1.js.map +1 -0
- package/dist/{create-props-CkTwd_m_.d.ts → create-props-EGV61dJR.d.ts} +3 -2
- package/dist/create-props-EGV61dJR.d.ts.map +1 -0
- package/dist/editor-context-Cci4uqN_.js +2 -1
- package/dist/editor-context-Cci4uqN_.js.map +1 -0
- package/dist/prosekit-react-autocomplete.d.ts +11 -10
- package/dist/prosekit-react-autocomplete.d.ts.map +1 -0
- package/dist/prosekit-react-autocomplete.js +2 -1
- package/dist/prosekit-react-autocomplete.js.map +1 -0
- package/dist/prosekit-react-block-handle.d.ts +9 -8
- package/dist/prosekit-react-block-handle.d.ts.map +1 -0
- package/dist/prosekit-react-block-handle.js +2 -1
- package/dist/prosekit-react-block-handle.js.map +1 -0
- package/dist/prosekit-react-drop-indicator.d.ts +14 -0
- package/dist/prosekit-react-drop-indicator.d.ts.map +1 -0
- package/dist/prosekit-react-drop-indicator.js +10 -0
- package/dist/prosekit-react-drop-indicator.js.map +1 -0
- package/dist/prosekit-react-inline-popover.d.ts +5 -4
- package/dist/prosekit-react-inline-popover.d.ts.map +1 -0
- package/dist/prosekit-react-inline-popover.js +2 -1
- package/dist/prosekit-react-inline-popover.js.map +1 -0
- package/dist/prosekit-react-popover.d.ts +9 -8
- package/dist/prosekit-react-popover.d.ts.map +1 -0
- package/dist/prosekit-react-popover.js +2 -1
- package/dist/prosekit-react-popover.js.map +1 -0
- package/dist/prosekit-react-resizable.d.ts +7 -6
- package/dist/prosekit-react-resizable.d.ts.map +1 -0
- package/dist/prosekit-react-resizable.js +2 -1
- package/dist/prosekit-react-resizable.js.map +1 -0
- package/dist/prosekit-react-table-handle.d.ts +21 -20
- package/dist/prosekit-react-table-handle.d.ts.map +1 -0
- package/dist/prosekit-react-table-handle.js +2 -1
- package/dist/prosekit-react-table-handle.js.map +1 -0
- package/dist/prosekit-react-tooltip.d.ts +9 -8
- package/dist/prosekit-react-tooltip.d.ts.map +1 -0
- package/dist/prosekit-react-tooltip.js +2 -1
- package/dist/prosekit-react-tooltip.js.map +1 -0
- package/dist/prosekit-react.d.ts +96 -81
- package/dist/prosekit-react.d.ts.map +1 -0
- package/dist/prosekit-react.js +2 -1
- package/dist/prosekit-react.js.map +1 -0
- package/package.json +25 -17
- package/src/components/autocomplete/autocomplete-empty.gen.ts +34 -0
- package/src/components/autocomplete/autocomplete-item.gen.ts +34 -0
- package/src/components/autocomplete/autocomplete-list.gen.ts +34 -0
- package/src/components/autocomplete/autocomplete-popover.gen.ts +34 -0
- package/src/components/autocomplete/index.gen.ts +7 -0
- package/src/components/block-handle/block-handle-add.gen.ts +34 -0
- package/src/components/block-handle/block-handle-draggable.gen.ts +34 -0
- package/src/components/block-handle/block-handle-popover.gen.ts +34 -0
- package/src/components/block-handle/index.gen.ts +5 -0
- package/src/components/create-component.ts +133 -0
- package/src/components/create-props.ts +13 -0
- package/src/components/drop-indicator/drop-indicator.gen.ts +34 -0
- package/src/components/drop-indicator/index.gen.ts +1 -0
- package/src/components/inline-popover/index.gen.ts +1 -0
- package/src/components/inline-popover/inline-popover.gen.ts +34 -0
- package/src/components/merge-refs.ts +35 -0
- package/src/components/popover/index.gen.ts +5 -0
- package/src/components/popover/popover-content.gen.ts +34 -0
- package/src/components/popover/popover-root.gen.ts +34 -0
- package/src/components/popover/popover-trigger.gen.ts +34 -0
- package/src/components/prosekit.ts +37 -0
- package/src/components/resizable/index.gen.ts +3 -0
- package/src/components/resizable/resizable-handle.gen.ts +34 -0
- package/src/components/resizable/resizable-root.gen.ts +34 -0
- package/src/components/table-handle/index.gen.ts +17 -0
- package/src/components/table-handle/table-handle-column-root.gen.ts +34 -0
- package/src/components/table-handle/table-handle-column-trigger.gen.ts +34 -0
- package/src/components/table-handle/table-handle-drag-preview.gen.ts +34 -0
- package/src/components/table-handle/table-handle-drop-indicator.gen.ts +34 -0
- package/src/components/table-handle/table-handle-popover-content.gen.ts +34 -0
- package/src/components/table-handle/table-handle-popover-item.gen.ts +34 -0
- package/src/components/table-handle/table-handle-root.gen.ts +34 -0
- package/src/components/table-handle/table-handle-row-root.gen.ts +34 -0
- package/src/components/table-handle/table-handle-row-trigger.gen.ts +34 -0
- package/src/components/tooltip/index.gen.ts +5 -0
- package/src/components/tooltip/tooltip-content.gen.ts +34 -0
- package/src/components/tooltip/tooltip-root.gen.ts +34 -0
- package/src/components/tooltip/tooltip-trigger.gen.ts +34 -0
- package/src/contexts/editor-context.ts +23 -0
- package/src/extensions/react-mark-view.ts +93 -0
- package/src/extensions/react-node-view.ts +93 -0
- package/src/hooks/use-doc-change.ts +24 -0
- package/src/hooks/use-editor-derived-value.ts +83 -0
- package/src/hooks/use-editor-extension.ts +24 -0
- package/src/hooks/use-editor.ts +62 -0
- package/src/hooks/use-extension.ts +41 -0
- package/src/hooks/use-keymap.ts +15 -0
- package/src/hooks/use-priority-extension.ts +18 -0
- package/src/hooks/use-state-update.ts +24 -0
- package/src/index.ts +29 -0
- package/src/types.ts +6 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type BlockHandlePopoverElement,
|
|
3
|
+
type BlockHandlePopoverProps as Props,
|
|
4
|
+
type BlockHandlePopoverEvents as Events,
|
|
5
|
+
blockHandlePopoverProps,
|
|
6
|
+
blockHandlePopoverEvents,
|
|
7
|
+
} from '@prosekit/web/block-handle'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link BlockHandlePopover} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface BlockHandlePopoverProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const BlockHandlePopover: ForwardRefExoticComponent<
|
|
23
|
+
BlockHandlePopoverProps &
|
|
24
|
+
RefAttributes<BlockHandlePopoverElement> &
|
|
25
|
+
HTMLAttributes<BlockHandlePopoverElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
BlockHandlePopoverProps,
|
|
28
|
+
BlockHandlePopoverElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-block-handle-popover',
|
|
31
|
+
'BlockHandlePopover',
|
|
32
|
+
Object.keys(blockHandlePopoverProps),
|
|
33
|
+
Object.keys(blockHandlePopoverEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { BlockHandleAdd, type BlockHandleAddProps } from './block-handle-add.gen'
|
|
2
|
+
|
|
3
|
+
export { BlockHandleDraggable, type BlockHandleDraggableProps } from './block-handle-draggable.gen'
|
|
4
|
+
|
|
5
|
+
export { BlockHandlePopover, type BlockHandlePopoverProps } from './block-handle-popover.gen'
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { AnyFunction } from '@prosekit/core'
|
|
2
|
+
import {
|
|
3
|
+
createElement,
|
|
4
|
+
forwardRef,
|
|
5
|
+
useEffect,
|
|
6
|
+
useLayoutEffect,
|
|
7
|
+
useMemo,
|
|
8
|
+
useRef,
|
|
9
|
+
useState,
|
|
10
|
+
type ForwardRefExoticComponent,
|
|
11
|
+
type HTMLAttributes,
|
|
12
|
+
type RefAttributes,
|
|
13
|
+
} from 'react'
|
|
14
|
+
|
|
15
|
+
import { useEditorContext } from '../contexts/editor-context'
|
|
16
|
+
|
|
17
|
+
import { mergeRefs } from './merge-refs'
|
|
18
|
+
|
|
19
|
+
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect
|
|
20
|
+
|
|
21
|
+
export function createComponent<
|
|
22
|
+
Props extends object,
|
|
23
|
+
CustomElement extends HTMLElement,
|
|
24
|
+
>(
|
|
25
|
+
tagName: string,
|
|
26
|
+
displayName: string,
|
|
27
|
+
propNames: string[],
|
|
28
|
+
eventNames: string[],
|
|
29
|
+
): ForwardRefExoticComponent<
|
|
30
|
+
Partial<Props> & RefAttributes<CustomElement> & HTMLAttributes<CustomElement>
|
|
31
|
+
> {
|
|
32
|
+
const hasEditor = propNames.includes('editor')
|
|
33
|
+
const lowerCaseEventNameMap = new Map(
|
|
34
|
+
eventNames.map((name) => [name.toLowerCase(), name]),
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
const Component = forwardRef<any, any>((props: Props, ref) => {
|
|
38
|
+
const [el, setEl] = useState<HTMLElement | null>(null)
|
|
39
|
+
|
|
40
|
+
const properties: Record<string, unknown> = {}
|
|
41
|
+
const attributes: Record<string, unknown> = {}
|
|
42
|
+
const eventHandlersRef = useRef<Record<string, AnyFunction>>({})
|
|
43
|
+
const eventHandlers: Record<string, AnyFunction> = {}
|
|
44
|
+
|
|
45
|
+
for (const [name, value] of Object.entries(props)) {
|
|
46
|
+
if (value === undefined) {
|
|
47
|
+
continue
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (propNames.includes(name)) {
|
|
51
|
+
properties[name] = value
|
|
52
|
+
continue
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (name.startsWith('on')) {
|
|
56
|
+
const lowerCaseEventName = name.slice(2).toLowerCase()
|
|
57
|
+
const eventName = lowerCaseEventNameMap.get(lowerCaseEventName)
|
|
58
|
+
if (eventName) {
|
|
59
|
+
const extractDetail = eventName.endsWith('Change')
|
|
60
|
+
eventHandlers[eventName] = (event: Event) => {
|
|
61
|
+
const handler = value as AnyFunction | null
|
|
62
|
+
if (typeof handler === 'function') {
|
|
63
|
+
handler(extractDetail ? (event as CustomEvent).detail : event)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
continue
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (name === 'className') {
|
|
71
|
+
attributes['class'] = value
|
|
72
|
+
} else {
|
|
73
|
+
attributes[name] = value
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const editor = useEditorContext()
|
|
78
|
+
|
|
79
|
+
if (hasEditor && editor && !properties['editor']) {
|
|
80
|
+
properties['editor'] = editor
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Set all properties.
|
|
84
|
+
useIsomorphicLayoutEffect(() => {
|
|
85
|
+
if (!el) return
|
|
86
|
+
for (const [name, value] of Object.entries(properties)) {
|
|
87
|
+
if (value !== undefined) {
|
|
88
|
+
// @ts-expect-error: we know that name is a valid property name
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, react-compiler/react-compiler
|
|
90
|
+
el[name] = value as unknown as any
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}, [el, ...propNames.map((name) => properties[name])])
|
|
94
|
+
|
|
95
|
+
// Put all event listeners extracted from `props` into `eventHandlersRef`.
|
|
96
|
+
useIsomorphicLayoutEffect(() => {
|
|
97
|
+
eventHandlersRef.current = eventHandlers
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
// Register the event listeners to the element.
|
|
101
|
+
useIsomorphicLayoutEffect(() => {
|
|
102
|
+
if (!el) {
|
|
103
|
+
return
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const fixedEventHandlers: Record<string, AnyFunction> = {}
|
|
107
|
+
|
|
108
|
+
for (const eventName of eventNames) {
|
|
109
|
+
fixedEventHandlers[eventName] = (event: Event) => {
|
|
110
|
+
eventHandlersRef.current[eventName]?.(event)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
for (const [name, handler] of Object.entries(fixedEventHandlers)) {
|
|
115
|
+
el.addEventListener(name, handler)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return () => {
|
|
119
|
+
for (const [name, handler] of Object.entries(fixedEventHandlers)) {
|
|
120
|
+
el.removeEventListener(name, handler)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}, [el])
|
|
124
|
+
|
|
125
|
+
const mergedRef = useMemo(() => mergeRefs([ref, setEl]), [ref])
|
|
126
|
+
|
|
127
|
+
return createElement(tagName, { ...attributes, ref: mergedRef })
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
Component.displayName = displayName
|
|
131
|
+
|
|
132
|
+
return Component
|
|
133
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type CreateProps<
|
|
2
|
+
Props extends { [PropName in keyof Props]: unknown },
|
|
3
|
+
Events extends { [EventName in keyof Events]: CustomEvent },
|
|
4
|
+
> = Props & CreateEventProps<Events>
|
|
5
|
+
|
|
6
|
+
type CreateEventProps<
|
|
7
|
+
Events extends { [EventName in keyof Events]: CustomEvent },
|
|
8
|
+
> = {
|
|
9
|
+
[EventName in keyof Events as `on${Capitalize<string & EventName>}`]: (
|
|
10
|
+
event: EventName extends `${string}Change` ? Events[EventName]['detail']
|
|
11
|
+
: Events[EventName],
|
|
12
|
+
) => void
|
|
13
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type DropIndicatorElement,
|
|
3
|
+
type DropIndicatorProps as Props,
|
|
4
|
+
type DropIndicatorEvents as Events,
|
|
5
|
+
dropIndicatorProps,
|
|
6
|
+
dropIndicatorEvents,
|
|
7
|
+
} from '@prosekit/web/drop-indicator'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link DropIndicator} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface DropIndicatorProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const DropIndicator: ForwardRefExoticComponent<
|
|
23
|
+
DropIndicatorProps &
|
|
24
|
+
RefAttributes<DropIndicatorElement> &
|
|
25
|
+
HTMLAttributes<DropIndicatorElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
DropIndicatorProps,
|
|
28
|
+
DropIndicatorElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-drop-indicator',
|
|
31
|
+
'DropIndicator',
|
|
32
|
+
Object.keys(dropIndicatorProps),
|
|
33
|
+
Object.keys(dropIndicatorEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DropIndicator, type DropIndicatorProps } from './drop-indicator.gen'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { InlinePopover, type InlinePopoverProps } from './inline-popover.gen'
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type InlinePopoverElement,
|
|
3
|
+
type InlinePopoverProps as Props,
|
|
4
|
+
type InlinePopoverEvents as Events,
|
|
5
|
+
inlinePopoverProps,
|
|
6
|
+
inlinePopoverEvents,
|
|
7
|
+
} from '@prosekit/web/inline-popover'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link InlinePopover} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface InlinePopoverProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const InlinePopover: ForwardRefExoticComponent<
|
|
23
|
+
InlinePopoverProps &
|
|
24
|
+
RefAttributes<InlinePopoverElement> &
|
|
25
|
+
HTMLAttributes<InlinePopoverElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
InlinePopoverProps,
|
|
28
|
+
InlinePopoverElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-inline-popover',
|
|
31
|
+
'InlinePopover',
|
|
32
|
+
Object.keys(inlinePopoverProps),
|
|
33
|
+
Object.keys(inlinePopoverEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Ref } from 'react'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Assigns a value to a ref.
|
|
5
|
+
* @returns The ref cleanup callback, if any.
|
|
6
|
+
*/
|
|
7
|
+
function assignRef<T>(
|
|
8
|
+
ref: Ref<T> | undefined,
|
|
9
|
+
value: T | null,
|
|
10
|
+
): VoidFunction | undefined | void {
|
|
11
|
+
if (typeof ref === 'function') {
|
|
12
|
+
return ref(value)
|
|
13
|
+
} else if (ref) {
|
|
14
|
+
ref.current = value
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Merges multiple refs into a single one.
|
|
20
|
+
*/
|
|
21
|
+
export function mergeRefs<T>(refs: (Ref<T> | undefined)[]): Ref<T> {
|
|
22
|
+
return (value: T | null) => {
|
|
23
|
+
const cleanups: VoidFunction[] = []
|
|
24
|
+
|
|
25
|
+
for (const ref of refs) {
|
|
26
|
+
const cleanup = assignRef(ref, value)
|
|
27
|
+
const isCleanup = typeof cleanup === 'function'
|
|
28
|
+
cleanups.push(isCleanup ? cleanup : () => assignRef(ref, null))
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return () => {
|
|
32
|
+
for (const cleanup of cleanups) cleanup()
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type PopoverContentElement,
|
|
3
|
+
type PopoverContentProps as Props,
|
|
4
|
+
type PopoverContentEvents as Events,
|
|
5
|
+
popoverContentProps,
|
|
6
|
+
popoverContentEvents,
|
|
7
|
+
} from '@prosekit/web/popover'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link PopoverContent} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface PopoverContentProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const PopoverContent: ForwardRefExoticComponent<
|
|
23
|
+
PopoverContentProps &
|
|
24
|
+
RefAttributes<PopoverContentElement> &
|
|
25
|
+
HTMLAttributes<PopoverContentElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
PopoverContentProps,
|
|
28
|
+
PopoverContentElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-popover-content',
|
|
31
|
+
'PopoverContent',
|
|
32
|
+
Object.keys(popoverContentProps),
|
|
33
|
+
Object.keys(popoverContentEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type PopoverRootElement,
|
|
3
|
+
type PopoverRootProps as Props,
|
|
4
|
+
type PopoverRootEvents as Events,
|
|
5
|
+
popoverRootProps,
|
|
6
|
+
popoverRootEvents,
|
|
7
|
+
} from '@prosekit/web/popover'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link PopoverRoot} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface PopoverRootProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const PopoverRoot: ForwardRefExoticComponent<
|
|
23
|
+
PopoverRootProps &
|
|
24
|
+
RefAttributes<PopoverRootElement> &
|
|
25
|
+
HTMLAttributes<PopoverRootElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
PopoverRootProps,
|
|
28
|
+
PopoverRootElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-popover-root',
|
|
31
|
+
'PopoverRoot',
|
|
32
|
+
Object.keys(popoverRootProps),
|
|
33
|
+
Object.keys(popoverRootEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type PopoverTriggerElement,
|
|
3
|
+
type PopoverTriggerProps as Props,
|
|
4
|
+
type PopoverTriggerEvents as Events,
|
|
5
|
+
popoverTriggerProps,
|
|
6
|
+
popoverTriggerEvents,
|
|
7
|
+
} from '@prosekit/web/popover'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link PopoverTrigger} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface PopoverTriggerProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const PopoverTrigger: ForwardRefExoticComponent<
|
|
23
|
+
PopoverTriggerProps &
|
|
24
|
+
RefAttributes<PopoverTriggerElement> &
|
|
25
|
+
HTMLAttributes<PopoverTriggerElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
PopoverTriggerProps,
|
|
28
|
+
PopoverTriggerElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-popover-trigger',
|
|
31
|
+
'PopoverTrigger',
|
|
32
|
+
Object.keys(popoverTriggerProps),
|
|
33
|
+
Object.keys(popoverTriggerEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Editor } from '@prosekit/core'
|
|
2
|
+
import { ProsemirrorAdapterProvider } from '@prosemirror-adapter/react'
|
|
3
|
+
import {
|
|
4
|
+
createElement,
|
|
5
|
+
type ComponentType,
|
|
6
|
+
type ReactNode,
|
|
7
|
+
} from 'react'
|
|
8
|
+
|
|
9
|
+
import { EditorContextProvider } from '../contexts/editor-context'
|
|
10
|
+
import { ReactMarkViewConsumer } from '../extensions/react-mark-view'
|
|
11
|
+
import { ReactNodeViewConsumer } from '../extensions/react-node-view'
|
|
12
|
+
|
|
13
|
+
export interface ProseKitProps {
|
|
14
|
+
editor: Editor
|
|
15
|
+
children?: ReactNode
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The root component for a ProseKit editor.
|
|
20
|
+
*
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export const ProseKit: ComponentType<ProseKitProps> = (props) => {
|
|
24
|
+
const { editor, children } = props
|
|
25
|
+
|
|
26
|
+
return createElement(
|
|
27
|
+
ProsemirrorAdapterProvider,
|
|
28
|
+
null,
|
|
29
|
+
createElement(
|
|
30
|
+
EditorContextProvider,
|
|
31
|
+
{ value: editor },
|
|
32
|
+
createElement(ReactNodeViewConsumer),
|
|
33
|
+
createElement(ReactMarkViewConsumer),
|
|
34
|
+
children,
|
|
35
|
+
),
|
|
36
|
+
)
|
|
37
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type ResizableHandleElement,
|
|
3
|
+
type ResizableHandleProps as Props,
|
|
4
|
+
type ResizableHandleEvents as Events,
|
|
5
|
+
resizableHandleProps,
|
|
6
|
+
resizableHandleEvents,
|
|
7
|
+
} from '@prosekit/web/resizable'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link ResizableHandle} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface ResizableHandleProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const ResizableHandle: ForwardRefExoticComponent<
|
|
23
|
+
ResizableHandleProps &
|
|
24
|
+
RefAttributes<ResizableHandleElement> &
|
|
25
|
+
HTMLAttributes<ResizableHandleElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
ResizableHandleProps,
|
|
28
|
+
ResizableHandleElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-resizable-handle',
|
|
31
|
+
'ResizableHandle',
|
|
32
|
+
Object.keys(resizableHandleProps),
|
|
33
|
+
Object.keys(resizableHandleEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type ResizableRootElement,
|
|
3
|
+
type ResizableRootProps as Props,
|
|
4
|
+
type ResizableRootEvents as Events,
|
|
5
|
+
resizableRootProps,
|
|
6
|
+
resizableRootEvents,
|
|
7
|
+
} from '@prosekit/web/resizable'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link ResizableRoot} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface ResizableRootProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const ResizableRoot: ForwardRefExoticComponent<
|
|
23
|
+
ResizableRootProps &
|
|
24
|
+
RefAttributes<ResizableRootElement> &
|
|
25
|
+
HTMLAttributes<ResizableRootElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
ResizableRootProps,
|
|
28
|
+
ResizableRootElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-resizable-root',
|
|
31
|
+
'ResizableRoot',
|
|
32
|
+
Object.keys(resizableRootProps),
|
|
33
|
+
Object.keys(resizableRootEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { TableHandleColumnRoot, type TableHandleColumnRootProps } from './table-handle-column-root.gen'
|
|
2
|
+
|
|
3
|
+
export { TableHandleColumnTrigger, type TableHandleColumnTriggerProps } from './table-handle-column-trigger.gen'
|
|
4
|
+
|
|
5
|
+
export { TableHandleDragPreview, type TableHandleDragPreviewProps } from './table-handle-drag-preview.gen'
|
|
6
|
+
|
|
7
|
+
export { TableHandleDropIndicator, type TableHandleDropIndicatorProps } from './table-handle-drop-indicator.gen'
|
|
8
|
+
|
|
9
|
+
export { TableHandlePopoverContent, type TableHandlePopoverContentProps } from './table-handle-popover-content.gen'
|
|
10
|
+
|
|
11
|
+
export { TableHandlePopoverItem, type TableHandlePopoverItemProps } from './table-handle-popover-item.gen'
|
|
12
|
+
|
|
13
|
+
export { TableHandleRoot, type TableHandleRootProps } from './table-handle-root.gen'
|
|
14
|
+
|
|
15
|
+
export { TableHandleRowRoot, type TableHandleRowRootProps } from './table-handle-row-root.gen'
|
|
16
|
+
|
|
17
|
+
export { TableHandleRowTrigger, type TableHandleRowTriggerProps } from './table-handle-row-trigger.gen'
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type TableHandleColumnRootElement,
|
|
3
|
+
type TableHandleColumnRootProps as Props,
|
|
4
|
+
type TableHandleColumnRootEvents as Events,
|
|
5
|
+
tableHandleColumnRootProps,
|
|
6
|
+
tableHandleColumnRootEvents,
|
|
7
|
+
} from '@prosekit/web/table-handle'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link TableHandleColumnRoot} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface TableHandleColumnRootProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const TableHandleColumnRoot: ForwardRefExoticComponent<
|
|
23
|
+
TableHandleColumnRootProps &
|
|
24
|
+
RefAttributes<TableHandleColumnRootElement> &
|
|
25
|
+
HTMLAttributes<TableHandleColumnRootElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
TableHandleColumnRootProps,
|
|
28
|
+
TableHandleColumnRootElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-table-handle-column-root',
|
|
31
|
+
'TableHandleColumnRoot',
|
|
32
|
+
Object.keys(tableHandleColumnRootProps),
|
|
33
|
+
Object.keys(tableHandleColumnRootEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type TableHandleColumnTriggerElement,
|
|
3
|
+
type TableHandleColumnTriggerProps as Props,
|
|
4
|
+
type TableHandleColumnTriggerEvents as Events,
|
|
5
|
+
tableHandleColumnTriggerProps,
|
|
6
|
+
tableHandleColumnTriggerEvents,
|
|
7
|
+
} from '@prosekit/web/table-handle'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link TableHandleColumnTrigger} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface TableHandleColumnTriggerProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const TableHandleColumnTrigger: ForwardRefExoticComponent<
|
|
23
|
+
TableHandleColumnTriggerProps &
|
|
24
|
+
RefAttributes<TableHandleColumnTriggerElement> &
|
|
25
|
+
HTMLAttributes<TableHandleColumnTriggerElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
TableHandleColumnTriggerProps,
|
|
28
|
+
TableHandleColumnTriggerElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-table-handle-column-trigger',
|
|
31
|
+
'TableHandleColumnTrigger',
|
|
32
|
+
Object.keys(tableHandleColumnTriggerProps),
|
|
33
|
+
Object.keys(tableHandleColumnTriggerEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type TableHandleDragPreviewElement,
|
|
3
|
+
type TableHandleDragPreviewProps as Props,
|
|
4
|
+
type TableHandleDragPreviewEvents as Events,
|
|
5
|
+
tableHandleDragPreviewProps,
|
|
6
|
+
tableHandleDragPreviewEvents,
|
|
7
|
+
} from '@prosekit/web/table-handle'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link TableHandleDragPreview} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface TableHandleDragPreviewProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const TableHandleDragPreview: ForwardRefExoticComponent<
|
|
23
|
+
TableHandleDragPreviewProps &
|
|
24
|
+
RefAttributes<TableHandleDragPreviewElement> &
|
|
25
|
+
HTMLAttributes<TableHandleDragPreviewElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
TableHandleDragPreviewProps,
|
|
28
|
+
TableHandleDragPreviewElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-table-handle-drag-preview',
|
|
31
|
+
'TableHandleDragPreview',
|
|
32
|
+
Object.keys(tableHandleDragPreviewProps),
|
|
33
|
+
Object.keys(tableHandleDragPreviewEvents),
|
|
34
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type TableHandleDropIndicatorElement,
|
|
3
|
+
type TableHandleDropIndicatorProps as Props,
|
|
4
|
+
type TableHandleDropIndicatorEvents as Events,
|
|
5
|
+
tableHandleDropIndicatorProps,
|
|
6
|
+
tableHandleDropIndicatorEvents,
|
|
7
|
+
} from '@prosekit/web/table-handle'
|
|
8
|
+
import type {
|
|
9
|
+
ForwardRefExoticComponent,
|
|
10
|
+
HTMLAttributes,
|
|
11
|
+
RefAttributes,
|
|
12
|
+
} from 'react'
|
|
13
|
+
|
|
14
|
+
import { createComponent } from '../create-component'
|
|
15
|
+
import type { CreateProps } from '../create-props'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the {@link TableHandleDropIndicator} component.
|
|
19
|
+
*/
|
|
20
|
+
export interface TableHandleDropIndicatorProps extends Partial<CreateProps<Props, Events>> {}
|
|
21
|
+
|
|
22
|
+
export const TableHandleDropIndicator: ForwardRefExoticComponent<
|
|
23
|
+
TableHandleDropIndicatorProps &
|
|
24
|
+
RefAttributes<TableHandleDropIndicatorElement> &
|
|
25
|
+
HTMLAttributes<TableHandleDropIndicatorElement>
|
|
26
|
+
> = createComponent<
|
|
27
|
+
TableHandleDropIndicatorProps,
|
|
28
|
+
TableHandleDropIndicatorElement
|
|
29
|
+
>(
|
|
30
|
+
'prosekit-table-handle-drop-indicator',
|
|
31
|
+
'TableHandleDropIndicator',
|
|
32
|
+
Object.keys(tableHandleDropIndicatorProps),
|
|
33
|
+
Object.keys(tableHandleDropIndicatorEvents),
|
|
34
|
+
)
|