@payloadcms/richtext-lexical 3.2.2 → 3.2.3-canary.3e78927

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 (103) hide show
  1. package/dist/exports/client/{Field-JP7H7AZE.js → Field-KHGUSLMB.js} +2 -2
  2. package/dist/exports/client/{Field-JP7H7AZE.js.map → Field-KHGUSLMB.js.map} +2 -2
  3. package/dist/exports/client/{RelationshipComponent-XOQBVKA3.js → RelationshipComponent-F77EQHRG.js} +2 -2
  4. package/dist/exports/client/bundled.css +1 -1
  5. package/dist/exports/client/chunk-4J2ONJMB.js +2 -0
  6. package/dist/exports/client/chunk-4J2ONJMB.js.map +7 -0
  7. package/dist/exports/client/{chunk-XCEM47RI.js → chunk-AXXPUMFU.js} +2 -2
  8. package/dist/exports/client/{chunk-5PBXL4HT.js → chunk-F26IQ5RE.js} +2 -2
  9. package/dist/exports/client/{chunk-5PBXL4HT.js.map → chunk-F26IQ5RE.js.map} +1 -1
  10. package/dist/exports/client/chunk-H3D3IU3G.js +2 -0
  11. package/dist/exports/client/{chunk-DOK5S7LE.js.map → chunk-H3D3IU3G.js.map} +2 -2
  12. package/dist/exports/client/{chunk-2CYU43GM.js → chunk-INBEEENE.js} +2 -2
  13. package/dist/exports/client/{chunk-2CYU43GM.js.map → chunk-INBEEENE.js.map} +1 -1
  14. package/dist/exports/client/{chunk-ZTAS32RX.js → chunk-PGMIO4IN.js} +2 -2
  15. package/dist/exports/client/{chunk-2L2Z4JHF.js → chunk-XOABLBHB.js} +2 -2
  16. package/dist/exports/client/{chunk-2L2Z4JHF.js.map → chunk-XOABLBHB.js.map} +1 -1
  17. package/dist/exports/client/{component-D6PKVJ2K.js → component-NSAU5Y76.js} +2 -2
  18. package/dist/exports/client/component-SX36AJXS.js +2 -0
  19. package/dist/exports/client/{component-ANB7VZLA.js.map → component-SX36AJXS.js.map} +2 -2
  20. package/dist/exports/client/componentInline-B5YNOX32.js +2 -0
  21. package/dist/exports/client/index.js +17 -17
  22. package/dist/exports/client/index.js.map +2 -2
  23. package/dist/features/blocks/client/component/BlockContent.js +8 -8
  24. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  25. package/dist/features/blocks/client/component/components/BlockCollapsible.js +5 -5
  26. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
  27. package/dist/features/blocks/client/componentInline/index.js +1 -1
  28. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  29. package/dist/features/blocks/client/plugin/index.js +7 -4
  30. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  31. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +3 -3
  32. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  33. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +3 -3
  34. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  35. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +6 -6
  36. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  37. package/dist/features/experimental_table/client/utils/useDebounce.js +3 -3
  38. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  39. package/dist/features/horizontalRule/client/component/index.js +19 -18
  40. package/dist/features/horizontalRule/client/component/index.js.map +1 -1
  41. package/dist/features/horizontalRule/client/plugin/index.js +13 -12
  42. package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
  43. package/dist/features/indent/client/plugins/index.js +3 -3
  44. package/dist/features/indent/client/plugins/index.js.map +1 -1
  45. package/dist/features/link/client/plugins/autoLink/index.js +3 -3
  46. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  47. package/dist/features/link/client/plugins/link/index.js +9 -5
  48. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  49. package/dist/features/relationship/client/drawer/index.js +13 -13
  50. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  51. package/dist/features/relationship/client/plugins/index.js +23 -19
  52. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  53. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +19 -18
  54. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
  55. package/dist/features/toolbars/fixed/client/Toolbar/index.js +39 -31
  56. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  57. package/dist/features/toolbars/inline/client/Toolbar/index.js +31 -23
  58. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  59. package/dist/features/toolbars/shared/ToolbarButton/index.js +27 -26
  60. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  61. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +36 -36
  62. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  63. package/dist/features/upload/client/drawer/index.js +3 -3
  64. package/dist/features/upload/client/drawer/index.js.map +1 -1
  65. package/dist/features/upload/client/plugin/index.js +6 -3
  66. package/dist/features/upload/client/plugin/index.js.map +1 -1
  67. package/dist/field/bundled.css +1 -1
  68. package/dist/field/index.js +7 -7
  69. package/dist/field/index.js.map +1 -1
  70. package/dist/getDefaultSanitizedEditorConfig.d.ts.map +1 -1
  71. package/dist/getDefaultSanitizedEditorConfig.js +2 -3
  72. package/dist/getDefaultSanitizedEditorConfig.js.map +1 -1
  73. package/dist/lexical/LexicalEditor.js +15 -15
  74. package/dist/lexical/LexicalEditor.js.map +1 -1
  75. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +17 -17
  76. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  77. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +17 -17
  78. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  79. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +4 -4
  80. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  81. package/dist/lexical/plugins/TextPlugin/index.js +3 -3
  82. package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
  83. package/dist/lexical/ui/ContentEditable.js +3 -3
  84. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  85. package/dist/utilities/fieldsDrawer/Drawer.js +11 -11
  86. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  87. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +10 -10
  88. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
  89. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +14 -14
  90. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
  91. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +11 -11
  92. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
  93. package/package.json +15 -15
  94. package/dist/exports/client/chunk-DOK5S7LE.js +0 -2
  95. package/dist/exports/client/chunk-WHL7AV5U.js +0 -2
  96. package/dist/exports/client/chunk-WHL7AV5U.js.map +0 -7
  97. package/dist/exports/client/component-ANB7VZLA.js +0 -2
  98. package/dist/exports/client/componentInline-GXYBWVCR.js +0 -2
  99. /package/dist/exports/client/{RelationshipComponent-XOQBVKA3.js.map → RelationshipComponent-F77EQHRG.js.map} +0 -0
  100. /package/dist/exports/client/{chunk-XCEM47RI.js.map → chunk-AXXPUMFU.js.map} +0 -0
  101. /package/dist/exports/client/{chunk-ZTAS32RX.js.map → chunk-PGMIO4IN.js.map} +0 -0
  102. /package/dist/exports/client/{component-D6PKVJ2K.js.map → component-NSAU5Y76.js.map} +0 -0
  103. /package/dist/exports/client/{componentInline-GXYBWVCR.js.map → componentInline-B5YNOX32.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$isTableCellNode","$isTableRowNode","getDOMCellFromTarget","TableNode","calculateZoomLevel","$getNearestNodeFromDOMNode","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","useEditorConfigContext","MIN_ROW_HEIGHT","MIN_COLUMN_WIDTH","TableCellResizer","editor","targetRef","resizerRef","tableRectRef","editorConfig","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","current","isMouseDownOnEvent","event","buttons","registerNodeTransform","tableNode","getColWidths","numColumns","getColumnCount","columnWidth","setColWidths","Array","fill","onMouseMove","setTimeout","target","x","clientX","y","clientY","contains","cell","update","tableCellNode","elem","Error","tableElement","getElementByKey","getKey","getBoundingClientRect","onMouseDown","onMouseUp","removeRootListener","registerRootListener","rootElement","prevRootElement","removeEventListener","addEventListener","isHeightChanging","direction","updateRowHeight","heightChange","tableRowIndex","getRowSpan","tableRows","getChildren","length","tableRow","height","getHeight","undefined","rowCells","Math","min","map","getCellNodeHeight","Infinity","newHeight","max","setHeight","tag","activeEditor","domCellNode","clientHeight","getCellColumnIndex","tableMap","row","column","updateColumnWidth","widthChange","columnIndex","colWidths","width","newColWidths","newWidth","mouseUpHandler","handler","preventDefault","stopPropagation","zoom","document","toggleResize","resizerStyles","setResizerStyles","bottom","left","right","top","zoneWidth","styles","backgroundColor","cursor","window","scrollX","scrollY","tableRect","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","t0","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType } from '@lexical/table'\nimport type { LexicalEditor } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n TableNode,\n} from '@lexical/table'\nimport { calculateZoomLevel } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 92\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<null | TableDOMCell>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n return editor.registerNodeTransform(TableNode, (tableNode) => {\n if (tableNode.getColWidths()) {\n return tableNode\n }\n\n const numColumns = tableNode.getColumnCount()\n const columnWidth = MIN_COLUMN_WIDTH\n\n tableNode.setColWidths(Array(numColumns).fill(columnWidth))\n return tableNode\n })\n }, [editor])\n\n useEffect(() => {\n const onMouseMove = (event: MouseEvent) => {\n setTimeout(() => {\n const target = event.target\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target as HTMLElement\n const cell = getDOMCellFromTarget(target as HTMLElement)\n\n if (cell && activeCell !== cell) {\n editor.update(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(tableNode.getKey())\n\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target as HTMLElement\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n })\n } else if (cell == null) {\n resetState()\n }\n }\n }, 0)\n }\n\n const onMouseDown = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(true)\n }, 0)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(false)\n }, 0)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex =\n $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n for (let row = 0; row < tableMap.length; row++) {\n for (let column = 0; column < tableMap[row].length; column++) {\n if (tableMap[row][column].cell === tableCellNode) {\n return column\n }\n }\n }\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n const colWidths = tableNode.getColWidths()\n if (!colWidths) {\n return\n }\n const width = colWidths[columnIndex]\n if (width === undefined) {\n return\n }\n const newColWidths = [...colWidths]\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n newColWidths[columnIndex] = newWidth\n tableNode.setColWidths(newColWidths)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const [resizerStyles, setResizerStyles] = useState<{\n bottom?: null | React.CSSProperties\n left?: null | React.CSSProperties\n right?: null | React.CSSProperties\n top?: null | React.CSSProperties\n }>({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n\n useEffect(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.scrollX + left}px`,\n top: `${window.scrollY + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.scrollX + left + width - zoneWidth / 2}px`,\n top: `${window.scrollY + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.scrollX + tableRect.left}px`\n styles[draggingDirection].top = `${window.scrollY + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`\n styles[draggingDirection].left = `${window.scrollX + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n setResizerStyles(styles)\n } else {\n setResizerStyles({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$isTableCellNode","$isTableRowNode","getDOMCellFromTarget","TableNode","calculateZoomLevel","$getNearestNodeFromDOMNode","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","useEditorConfigContext","MIN_ROW_HEIGHT","MIN_COLUMN_WIDTH","TableCellResizer","editor","targetRef","resizerRef","tableRectRef","editorConfig","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","current","isMouseDownOnEvent","event","buttons","registerNodeTransform","tableNode","getColWidths","numColumns","getColumnCount","columnWidth","setColWidths","Array","fill","onMouseMove","setTimeout","target","x","clientX","y","clientY","contains","cell","update","tableCellNode","elem","Error","tableElement","getElementByKey","getKey","getBoundingClientRect","onMouseDown","onMouseUp","removeRootListener","registerRootListener","rootElement","prevRootElement","removeEventListener","addEventListener","isHeightChanging","direction","updateRowHeight","heightChange","tableRowIndex","getRowSpan","tableRows","getChildren","length","tableRow","height","getHeight","undefined","rowCells","Math","min","map","getCellNodeHeight","Infinity","newHeight","max","setHeight","tag","activeEditor","domCellNode","clientHeight","getCellColumnIndex","tableMap","row","column","updateColumnWidth","widthChange","columnIndex","colWidths","width","newColWidths","newWidth","mouseUpHandler","handler","preventDefault","stopPropagation","zoom","document","toggleResize","resizerStyles","setResizerStyles","bottom","left","right","top","zoneWidth","styles","backgroundColor","cursor","window","scrollX","scrollY","tableRect","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","t0","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType } from '@lexical/table'\nimport type { LexicalEditor } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n TableNode,\n} from '@lexical/table'\nimport { calculateZoomLevel } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 92\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<null | TableDOMCell>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n return editor.registerNodeTransform(TableNode, (tableNode) => {\n if (tableNode.getColWidths()) {\n return tableNode\n }\n\n const numColumns = tableNode.getColumnCount()\n const columnWidth = MIN_COLUMN_WIDTH\n\n tableNode.setColWidths(Array(numColumns).fill(columnWidth))\n return tableNode\n })\n }, [editor])\n\n useEffect(() => {\n const onMouseMove = (event: MouseEvent) => {\n setTimeout(() => {\n const target = event.target\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target as HTMLElement\n const cell = getDOMCellFromTarget(target as HTMLElement)\n\n if (cell && activeCell !== cell) {\n editor.update(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(tableNode.getKey())\n\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target as HTMLElement\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n })\n } else if (cell == null) {\n resetState()\n }\n }\n }, 0)\n }\n\n const onMouseDown = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(true)\n }, 0)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(false)\n }, 0)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex =\n $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n for (let row = 0; row < tableMap.length; row++) {\n for (let column = 0; column < tableMap[row].length; column++) {\n if (tableMap[row][column].cell === tableCellNode) {\n return column\n }\n }\n }\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n const colWidths = tableNode.getColWidths()\n if (!colWidths) {\n return\n }\n const width = colWidths[columnIndex]\n if (width === undefined) {\n return\n }\n const newColWidths = [...colWidths]\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n newColWidths[columnIndex] = newWidth\n tableNode.setColWidths(newColWidths)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const [resizerStyles, setResizerStyles] = useState<{\n bottom?: null | React.CSSProperties\n left?: null | React.CSSProperties\n right?: null | React.CSSProperties\n top?: null | React.CSSProperties\n }>({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n\n useEffect(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.scrollX + left}px`,\n top: `${window.scrollY + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.scrollX + left + width - zoneWidth / 2}px`,\n top: `${window.scrollY + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.scrollX + tableRect.left}px`\n styles[draggingDirection].top = `${window.scrollY + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`\n styles[draggingDirection].left = `${window.scrollX + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n setResizerStyles(styles)\n } else {\n setResizerStyles({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -56,13 +56,13 @@ export const TablePlugin = () => {
56
56
  } = t0;
57
57
  const t1 = "lexical-table-create-" + uuid;
58
58
  let t2;
59
- if ($[0] !== t1 || $[1] !== editDepth) {
59
+ if ($[0] !== editDepth || $[1] !== t1) {
60
60
  t2 = formatDrawerSlug({
61
61
  slug: t1,
62
62
  depth: editDepth
63
63
  });
64
- $[0] = t1;
65
- $[1] = editDepth;
64
+ $[0] = editDepth;
65
+ $[1] = t1;
66
66
  $[2] = t2;
67
67
  } else {
68
68
  t2 = $[2];
@@ -126,7 +126,7 @@ export const TablePlugin = () => {
126
126
  t5 = $[11];
127
127
  }
128
128
  let t6;
129
- if ($[12] !== drawerSlug || $[13] !== t5 || $[14] !== schemaPath) {
129
+ if ($[12] !== drawerSlug || $[13] !== schemaPath || $[14] !== t5) {
130
130
  t6 = _jsxs(React.Fragment, {
131
131
  children: [_jsx(FieldsDrawer, {
132
132
  drawerSlug,
@@ -141,8 +141,8 @@ export const TablePlugin = () => {
141
141
  })]
142
142
  });
143
143
  $[12] = drawerSlug;
144
- $[13] = t5;
145
- $[14] = schemaPath;
144
+ $[13] = schemaPath;
145
+ $[14] = t5;
146
146
  $[15] = t6;
147
147
  } else {
148
148
  t6 = $[15];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","useLexicalDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","editDepth","fieldProps","t0","uuid","schemaPath","t1","t2","slug","depth","drawerSlug","toggleDrawer","t3","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t4","t5","_fields","data","columns","rows","dispatchCommand","String","t6","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const editDepth = useEditDepth()\n const {\n fieldProps: { schemaPath },\n uuid,\n } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPath={schemaPath}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","useLexicalDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","editDepth","fieldProps","t0","uuid","schemaPath","t1","t2","slug","depth","drawerSlug","toggleDrawer","t3","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t4","t5","_fields","data","columns","rows","dispatchCommand","String","t6","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const editDepth = useEditDepth()\n const {\n fieldProps: { schemaPath },\n uuid,\n } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPath={schemaPath}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,7 +8,7 @@ export function useDebounce(fn, ms, maxWait) {
8
8
  const debouncedRef = useRef(null);
9
9
  let t0;
10
10
  let t1;
11
- if ($[0] !== fn || $[1] !== ms || $[2] !== maxWait) {
11
+ if ($[0] !== fn || $[1] !== maxWait || $[2] !== ms) {
12
12
  t0 = () => {
13
13
  debouncedRef.current = debounce(fn, ms, {
14
14
  maxWait
@@ -19,8 +19,8 @@ export function useDebounce(fn, ms, maxWait) {
19
19
  };
20
20
  t1 = [fn, ms, maxWait];
21
21
  $[0] = fn;
22
- $[1] = ms;
23
- $[2] = maxWait;
22
+ $[1] = maxWait;
23
+ $[2] = ms;
24
24
  $[3] = t0;
25
25
  $[4] = t1;
26
26
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"useDebounce.js","names":["c","_c","useCallback","useEffect","useRef","debounce","useDebounce","fn","ms","maxWait","$","debouncedRef","t0","t1","current","cancel","t2","Symbol","for","t3","args","callback"],"sources":["../../../../../src/features/experimental_table/client/utils/useDebounce.ts"],"sourcesContent":["'use client'\nimport { useCallback, useEffect, useRef } from 'react'\n\nimport debounce from './debounce.js'\n\n// Define the type for debounced function that includes cancel method\ninterface DebouncedFunction<T extends (...args: any[]) => any> {\n (...args: Parameters<T>): ReturnType<T>\n cancel: () => void\n}\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n maxWait?: number,\n) {\n // Update the ref type to include cancel method\n const debouncedRef = useRef<DebouncedFunction<T> | null>(null)\n\n useEffect(() => {\n debouncedRef.current = debounce(fn, ms, { maxWait }) as DebouncedFunction<T>\n\n return () => {\n debouncedRef.current?.cancel()\n }\n }, [fn, ms, maxWait])\n\n const callback = useCallback((...args: Parameters<T>) => {\n if (debouncedRef.current) {\n debouncedRef.current(...args)\n }\n }, [])\n\n return callback\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAE/C,OAAOC,QAAA,MAAc;AAQrB,OAAO,SAAAC,YAAAC,EAAA,EAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAML,MAAAU,YAAA,GAAqBP,MAAA,KAAoC;EAAA,IAAAQ,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAH,EAAA,IAAAG,CAAA,QAAAF,EAAA,IAAAE,CAAA,QAAAD,OAAA;IAE/CG,EAAA,GAAAA,CAAA;MACRD,YAAA,CAAAG,OAAA,GAAuBT,QAAA,CAASE,EAAA,EAAIC,EAAA;QAAAC;MAAA,CAAc;MAAA;QAGhDE,YAAA,CAAAG,OAAA,EAAAC,MAAA;MAAA;IAAA;IAEDF,EAAA,IAACN,EAAA,EAAIC,EAAA,EAAIC,OAAA;IAAQC,CAAA,MAAAH,EAAA;IAAAG,CAAA,MAAAF,EAAA;IAAAE,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAE,EAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAD,EAAA,GAAAF,CAAA;IAAAG,EAAA,GAAAH,CAAA;EAAA;EANpBP,SAAA,CAAUS,EAMV,EAAGC,EAAiB;EAAA,IAAAG,EAAA;EAAA,IAAAN,CAAA,QAAAO,MAAA,CAAAC,GAAA;IAESF,EAAA,GAAAA,CAAA,GAAAG,EAAA;MAAC,MAAAC,IAAA,GAAAD,EAAG;MAAA,IAC3BR,YAAA,CAAAG,OAAA;QACFH,YAAA,CAAAG,OAAA,IAAwBM,IAAA;MAAA;IAAA;IAE5BV,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAJA,MAAAW,QAAA,GAAiBL,EAIZ;EAAA,OAEEK,QAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"useDebounce.js","names":["c","_c","useCallback","useEffect","useRef","debounce","useDebounce","fn","ms","maxWait","$","debouncedRef","t0","t1","current","cancel","t2","Symbol","for","t3","args","callback"],"sources":["../../../../../src/features/experimental_table/client/utils/useDebounce.ts"],"sourcesContent":["'use client'\nimport { useCallback, useEffect, useRef } from 'react'\n\nimport debounce from './debounce.js'\n\n// Define the type for debounced function that includes cancel method\ninterface DebouncedFunction<T extends (...args: any[]) => any> {\n (...args: Parameters<T>): ReturnType<T>\n cancel: () => void\n}\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n maxWait?: number,\n) {\n // Update the ref type to include cancel method\n const debouncedRef = useRef<DebouncedFunction<T> | null>(null)\n\n useEffect(() => {\n debouncedRef.current = debounce(fn, ms, { maxWait }) as DebouncedFunction<T>\n\n return () => {\n debouncedRef.current?.cancel()\n }\n }, [fn, ms, maxWait])\n\n const callback = useCallback((...args: Parameters<T>) => {\n if (debouncedRef.current) {\n debouncedRef.current(...args)\n }\n }, [])\n\n return callback\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAE/C,OAAOC,QAAA,MAAc;AAQrB,OAAO,SAAAC,YAAAC,EAAA,EAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAML,MAAAU,YAAA,GAAqBP,MAAA,KAAoC;EAAA,IAAAQ,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAH,EAAA,IAAAG,CAAA,QAAAD,OAAA,IAAAC,CAAA,QAAAF,EAAA;IAE/CI,EAAA,GAAAA,CAAA;MACRD,YAAA,CAAAG,OAAA,GAAuBT,QAAA,CAASE,EAAA,EAAIC,EAAA;QAAAC;MAAA,CAAc;MAAA;QAGhDE,YAAA,CAAAG,OAAA,EAAAC,MAAA;MAAA;IAAA;IAEDF,EAAA,IAACN,EAAA,EAAIC,EAAA,EAAIC,OAAA;IAAQC,CAAA,MAAAH,EAAA;IAAAG,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAF,EAAA;IAAAE,CAAA,MAAAE,EAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAD,EAAA,GAAAF,CAAA;IAAAG,EAAA,GAAAH,CAAA;EAAA;EANpBP,SAAA,CAAUS,EAMV,EAAGC,EAAiB;EAAA,IAAAG,EAAA;EAAA,IAAAN,CAAA,QAAAO,MAAA,CAAAC,GAAA;IAESF,EAAA,GAAAA,CAAA,GAAAG,EAAA;MAAC,MAAAC,IAAA,GAAAD,EAAG;MAAA,IAC3BR,YAAA,CAAAG,OAAA;QACFH,YAAA,CAAAG,OAAA,IAAwBM,IAAA;MAAA;IAAA;IAE5BV,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAJA,MAAAW,QAAA,GAAiBL,EAIZ;EAAA,OAEEK,QAAA;AAAA","ignoreList":[]}
@@ -21,23 +21,19 @@ export function HorizontalRuleComponent(t0) {
21
21
  const [editor] = useLexicalComposerContext();
22
22
  const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
23
23
  let t1;
24
- if ($[0] !== isSelected || $[1] !== editor) {
24
+ if ($[0] !== editor || $[1] !== isSelected) {
25
25
  t1 = event => {
26
26
  const deleteSelection = $getSelection();
27
27
  if (isSelected && $isNodeSelection(deleteSelection)) {
28
28
  event.preventDefault();
29
29
  editor.update(() => {
30
- deleteSelection.getNodes().forEach(node => {
31
- if ($isHorizontalRuleNode(node)) {
32
- node.remove();
33
- }
34
- });
30
+ deleteSelection.getNodes().forEach(_temp);
35
31
  });
36
32
  }
37
33
  return false;
38
34
  };
39
- $[0] = isSelected;
40
- $[1] = editor;
35
+ $[0] = editor;
36
+ $[1] = isSelected;
41
37
  $[2] = t1;
42
38
  } else {
43
39
  t1 = $[2];
@@ -45,7 +41,7 @@ export function HorizontalRuleComponent(t0) {
45
41
  const $onDelete = t1;
46
42
  let t2;
47
43
  let t3;
48
- if ($[3] !== editor || $[4] !== nodeKey || $[5] !== clearSelection || $[6] !== setSelected || $[7] !== isSelected || $[8] !== $onDelete) {
44
+ if ($[3] !== $onDelete || $[4] !== clearSelection || $[5] !== editor || $[6] !== isSelected || $[7] !== nodeKey || $[8] !== setSelected) {
49
45
  t2 = () => mergeRegister(editor.registerCommand(CLICK_COMMAND, event_0 => {
50
46
  const hrElem = editor.getElementByKey(nodeKey);
51
47
  if (event_0.target === hrElem) {
@@ -58,12 +54,12 @@ export function HorizontalRuleComponent(t0) {
58
54
  return false;
59
55
  }, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW));
60
56
  t3 = [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected];
61
- $[3] = editor;
62
- $[4] = nodeKey;
63
- $[5] = clearSelection;
64
- $[6] = setSelected;
65
- $[7] = isSelected;
66
- $[8] = $onDelete;
57
+ $[3] = $onDelete;
58
+ $[4] = clearSelection;
59
+ $[5] = editor;
60
+ $[6] = isSelected;
61
+ $[7] = nodeKey;
62
+ $[8] = setSelected;
67
63
  $[9] = t2;
68
64
  $[10] = t3;
69
65
  } else {
@@ -73,7 +69,7 @@ export function HorizontalRuleComponent(t0) {
73
69
  useEffect(t2, t3);
74
70
  let t4;
75
71
  let t5;
76
- if ($[11] !== editor || $[12] !== nodeKey || $[13] !== isSelected) {
72
+ if ($[11] !== editor || $[12] !== isSelected || $[13] !== nodeKey) {
77
73
  t4 = () => {
78
74
  const hrElem_0 = editor.getElementByKey(nodeKey);
79
75
  if (hrElem_0 !== null) {
@@ -86,8 +82,8 @@ export function HorizontalRuleComponent(t0) {
86
82
  };
87
83
  t5 = [editor, isSelected, nodeKey];
88
84
  $[11] = editor;
89
- $[12] = nodeKey;
90
- $[13] = isSelected;
85
+ $[12] = isSelected;
86
+ $[13] = nodeKey;
91
87
  $[14] = t4;
92
88
  $[15] = t5;
93
89
  } else {
@@ -97,4 +93,9 @@ export function HorizontalRuleComponent(t0) {
97
93
  useEffect(t4, t5);
98
94
  return null;
99
95
  }
96
+ function _temp(node) {
97
+ if ($isHorizontalRuleNode(node)) {
98
+ node.remove();
99
+ }
100
+ }
100
101
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalNodeSelection","addClassNamesToElement","mergeRegister","removeClassNamesFromElement","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","useCallback","useEffect","$isHorizontalRuleNode","isSelectedClassName","HorizontalRuleComponent","t0","$","nodeKey","editor","isSelected","setSelected","clearSelection","t1","event","deleteSelection","preventDefault","update","getNodes","forEach","node","remove","$onDelete","t2","t3","registerCommand","event_0","hrElem","getElementByKey","target","shiftKey","t4","t5","hrElem_0"],"sources":["../../../../../src/features/horizontalRule/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport type { NodeKey } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { addClassNamesToElement, mergeRegister, removeClassNamesFromElement } from '@lexical/utils'\nimport {\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect } from 'react'\n\nimport { $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\n\nconst isSelectedClassName = 'selected'\n\n/**\n * React component rendered in the lexical editor, WITHIN the hr element created by createDOM of the HorizontalRuleNode.\n *\n * @param nodeKey every node has a unique key (this key is not saved to the database and thus may differ between sessions). It's useful for working with the CURRENT lexical editor state\n */\nexport function HorizontalRuleComponent({ nodeKey }: { nodeKey: NodeKey }) {\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isHorizontalRuleNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event: MouseEvent) => {\n const hrElem = editor.getElementByKey(nodeKey)\n\n if (event.target === hrElem) {\n if (!event.shiftKey) {\n clearSelection()\n }\n setSelected(!isSelected)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected])\n\n useEffect(() => {\n const hrElem = editor.getElementByKey(nodeKey)\n if (hrElem !== null) {\n if (isSelected) {\n addClassNamesToElement(hrElem, isSelectedClassName)\n } else {\n removeClassNamesFromElement(hrElem, isSelectedClassName)\n }\n }\n }, [editor, isSelected, nodeKey])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,uBAAuB,QAAQ;AACxC,SAASC,sBAAsB,EAAEC,aAAa,EAAEC,2BAA2B,QAAQ;AACnF,SACEC,aAAa,EACbC,gBAAgB,EAChBC,aAAa,EACbC,oBAAoB,EACpBC,qBAAqB,EACrBC,kBAAkB,QACb;AACP,SAASC,WAAW,EAAEC,SAAS,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AAEtC,MAAMC,mBAAA,GAAsB;AAE5B;;;;;AAKA,OAAO,SAAAC,wBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAlB,EAAA;EAAiC;IAAAmB;EAAA,IAAAF,EAAiC;EACvE,OAAAG,MAAA,IAAiBnB,yBAAA;EACjB,OAAAoB,UAAA,EAAAC,WAAA,EAAAC,cAAA,IAAkDrB,uBAAA,CAAwBiB,OAAA;EAAA,IAAAK,EAAA;EAAA,IAAAN,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAE,MAAA;IAGxEI,EAAA,GAAAC,KAAA;MACE,MAAAC,eAAA,GAAwBpB,aAAA;MAAA,IACpBe,UAAA,IAAcd,gBAAA,CAAiBmB,eAAA;QACjCD,KAAA,CAAAE,cAAA,CAAoB;QACpBP,MAAA,CAAAQ,MAAA;UACEF,eAAA,CAAAG,QAAA,CAAwB,EAAAC,OAAA,CAAAC,IAAA;YAAA,IAClBjB,qBAAA,CAAsBiB,IAAA;cACxBA,IAAA,CAAAC,MAAA,CAAW;YAAA;UAAA,CAEf;QAAA,CACF;MAAA;MAAA;IAAA;IAGJd,CAAA,MAAAG,UAAA;IAAAH,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAdF,MAAAe,SAAA,GAAkBT,EAeI;EAAA,IAAAU,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAjB,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAC,OAAA,IAAAD,CAAA,QAAAK,cAAA,IAAAL,CAAA,QAAAI,WAAA,IAAAJ,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAe,SAAA;IAGZC,EAAA,GAAAA,CAAA,KACD9B,aAAA,CACLgB,MAAA,CAAAgB,eAAA,CAAA5B,aAAA,EAAA6B,OAAA;MAGI,MAAAC,MAAA,GAAelB,MAAA,CAAAmB,eAAA,CAAuBpB,OAAA;MAAA,IAElCM,OAAA,CAAAe,MAAA,KAAiBF,MAAA;QAAA,KACdb,OAAA,CAAAgB,QAAA;UACHlB,cAAA;QAAA;QAEFD,WAAA,EAAaD,UAAA;QAAA;MAAA;MAAA;IAAA,GAAAZ,oBAMjB,GAEFW,MAAA,CAAAgB,eAAA,CAAAzB,kBAAA,EAA2CsB,SAAA,EAAAxB,oBAAW,GACtDW,MAAA,CAAAgB,eAAA,CAAA1B,qBAAA,EAA8CuB,SAAA,EAAAxB,oBAAW;IAE1D0B,EAAA,IAACZ,cAAA,EAAgBH,MAAA,EAAQC,UAAA,EAAYF,OAAA,EAASc,SAAA,EAAWX,WAAA;IAAYJ,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAC,OAAA;IAAAD,CAAA,MAAAK,cAAA;IAAAL,CAAA,MAAAI,WAAA;IAAAJ,CAAA,MAAAG,UAAA;IAAAH,CAAA,MAAAe,SAAA;IAAAf,CAAA,MAAAgB,EAAA;IAAAhB,CAAA,OAAAiB,EAAA;EAAA;IAAAD,EAAA,GAAAhB,CAAA;IAAAiB,EAAA,GAAAjB,CAAA;EAAA;EAtBxEL,SAAA,CAAUqB,EAsBV,EAAGC,EAAqE;EAAA,IAAAO,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAzB,CAAA,SAAAE,MAAA,IAAAF,CAAA,SAAAC,OAAA,IAAAD,CAAA,SAAAG,UAAA;IAE9DqB,EAAA,GAAAA,CAAA;MACR,MAAAE,QAAA,GAAexB,MAAA,CAAAmB,eAAA,CAAuBpB,OAAA;MAAA,IAClCmB,QAAA,SAAW;QAAA,IACTjB,UAAA;UACFlB,sBAAA,CAAuBmC,QAAA,EAAAvB,mBAAQ;QAAA;UAE/BV,2BAAA,CAA4BiC,QAAA,EAAAvB,mBAAQ;QAAA;MAAA;IAAA;IAGvC4B,EAAA,IAACvB,MAAA,EAAQC,UAAA,EAAYF,OAAA;IAAQD,CAAA,OAAAE,MAAA;IAAAF,CAAA,OAAAC,OAAA;IAAAD,CAAA,OAAAG,UAAA;IAAAH,CAAA,OAAAwB,EAAA;IAAAxB,CAAA,OAAAyB,EAAA;EAAA;IAAAD,EAAA,GAAAxB,CAAA;IAAAyB,EAAA,GAAAzB,CAAA;EAAA;EAThCL,SAAA,CAAU6B,EASV,EAAGC,EAA6B;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalNodeSelection","addClassNamesToElement","mergeRegister","removeClassNamesFromElement","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","useCallback","useEffect","$isHorizontalRuleNode","isSelectedClassName","HorizontalRuleComponent","t0","$","nodeKey","editor","isSelected","setSelected","clearSelection","t1","event","deleteSelection","preventDefault","update","getNodes","forEach","_temp","$onDelete","t2","t3","registerCommand","event_0","hrElem","getElementByKey","target","shiftKey","t4","t5","hrElem_0","node","remove"],"sources":["../../../../../src/features/horizontalRule/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport type { NodeKey } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { addClassNamesToElement, mergeRegister, removeClassNamesFromElement } from '@lexical/utils'\nimport {\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect } from 'react'\n\nimport { $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\n\nconst isSelectedClassName = 'selected'\n\n/**\n * React component rendered in the lexical editor, WITHIN the hr element created by createDOM of the HorizontalRuleNode.\n *\n * @param nodeKey every node has a unique key (this key is not saved to the database and thus may differ between sessions). It's useful for working with the CURRENT lexical editor state\n */\nexport function HorizontalRuleComponent({ nodeKey }: { nodeKey: NodeKey }) {\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isHorizontalRuleNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event: MouseEvent) => {\n const hrElem = editor.getElementByKey(nodeKey)\n\n if (event.target === hrElem) {\n if (!event.shiftKey) {\n clearSelection()\n }\n setSelected(!isSelected)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected])\n\n useEffect(() => {\n const hrElem = editor.getElementByKey(nodeKey)\n if (hrElem !== null) {\n if (isSelected) {\n addClassNamesToElement(hrElem, isSelectedClassName)\n } else {\n removeClassNamesFromElement(hrElem, isSelectedClassName)\n }\n }\n }, [editor, isSelected, nodeKey])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,18 +16,7 @@ export const HorizontalRulePlugin = () => {
16
16
  let t0;
17
17
  let t1;
18
18
  if ($[0] !== editor) {
19
- t0 = () => editor.registerCommand(INSERT_HORIZONTAL_RULE_COMMAND, type => {
20
- const selection = $getSelection();
21
- if (!$isRangeSelection(selection)) {
22
- return false;
23
- }
24
- const focusNode = selection.focus.getNode();
25
- if (focusNode !== null) {
26
- const horizontalRuleNode = $createHorizontalRuleNode();
27
- $insertNodeToNearestRoot(horizontalRuleNode);
28
- }
29
- return true;
30
- }, COMMAND_PRIORITY_EDITOR);
19
+ t0 = () => editor.registerCommand(INSERT_HORIZONTAL_RULE_COMMAND, _temp, COMMAND_PRIORITY_EDITOR);
31
20
  t1 = [editor];
32
21
  $[0] = editor;
33
22
  $[1] = t0;
@@ -39,4 +28,16 @@ export const HorizontalRulePlugin = () => {
39
28
  useEffect(t0, t1);
40
29
  return null;
41
30
  };
31
+ function _temp(type) {
32
+ const selection = $getSelection();
33
+ if (!$isRangeSelection(selection)) {
34
+ return false;
35
+ }
36
+ const focusNode = selection.focus.getNode();
37
+ if (focusNode !== null) {
38
+ const horizontalRuleNode = $createHorizontalRuleNode();
39
+ $insertNodeToNearestRoot(horizontalRuleNode);
40
+ }
41
+ return true;
42
+ }
42
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","useEffect","INSERT_HORIZONTAL_RULE_COMMAND","$createHorizontalRuleNode","HorizontalRulePlugin","$","editor","t0","t1","registerCommand","type","selection","focusNode","focus","getNode","horizontalRuleNode"],"sources":["../../../../../src/features/horizontalRule/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../../server/nodes/HorizontalRuleNode.js'\nimport { $createHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\nimport './index.scss'\n\n/**\n * Registers the INSERT_HORIZONTAL_RULE_COMMAND lexical command and defines the behavior for when it is called.\n */\nexport const HorizontalRulePlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n return editor.registerCommand(\n INSERT_HORIZONTAL_RULE_COMMAND,\n (type) => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n\n if (focusNode !== null) {\n const horizontalRuleNode = $createHorizontalRuleNode()\n $insertNodeToNearestRoot(horizontalRuleNode)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,wBAAwB,QAAQ;AACzC,SAASC,aAAa,EAAEC,iBAAiB,EAAEC,uBAAuB,QAAQ;AAC1E,SAASC,SAAS,QAAQ;AAI1B,SAASC,8BAA8B,QAAQ;AAC/C,SAASC,yBAAyB,QAAQ;AAG1C;;;AAGA,OAAO,MAAMC,oBAAA,GAAmDA,CAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAC9D,OAAAW,MAAA,IAAiBV,yBAAA;EAAA,IAAAW,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAC,MAAA;IAEPC,EAAA,GAAAA,CAAA,KACDD,MAAA,CAAAG,eAAA,CAAAP,8BAAA,EAAAQ,IAAA;MAGH,MAAAC,SAAA,GAAkBb,aAAA;MAAA,KAEbC,iBAAA,CAAkBY,SAAA;QAAA;MAAA;MAIvB,MAAAC,SAAA,GAAkBD,SAAA,CAAAE,KAAA,CAAAC,OAAA,CAAuB;MAAA,IAErCF,SAAA,SAAc;QAChB,MAAAG,kBAAA,GAA2BZ,yBAAA;QAC3BN,wBAAA,CAAyBkB,kBAAA;MAAA;MAAA;IAAA,GAAAf,uBAK7B;IAEDQ,EAAA,IAACF,MAAA;IAAOD,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,EAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAD,EAAA,GAAAF,CAAA;IAAAG,EAAA,GAAAH,CAAA;EAAA;EArBXJ,SAAA,CAAUM,EAqBV,EAAGC,EAAQ;EAAA;AAAA,CAGb","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","useEffect","INSERT_HORIZONTAL_RULE_COMMAND","$createHorizontalRuleNode","HorizontalRulePlugin","$","editor","t0","t1","registerCommand","_temp","type","selection","focusNode","focus","getNode","horizontalRuleNode"],"sources":["../../../../../src/features/horizontalRule/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../../server/nodes/HorizontalRuleNode.js'\nimport { $createHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\nimport './index.scss'\n\n/**\n * Registers the INSERT_HORIZONTAL_RULE_COMMAND lexical command and defines the behavior for when it is called.\n */\nexport const HorizontalRulePlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n return editor.registerCommand(\n INSERT_HORIZONTAL_RULE_COMMAND,\n (type) => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n\n if (focusNode !== null) {\n const horizontalRuleNode = $createHorizontalRuleNode()\n $insertNodeToNearestRoot(horizontalRuleNode)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,wBAAwB,QAAQ;AACzC,SAASC,aAAa,EAAEC,iBAAiB,EAAEC,uBAAuB,QAAQ;AAC1E,SAASC,SAAS,QAAQ;AAI1B,SAASC,8BAA8B,QAAQ;AAC/C,SAASC,yBAAyB,QAAQ;AAG1C;;;AAGA,OAAO,MAAMC,oBAAA,GAAmDA,CAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAC9D,OAAAW,MAAA,IAAiBV,yBAAA;EAAA,IAAAW,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAC,MAAA;IAEPC,EAAA,GAAAA,CAAA,KACDD,MAAA,CAAAG,eAAA,CAAAP,8BAAA,EAAAQ,KAAA,EAAAV,uBAkBL;IAEDQ,EAAA,IAACF,MAAA;IAAOD,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,EAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAD,EAAA,GAAAF,CAAA;IAAAG,EAAA,GAAAH,CAAA;EAAA;EArBXJ,SAAA,CAAUM,EAqBV,EAAGC,EAAQ;EAAA;AAAA,CAGb;AA3BgE,SAAAE,MAAAC,IAAA;EAOxD,MAAAC,SAAA,GAAkBd,aAAA;EAAA,KAEbC,iBAAA,CAAkBa,SAAA;IAAA;EAAA;EAIvB,MAAAC,SAAA,GAAkBD,SAAA,CAAAE,KAAA,CAAAC,OAAA,CAAuB;EAAA,IAErCF,SAAA,SAAc;IAChB,MAAAG,kBAAA,GAA2Bb,yBAAA;IAC3BN,wBAAA,CAAyBmB,kBAAA;EAAA;EAAA;AAAA","ignoreList":[]}
@@ -33,7 +33,7 @@ export const IndentPlugin = () => {
33
33
  useEffect(t0, t1);
34
34
  let t2;
35
35
  let t3;
36
- if ($[3] !== firefoxFlag || $[4] !== editor) {
36
+ if ($[3] !== editor || $[4] !== firefoxFlag) {
37
37
  t2 = () => {
38
38
  if (!firefoxFlag) {
39
39
  return;
@@ -52,8 +52,8 @@ export const IndentPlugin = () => {
52
52
  };
53
53
  };
54
54
  t3 = [editor, firefoxFlag];
55
- $[3] = firefoxFlag;
56
- $[4] = editor;
55
+ $[3] = editor;
56
+ $[4] = firefoxFlag;
57
57
  $[5] = t2;
58
58
  $[6] = t3;
59
59
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TabIndentationPlugin","mergeRegister","COMMAND_PRIORITY_NORMAL","FOCUS_COMMAND","KEY_ESCAPE_COMMAND","useEffect","useState","IndentPlugin","$","editor","firefoxFlag","setFirefoxFlag","t0","t1","registerCommand","getRootElement","blur","t2","t3","handleKeyDown","e","includes","key","shiftKey","parentElement","focus","document","addEventListener","removeEventListener","t4","Symbol","for","_jsx"],"sources":["../../../../../src/features/indent/client/plugins/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin'\nimport { mergeRegister } from '@lexical/utils'\nimport { COMMAND_PRIORITY_NORMAL, FOCUS_COMMAND, KEY_ESCAPE_COMMAND } from 'lexical'\nimport { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nexport const IndentPlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n const [firefoxFlag, setFirefoxFlag] = useState<boolean>(false)\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(\n FOCUS_COMMAND,\n () => {\n setFirefoxFlag(false)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n setFirefoxFlag(true)\n editor.getRootElement()?.blur()\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n )\n }, [editor, setFirefoxFlag])\n\n useEffect(() => {\n if (!firefoxFlag) {\n return\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!['Escape', 'Shift'].includes(e.key)) {\n setFirefoxFlag(false)\n }\n // Pressing Shift+Tab after blurring refocuses the editor in Firefox\n // we focus parent to allow exiting the editor\n if (e.shiftKey && e.key === 'Tab') {\n editor.getRootElement()?.parentElement?.focus()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => {\n document.removeEventListener('keydown', handleKeyDown)\n }\n }, [editor, firefoxFlag])\n\n return <TabIndentationPlugin />\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,oBAAoB,QAAQ;AACrC,SAASC,aAAa,QAAQ;AAC9B,SAASC,uBAAuB,EAAEC,aAAa,EAAEC,kBAAkB,QAAQ;AAC3E,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAIpC,OAAO,MAAMC,YAAA,GAA2CA,CAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACtD,OAAAW,MAAA,IAAiBV,yBAAA;EAEjB,OAAAW,WAAA,EAAAC,cAAA,IAAsCL,QAAA,MAAkB;EAAA,IAAAM,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAC,MAAA;IAE9CG,EAAA,GAAAA,CAAA,KACDX,aAAA,CACLQ,MAAA,CAAAK,eAAA,CAAAX,aAAA;MAGIQ,cAAA,MAAe;MAAA;IAAA,GAAAT,uBAGjB,GAEFO,MAAA,CAAAK,eAAA,CAAAV,kBAAA;MAGIO,cAAA,KAAe;MACfF,MAAA,CAAAM,cAAA,CAAqB,GAAAC,IAAA;MAAA;IAAA,GAAAd,uBAGvB;IAGHW,EAAA,IAACJ,MAAA,EAAQE,cAAA;IAAeH,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EApB3BH,SAAA,CAAUO,EAoBV,EAAGC,EAAwB;EAAA,IAAAI,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAV,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAC,MAAA;IAEjBQ,EAAA,GAAAA,CAAA;MAAA,KACHP,WAAA;QAAA;MAAA;MAIL,MAAAS,aAAA,GAAAC,CAAA;QAAA,KACO,CAAC,UAAU,SAAAC,QAAA,CAAkBD,CAAA,CAAAE,GAAK;UACrCX,cAAA,MAAe;QAAA;QAAA,IAIbS,CAAA,CAAAG,QAAA,IAAcH,CAAA,CAAAE,GAAA,KAAU;UAC1Bb,MAAA,CAAAM,cAAA,CAAqB,GAAAS,aAAA,EAAAC,KAAA;QAAA;MAAA;MAIzBC,QAAA,CAAAC,gBAAA,CAA0B,WAAWR,aAAA;MAAA;QAEnCO,QAAA,CAAAE,mBAAA,CAA6B,WAAWT,aAAA;MAAA;IAAA;IAEzCD,EAAA,IAACT,MAAA,EAAQC,WAAA;IAAYF,CAAA,MAAAE,WAAA;IAAAF,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAD,EAAA,GAAAT,CAAA;IAAAU,EAAA,GAAAV,CAAA;EAAA;EApBxBH,SAAA,CAAUY,EAoBV,EAAGC,EAAqB;EAAA,IAAAW,EAAA;EAAA,IAAArB,CAAA,QAAAsB,MAAA,CAAAC,GAAA;IAEjBF,EAAA,GAAAG,IAAA,CAAAhC,oBAAA,IAAC;IAAAQ,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAAA,OAADqB,EAAC;AAAA,CACV","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TabIndentationPlugin","mergeRegister","COMMAND_PRIORITY_NORMAL","FOCUS_COMMAND","KEY_ESCAPE_COMMAND","useEffect","useState","IndentPlugin","$","editor","firefoxFlag","setFirefoxFlag","t0","t1","registerCommand","getRootElement","blur","t2","t3","handleKeyDown","e","includes","key","shiftKey","parentElement","focus","document","addEventListener","removeEventListener","t4","Symbol","for","_jsx"],"sources":["../../../../../src/features/indent/client/plugins/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin'\nimport { mergeRegister } from '@lexical/utils'\nimport { COMMAND_PRIORITY_NORMAL, FOCUS_COMMAND, KEY_ESCAPE_COMMAND } from 'lexical'\nimport { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nexport const IndentPlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n const [firefoxFlag, setFirefoxFlag] = useState<boolean>(false)\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(\n FOCUS_COMMAND,\n () => {\n setFirefoxFlag(false)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n setFirefoxFlag(true)\n editor.getRootElement()?.blur()\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n )\n }, [editor, setFirefoxFlag])\n\n useEffect(() => {\n if (!firefoxFlag) {\n return\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!['Escape', 'Shift'].includes(e.key)) {\n setFirefoxFlag(false)\n }\n // Pressing Shift+Tab after blurring refocuses the editor in Firefox\n // we focus parent to allow exiting the editor\n if (e.shiftKey && e.key === 'Tab') {\n editor.getRootElement()?.parentElement?.focus()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => {\n document.removeEventListener('keydown', handleKeyDown)\n }\n }, [editor, firefoxFlag])\n\n return <TabIndentationPlugin />\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,oBAAoB,QAAQ;AACrC,SAASC,aAAa,QAAQ;AAC9B,SAASC,uBAAuB,EAAEC,aAAa,EAAEC,kBAAkB,QAAQ;AAC3E,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAIpC,OAAO,MAAMC,YAAA,GAA2CA,CAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACtD,OAAAW,MAAA,IAAiBV,yBAAA;EAEjB,OAAAW,WAAA,EAAAC,cAAA,IAAsCL,QAAA,MAAkB;EAAA,IAAAM,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAC,MAAA;IAE9CG,EAAA,GAAAA,CAAA,KACDX,aAAA,CACLQ,MAAA,CAAAK,eAAA,CAAAX,aAAA;MAGIQ,cAAA,MAAe;MAAA;IAAA,GAAAT,uBAGjB,GAEFO,MAAA,CAAAK,eAAA,CAAAV,kBAAA;MAGIO,cAAA,KAAe;MACfF,MAAA,CAAAM,cAAA,CAAqB,GAAAC,IAAA;MAAA;IAAA,GAAAd,uBAGvB;IAGHW,EAAA,IAACJ,MAAA,EAAQE,cAAA;IAAeH,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EApB3BH,SAAA,CAAUO,EAoBV,EAAGC,EAAwB;EAAA,IAAAI,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAV,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAE,WAAA;IAEjBO,EAAA,GAAAA,CAAA;MAAA,KACHP,WAAA;QAAA;MAAA;MAIL,MAAAS,aAAA,GAAAC,CAAA;QAAA,KACO,CAAC,UAAU,SAAAC,QAAA,CAAkBD,CAAA,CAAAE,GAAK;UACrCX,cAAA,MAAe;QAAA;QAAA,IAIbS,CAAA,CAAAG,QAAA,IAAcH,CAAA,CAAAE,GAAA,KAAU;UAC1Bb,MAAA,CAAAM,cAAA,CAAqB,GAAAS,aAAA,EAAAC,KAAA;QAAA;MAAA;MAIzBC,QAAA,CAAAC,gBAAA,CAA0B,WAAWR,aAAA;MAAA;QAEnCO,QAAA,CAAAE,mBAAA,CAA6B,WAAWT,aAAA;MAAA;IAAA;IAEzCD,EAAA,IAACT,MAAA,EAAQC,WAAA;IAAYF,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,WAAA;IAAAF,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAD,EAAA,GAAAT,CAAA;IAAAU,EAAA,GAAAV,CAAA;EAAA;EApBxBH,SAAA,CAAUY,EAoBV,EAAGC,EAAqB;EAAA,IAAAW,EAAA;EAAA,IAAArB,CAAA,QAAAsB,MAAA,CAAAC,GAAA;IAEjBF,EAAA,GAAAG,IAAA,CAAAhC,oBAAA,IAAC;IAAAQ,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAAA,OAADqB,EAAC;AAAA,CACV","ignoreList":[]}
@@ -280,7 +280,7 @@ function useAutoLink(editor, matchers, onChange) {
280
280
  const $ = _c(5);
281
281
  let t0;
282
282
  let t1;
283
- if ($[0] !== editor || $[1] !== onChange || $[2] !== matchers) {
283
+ if ($[0] !== editor || $[1] !== matchers || $[2] !== onChange) {
284
284
  t0 = () => {
285
285
  if (!editor.hasNodes([AutoLinkNode])) {
286
286
  throw new Error("LexicalAutoLinkPlugin: AutoLinkNode not registered on editor");
@@ -308,8 +308,8 @@ function useAutoLink(editor, matchers, onChange) {
308
308
  };
309
309
  t1 = [editor, matchers, onChange];
310
310
  $[0] = editor;
311
- $[1] = onChange;
312
- $[2] = matchers;
311
+ $[1] = matchers;
312
+ $[2] = onChange;
313
313
  $[3] = t0;
314
314
  $[4] = t1;
315
315
  } else {