@lofcz/platejs-table 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/{constants-B6Sm9BNa.js → constants-DGdhsla3.js} +679 -523
- package/dist/{index-CbSGuAlP.d.ts → index-CU48xuSN.d.ts} +186 -33
- package/dist/index.d.ts +2 -2
- package/dist/index.js +28 -8
- package/dist/react/index.d.ts +119 -22
- package/dist/react/index.js +355 -234
- package/package.json +4 -3
- package/dist/constants-B6Sm9BNa.js.map +0 -1
- package/dist/index-CbSGuAlP.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CbSGuAlP.d.ts","names":[],"sources":["../src/lib/utils/computeCellIndices.ts","../src/lib/utils/getCellIndices.ts","../src/lib/utils/getCellRowIndexByPath.ts","../src/lib/utils/getCellType.ts","../src/lib/types.ts","../src/lib/api/getEmptyCellNode.ts","../src/lib/api/getEmptyRowNode.ts","../src/lib/api/getEmptyTableNode.ts","../src/lib/merge/deleteColumn.ts","../src/lib/merge/deleteColumnWhenExpanded.ts","../src/lib/merge/deleteRow.ts","../src/lib/merge/deleteRowWhenExpanded.ts","../src/lib/merge/findCellByIndexes.ts","../src/lib/merge/getCellIndicesWithSpans.ts","../src/lib/merge/getCellPath.ts","../src/lib/merge/getSelectionWidth.ts","../src/lib/merge/getTableGridByRange.ts","../src/lib/merge/getTableMergedColumnCount.ts","../src/lib/merge/insertTableColumn.ts","../src/lib/merge/insertTableRow.ts","../src/lib/merge/isTableRectangular.ts","../src/lib/merge/mergeTableCells.ts","../src/lib/merge/splitTableCell.ts","../src/lib/queries/getCellInNextTableRow.ts","../src/lib/queries/getCellInPreviousTableRow.ts","../src/lib/queries/getColSpan.ts","../src/lib/queries/getLeftTableCell.ts","../src/lib/queries/getNextTableCell.ts","../src/lib/queries/getPreviousTableCell.ts","../src/lib/queries/getRowSpan.ts","../src/lib/queries/getSelectedCellsBorders.ts","../src/lib/queries/getSelectedCellsBoundingBox.ts","../src/lib/queries/getTableAbove.ts","../src/lib/queries/getTableCellBorders.ts","../src/lib/queries/getTableCellSize.ts","../src/lib/queries/getTableColumnCount.ts","../src/lib/queries/getTableColumnIndex.ts","../src/lib/queries/getTableEntries.ts","../src/lib/queries/getTableGridByRange.ts","../src/lib/queries/getTableGridAbove.ts","../src/lib/queries/getTableOverriddenColSizes.ts","../src/lib/queries/getTableRowIndex.ts","../src/lib/queries/getTopTableCell.ts","../src/lib/queries/isTableBorderHidden.ts","../src/lib/transforms/deleteColumn.ts","../src/lib/transforms/deleteRow.ts","../src/lib/transforms/deleteTable.ts","../src/lib/transforms/insertTable.ts","../src/lib/transforms/insertTableColumn.ts","../src/lib/transforms/insertTableRow.ts","../src/lib/transforms/moveSelectionFromCell.ts","../src/lib/transforms/overrideSelectionFromCell.ts","../src/lib/transforms/setBorderSize.ts","../src/lib/transforms/setCellBackground.ts","../src/lib/transforms/setTableColSize.ts","../src/lib/transforms/setTableMarginLeft.ts","../src/lib/transforms/setTableRowSize.ts","../src/lib/BaseTablePlugin.ts","../src/lib/constants.ts","../src/lib/normalizeInitialValueTable.ts","../src/lib/withApplyTable.ts","../src/lib/withDeleteTable.ts","../src/lib/withGetFragmentTable.ts","../src/lib/withInsertFragmentTable.ts","../src/lib/withInsertTextTable.ts","../src/lib/withNormalizeTable.ts","../src/lib/withSetFragmentDataTable.ts","../src/lib/withTable.ts","../src/lib/withTableCellSelection.tsx"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Editor","TElement","getTableColumnIndex","editor","cellNode","path","api","findPath","trNode","parent","colIndex","children","some","item","index","Editor","TElement","PathApi","getTableRowIndex","editor","cellNode","path","api","findPath","rowPath","parent","at","SlateEditor","TTableCellElement","BorderDirection","getCellTypes","getLeftTableCell","getTopTableCell","isTableBorderHidden","editor","border","node","borders","right","size","bottom","api","match","type","Path","TTableCellElement","getCellRowIndexByPath","getSelectionWidth","cells","T","max","lastCellRowIndex","total","forEach","cell","cellPath","currentCellRowIndex","colSpan","attributes","colspan","colSpanNumbered","Number","Math","SlateEditor","TElement","TTableCellElement","getCellTypes","setCellBackground","editor","options","color","selectedCells","hasSelectedCells","length","forEach","cell","cellPath","api","findPath","tf","setNodes","background","at","currentCell","node","match","type"],"sources":["../src/lib/queries/getTableColumnIndex.ts","../src/lib/queries/getTableRowIndex.ts","../src/lib/queries/isTableBorderHidden.ts","../src/lib/merge/getSelectionWidth.ts","../src/lib/transforms/setCellBackground.ts"],"sourcesContent":["import type { Editor, TElement } from 'platejs';\n\n/** Get table column index of a cell node. */\nexport const getTableColumnIndex = (editor: Editor, cellNode: TElement) => {\n const path = editor.api.findPath(cellNode);\n\n if (!path) return -1;\n\n const [trNode] = editor.api.parent(path) ?? [];\n\n if (!trNode) return -1;\n\n let colIndex = -1;\n\n trNode.children.some((item, index) => {\n if (item === cellNode) {\n colIndex = index;\n\n return true;\n }\n\n return false;\n });\n\n return colIndex;\n};\n","import { type Editor, type TElement, PathApi } from 'platejs';\n\n/** Get table row index of a cell node. */\nexport const getTableRowIndex = (editor: Editor, cellNode: TElement) => {\n const path = editor.api.findPath(cellNode);\n\n if (!path) return 0;\n\n const rowPath = PathApi.parent(path);\n\n return rowPath.at(-1)!;\n};\n","import type { SlateEditor, TTableCellElement } from 'platejs';\n\nimport type { BorderDirection } from '../types';\n\nimport { getCellTypes } from '../utils';\nimport { getLeftTableCell } from './getLeftTableCell';\nimport { getTopTableCell } from './getTopTableCell';\n\nexport const isTableBorderHidden = (\n editor: SlateEditor,\n border: BorderDirection\n) => {\n if (border === 'left') {\n const node = getLeftTableCell(editor)?.[0];\n\n if (node) {\n return node.borders?.right?.size === 0;\n }\n }\n if (border === 'top') {\n const node = getTopTableCell(editor)?.[0];\n\n if (node) {\n return node.borders?.bottom?.size === 0;\n }\n }\n\n return (\n editor.api.node<TTableCellElement>({\n match: { type: getCellTypes(editor) },\n })?.[0].borders?.[border]?.size === 0\n );\n};\n","import type { Path, TTableCellElement } from 'platejs';\n\nimport { getCellRowIndexByPath } from '../utils/getCellRowIndexByPath';\n\nexport const getSelectionWidth = <T extends [TTableCellElement, Path]>(\n cells: T[]\n) => {\n // default = firstRowIndex\n\n let max = 0;\n let lastCellRowIndex = getCellRowIndexByPath(cells[0][1]);\n let total = 0;\n cells.forEach(([cell, cellPath]) => {\n const currentCellRowIndex = getCellRowIndexByPath(cellPath);\n\n // on the same line\n if (currentCellRowIndex === lastCellRowIndex) {\n const colSpan = cell.colSpan ?? cell.attributes?.colspan;\n const colSpanNumbered = colSpan ? Number(colSpan) : 1;\n total += colSpanNumbered;\n } else {\n max = Math.max(total, max);\n // easy to error\n total = 0;\n }\n\n lastCellRowIndex = currentCellRowIndex;\n });\n\n return Math.max(total, max);\n};\n","import type { SlateEditor, TElement, TTableCellElement } from 'platejs';\n\nimport { getCellTypes } from '../utils/getCellType';\n\nexport const setCellBackground = (\n editor: SlateEditor,\n options: {\n color: string | null;\n selectedCells?: TElement[];\n }\n) => {\n const { color, selectedCells } = options;\n\n const hasSelectedCells = selectedCells && selectedCells.length > 0;\n\n if (hasSelectedCells) {\n selectedCells.forEach((cell) => {\n const cellPath = editor.api.findPath(cell);\n\n if (cellPath) {\n editor.tf.setNodes<TTableCellElement>(\n { background: color },\n {\n at: cellPath,\n }\n );\n }\n });\n\n return;\n }\n\n const currentCell = editor.api.node<TTableCellElement>({\n match: { type: getCellTypes(editor) },\n })?.[0];\n\n if (currentCell) {\n const cellPath = editor.api.findPath(currentCell);\n\n if (cellPath) {\n editor.tf.setNodes<TTableCellElement>(\n { background: color },\n {\n at: cellPath,\n }\n );\n }\n }\n};\n"],"mappings":";;;;;AAGA,MAAaE,uBAAuBC,QAAgBC,aAAuB;CACzE,MAAMC,OAAOF,OAAOG,IAAIC,SAASH,SAAS;AAE1C,KAAI,CAACC,KAAM,QAAO;CAElB,MAAM,CAACG,UAAUL,OAAOG,IAAIG,OAAOJ,KAAK,IAAI,EAAE;AAE9C,KAAI,CAACG,OAAQ,QAAO;CAEpB,IAAIE,WAAW;AAEfF,QAAOG,SAASC,MAAMC,MAAMC,UAAU;AACpC,MAAID,SAAST,UAAU;AACrBM,cAAWI;AAEX,UAAO;;AAGT,SAAO;GACP;AAEF,QAAOJ;;;;;;ACrBT,MAAaQ,oBAAoBC,QAAgBC,aAAuB;CACtE,MAAMC,OAAOF,OAAOG,IAAIC,SAASH,SAAS;AAE1C,KAAI,CAACC,KAAM,QAAO;AAIlB,QAFgBJ,QAAQQ,OAAOJ,KAAK,CAErBK,GAAG,GAAG;;;;;ACFvB,MAAaO,uBACXC,QACAC,WACG;AACH,KAAIA,WAAW,QAAQ;EACrB,MAAMC,OAAOL,iBAAiBG,OAAO,GAAG;AAExC,MAAIE,KACF,QAAOA,KAAKC,SAASC,OAAOC,SAAS;;AAGzC,KAAIJ,WAAW,OAAO;EACpB,MAAMC,OAAOJ,gBAAgBE,OAAO,GAAG;AAEvC,MAAIE,KACF,QAAOA,KAAKC,SAASG,QAAQD,SAAS;;AAI1C,QACEL,OAAOO,IAAIL,KAAwB,EACjCM,OAAO,EAAEC,MAAMb,aAAaI,OAAM,EAAE,EACrC,CAAC,GAAG,GAAGG,UAAUF,SAASI,SAAS;;;;;AC1BxC,MAAaQ,qBACXC,UACG;CAGH,IAAIE,MAAM;CACV,IAAIC,mBAAmBL,sBAAsBE,MAAM,GAAG,GAAG;CACzD,IAAII,QAAQ;AACZJ,OAAMK,SAAS,CAACC,MAAMC,cAAc;EAClC,MAAMC,sBAAsBV,sBAAsBS,SAAS;AAG3D,MAAIC,wBAAwBL,kBAAkB;GAC5C,MAAMM,UAAUH,KAAKG,WAAWH,KAAKI,YAAYC;AAEjDP,YADwBK,UAAUI,OAAOJ,QAAQ,GAAG;SAE/C;AACLP,SAAMY,KAAKZ,IAAIE,OAAOF,IAAI;AAE1BE,WAAQ;;AAGVD,qBAAmBK;GACnB;AAEF,QAAOM,KAAKZ,IAAIE,OAAOF,IAAI;;;;;ACzB7B,MAAaiB,qBACXC,QACAC,YAIG;CACH,MAAM,EAAEC,OAAOC,kBAAkBF;AAIjC,KAFyBE,iBAAiBA,cAAcE,SAAS,GAE3C;AACpBF,gBAAcG,SAASC,SAAS;GAC9B,MAAMC,WAAWR,OAAOS,IAAIC,SAASH,KAAK;AAE1C,OAAIC,SACFR,QAAOW,GAAGC,SACR,EAAEC,YAAYX,OAAO,EACrB,EACEY,IAAIN,UAER,CAAC;IAEH;AAEF;;CAGF,MAAMO,cAAcf,OAAOS,IAAIO,KAAwB,EACrDC,OAAO,EAAEC,MAAMpB,aAAaE,OAAM,EAAE,EACrC,CAAC,GAAG;AAEL,KAAIe,aAAa;EACf,MAAMP,WAAWR,OAAOS,IAAIC,SAASK,YAAY;AAEjD,MAAIP,SACFR,QAAOW,GAAGC,SACR,EAAEC,YAAYX,OAAO,EACrB,EACEY,IAAIN,UAER,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/react/TablePlugin.tsx","../../src/react/onKeyDownTable.ts","../../src/react/components/TableCellElement/getOnSelectTableBorderFactory.ts","../../src/react/components/TableCellElement/roundCellSizeToStep.ts","../../src/react/components/TableCellElement/useIsCellSelected.ts","../../src/react/components/TableCellElement/useTableBordersDropdownMenuContentState.ts","../../src/react/components/TableCellElement/useTableCellBorders.ts","../../src/react/components/TableCellElement/useTableCellElement.ts","../../src/react/components/TableCellElement/useTableCellElementResizable.ts","../../src/react/components/TableCellElement/useTableCellSize.ts","../../src/react/components/TableElement/useSelectedCells.ts","../../src/react/components/TableElement/useTableColSizes.ts","../../src/react/components/TableElement/useTableElement.ts","../../src/react/hooks/useCellIndices.ts","../../src/react/hooks/useTableMergeState.ts","../../src/react/stores/useTableStore.ts"],"sourcesContent":[],"mappings":";;;;;;;cAUa;cAEA;cAEA;;cAGA;;;cCNA,gBAAgB,gBAAgB;;;;;;;;ADD7C;AAEa,iBE6BG,sBAAA,CF7BiD,MAAA,EE8BvD,WF9BuD,EAAA;EAAA,MAAA;EAAA;CAAA,EAAA;EAEpD,MAAA,EEiCD,eFjCC,GAAgE,MAAA,GAAA,OAAA;EAGhE,KAAA,EE+BF,iBF1BT,EAAA;;;;ACXF;;;cCuLa,wCACF,4BAA4B,+BAC5B;;;;;;;cChME;;;cCEA,6BAA8B;;;cCU9B;WAA2C;;YAG5C;;mCAAa,eAAA;;;ELTZ,YAAA,EAAA,GAAkD;EAElD,eAAA,EAAA,GAAoD;EAEpD,cAAA,EAAA,GAAA;EAGA,YAAA,EAKX,GAAA;;;;iBMZc,mBAAA;WACL;;YAEC;IAAiB;;;KCEjB,qBAAA;WACD;;;;;EPNE,QAAA,EAAA,MAAA;EAEA,QAAA,EAAA,OAAA;EAEA,KAAA,EAAA,MAAA,GAAA,MAAA;AAGb,CAAA;cOSa,2BAA0B;;;KCE3B,gCAAA;;;;ERlBC,KAAA,CAAA,EAAA,MAAA;EAEA,KAAA,CAAA,EAAA,MAAA;AAEb,CAAA,GQoBI,IRpBS,CQoBJ,qBRpBoE,EAAA,UAAA,GAAA,SAAA,GAAA,UAAA,CAAA;AAGhE,cQmBA,4BRdX,EAAA,CAAA;EAAA,QAAA;EAAA,OAAA;EAAA,QAAA;EAAA,IAAA;EAAA,KAAA;EAAA;AAAA,CAAA,EQqBC,gCRrBD,EAAA,GAAA;eQsBa,KAAA,CAAM,gCAAgC;;aAExC,KAAA,CAAM,gCAAgC;EPnCtC,UAAA,EOoCC,KAAA,CAAM,wBPpCS,CAAA,OOoCuB,YPpCR,CAAA;;;;iBQA5B,gBAAA;WACL;;YAEC;;;;;;;;cCIC;;;;;;;cCRA;;;AXAb,CAAA;;;AAAA,CAAA,EAAA,GAAa,MAAA,EAAA;;;cYFA;;;;;;;;;cCCA;;;cCKA;;;;;;cCPX;cAqCW;cAMA;cAMA"}
|
package/dist/react/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["KeyboardHandler","Hotkeys","TableConfig","getCellTypes","KEY_SHIFT_EDGES","moveSelectionFromCell","onKeyDownTable","editor","event","defaultPrevented","compositeKeyCode","which","selection","api","isExpanded","tdEntries","Array","from","nodes","at","match","type","length","tf","collapse","edge","isKeyDown","isExtendDownward","isExtendBackward","isExtendForward","isExtendUpward","Object","keys","forEach","key","reverse","preventDefault","stopPropagation","toPlatePlugin","BaseTableCellHeaderPlugin","BaseTableCellPlugin","BaseTablePlugin","BaseTableRowPlugin","onKeyDownTable","TableRowPlugin","TableCellPlugin","TableCellHeaderPlugin","TablePlugin","handlers","onKeyDown","plugins","SlateEditor","TElement","TTableCellElement","BorderDirection","getCellIndices","getCellTypes","getColSpan","getLeftTableCell","getRowSpan","getSelectedCellsBorders","getSelectedCellsBoundingBox","getTopTableCell","isSelectedCellBorder","setBorderSize","setCellBorderSize","editor","cell","directions","size","at","api","findPath","border","dir","setSelectedCellsBorder","cells","length","none","allNone","newSize","cellPath","col","row","edges","push","cellAboveEntry","cellAbove","prevCellEntry","prevCell","outer","allOut","maxCol","maxRow","minCol","minRow","cSpan","rSpan","rr","cc","allSet","isFirstRow","isFirstCell","getOnSelectTableBorderFactory","selectedCells","block","match","type","cellElems","map","v","roundCellSizeToStep","size","step","Math","round","TElement","usePluginOption","TablePlugin","useIsCellSelected","element","$","_c","selectedCells","t0","includes","TTableElement","useEditorPlugin","useEditorSelector","useElement","usePluginOption","TableBorderStates","getSelectedCellsBorders","TablePlugin","getOnSelectTableBorderFactory","useTableBordersDropdownMenuContentState","t0","$","_c","t1","undefined","element","el","editor","selectedCells","t2","editor_0","t3","borderStates","t4","t5","bottom","left","none","outer","right","top","getOnSelectTableBorder","hasBottomBorder","hasLeftBorder","hasNoBorders","hasOuterBorders","hasRightBorder","hasTopBorder","React","TTableCellElement","useEditorPlugin","useElement","usePluginOption","computeCellIndices","TablePlugin","useCellIndices","$","_c","editor","element","cellIndices","id","t0","bb0","t1","cellNode","col","row","React","TTableCellElement","useEditorPlugin","useElement","getTableCellBorders","useCellIndices","TablePlugin","useTableCellBorders","t0","$","_c","t1","undefined","element","el","editor","cellIndices","t2","React","atom","createAtomStore","TableStoreSizeOverrides","TableProvider","tableStore","useTableSet","useTableState","useTableStore","useTableValue","colSizeOverrides","Map","marginLeftOverride","rowSizeOverrides","name","const","useOverrideSizeFactory","setOverrides","$","_c","t0","index","size","overrides","newOverrides","delete","set","useOverrideColSize","setColSizeOverrides","useOverrideRowSize","setRowSizeOverrides","useOverrideMarginLeft","React","useEditorPlugin","useEditorRef","useEditorSelection","usePluginOption","useReadOnly","useSelected","getTableGridAbove","TablePlugin","useSelectedCells","$","_c","readOnly","selected","editor","selection","setOption","selectedCells","t0","t1","useEffect","t2","tableEntries","format","cellEntries","length","cells","map","_temp","tables","_temp2","JSON","stringify","t3","entry","entry_0","KEYS","PathApi","useElementSelector","getTableOverriddenColSizes","useTableValue","useTableColSizes","t0","$","_c","t1","undefined","disableOverrides","t2","transformColSizes","colSizeOverrides","t3","t4","t5","tableNode","colSizes","Symbol","for","key","table","equalityFn","_temp","overriddenColSizes","a","b","equals","TTableElement","useEditorPlugin","useElement","usePluginOption","useTableValue","TablePlugin","useSelectedCells","useTableElement","$","_c","editor","getOptions","disableMarginLeft","element","selectedCells","marginLeftOverride","marginLeft","t0","t1","onMouseDown","tf","collapse","t2","isSelectingCell","props","React","NodeEntry","TTableCellElement","TTableRowElement","KEYS","useEditorPlugin","useElement","useElementSelector","useCellIndices","TablePlugin","useTableColSizes","useTableCellSize","t0","$","_c","t1","undefined","element","el","api","colSizes","cellIndices","t2","t3","Symbol","for","key","tr","rowSize","_temp","t4","table","getCellSize","node","size","React","TTableCellElement","useEditorPlugin","useElement","usePluginOption","BorderStylesDefault","useCellIndices","useTableValue","TablePlugin","useIsCellSelected","useTableCellBorders","useTableCellSize","TableCellElementState","borders","colIndex","colSpan","isSelectingCell","minHeight","rowIndex","selected","width","useTableCellElement","api","setOption","element","isCellSelected","selectedCells","useEffect","some","v","id","map","rowSizeOverrides","col","row","table","getColSpan","rowSpan","getRowSpan","endingRowIndex","endingColIndex","get","React","TTableElement","ResizeEvent","ResizeHandle","resizeLengthClampStatic","KEYS","useEditorPlugin","useElement","useElementSelector","TableCellElementState","setTableColSize","setTableMarginLeft","setTableRowSize","useOverrideColSize","useOverrideMarginLeft","useOverrideRowSize","TablePlugin","useTableColSizes","roundCellSizeToStep","TableCellElementResizableOptions","step","stepX","stepY","Pick","useTableCellElementResizable","t0","$","_c","colIndex","colSpan","rowIndex","t1","t2","undefined","editor","getOptions","element","t3","disableMarginLeft","minColumnWidth","t4","t5","t6","t7","node","colSizes","Symbol","for","key","table","initialWidth","t8","t9","marginLeft","_temp","t10","disableOverrides","colSizesWithoutOverrides","colSizesWithoutOverridesRef","useRef","t11","t12","current","useEffect","overrideColSize","overrideRowSize","overrideMarginLeft","t13","colIndex_0","width","at","setTimeout","setColSize","t14","rowIndex_0","height","setRowSize","t15","marginLeft_0","setMarginLeft","t16","t17","delta","finished","initialSize","currentInitial","nextInitial","complement","width_0","currentNew","max","min","nextNew","fn","handleResizeRight","event","newHeight","handleResizeBottom","t18","event_0","initial","complement_0","width_1","newMargin","newWidth","handleResizeLeft","hasLeftHandle","t19","options","direction","onResize","t20","t21","t22","t23","t24","t25","t26","bottomProps","hiddenLeft","leftProps","rightProps","node_0","TTableCellElement","KEYS","useEditorPlugin","useEditorSelector","usePluginOption","useReadOnly","getTableGridAbove","isTableRectangular","TablePlugin","useTableMergeState","api","getOptions","disableMerge","canMerge","canSplit","readOnly","someTable","editor","some","match","type","table","selectionExpanded","isExpanded","collapsed","selectedTables","selectedTable","selectedCellEntries","format","length","getColSpan","getRowSpan"],"sources":["../../src/react/onKeyDownTable.ts","../../src/react/TablePlugin.tsx","../../src/react/components/TableCellElement/getOnSelectTableBorderFactory.ts","../../src/react/components/TableCellElement/roundCellSizeToStep.ts","../../src/react/components/TableCellElement/useIsCellSelected.ts","../../src/react/components/TableCellElement/useTableBordersDropdownMenuContentState.ts","../../src/react/hooks/useCellIndices.ts","../../src/react/components/TableCellElement/useTableCellBorders.ts","../../src/react/stores/useTableStore.ts","../../src/react/components/TableElement/useSelectedCells.ts","../../src/react/components/TableElement/useTableColSizes.ts","../../src/react/components/TableElement/useTableElement.ts","../../src/react/components/TableCellElement/useTableCellSize.ts","../../src/react/components/TableCellElement/useTableCellElement.ts","../../src/react/components/TableCellElement/useTableCellElementResizable.ts","../../src/react/hooks/useTableMergeState.ts"],"sourcesContent":["import type { KeyboardHandler } from 'platejs/react';\n\nimport { Hotkeys } from 'platejs';\n\nimport {\n type TableConfig,\n getCellTypes,\n KEY_SHIFT_EDGES,\n moveSelectionFromCell,\n} from '../lib';\n\nexport const onKeyDownTable: KeyboardHandler<TableConfig> = ({\n editor,\n event,\n}) => {\n if (event.defaultPrevented) return;\n\n const compositeKeyCode = 229;\n\n if (\n // This exception only occurs when IME composition is triggered, and can be identified by this keycode\n event.which === compositeKeyCode &&\n editor.selection &&\n editor.api.isExpanded()\n ) {\n // fix the exception of inputting Chinese when selecting multiple cells\n const tdEntries = Array.from(\n editor.api.nodes({\n at: editor.selection,\n match: { type: getCellTypes(editor) },\n })\n );\n\n if (tdEntries.length > 1) {\n editor.tf.collapse({\n edge: 'end',\n });\n\n return;\n }\n }\n\n const isKeyDown: any = {\n 'shift+down': Hotkeys.isExtendDownward(event),\n 'shift+left': Hotkeys.isExtendBackward(event),\n 'shift+right': Hotkeys.isExtendForward(event),\n 'shift+up': Hotkeys.isExtendUpward(event),\n };\n\n Object.keys(isKeyDown).forEach((key) => {\n if (\n isKeyDown[key] && // if many cells are selected\n moveSelectionFromCell(editor, {\n edge: (KEY_SHIFT_EDGES as any)[key],\n reverse: key === 'shift+up',\n })\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n });\n};\n","import { toPlatePlugin } from 'platejs/react';\n\nimport {\n BaseTableCellHeaderPlugin,\n BaseTableCellPlugin,\n BaseTablePlugin,\n BaseTableRowPlugin,\n} from '../lib/BaseTablePlugin';\nimport { onKeyDownTable } from './onKeyDownTable';\n\nexport const TableRowPlugin = toPlatePlugin(BaseTableRowPlugin);\n\nexport const TableCellPlugin = toPlatePlugin(BaseTableCellPlugin);\n\nexport const TableCellHeaderPlugin = toPlatePlugin(BaseTableCellHeaderPlugin);\n\n/** Enables support for tables with React-specific features. */\nexport const TablePlugin = toPlatePlugin(BaseTablePlugin, {\n handlers: {\n onKeyDown: onKeyDownTable,\n },\n plugins: [TableRowPlugin, TableCellPlugin, TableCellHeaderPlugin],\n});\n","import type { SlateEditor, TElement, TTableCellElement } from 'platejs';\n\nimport {\n type BorderDirection,\n getCellIndices,\n getCellTypes,\n getColSpan,\n getLeftTableCell,\n getRowSpan,\n getSelectedCellsBorders,\n getSelectedCellsBoundingBox,\n getTopTableCell,\n isSelectedCellBorder,\n setBorderSize,\n} from '../../../lib';\n\n/** Helper: sets one cell's specific border(s) to `size`. */\nfunction setCellBorderSize(\n editor: SlateEditor,\n cell: TElement,\n directions: BorderDirection[] | 'all',\n size: number\n) {\n const at = editor.api.findPath(cell);\n\n if (!at) return;\n if (directions === 'all') {\n setBorderSize(editor, size, { at, border: 'all' });\n } else {\n for (const dir of directions) {\n setBorderSize(editor, size, { at, border: dir });\n }\n }\n}\n\n/**\n * Toggle logic for `'none'`, `'outer'`, `'top'|'bottom'|'left'|'right'`.\n * `'none'` toggles no borders ↔ all borders, `'outer'` toggles the bounding\n * rectangle's outer edges on/off, `'top'|'bottom'|'left'|'right'` toggles only\n * that side of the bounding rect.\n */\nexport function setSelectedCellsBorder(\n editor: SlateEditor,\n {\n border,\n cells,\n }: {\n border: BorderDirection | 'none' | 'outer';\n cells: TTableCellElement[];\n }\n) {\n if (cells.length === 0) return;\n // 1) none => toggle all edges vs none\n if (border === 'none') {\n const { none: allNone } = getSelectedCellsBorders(editor, cells);\n const newSize = allNone ? 1 : 0;\n\n for (const cell of cells) {\n const cellPath = editor.api.findPath(cell);\n\n if (!cellPath) continue;\n\n const { col, row } = getCellIndices(editor, cell);\n const edges: BorderDirection[] = [];\n\n // For first row or first column cells, we set their top/left borders\n if (row === 0) edges.push('top');\n if (col === 0) edges.push('left');\n\n // Always set bottom and right borders\n edges.push('bottom', 'right');\n\n // For non-first row/column cells, set borders on adjacent cells\n if (row > 0) {\n const cellAboveEntry = getTopTableCell(editor, { at: cellPath });\n\n if (cellAboveEntry) {\n const [cellAbove] = cellAboveEntry;\n setCellBorderSize(editor, cellAbove, ['bottom'], newSize);\n }\n }\n if (col > 0) {\n const prevCellEntry = getLeftTableCell(editor, { at: cellPath });\n\n if (prevCellEntry) {\n const [prevCell] = prevCellEntry;\n setCellBorderSize(editor, prevCell, ['right'], newSize);\n }\n }\n if (edges.length > 0) {\n setCellBorderSize(editor, cell, edges, newSize);\n }\n }\n\n return;\n }\n // 2) outer => bounding rectangle edges only\n if (border === 'outer') {\n const { outer: allOut } = getSelectedCellsBorders(editor, cells);\n const newSize = allOut ? 0 : 1;\n\n const { maxCol, maxRow, minCol, minRow } = getSelectedCellsBoundingBox(\n editor,\n cells\n );\n\n for (const cell of cells) {\n const { col, row } = getCellIndices(editor, cell);\n const cSpan = getColSpan(cell);\n const rSpan = getRowSpan(cell);\n\n for (let rr = row; rr < row + rSpan; rr++) {\n for (let cc = col; cc < col + cSpan; cc++) {\n const edges: BorderDirection[] = [];\n\n if (rr === minRow) edges.push('top');\n if (rr === maxRow) edges.push('bottom');\n if (cc === minCol) edges.push('left');\n if (cc === maxCol) edges.push('right');\n if (edges.length > 0) {\n setCellBorderSize(editor, cell, edges, newSize);\n }\n }\n }\n }\n\n return;\n }\n\n // 3) single side => bounding rectangle but only that side\n const allSet = isSelectedCellBorder(editor, cells, border);\n const newSize = allSet ? 0 : 1;\n\n // bounding box\n const { maxCol, maxRow, minCol, minRow } = getSelectedCellsBoundingBox(\n editor,\n cells\n );\n\n for (const cell of cells) {\n const { col, row } = getCellIndices(editor, cell);\n const cSpan = getColSpan(cell);\n const rSpan = getRowSpan(cell);\n const cellPath = editor.api.findPath(cell);\n\n if (!cellPath) continue;\n\n const edges: BorderDirection[] = [];\n\n if (border === 'top' && row === minRow) {\n const isFirstRow = row === 0;\n\n if (isFirstRow) {\n edges.push('top');\n } else {\n const cellAboveEntry = getTopTableCell(editor, { at: cellPath });\n\n if (cellAboveEntry) {\n const [cellAbove] = cellAboveEntry;\n setCellBorderSize(editor, cellAbove, ['bottom'], newSize);\n }\n }\n }\n if (border === 'bottom' && row + rSpan - 1 === maxRow) {\n edges.push('bottom');\n }\n if (border === 'left' && col === minCol) {\n const isFirstCell = col === 0;\n\n if (isFirstCell) {\n edges.push('left');\n } else {\n const prevCellEntry = getLeftTableCell(editor, { at: cellPath });\n\n if (prevCellEntry) {\n const [prevCell] = prevCellEntry;\n setCellBorderSize(editor, prevCell, ['right'], newSize);\n }\n }\n }\n if (border === 'right' && col + cSpan - 1 === maxCol) {\n edges.push('right');\n }\n if (edges.length > 0) {\n setCellBorderSize(editor, cell, edges, newSize);\n }\n }\n}\n\n/**\n * Returns a function that sets borders on the selection with toggling logic. If\n * selection has one or many cells, it's the same approach: we read the bounding\n * rectangle, then decide which edges to flip on/off.\n */\nexport const getOnSelectTableBorderFactory =\n (editor: SlateEditor, selectedCells: TElement[] | null) =>\n (border: BorderDirection | 'none' | 'outer') =>\n () => {\n let cells = selectedCells;\n\n if (!cells || cells.length === 0) {\n const cell = editor.api.block({ match: { type: getCellTypes(editor) } });\n\n if (cell) {\n cells = [cell[0]];\n } else {\n return;\n }\n }\n\n // Convert them to TTableCellElement\n const cellElems = cells.map((v) => v as TTableCellElement);\n setSelectedCellsBorder(editor, { border, cells: cellElems });\n };\n","/**\n * Rounds a cell size to the nearest step, or returns the size if the step is\n * not set.\n */\nexport const roundCellSizeToStep = (size: number, step?: number) =>\n step ? Math.round(size / step) * step : size;\n","import type { TElement } from 'platejs';\n\nimport { usePluginOption } from 'platejs/react';\n\nimport { TablePlugin } from '../../TablePlugin';\n\nexport const useIsCellSelected = (element: TElement) => {\n const selectedCells = usePluginOption(TablePlugin, 'selectedCells');\n\n return !!selectedCells?.includes(element);\n};\n","import type { TTableElement } from 'platejs';\n\nimport {\n useEditorPlugin,\n useEditorSelector,\n useElement,\n usePluginOption,\n} from 'platejs/react';\n\nimport {\n type TableBorderStates,\n getSelectedCellsBorders,\n} from '../../../lib/queries/getSelectedCellsBorders';\nimport { TablePlugin } from '../../TablePlugin';\nimport { getOnSelectTableBorderFactory } from './getOnSelectTableBorderFactory';\n\nexport const useTableBordersDropdownMenuContentState = ({\n element: el,\n}: {\n element?: TTableElement;\n} = {}) => {\n const { editor } = useEditorPlugin(TablePlugin);\n const element = useElement() ?? el;\n const selectedCells = usePluginOption(TablePlugin, 'selectedCells');\n const borderStates = useEditorSelector<TableBorderStates>(\n (editor) => getSelectedCellsBorders(editor, selectedCells),\n [selectedCells, element]\n );\n\n return {\n getOnSelectTableBorder: getOnSelectTableBorderFactory(\n editor,\n selectedCells\n ),\n hasBottomBorder: borderStates.bottom,\n hasLeftBorder: borderStates.left,\n hasNoBorders: borderStates.none,\n hasOuterBorders: borderStates.outer,\n hasRightBorder: borderStates.right,\n hasTopBorder: borderStates.top,\n };\n};\n","import React from 'react';\n\nimport type { TTableCellElement } from 'platejs';\n\nimport { useEditorPlugin, useElement, usePluginOption } from 'platejs/react';\n\nimport { computeCellIndices } from '../../lib';\nimport { TablePlugin } from '../TablePlugin';\n\nexport const useCellIndices = () => {\n const { editor } = useEditorPlugin(TablePlugin);\n const element = useElement<TTableCellElement>();\n const cellIndices = usePluginOption(TablePlugin, 'cellIndices', element.id!);\n\n return React.useMemo(() => {\n if (!cellIndices) {\n return (\n computeCellIndices(editor, {\n cellNode: element,\n }) ?? { col: 0, row: 0 }\n );\n }\n\n return cellIndices ?? { col: 0, row: 0 };\n }, [cellIndices, editor, element]);\n};\n","import React from 'react';\n\nimport type { TTableCellElement } from 'platejs';\n\nimport { useEditorPlugin, useElement } from 'platejs/react';\n\nimport { getTableCellBorders } from '../../../lib';\nimport { useCellIndices } from '../../hooks/useCellIndices';\nimport { TablePlugin } from '../../TablePlugin';\n\nexport function useTableCellBorders({\n element: el,\n}: {\n element?: TTableCellElement;\n} = {}) {\n const { editor } = useEditorPlugin(TablePlugin);\n const element = useElement<TTableCellElement>() ?? el;\n const cellIndices = useCellIndices();\n\n return React.useMemo(\n () => getTableCellBorders(editor, { cellIndices, element }),\n [editor, element, cellIndices]\n );\n}\n","import React from 'react';\n\nimport { atom, createAtomStore } from 'platejs/react';\n\nimport type { TableStoreSizeOverrides } from '../../lib';\n\nexport const {\n TableProvider,\n tableStore,\n useTableSet,\n useTableState,\n useTableStore,\n useTableValue,\n} = createAtomStore(\n {\n colSizeOverrides: atom(new Map() as TableStoreSizeOverrides),\n marginLeftOverride: null as number | null,\n rowSizeOverrides: atom(new Map() as TableStoreSizeOverrides),\n },\n { name: 'table' as const }\n) as any;\n\nconst useOverrideSizeFactory = (\n setOverrides: (\n fn: (overrides: TableStoreSizeOverrides) => TableStoreSizeOverrides\n ) => void\n) =>\n React.useCallback(\n (index: number, size: number | null) => {\n setOverrides((overrides) => {\n const newOverrides = new Map(overrides);\n\n if (size === null) {\n newOverrides.delete(index);\n } else {\n newOverrides.set(index, size);\n }\n\n return newOverrides;\n });\n },\n [setOverrides]\n );\n\nexport const useOverrideColSize = () => {\n const setColSizeOverrides = useTableSet('colSizeOverrides');\n\n return useOverrideSizeFactory(setColSizeOverrides);\n};\n\nexport const useOverrideRowSize = () => {\n const setRowSizeOverrides = useTableSet('rowSizeOverrides');\n\n return useOverrideSizeFactory(setRowSizeOverrides);\n};\n\nexport const useOverrideMarginLeft = () => useTableSet('marginLeftOverride');\n","import React from 'react';\n\nimport {\n useEditorPlugin,\n useEditorRef,\n useEditorSelection,\n usePluginOption,\n useReadOnly,\n useSelected,\n} from 'platejs/react';\n\nimport { getTableGridAbove } from '../../../lib';\nimport { TablePlugin } from '../../TablePlugin';\n\n/**\n * Many grid cells above and diff -> set No many grid cells above and diff ->\n * unset No selection -> unset\n */\nexport const useSelectedCells = () => {\n const readOnly = useReadOnly();\n const selected = useSelected();\n const editor = useEditorRef();\n const selection = useEditorSelection();\n\n const { setOption } = useEditorPlugin(TablePlugin);\n const selectedCells = usePluginOption(TablePlugin, 'selectedCells');\n\n React.useEffect(() => {\n if (!selected || readOnly) {\n setOption('selectedCells', null);\n setOption('selectedTables', null);\n }\n }, [selected, editor, readOnly, setOption]);\n\n React.useEffect(() => {\n if (readOnly) return;\n\n const tableEntries = getTableGridAbove(editor, { format: 'table' });\n const cellEntries = getTableGridAbove(editor, { format: 'cell' });\n\n if (cellEntries?.length > 1) {\n const cells = cellEntries.map((entry) => entry[0]);\n const tables = tableEntries.map((entry) => entry[0]);\n\n if (JSON.stringify(cells) !== JSON.stringify(selectedCells)) {\n setOption('selectedCells', cells);\n setOption('selectedTables', tables);\n }\n } else if (selectedCells) {\n setOption('selectedCells', null);\n setOption('selectedTables', null);\n }\n }, [editor, selection, readOnly, selectedCells, setOption]);\n};\n","import { KEYS, PathApi } from 'platejs';\nimport { useElementSelector } from 'platejs/react';\n\nimport { getTableOverriddenColSizes } from '../../../lib';\nimport { useTableValue } from '../../stores';\n\n/**\n * Returns colSizes with overrides applied. Unset node.colSizes if `colCount`\n * updates to 1.\n */\nexport const useTableColSizes = ({\n disableOverrides = false,\n transformColSizes,\n}: {\n disableOverrides?: boolean;\n transformColSizes?: (colSizes: number[]) => number[];\n} = {}): number[] => {\n const colSizeOverrides = useTableValue('colSizeOverrides');\n\n const overriddenColSizes = useElementSelector(\n ([tableNode]) => {\n const colSizes = getTableOverriddenColSizes(\n tableNode,\n disableOverrides ? undefined : colSizeOverrides\n );\n\n if (transformColSizes) {\n return transformColSizes(colSizes);\n }\n\n return colSizes;\n },\n [disableOverrides, colSizeOverrides, transformColSizes],\n {\n key: KEYS.table,\n equalityFn: (a, b) => !!a && !!b && PathApi.equals(a, b),\n }\n );\n\n return overriddenColSizes;\n};\n","import type { TTableElement } from 'platejs';\n\nimport { useEditorPlugin, useElement, usePluginOption } from 'platejs/react';\n\nimport { useTableValue } from '../../stores';\nimport { TablePlugin } from '../../TablePlugin';\nimport { useSelectedCells } from './useSelectedCells';\n\nexport const useTableElement = () => {\n const { editor, getOptions } = useEditorPlugin(TablePlugin);\n\n const { disableMarginLeft } = getOptions();\n\n const element = useElement<TTableElement>();\n const selectedCells = usePluginOption(TablePlugin, 'selectedCells');\n const marginLeftOverride = useTableValue('marginLeftOverride');\n\n const marginLeft = disableMarginLeft\n ? 0\n : (marginLeftOverride ?? element.marginLeft ?? 0);\n\n useSelectedCells();\n\n return {\n isSelectingCell: !!selectedCells,\n marginLeft,\n props: {\n onMouseDown: () => {\n // until cell dnd is supported, we collapse the selection on mouse down\n if (selectedCells) {\n editor.tf.collapse();\n }\n },\n },\n };\n};\n","import React from 'react';\n\nimport type { NodeEntry, TTableCellElement, TTableRowElement } from 'platejs';\n\nimport { KEYS } from 'platejs';\nimport { useEditorPlugin, useElement, useElementSelector } from 'platejs/react';\n\nimport { useCellIndices } from '../../hooks/useCellIndices';\nimport { TablePlugin } from '../../TablePlugin';\nimport { useTableColSizes } from '../TableElement';\n\nexport function useTableCellSize({\n element: el,\n}: {\n element?: TTableCellElement;\n} = {}) {\n const { api } = useEditorPlugin(TablePlugin);\n\n const element = useElement() ?? el;\n const colSizes = useTableColSizes();\n const cellIndices = useCellIndices();\n const rowSize = useElementSelector(\n ([node]: NodeEntry<TTableRowElement>) => node.size,\n [],\n {\n key: KEYS.tr,\n }\n );\n\n return React.useMemo(\n () => api.table.getCellSize({ cellIndices, colSizes, element, rowSize }),\n [api.table, cellIndices, colSizes, element, rowSize]\n );\n}\n","import React from 'react';\n\nimport type { TTableCellElement } from 'platejs';\n\nimport { useEditorPlugin, useElement, usePluginOption } from 'platejs/react';\n\nimport type { BorderStylesDefault } from '../../../lib';\n\nimport { useCellIndices } from '../../hooks/useCellIndices';\nimport { useTableValue } from '../../stores';\nimport { TablePlugin } from '../../TablePlugin';\nimport { useIsCellSelected } from './useIsCellSelected';\nimport { useTableCellBorders } from './useTableCellBorders';\nimport { useTableCellSize } from './useTableCellSize';\n\nexport type TableCellElementState = {\n borders: BorderStylesDefault;\n colIndex: number;\n colSpan: number;\n isSelectingCell: boolean;\n minHeight: number | undefined;\n rowIndex: number;\n selected: boolean;\n width: number | string;\n};\n\nexport const useTableCellElement = (): TableCellElementState => {\n const { api, setOption } = useEditorPlugin(TablePlugin);\n const element = useElement<TTableCellElement>();\n const isCellSelected = useIsCellSelected(element);\n const selectedCells = usePluginOption(TablePlugin, 'selectedCells');\n\n // Sync element transforms with selected cells\n React.useEffect(() => {\n if (selectedCells?.some((v) => v.id === element.id && element !== v)) {\n setOption(\n 'selectedCells',\n selectedCells.map((v) => (v.id === element.id ? element : v))\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [element]);\n\n const rowSizeOverrides = useTableValue('rowSizeOverrides');\n const { minHeight, width } = useTableCellSize({ element });\n const borders = useTableCellBorders({ element });\n\n /**\n * Row size: if rowSpan > 1, we might look up the rowSize for the bottom row\n * or you can do something simpler if row-spanning is unusual in your app.\n */\n const { col, row } = useCellIndices();\n const colSpan = api.table.getColSpan(element);\n const rowSpan = api.table.getRowSpan(element);\n const endingRowIndex = row + rowSpan - 1;\n const endingColIndex = col + colSpan - 1;\n\n return {\n borders,\n colIndex: endingColIndex,\n colSpan,\n isSelectingCell: !!selectedCells,\n minHeight: rowSizeOverrides.get?.(endingRowIndex) ?? minHeight,\n rowIndex: endingRowIndex,\n selected: isCellSelected,\n width,\n };\n};\n","import React from 'react';\n\nimport type { TTableElement } from 'platejs';\n\nimport {\n type ResizeEvent,\n type ResizeHandle,\n resizeLengthClampStatic,\n} from '@platejs/resizable';\nimport { KEYS } from 'platejs';\nimport { useEditorPlugin, useElement, useElementSelector } from 'platejs/react';\n\nimport type { TableCellElementState } from './useTableCellElement';\n\nimport {\n setTableColSize,\n setTableMarginLeft,\n setTableRowSize,\n} from '../../../lib';\nimport {\n useOverrideColSize,\n useOverrideMarginLeft,\n useOverrideRowSize,\n} from '../../stores';\nimport { TablePlugin } from '../../TablePlugin';\nimport { useTableColSizes } from '../TableElement/useTableColSizes';\nimport { roundCellSizeToStep } from './roundCellSizeToStep';\n\nexport type TableCellElementResizableOptions = {\n /** Resize by step instead of by pixel. */\n step?: number;\n /** Overrides for X and Y axes. */\n stepX?: number;\n stepY?: number;\n} & Pick<TableCellElementState, 'colIndex' | 'colSpan' | 'rowIndex'>;\n\nexport const useTableCellElementResizable = ({\n colIndex,\n colSpan,\n rowIndex,\n step,\n stepX = step,\n stepY = step,\n}: TableCellElementResizableOptions): {\n bottomProps: React.ComponentPropsWithoutRef<typeof ResizeHandle>;\n hiddenLeft: boolean;\n leftProps: React.ComponentPropsWithoutRef<typeof ResizeHandle>;\n rightProps: React.ComponentPropsWithoutRef<typeof ResizeHandle>;\n} => {\n const { editor, getOptions } = useEditorPlugin(TablePlugin);\n const element = useElement();\n const { disableMarginLeft, minColumnWidth = 0 } = getOptions();\n\n const initialWidth = useElementSelector(\n ([node]) =>\n colSpan > 1 ? (node as TTableElement).colSizes?.[colIndex] : undefined,\n [colSpan, colIndex],\n { key: KEYS.table }\n );\n const marginLeft = useElementSelector(\n ([node]) => (node as TTableElement).marginLeft ?? 0,\n [],\n { key: KEYS.table }\n );\n\n const colSizesWithoutOverrides = useTableColSizes({ disableOverrides: true });\n const colSizesWithoutOverridesRef = React.useRef(colSizesWithoutOverrides);\n React.useEffect(() => {\n colSizesWithoutOverridesRef.current = colSizesWithoutOverrides;\n }, [colSizesWithoutOverrides]);\n\n const overrideColSize = useOverrideColSize();\n const overrideRowSize = useOverrideRowSize();\n const overrideMarginLeft = useOverrideMarginLeft();\n\n const setColSize = React.useCallback(\n (colIndex: number, width: number) => {\n setTableColSize(editor, { colIndex, width }, { at: element });\n\n // Prevent flickering\n setTimeout(() => overrideColSize(colIndex, null), 0);\n },\n [editor, element, overrideColSize]\n );\n\n const setRowSize = React.useCallback(\n (rowIndex: number, height: number) => {\n setTableRowSize(editor, { height, rowIndex }, { at: element });\n\n // Prevent flickering\n setTimeout(() => overrideRowSize(rowIndex, null), 0);\n },\n [editor, element, overrideRowSize]\n );\n\n const setMarginLeft = React.useCallback(\n (marginLeft: number) => {\n setTableMarginLeft(editor, { marginLeft }, { at: element });\n\n // Prevent flickering\n setTimeout(() => overrideMarginLeft(null), 0);\n },\n [editor, element, overrideMarginLeft]\n );\n\n const handleResizeRight = React.useCallback(\n ({ delta, finished, initialSize: currentInitial }: ResizeEvent) => {\n const nextInitial = colSizesWithoutOverridesRef.current[colIndex + 1];\n\n const complement = (width: number) =>\n currentInitial + nextInitial - width;\n\n const currentNew = roundCellSizeToStep(\n resizeLengthClampStatic(currentInitial + delta, {\n max: nextInitial ? complement(minColumnWidth) : undefined,\n min: minColumnWidth,\n }),\n stepX\n );\n\n const nextNew = nextInitial ? complement(currentNew) : undefined;\n\n const fn = finished ? setColSize : overrideColSize;\n fn(colIndex, currentNew);\n\n if (nextNew) fn(colIndex + 1, nextNew);\n },\n [colIndex, minColumnWidth, overrideColSize, setColSize, stepX]\n );\n\n const handleResizeBottom = React.useCallback(\n (event: ResizeEvent) => {\n const newHeight = roundCellSizeToStep(\n event.initialSize + event.delta,\n stepY\n );\n\n if (event.finished) {\n setRowSize(rowIndex, newHeight);\n } else {\n overrideRowSize(rowIndex, newHeight);\n }\n },\n [overrideRowSize, rowIndex, setRowSize, stepY]\n );\n\n const handleResizeLeft = React.useCallback(\n (event: ResizeEvent) => {\n const initial = colSizesWithoutOverridesRef.current[colIndex];\n\n const complement = (width: number) => initial + marginLeft - width;\n\n const newMargin = roundCellSizeToStep(\n resizeLengthClampStatic(marginLeft + event.delta, {\n max: complement(minColumnWidth),\n min: 0,\n }),\n stepX\n );\n\n const newWidth = complement(newMargin);\n\n if (event.finished) {\n setMarginLeft(newMargin);\n setColSize(colIndex, newWidth);\n } else {\n overrideMarginLeft(newMargin);\n overrideColSize(colIndex, newWidth);\n }\n },\n [\n colIndex,\n marginLeft,\n minColumnWidth,\n overrideColSize,\n overrideMarginLeft,\n setColSize,\n setMarginLeft,\n stepX,\n ]\n );\n\n const hasLeftHandle = colIndex === 0 && !disableMarginLeft;\n\n return {\n bottomProps: React.useMemo(\n () => ({\n options: {\n direction: 'bottom',\n onResize: handleResizeBottom,\n },\n }),\n [handleResizeBottom]\n ),\n hiddenLeft: !hasLeftHandle,\n leftProps: React.useMemo(\n () => ({\n options: {\n direction: 'left',\n onResize: handleResizeLeft,\n },\n }),\n [handleResizeLeft]\n ),\n rightProps: React.useMemo(\n () => ({\n options: {\n direction: 'right',\n initialSize: initialWidth,\n onResize: handleResizeRight,\n },\n }),\n [initialWidth, handleResizeRight]\n ),\n };\n};\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport type { TTableCellElement } from 'platejs';\n\nimport { KEYS } from 'platejs';\nimport {\n useEditorPlugin,\n useEditorSelector,\n usePluginOption,\n useReadOnly,\n} from 'platejs/react';\n\nimport { getTableGridAbove, isTableRectangular } from '../../lib';\nimport { TablePlugin } from '../TablePlugin';\n\nexport const useTableMergeState = () => {\n const { api, getOptions } = useEditorPlugin(TablePlugin);\n\n const { disableMerge } = getOptions();\n\n if (disableMerge) return { canMerge: false, canSplit: false };\n\n const readOnly = useReadOnly();\n const someTable = useEditorSelector(\n (editor) => editor.api.some({ match: { type: KEYS.table } }),\n []\n );\n const selectionExpanded = useEditorSelector(\n (editor) => editor.api.isExpanded(),\n []\n );\n\n const collapsed = !readOnly && someTable && !selectionExpanded;\n const selectedTables = usePluginOption(TablePlugin, 'selectedTables');\n const selectedTable = selectedTables?.[0];\n\n const selectedCellEntries = useEditorSelector(\n (editor) =>\n getTableGridAbove(editor, {\n format: 'cell',\n }),\n []\n );\n\n if (!selectedCellEntries) return { canMerge: false, canSplit: false };\n\n const canMerge =\n !readOnly &&\n someTable &&\n selectionExpanded &&\n selectedCellEntries.length > 1 &&\n isTableRectangular(selectedTable);\n\n const canSplit =\n collapsed &&\n selectedCellEntries.length === 1 &&\n (api.table.getColSpan(selectedCellEntries[0][0] as TTableCellElement) > 1 ||\n api.table.getRowSpan(selectedCellEntries[0][0] as TTableCellElement) > 1);\n\n return { canMerge, canSplit };\n};\n"],"mappings":"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"}
|