@lofcz/platejs-cursor 52.0.11 → 52.3.6
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/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/package.json +3 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -126,5 +126,4 @@ declare const getSelectionRects: (editor: Editor, {
|
|
|
126
126
|
yOffset: number;
|
|
127
127
|
}) => SelectionRect[];
|
|
128
128
|
//#endregion
|
|
129
|
-
export { CaretPosition, CursorData, CursorOverlay, CursorOverlayContent, CursorOverlayProps, CursorOverlayState, CursorProps, CursorState, FROZEN_EMPTY_ARRAY, SelectionRect, getCaretPosition, getCursorOverlayState, getSelectionRects, useCursorOverlayPositions, useRefreshOnResize, useRefreshOnResizeOptions, useRequestReRender };
|
|
130
|
-
//# sourceMappingURL=index.d.ts.map
|
|
129
|
+
export { CaretPosition, CursorData, CursorOverlay, CursorOverlayContent, CursorOverlayProps, CursorOverlayState, CursorProps, CursorState, FROZEN_EMPTY_ARRAY, SelectionRect, getCaretPosition, getCursorOverlayState, getSelectionRects, useCursorOverlayPositions, useRefreshOnResize, useRefreshOnResizeOptions, useRequestReRender };
|
package/dist/index.js
CHANGED
|
@@ -354,5 +354,4 @@ function CursorOverlay(props) {
|
|
|
354
354
|
}
|
|
355
355
|
|
|
356
356
|
//#endregion
|
|
357
|
-
export { CursorOverlay, CursorOverlayContent, FROZEN_EMPTY_ARRAY, getCaretPosition, getCursorOverlayState, getSelectionRects, useCursorOverlayPositions, useRefreshOnResize, useRequestReRender };
|
|
358
|
-
//# sourceMappingURL=index.js.map
|
|
357
|
+
export { CursorOverlay, CursorOverlayContent, FROZEN_EMPTY_ARRAY, getCaretPosition, getCursorOverlayState, getSelectionRects, useCursorOverlayPositions, useRefreshOnResize, useRequestReRender };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lofcz/platejs-cursor",
|
|
3
|
-
"version": "52.
|
|
3
|
+
"version": "52.3.6",
|
|
4
4
|
"description": "Cursor for Plate React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plate",
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"dist/**/*"
|
|
29
29
|
],
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@plate/scripts": "1.0.0"
|
|
31
|
+
"@plate/scripts": "1.0.0",
|
|
32
|
+
"platejs": "npm:@lofcz/platejs@52.3.6"
|
|
32
33
|
},
|
|
33
34
|
"peerDependencies": {
|
|
34
35
|
"platejs": ">=52.0.11",
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/components/CursorOverlay.tsx","../src/hooks/useCursorOverlayPositions.ts","../src/hooks/useRefreshOnResize.ts","../src/hooks/useRequestReRender.ts","../src/queries/getCaretPosition.ts","../src/queries/getCursorOverlayState.ts","../src/queries/getSelectionRects.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useRequestReRender","setUpdateCounter","useState","animationFrameRef","useRef","requestReRender","useCallback","immediate","current","requestAnimationFrame","state","cancelAnimationFrame","useEffect","React","TRange","CursorOverlayProps","SelectionRect","useRequestReRender","useRefreshOnResizeOptions","Pick","selectionRectCache","MutableRefObject","WeakMap","useRefreshOnResize","t0","$","_c","containerRef","refreshOnResize","selectionRectCacheRef","requestReRender","t1","t2","sync","undefined","current","refresh","t3","resizeObserver","ResizeObserver","observe","disconnect","useEffect","t4","TRange","RangeApi","CaretPosition","SelectionRect","getCaretPosition","selectionRects","range","isCollapsed","isBackward","anchorRect","length","height","left","width","top","UnknownObject","CursorOverlayProps","CursorOverlayState","SelectionRect","FROZEN_EMPTY_ARRAY","getCaretPosition","getCursorOverlayState","cursors","cursorStates","selectionRects","Record","Pick","TCursorData","Object","entries","map","key","cursorState","selection","rects","caretPosition","Editor","TRange","PathApi","RangeApi","TextApi","SelectionRect","getSelectionRects","editor","range","xOffset","yOffset","start","end","edges","domRange","api","toDOMRange","selectionRects","textEntries","nodes","at","match","isText","textNode","textPath","domNode","toDOMNode","parentElement","isStartNode","equals","path","isEndNode","clientRects","DOMRectList","nodeRange","document","createRange","selectNode","setStart","startContainer","startOffset","setEnd","endContainer","endOffset","getClientRects","i","length","clientRect","item","push","height","left","top","width","React","TRange","UnknownObject","useEditorRef","useIsomorphicLayoutEffect","CursorOverlayProps","CursorState","SelectionRect","getCursorOverlayState","getSelectionRects","useRefreshOnResize","FROZEN_EMPTY_ARRAY","Object","freeze","useCursorOverlayPositions","t0","$","_c","t1","undefined","containerRef","cursors","cursorStates","refreshOnResize","t2","editor","t3","Symbol","for","WeakMap","selectionRectCache","useRef","t4","selectionRects","setSelectionRects","useState","t5","current","xOffset","yOffset","contentRect","getBoundingClientRect","x","y","scrollTop","selectionRectsChanged","keys","length","getCachedSelectionRects","t6","cursor","range","selection","cached","get","rects","set","updated","fromEntries","entries","map","t7","key","cursor_0","updateSelectionRects","t8","refresh","t9","React","UnknownObject","useEditorMounted","CursorData","CursorOverlayState","CursorState","SelectionRect","useCursorOverlayPositions","CursorOverlayProps","Pick","CursorProps","containerRef","RefObject","HTMLElement","cursors","Record","TCursorData","onRenderCursor","FC","refreshOnResize","id","classNames","Partial","caret","selectionRect","disableCaret","disableSelection","onRenderCaret","onRenderSelectionRect","CursorOverlayContent","t0","$","_c","CursorComponent","props","t1","cursorProps","t2","t3","cursor","key","map","CursorOverlay","isMounted"],"sources":["../src/hooks/useRequestReRender.ts","../src/hooks/useRefreshOnResize.ts","../src/queries/getCaretPosition.ts","../src/queries/getCursorOverlayState.ts","../src/queries/getSelectionRects.ts","../src/hooks/useCursorOverlayPositions.ts","../src/components/CursorOverlay.tsx"],"sourcesContent":["import React from 'react';\n\nexport const useRequestReRender = () => {\n const [, setUpdateCounter] = React.useState(0);\n const animationFrameRef = React.useRef<number | null>(null);\n\n const requestReRender = React.useCallback((immediate = false) => {\n if (animationFrameRef.current && !immediate) {\n return;\n }\n if (!immediate) {\n animationFrameRef.current = requestAnimationFrame(() => {\n setUpdateCounter((state) => state + 1);\n animationFrameRef.current = null;\n });\n\n return;\n }\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = null;\n }\n\n setUpdateCounter((state) => state + 1);\n }, []);\n\n React.useEffect(() => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = null;\n }\n });\n\n React.useEffect(\n () => () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n },\n []\n );\n\n return requestReRender;\n};\n","import React from 'react';\n\nimport type { TRange } from 'platejs';\n\nimport type { CursorOverlayProps } from '../components';\nimport type { SelectionRect } from '../types';\n\nimport { useRequestReRender } from './useRequestReRender';\n\nexport interface useRefreshOnResizeOptions\n extends Pick<CursorOverlayProps, 'containerRef' | 'refreshOnResize'> {\n selectionRectCache: React.MutableRefObject<WeakMap<TRange, SelectionRect[]>>;\n}\n\nexport const useRefreshOnResize = ({\n containerRef,\n refreshOnResize,\n selectionRectCache: selectionRectCacheRef,\n}: useRefreshOnResizeOptions) => {\n const requestReRender = useRequestReRender();\n\n // Reset the selection rect cache and request re-render.\n // ✅ Mutating ref inside callback is OK - callbacks run in response to events, not during render\n const refresh = React.useCallback(\n (sync = false) => {\n selectionRectCacheRef.current = new WeakMap();\n requestReRender(sync);\n },\n [requestReRender, selectionRectCacheRef]\n );\n\n // Refresh on container resize\n React.useEffect(() => {\n if (!refreshOnResize || !containerRef?.current) {\n return;\n }\n\n const resizeObserver = new ResizeObserver(() => refresh());\n resizeObserver.observe(containerRef.current);\n\n return () => resizeObserver.disconnect();\n }, [containerRef, refresh, refreshOnResize]);\n\n return {\n refresh,\n };\n};\n","import type { TRange } from 'platejs';\n\nimport { RangeApi } from 'platejs';\n\nimport type { CaretPosition, SelectionRect } from '../types';\n\n/** Get the caret position of a range from selectionRects. */\nexport const getCaretPosition = (\n selectionRects: SelectionRect[],\n range: TRange\n): CaretPosition | null => {\n const isCollapsed = range && RangeApi.isCollapsed(range);\n const isBackward = range && RangeApi.isBackward(range);\n const anchorRect = selectionRects[isBackward ? 0 : selectionRects.length - 1];\n\n if (!anchorRect) {\n return null;\n }\n\n return {\n height: anchorRect.height,\n left: anchorRect.left + (isBackward || isCollapsed ? 0 : anchorRect.width),\n top: anchorRect.top,\n };\n};\n","import type { UnknownObject } from 'platejs';\n\nimport type { CursorOverlayProps } from '../components';\nimport type { CursorOverlayState, SelectionRect } from '../types';\n\nimport { FROZEN_EMPTY_ARRAY } from '../hooks';\nimport { getCaretPosition } from './getCaretPosition';\n\n/** Get cursor overlay state from selection rects. */\nexport const getCursorOverlayState = <\n TCursorData extends UnknownObject = UnknownObject,\n>({\n cursors: cursorStates,\n selectionRects,\n}: {\n selectionRects: Record<string, SelectionRect[]>;\n} & Pick<\n CursorOverlayProps<TCursorData>,\n 'cursors'\n>): CursorOverlayState<TCursorData>[] => {\n if (!cursorStates) return [];\n\n return Object.entries(cursorStates).map(([key, cursorState]) => {\n const selection = cursorState?.selection ?? null;\n const rects = selectionRects[key] ?? FROZEN_EMPTY_ARRAY;\n\n const caretPosition = selection ? getCaretPosition(rects, selection) : null;\n\n return {\n ...cursorState,\n caretPosition,\n selection,\n selectionRects: rects,\n };\n });\n};\n","import { type Editor, type TRange, PathApi, RangeApi, TextApi } from 'platejs';\n\nimport type { SelectionRect } from '../types';\n\nexport const getSelectionRects = (\n editor: Editor,\n {\n range,\n xOffset,\n yOffset,\n }: {\n range: TRange;\n xOffset: number;\n yOffset: number;\n }\n): SelectionRect[] => {\n const [start, end] = RangeApi.edges(range);\n const domRange = editor.api.toDOMRange(range);\n\n if (!domRange) {\n return [];\n }\n\n const selectionRects: SelectionRect[] = [];\n const textEntries = editor.api.nodes({\n at: range,\n match: TextApi.isText,\n });\n\n for (const [textNode, textPath] of textEntries) {\n const domNode = editor.api.toDOMNode(textNode);\n\n // Fix: failed to execute 'selectNode' on 'Range': the given Node has no parent\n if (!domNode?.parentElement) {\n return [];\n }\n\n const isStartNode = PathApi.equals(textPath, start.path);\n const isEndNode = PathApi.equals(textPath, end.path);\n\n let clientRects: DOMRectList | null = null;\n\n if (isStartNode || isEndNode) {\n const nodeRange = document.createRange();\n\n nodeRange.selectNode(domNode);\n\n if (isStartNode) {\n nodeRange.setStart(domRange.startContainer, domRange.startOffset);\n }\n if (isEndNode) {\n nodeRange.setEnd(domRange.endContainer, domRange.endOffset);\n }\n\n clientRects = nodeRange.getClientRects();\n } else {\n clientRects = domNode.getClientRects();\n }\n\n for (let i = 0; i < clientRects.length; i++) {\n const clientRect = clientRects.item(i);\n\n if (!clientRect) {\n continue;\n }\n\n selectionRects.push({\n height: clientRect.height,\n left: clientRect.left - xOffset,\n top: clientRect.top - yOffset,\n width: clientRect.width,\n });\n }\n }\n\n return selectionRects;\n};\n","import React from 'react';\n\nimport type { TRange, UnknownObject } from 'platejs';\n\nimport { useEditorRef, useIsomorphicLayoutEffect } from 'platejs/react';\n\nimport type { CursorOverlayProps } from '../components/CursorOverlay';\nimport type { CursorState, SelectionRect } from '../types';\n\nimport { getCursorOverlayState } from '../queries/getCursorOverlayState';\nimport { getSelectionRects } from '../queries/getSelectionRects';\nimport { useRefreshOnResize } from './useRefreshOnResize';\n\nexport const FROZEN_EMPTY_ARRAY = Object.freeze(\n []\n) as unknown as SelectionRect[];\n\nexport const useCursorOverlayPositions = <TCursorData extends UnknownObject>({\n containerRef,\n cursors: cursorStates,\n refreshOnResize = true,\n}: CursorOverlayProps<TCursorData> = {}) => {\n const editor = useEditorRef();\n\n const selectionRectCache = React.useRef<WeakMap<TRange, SelectionRect[]>>(\n new WeakMap()\n );\n\n const [selectionRects, setSelectionRects] = React.useState<\n Record<string, SelectionRect[]>\n >({});\n\n const updateSelectionRects = React.useCallback(() => {\n // We have a container ref but the ref is null => container\n // isn't mounted to we can't calculate the selection rects.\n if (!containerRef?.current) return;\n if (!cursorStates) return;\n\n let xOffset = 0;\n let yOffset = 0;\n\n if (containerRef) {\n const contentRect = containerRef.current!.getBoundingClientRect();\n xOffset = contentRect.x;\n yOffset = contentRect.y;\n yOffset -= containerRef.current.scrollTop;\n }\n\n let selectionRectsChanged =\n Object.keys(selectionRects).length !== Object.keys(cursorStates).length;\n\n const getCachedSelectionRects = ({\n cursor,\n }: {\n cursor: CursorState<TCursorData>;\n }) => {\n const range = cursor.selection;\n\n if (!range) {\n return FROZEN_EMPTY_ARRAY;\n }\n\n const cached = selectionRectCache.current.get(range);\n\n if (cached) {\n return cached;\n }\n\n const rects = getSelectionRects(editor, { range, xOffset, yOffset });\n selectionRectsChanged = true;\n selectionRectCache.current.set(range, rects);\n\n return rects;\n };\n\n const updated: Record<string, SelectionRect[]> = Object.fromEntries(\n Object.entries(cursorStates).map(([key, cursor]) => [\n key,\n getCachedSelectionRects({\n cursor,\n }),\n ])\n );\n\n if (selectionRectsChanged) {\n setSelectionRects(updated);\n }\n }, [containerRef, cursorStates, editor, selectionRects]);\n\n // Update selection rects after paint\n\n useIsomorphicLayoutEffect(() => {\n updateSelectionRects();\n });\n\n const cursors = React.useMemo(\n () =>\n getCursorOverlayState({\n cursors: cursorStates,\n selectionRects,\n }),\n [cursorStates, selectionRects]\n );\n\n const { refresh } = useRefreshOnResize({\n containerRef,\n refreshOnResize,\n selectionRectCache,\n });\n\n return { cursors, refresh };\n};\n","import React from 'react';\n\nimport type { UnknownObject } from 'platejs';\n\nimport { useEditorMounted } from 'platejs/react';\n\nimport type {\n CursorData,\n CursorOverlayState,\n CursorState,\n SelectionRect,\n} from '../types';\n\nimport { useCursorOverlayPositions } from '../hooks/useCursorOverlayPositions';\n\nexport interface CursorOverlayProps<\n TCursorData extends UnknownObject = UnknownObject,\n> extends Pick<\n CursorProps<CursorData>,\n | 'classNames'\n | 'disableCaret'\n | 'disableSelection'\n | 'onRenderCaret'\n | 'onRenderSelectionRect'\n > {\n /**\n * Container the overlay will be rendered in. If set, all returned overlay\n * positions will be relative to this container.\n */\n containerRef?: React.RefObject<HTMLElement | null>;\n\n /** Cursor states to use for calculating the overlay positions, by key. */\n cursors?: Record<string, CursorState<TCursorData>>;\n\n /** Overrides `Cursor` component. */\n onRenderCursor?: React.FC<CursorProps>;\n\n /**\n * Whether to refresh the cursor overlay positions on container resize.\n *\n * @default true\n */\n refreshOnResize?: boolean;\n}\n\nexport type CursorProps<TCursorData extends UnknownObject = UnknownObject> =\n CursorOverlayState<TCursorData> & {\n id: string;\n classNames?: Partial<{\n caret: string;\n selectionRect: string;\n }>;\n /** Whether to disable the caret. */\n disableCaret?: boolean;\n /** Whether to disable the selection rects. */\n disableSelection?: boolean;\n /**\n * Custom caret component. For example, you could display a label next to\n * the caret.\n *\n * @default styled div\n */\n onRenderCaret?: React.FC<\n Pick<CursorProps<TCursorData>, 'caretPosition' | 'data'>\n >;\n /** Overrides `Caret` component */\n onRenderSelectionRect?: React.FC<\n {\n selectionRect: SelectionRect;\n } & Pick<CursorProps<TCursorData>, 'data'>\n >;\n };\n\nexport function CursorOverlayContent<\n TCursorData extends UnknownObject = UnknownObject,\n>({\n classNames,\n onRenderCaret,\n onRenderCursor: CursorComponent,\n onRenderSelectionRect,\n ...props\n}: CursorOverlayProps<TCursorData>) {\n const { disableCaret, disableSelection } = props;\n\n const { cursors } = useCursorOverlayPositions(props);\n\n const cursorProps = {\n classNames,\n disableCaret,\n disableSelection,\n onRenderCaret,\n onRenderSelectionRect,\n };\n\n if (!CursorComponent) return null;\n\n return (\n <>\n {cursors.map((cursor) => (\n <CursorComponent\n id={cursor.key}\n key={cursor.key}\n {...cursorProps}\n {...cursor}\n />\n ))}\n </>\n );\n}\n\nexport function CursorOverlay<\n TCursorData extends UnknownObject = UnknownObject,\n>(props: CursorOverlayProps<TCursorData>) {\n const isMounted = useEditorMounted();\n\n if (!isMounted) return null;\n\n return <CursorOverlayContent {...props} />;\n}\n"],"mappings":"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"}
|