@milkdown/crepe 7.5.0 → 7.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/{index--tnUmqZ_.js → index--2zEz40J.js} +8 -23
- package/lib/cjs/{index--tnUmqZ_.js.map → index--2zEz40J.js.map} +1 -1
- package/lib/cjs/{index-92bwto5V.js → index-5n9R-QCl.js} +5 -20
- package/lib/cjs/{index-92bwto5V.js.map → index-5n9R-QCl.js.map} +1 -1
- package/lib/cjs/{index-HH5lPgpj.js → index-HEdBw63r.js} +8 -23
- package/lib/cjs/{index-HH5lPgpj.js.map → index-HEdBw63r.js.map} +1 -1
- package/lib/cjs/{index-J1-yHn7v.js → index-Hlt9dRH5.js} +5 -20
- package/lib/cjs/{index-J1-yHn7v.js.map → index-Hlt9dRH5.js.map} +1 -1
- package/lib/cjs/{index-cb-5m0vG.js → index-KCW2CzRk.js} +8 -23
- package/lib/cjs/index-KCW2CzRk.js.map +1 -0
- package/lib/cjs/{index-VYwHTL3F.js → index-KSZhahYb.js} +6 -21
- package/lib/cjs/{index-VYwHTL3F.js.map → index-KSZhahYb.js.map} +1 -1
- package/lib/cjs/index-N1cRxqdw.js +39 -0
- package/lib/cjs/index-N1cRxqdw.js.map +1 -0
- package/lib/cjs/{index-c_OzudR7.js → index-NNo_VSEA.js} +5 -20
- package/lib/{esm/index-DS7Z4Ach.js.map → cjs/index-NNo_VSEA.js.map} +1 -1
- package/lib/cjs/{index-Tjg8KyK7.js → index-O1bDbloo.js} +5 -20
- package/lib/{esm/index-eqd5wtjX.js.map → cjs/index-O1bDbloo.js.map} +1 -1
- package/lib/cjs/{index-55VIM-52.js → index-OPh9naof.js} +8 -23
- package/lib/cjs/{index-55VIM-52.js.map → index-OPh9naof.js.map} +1 -1
- package/lib/cjs/{index-E4Ist86Z.js → index-PAhfZtcH.js} +5 -20
- package/lib/cjs/{index-E4Ist86Z.js.map → index-PAhfZtcH.js.map} +1 -1
- package/lib/cjs/{index-vfzLCXfi.js → index-PeRHVz4A.js} +5 -20
- package/lib/{esm/index-3bDzhU6z.js.map → cjs/index-PeRHVz4A.js.map} +1 -1
- package/lib/cjs/{index-Jztk6JlP.js → index-U7GWrg-w.js} +9 -456
- package/lib/cjs/index-U7GWrg-w.js.map +1 -0
- package/lib/cjs/{index-zXSAHvAj.js → index-UTb0Az5e.js} +2 -2
- package/lib/cjs/{index-zXSAHvAj.js.map → index-UTb0Az5e.js.map} +1 -1
- package/lib/cjs/{index-lBumFRUQ.js → index-UnEAyH8X.js} +5 -20
- package/lib/cjs/{index-lBumFRUQ.js.map → index-UnEAyH8X.js.map} +1 -1
- package/lib/cjs/{index-1vHyMXH8.js → index-VCkq0ru1.js} +5 -20
- package/lib/{esm/index-g_3dzLYU.js.map → cjs/index-VCkq0ru1.js.map} +1 -1
- package/lib/cjs/{index-FbNqlZU8.js → index-WQl7Du53.js} +4 -19
- package/lib/cjs/index-WQl7Du53.js.map +1 -0
- package/lib/cjs/{index-nTfDKYYi.js → index-ahL5MvrQ.js} +28 -43
- package/lib/cjs/{index-nTfDKYYi.js.map → index-ahL5MvrQ.js.map} +1 -1
- package/lib/cjs/{index--sa4NMpW.js → index-bpgWLeRY.js} +5 -20
- package/lib/cjs/{index--sa4NMpW.js.map → index-bpgWLeRY.js.map} +1 -1
- package/lib/cjs/index-dEVmN_aj.js +26 -0
- package/lib/cjs/index-dEVmN_aj.js.map +1 -0
- package/lib/cjs/{index-von4W2LG.js → index-fZupvR_f.js} +8 -23
- package/lib/{esm/index-NZ5-xr5_.js.map → cjs/index-fZupvR_f.js.map} +1 -1
- package/lib/cjs/{index-mcxgNBq9.js → index-gSM-jgti.js} +5 -20
- package/lib/cjs/{index-mcxgNBq9.js.map → index-gSM-jgti.js.map} +1 -1
- package/lib/cjs/{index-lUNj3xuC.js → index-jlPr_A_N.js} +5 -20
- package/lib/cjs/{index-lUNj3xuC.js.map → index-jlPr_A_N.js.map} +1 -1
- package/lib/cjs/index-ocxd4A-M.js +675 -0
- package/lib/cjs/index-ocxd4A-M.js.map +1 -0
- package/lib/cjs/{index-J3XY9IPt.js → index-rFFAL9YA.js} +9 -17
- package/lib/cjs/{index-J3XY9IPt.js.map → index-rFFAL9YA.js.map} +1 -1
- package/lib/cjs/index-tlx25I_m.js +36 -0
- package/lib/cjs/index-tlx25I_m.js.map +1 -0
- package/lib/cjs/index-tqAbVyds.js +28 -0
- package/lib/cjs/index-tqAbVyds.js.map +1 -0
- package/lib/cjs/{index-cpC-j5Nt.js → index-udZSknd8.js} +30 -39
- package/lib/cjs/{index-cpC-j5Nt.js.map → index-udZSknd8.js.map} +1 -1
- package/lib/cjs/index-uleaJDBC.js +19 -0
- package/lib/cjs/index-uleaJDBC.js.map +1 -0
- package/lib/cjs/{index-jn036wuh.js → index-urB-WDqA.js} +7 -22
- package/lib/{esm/index-VoX_n1l_.js.map → cjs/index-urB-WDqA.js.map} +1 -1
- package/lib/cjs/{index-jlfsu92T.js → index-xWgWtxUR.js} +6 -21
- package/lib/cjs/{index-jlfsu92T.js.map → index-xWgWtxUR.js.map} +1 -1
- package/lib/cjs/index.js +150 -14
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/{todoList-Ze4FLMlx.js → todoList-YYRQo7wG.js} +1 -12
- package/lib/cjs/todoList-YYRQo7wG.js.map +1 -0
- package/lib/esm/{index-Yuj7sNhQ.js → index-1NetiFdJ.js} +8 -23
- package/lib/esm/{index-Yuj7sNhQ.js.map → index-1NetiFdJ.js.map} +1 -1
- package/lib/esm/{index-6GrVnloh.js → index-2I_xbjAZ.js} +28 -43
- package/lib/esm/{index-6GrVnloh.js.map → index-2I_xbjAZ.js.map} +1 -1
- package/lib/esm/{index-bexsWrgs.js → index-2huXYfuJ.js} +8 -23
- package/lib/esm/{index-bexsWrgs.js.map → index-2huXYfuJ.js.map} +1 -1
- package/lib/esm/{index-zrQXXSXm.js → index-4x6_TVZv.js} +5 -20
- package/lib/esm/{index-zrQXXSXm.js.map → index-4x6_TVZv.js.map} +1 -1
- package/lib/esm/index-6JoGWH2I.js +17 -0
- package/lib/esm/index-6JoGWH2I.js.map +1 -0
- package/lib/esm/{index-OpUb5xP6.js → index-A-dNwMMf.js} +2 -2
- package/lib/esm/{index-OpUb5xP6.js.map → index-A-dNwMMf.js.map} +1 -1
- package/lib/esm/{index-SDPCpsD5.js → index-AV99ipmP.js} +5 -20
- package/lib/esm/{index-SDPCpsD5.js.map → index-AV99ipmP.js.map} +1 -1
- package/lib/esm/{index-MB6wQe1U.js → index-CMGDOz11.js} +5 -13
- package/lib/esm/{index-MB6wQe1U.js.map → index-CMGDOz11.js.map} +1 -1
- package/lib/esm/index-HlPKwzLC.js +34 -0
- package/lib/esm/index-HlPKwzLC.js.map +1 -0
- package/lib/esm/{index-MxgqkRtj.js → index-PC2bahtq.js} +5 -20
- package/lib/esm/{index-MxgqkRtj.js.map → index-PC2bahtq.js.map} +1 -1
- package/lib/esm/{index-eqd5wtjX.js → index-QBYz82jZ.js} +5 -20
- package/lib/{cjs/index-Tjg8KyK7.js.map → esm/index-QBYz82jZ.js.map} +1 -1
- package/lib/esm/{index-VP76m4nW.js → index-W1pAMr_8.js} +6 -21
- package/lib/esm/{index-VP76m4nW.js.map → index-W1pAMr_8.js.map} +1 -1
- package/lib/esm/{index-i79QMXpJ.js → index-Xzdc2jbA.js} +7 -454
- package/lib/esm/index-Xzdc2jbA.js.map +1 -0
- package/lib/esm/{index-_4fWmRbN.js → index-ZAtZWqJQ.js} +5 -20
- package/lib/esm/{index-_4fWmRbN.js.map → index-ZAtZWqJQ.js.map} +1 -1
- package/lib/esm/index-_A9vu1ED.js +673 -0
- package/lib/esm/index-_A9vu1ED.js.map +1 -0
- package/lib/esm/{index-x8SyiPMC.js → index-bnSKBrbD.js} +5 -20
- package/lib/esm/{index-x8SyiPMC.js.map → index-bnSKBrbD.js.map} +1 -1
- package/lib/esm/index-fVrfHXda.js +24 -0
- package/lib/esm/index-fVrfHXda.js.map +1 -0
- package/lib/esm/{index-Vl0W0S3h.js → index-ftnOhuRS.js} +4 -19
- package/lib/esm/index-ftnOhuRS.js.map +1 -0
- package/lib/esm/{index-1l-61HI-.js → index-iQPB0Rdl.js} +6 -21
- package/lib/esm/{index-1l-61HI-.js.map → index-iQPB0Rdl.js.map} +1 -1
- package/lib/esm/{index-grT-Kuf2.js → index-kPj3-TKp.js} +5 -20
- package/lib/esm/{index-grT-Kuf2.js.map → index-kPj3-TKp.js.map} +1 -1
- package/lib/esm/{index-NZ5-xr5_.js → index-kgOR7SZ6.js} +8 -23
- package/lib/{cjs/index-von4W2LG.js.map → esm/index-kgOR7SZ6.js.map} +1 -1
- package/lib/esm/{index-A83StUe6.js → index-lm00PM0y.js} +8 -17
- package/lib/esm/{index-A83StUe6.js.map → index-lm00PM0y.js.map} +1 -1
- package/lib/esm/{index-g_3dzLYU.js → index-m49Bj3q7.js} +5 -20
- package/lib/{cjs/index-1vHyMXH8.js.map → esm/index-m49Bj3q7.js.map} +1 -1
- package/lib/esm/index-ohmbt6Ys.js +37 -0
- package/lib/esm/index-ohmbt6Ys.js.map +1 -0
- package/lib/esm/{index-rvOBAXap.js → index-sWVjGw-3.js} +8 -23
- package/lib/esm/index-sWVjGw-3.js.map +1 -0
- package/lib/esm/{index-DS7Z4Ach.js → index-twh8lL5o.js} +5 -20
- package/lib/{cjs/index-c_OzudR7.js.map → esm/index-twh8lL5o.js.map} +1 -1
- package/lib/esm/{index-3bDzhU6z.js → index-v02MCz4_.js} +5 -20
- package/lib/{cjs/index-vfzLCXfi.js.map → esm/index-v02MCz4_.js.map} +1 -1
- package/lib/esm/index-v3rvbocl.js +26 -0
- package/lib/esm/index-v3rvbocl.js.map +1 -0
- package/lib/esm/{index-XH7OnwZl.js → index-wEXT8mbN.js} +5 -20
- package/lib/esm/{index-XH7OnwZl.js.map → index-wEXT8mbN.js.map} +1 -1
- package/lib/esm/{index-VoX_n1l_.js → index-wFIac5Kw.js} +7 -22
- package/lib/{cjs/index-jn036wuh.js.map → esm/index-wFIac5Kw.js.map} +1 -1
- package/lib/esm/{index-3HeWs5rX.js → index-wg94ewRo.js} +8 -23
- package/lib/esm/{index-3HeWs5rX.js.map → index-wg94ewRo.js.map} +1 -1
- package/lib/esm/index.js +152 -12
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/{todoList-M-PGJKde.js → todoList-9QsDDcmB.js} +2 -12
- package/lib/esm/todoList-9QsDDcmB.js.map +1 -0
- package/package.json +1 -1
- package/lib/cjs/_view-N32ied53.js +0 -27
- package/lib/cjs/_view-N32ied53.js.map +0 -1
- package/lib/cjs/floating-ui.dom-2cjBpir5.js +0 -1134
- package/lib/cjs/floating-ui.dom-2cjBpir5.js.map +0 -1
- package/lib/cjs/helper-1aludV1Z.js +0 -15
- package/lib/cjs/helper-1aludV1Z.js.map +0 -1
- package/lib/cjs/index-28q261C7.js +0 -448
- package/lib/cjs/index-28q261C7.js.map +0 -1
- package/lib/cjs/index-Buu2tD9O.js +0 -534
- package/lib/cjs/index-Buu2tD9O.js.map +0 -1
- package/lib/cjs/index-FbNqlZU8.js.map +0 -1
- package/lib/cjs/index-Jztk6JlP.js.map +0 -1
- package/lib/cjs/index-N6pPZY61.js +0 -191
- package/lib/cjs/index-N6pPZY61.js.map +0 -1
- package/lib/cjs/index-TUJs6KKL.js +0 -472
- package/lib/cjs/index-TUJs6KKL.js.map +0 -1
- package/lib/cjs/index-_GOdKqUK.js +0 -1147
- package/lib/cjs/index-_GOdKqUK.js.map +0 -1
- package/lib/cjs/index-cKQcw-eu.js +0 -386
- package/lib/cjs/index-cKQcw-eu.js.map +0 -1
- package/lib/cjs/index-cb-5m0vG.js.map +0 -1
- package/lib/cjs/index-crv_k6dv.js +0 -1353
- package/lib/cjs/index-crv_k6dv.js.map +0 -1
- package/lib/cjs/index-kqz-P6o6.js +0 -55
- package/lib/cjs/index-kqz-P6o6.js.map +0 -1
- package/lib/cjs/index-tBw4NmwY.js +0 -33852
- package/lib/cjs/index-tBw4NmwY.js.map +0 -1
- package/lib/cjs/schema-RVrwDDcq.js +0 -74
- package/lib/cjs/schema-RVrwDDcq.js.map +0 -1
- package/lib/cjs/todoList-Ze4FLMlx.js.map +0 -1
- package/lib/cjs/tooltip-plugin--lhebztC.js +0 -191
- package/lib/cjs/tooltip-plugin--lhebztC.js.map +0 -1
- package/lib/esm/_view-IlZC8FA6.js +0 -25
- package/lib/esm/_view-IlZC8FA6.js.map +0 -1
- package/lib/esm/floating-ui.dom-CAYjY8Gv.js +0 -1130
- package/lib/esm/floating-ui.dom-CAYjY8Gv.js.map +0 -1
- package/lib/esm/helper-wZAtC67x.js +0 -13
- package/lib/esm/helper-wZAtC67x.js.map +0 -1
- package/lib/esm/index-0-j8Icms.js +0 -384
- package/lib/esm/index-0-j8Icms.js.map +0 -1
- package/lib/esm/index-8QJbxTYk.js +0 -1145
- package/lib/esm/index-8QJbxTYk.js.map +0 -1
- package/lib/esm/index-9w_hdnvb.js +0 -532
- package/lib/esm/index-9w_hdnvb.js.map +0 -1
- package/lib/esm/index-AOoFzBaK.js +0 -53
- package/lib/esm/index-AOoFzBaK.js.map +0 -1
- package/lib/esm/index-LAdX6LsO.js +0 -33805
- package/lib/esm/index-LAdX6LsO.js.map +0 -1
- package/lib/esm/index-Vl0W0S3h.js.map +0 -1
- package/lib/esm/index-chrnjY1D.js +0 -470
- package/lib/esm/index-chrnjY1D.js.map +0 -1
- package/lib/esm/index-hF04phbf.js +0 -189
- package/lib/esm/index-hF04phbf.js.map +0 -1
- package/lib/esm/index-i79QMXpJ.js.map +0 -1
- package/lib/esm/index-rvOBAXap.js.map +0 -1
- package/lib/esm/index-uP9BKsTM.js +0 -446
- package/lib/esm/index-uP9BKsTM.js.map +0 -1
- package/lib/esm/index-ueQQMSgm.js +0 -1351
- package/lib/esm/index-ueQQMSgm.js.map +0 -1
- package/lib/esm/schema-JWJqD9qa.js +0 -71
- package/lib/esm/schema-JWJqD9qa.js.map +0 -1
- package/lib/esm/todoList-M-PGJKde.js.map +0 -1
- package/lib/esm/tooltip-plugin-iw2EQWIG.js +0 -185
- package/lib/esm/tooltip-plugin-iw2EQWIG.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-8QJbxTYk.js","sources":["../../../components/src/table-block/config.ts","../../../components/src/table-block/view/utils.ts","../../../components/src/table-block/view/drag.ts","../../../components/src/table-block/view/pointer.ts","../../../components/src/table-block/view/operation.ts","../../../components/src/table-block/view/component.ts","../../../components/src/table-block/view/view.ts","../../../components/src/table-block/index.ts","../../src/feature/table/index.ts"],"sourcesContent":["import { $ctx } from '@milkdown/utils'\nimport type { html } from 'atomico'\nimport { withMeta } from '../__internal__/meta'\n\nexport type RenderType =\n | 'add_row'\n | 'add_col'\n | 'delete_row'\n | 'delete_col'\n | 'align_col_left'\n | 'align_col_center'\n | 'align_col_right'\n | 'col_drag_handle'\n | 'row_drag_handle'\n\nexport interface TableBlockConfig {\n renderButton: (renderType: RenderType) => HTMLElement | ReturnType<typeof html> | string\n}\n\nconst defaultTableBlockConfig: TableBlockConfig = {\n renderButton: (renderType) => {\n switch (renderType) {\n case 'add_row':\n return '+'\n case 'add_col':\n return '+'\n case 'delete_row':\n return '-'\n case 'delete_col':\n return '-'\n case 'align_col_left':\n return 'left'\n case 'align_col_center':\n return 'center'\n case 'align_col_right':\n return 'right'\n case 'col_drag_handle':\n return '='\n case 'row_drag_handle':\n return '='\n }\n },\n}\n\nexport const tableBlockConfig = $ctx({ ...defaultTableBlockConfig }, 'tableBlockConfigCtx')\n\nwithMeta(tableBlockConfig, {\n displayName: 'Config<table-block>',\n group: 'TableBlock',\n})\n","import type { Node } from '@milkdown/prose/model'\nimport type { EditorView } from '@milkdown/prose/view'\nimport { findParent } from '@milkdown/prose'\nimport type { Ref } from 'atomico'\nimport { editorViewCtx } from '@milkdown/core'\nimport { CellSelection } from '@milkdown/prose/tables'\nimport { findTable } from '@milkdown/preset-gfm'\nimport { computePosition } from '@floating-ui/dom'\nimport type { Ctx } from '@milkdown/ctx'\nimport type { CellIndex, Refs } from './types'\n\nexport function findNodeIndex(parent: Node, child: Node) {\n for (let i = 0; i < parent.childCount; i++) {\n if (parent.child(i) === child)\n return i\n }\n return -1\n}\n\nexport function findPointerIndex(event: PointerEvent, view?: EditorView): CellIndex | undefined {\n if (!view)\n return\n const posAtCoords = view.posAtCoords({ left: event.clientX, top: event.clientY })\n if (!posAtCoords)\n return\n const pos = posAtCoords?.inside\n if (pos == null || pos < 0)\n return\n\n const $pos = view.state.doc.resolve(pos)\n const node = view.state.doc.nodeAt(pos)\n if (!node)\n return\n\n const cellType = ['table_cell', 'table_header']\n const rowType = ['table_row', 'table_header_row']\n\n const cell = cellType.includes(node.type.name) ? node : findParent(node => cellType.includes(node.type.name))($pos)?.node\n const row = findParent(node => rowType.includes(node.type.name))($pos)?.node\n const table = findParent(node => node.type.name === 'table')($pos)?.node\n if (!cell || !row || !table)\n return\n\n const columnIndex = findNodeIndex(row, cell)\n const rowIndex = findNodeIndex(table, row)\n\n return [rowIndex, columnIndex]\n}\n\nexport function getRelatedDOM(contentWrapperRef: Ref<HTMLDivElement>, [rowIndex, columnIndex]: CellIndex) {\n const content = contentWrapperRef.current\n if (!content)\n return\n const rows = content.querySelectorAll('tr')\n const row = rows[rowIndex]\n if (!row)\n return\n\n const firstRow = rows[0]\n if (!firstRow)\n return\n\n const headerCol = firstRow.children[columnIndex]\n if (!headerCol)\n return\n\n const col = row.children[columnIndex]\n if (!col)\n return\n\n return {\n row,\n col,\n headerCol,\n }\n}\n\nexport function recoveryStateBetweenUpdate(\n refs: Refs,\n ctx?: Ctx,\n node?: Node,\n) {\n if (!ctx)\n return\n if (!node)\n return\n const { selection } = ctx.get(editorViewCtx).state\n if (!(selection instanceof CellSelection))\n return\n\n const { $from } = selection\n const table = findTable($from)\n if (!table || table.node !== node)\n return\n\n if (selection.isColSelection()) {\n const { $head } = selection\n const colIndex = $head.index($head.depth - 1)\n computeColHandlePositionByIndex({\n refs,\n index: [0, colIndex],\n before: (handleDOM) => {\n handleDOM.querySelector('.button-group')?.setAttribute('data-show', 'true')\n },\n })\n return\n }\n if (selection.isRowSelection()) {\n const { $head } = selection\n const rowNode = findParent(node => node.type.name === 'table_row' || node.type.name === 'table_header_row')($head)\n if (!rowNode)\n return\n const rowIndex = findNodeIndex(table.node, rowNode.node)\n computeRowHandlePositionByIndex({\n refs,\n index: [rowIndex, 0],\n before: (handleDOM) => {\n if (rowIndex > 0)\n handleDOM.querySelector('.button-group')?.setAttribute('data-show', 'true')\n },\n })\n }\n}\n\ninterface ComputeHandlePositionByIndexProps {\n refs: Refs\n index: CellIndex\n before?: (handleDOM: HTMLDivElement) => void\n after?: (handleDOM: HTMLDivElement) => void\n}\n\nexport function computeColHandlePositionByIndex({\n refs,\n index,\n before,\n after,\n}: ComputeHandlePositionByIndexProps) {\n const {\n contentWrapperRef,\n colHandleRef,\n hoverIndex,\n } = refs\n const colHandle = colHandleRef.current\n if (!colHandle)\n return\n\n hoverIndex.current = index\n const dom = getRelatedDOM(contentWrapperRef, index)\n if (!dom)\n return\n const { headerCol: col } = dom\n colHandle.dataset.show = 'true'\n if (before)\n before(colHandle)\n computePosition(col, colHandle, { placement: 'top' })\n .then(({ x, y }) => {\n Object.assign(colHandle.style, {\n left: `${x}px`,\n top: `${y}px`,\n })\n if (after)\n after(colHandle)\n })\n}\n\nexport function computeRowHandlePositionByIndex({\n refs,\n index,\n before,\n after,\n}: ComputeHandlePositionByIndexProps) {\n const {\n contentWrapperRef,\n rowHandleRef,\n hoverIndex,\n } = refs\n const rowHandle = rowHandleRef.current\n if (!rowHandle)\n return\n\n hoverIndex.current = index\n const dom = getRelatedDOM(contentWrapperRef, index)\n if (!dom)\n return\n const { row } = dom\n rowHandle.dataset.show = 'true'\n if (before)\n before(rowHandle)\n computePosition(row, rowHandle, { placement: 'left' })\n .then(({ x, y }) => {\n Object.assign(rowHandle.style, {\n left: `${x}px`,\n top: `${y}px`,\n })\n if (after)\n after(rowHandle)\n })\n}\n","import throttle from 'lodash.throttle'\nimport { computePosition, offset } from '@floating-ui/dom'\nimport { useEffect, useHost, useMemo } from 'atomico'\nimport { commandsCtx, editorViewCtx } from '@milkdown/core'\nimport { moveColCommand, moveRowCommand, selectColCommand, selectRowCommand } from '@milkdown/preset-gfm'\nimport type { Ctx } from '@milkdown/ctx'\nimport { computeColHandlePositionByIndex, computeRowHandlePositionByIndex, getRelatedDOM } from './utils'\nimport type { CellIndex, DragContext, Refs } from './types'\n\nfunction prepareDndContext(refs: Refs): DragContext | undefined {\n const {\n dragPreviewRef,\n tableWrapperRef,\n contentWrapperRef,\n yLineHandleRef,\n xLineHandleRef,\n colHandleRef,\n rowHandleRef,\n } = refs\n\n const preview = dragPreviewRef.current\n if (!preview)\n return\n const wrapper = tableWrapperRef.current\n if (!wrapper)\n return\n const content = contentWrapperRef.current\n if (!content)\n return\n const contentRoot = content.querySelector('tbody')\n if (!contentRoot)\n return\n const previewRoot = preview.querySelector('tbody')\n if (!previewRoot)\n return\n const yHandle = yLineHandleRef.current\n if (!yHandle)\n return\n const xHandle = xLineHandleRef.current\n if (!xHandle)\n return\n const colHandle = colHandleRef.current\n if (!colHandle)\n return\n const rowHandle = rowHandleRef.current\n if (!rowHandle)\n return\n\n const context = {\n preview,\n wrapper,\n content,\n contentRoot,\n previewRoot,\n yHandle,\n xHandle,\n colHandle,\n rowHandle,\n }\n\n return context\n}\n\nfunction handleDrag(refs: Refs, event: DragEvent, ctx: Ctx | undefined, fn: (context: DragContext) => void) {\n const view = ctx?.get(editorViewCtx)\n if (!view?.editable)\n return\n\n event.stopPropagation()\n if (event.dataTransfer)\n event.dataTransfer.effectAllowed = 'move'\n\n const context = prepareDndContext(refs)\n\n if (!context)\n return\n\n // This is to avoid a chrome bug:\n // https://stackoverflow.com/questions/14203734/dragend-dragenter-and-dragleave-firing-off-immediately-when-i-drag\n requestAnimationFrame(() => {\n fn(context)\n })\n}\n\nexport function createDragRowHandler(refs: Refs, ctx?: Ctx) {\n return (event: DragEvent) => {\n handleDrag(refs, event, ctx, ({\n preview,\n content,\n previewRoot,\n yHandle,\n xHandle,\n colHandle,\n rowHandle,\n }) => {\n const { hoverIndex, dragInfo } = refs\n xHandle.dataset.displayType = 'indicator'\n yHandle.dataset.show = 'false'\n colHandle.dataset.show = 'false'\n rowHandle.querySelector('.button-group')?.setAttribute('data-show', 'false')\n\n const [rowIndex] = hoverIndex.current!\n\n dragInfo.current = {\n startCoords: [event.clientX, event.clientY],\n startIndex: rowIndex,\n endIndex: rowIndex,\n type: 'row',\n }\n preview.dataset.direction = 'vertical'\n\n const rows = content.querySelectorAll('tr')\n while (previewRoot.firstChild)\n previewRoot.removeChild(previewRoot.firstChild)\n\n const row = rows[rowIndex]\n if (!row)\n return\n\n previewRoot.appendChild(row.cloneNode(true))\n const height = row.getBoundingClientRect().height\n\n const { width } = content.querySelector('tbody')!.getBoundingClientRect()\n Object.assign(preview.style, {\n width: `${width}px`,\n height: `${height}px`,\n })\n\n preview.dataset.show = 'true'\n })\n }\n}\n\nexport function createDragColHandler(refs: Refs, ctx?: Ctx) {\n return (event: DragEvent) => {\n handleDrag(refs, event, ctx, ({\n preview,\n content,\n previewRoot,\n yHandle,\n xHandle,\n colHandle,\n rowHandle,\n }) => {\n const { hoverIndex, dragInfo } = refs\n xHandle.dataset.show = 'false'\n yHandle.dataset.displayType = 'indicator'\n rowHandle.dataset.show = 'false'\n colHandle.querySelector('.button-group')?.setAttribute('data-show', 'false')\n\n const [_, colIndex] = hoverIndex.current!\n\n dragInfo.current = {\n startCoords: [event.clientX, event.clientY],\n startIndex: colIndex,\n endIndex: colIndex,\n type: 'col',\n }\n preview.dataset.direction = 'horizontal'\n\n const rows = content.querySelectorAll('tr')\n while (previewRoot.firstChild)\n previewRoot.removeChild(previewRoot.firstChild)\n\n let width: number | undefined\n\n Array.from(rows).forEach((row) => {\n const col = row.children[colIndex]\n if (!col)\n return\n\n if (width === undefined)\n width = col.getBoundingClientRect().width\n\n const tr = col.parentElement!.cloneNode(false)\n const clone = col.cloneNode(true)\n tr.appendChild(clone)\n previewRoot.appendChild(tr)\n })\n\n const { height } = content.querySelector('tbody')!.getBoundingClientRect()\n Object.assign(preview.style, {\n width: `${width}px`,\n height: `${height}px`,\n })\n\n preview.dataset.show = 'true'\n })\n }\n}\n\nexport function createDragOverHandler(refs: Refs): (e: DragEvent) => void {\n return throttle((e: DragEvent) => {\n const context = prepareDndContext(refs)\n if (!context)\n return\n const {\n preview,\n content,\n contentRoot,\n xHandle,\n yHandle,\n } = context\n const {\n dragInfo,\n hoverIndex,\n } = refs\n\n if (preview.dataset.show === 'false')\n return\n const dom = getRelatedDOM(refs.contentWrapperRef, hoverIndex.current!)\n if (!dom)\n return\n const firstRow = contentRoot.querySelector('tr')\n if (!firstRow)\n return\n const info = dragInfo.current\n if (!info)\n return\n\n const wrapperOffsetTop = (contentRoot.offsetParent as HTMLElement).offsetTop\n const wrapperOffsetLeft = (contentRoot.offsetParent as HTMLElement).offsetLeft\n\n if (info.type === 'col') {\n const width = dom.col.getBoundingClientRect().width\n const { left, width: fullWidth } = contentRoot.getBoundingClientRect()\n const leftGap = wrapperOffsetLeft - left\n const previewLeft = e.clientX + leftGap - width / 2\n const previewRight = e.clientX + leftGap + width / 2\n\n const [startX] = info.startCoords\n const direction = startX < e.clientX ? 'right' : 'left'\n\n preview.style.top = `${wrapperOffsetTop}px`\n const previewLeftOffset = previewLeft < left + leftGap - 20\n ? left + leftGap - 20\n : previewLeft > left + fullWidth + leftGap - width + 20\n ? left + fullWidth + leftGap - width + 20\n : previewLeft\n\n preview.style.left = `${previewLeftOffset}px`\n\n const children = Array.from(firstRow.children)\n const col = children.find((col, index) => {\n const boundary = col.getBoundingClientRect()\n const boundaryLeft = boundary.left + wrapperOffsetLeft - left\n const boundaryRight = boundary.right + wrapperOffsetLeft - left\n if (direction === 'right') {\n if (boundaryLeft <= previewRight && boundaryRight >= previewRight)\n return true\n if (index === firstRow.children.length - 1 && previewRight > boundaryRight)\n return true\n }\n else {\n if (boundaryLeft <= previewLeft && boundaryRight >= previewLeft)\n return true\n if (index === 0 && previewLeft < boundaryLeft)\n return true\n }\n\n return false\n })\n if (col) {\n const yHandleWidth = yHandle.getBoundingClientRect().width\n const contentBoundary = content.getBoundingClientRect()\n const index = children.indexOf(col)\n info.endIndex = index\n\n computePosition(col, yHandle, {\n placement: direction === 'left' ? 'left' : 'right',\n middleware: [offset(direction === 'left' ? -1 * yHandleWidth : 0)],\n })\n .then(({ x }) => {\n yHandle.dataset.show = 'true'\n Object.assign(yHandle.style, {\n height: `${contentBoundary.height}px`,\n left: `${x}px`,\n top: `${wrapperOffsetTop}px`,\n })\n })\n }\n }\n else if (info.type === 'row') {\n const height = dom.row.getBoundingClientRect().height\n const { top, height: fullHeight } = contentRoot.getBoundingClientRect()\n\n const topGap = wrapperOffsetTop - top\n const previewTop = e.clientY + topGap - height / 2\n const previewBottom = e.clientY + topGap + height / 2\n\n const [_, startY] = info.startCoords\n const direction = startY < e.clientY ? 'down' : 'up'\n\n const previewTopOffset = previewTop < top + topGap - 20\n ? top + topGap - 20\n : previewTop > top + fullHeight + topGap - height + 20\n ? top + fullHeight + topGap - height + 20\n : previewTop\n\n preview.style.top = `${previewTopOffset}px`\n preview.style.left = `${wrapperOffsetLeft}px`\n\n const rows = Array.from(contentRoot.querySelectorAll('tr'))\n const row = rows.find((row, index) => {\n const boundary = row.getBoundingClientRect()\n const boundaryTop = boundary.top + wrapperOffsetTop - top\n const boundaryBottom = boundary.bottom + wrapperOffsetTop - top\n if (direction === 'down') {\n if (boundaryTop <= previewBottom && boundaryBottom >= previewBottom)\n return true\n if (index === rows.length - 1 && previewBottom > boundaryBottom)\n return true\n }\n else {\n if (boundaryTop <= previewTop && boundaryBottom >= previewTop)\n return true\n if (index === 0 && previewTop < boundaryTop)\n return true\n }\n return false\n })\n if (row) {\n const xHandleHeight = xHandle.getBoundingClientRect().height\n const contentBoundary = content.getBoundingClientRect()\n const index = rows.indexOf(row)\n info.endIndex = index\n\n computePosition(row, xHandle, {\n placement: direction === 'up' ? 'top' : 'bottom',\n middleware: [offset(direction === 'up' ? -1 * xHandleHeight : 0)],\n })\n .then(({ y }) => {\n xHandle.dataset.show = 'true'\n Object.assign(xHandle.style, {\n width: `${contentBoundary.width}px`,\n top: `${y}px`,\n })\n })\n }\n }\n }, 20)\n}\n\nexport function useDragHandlers(\n refs: Refs,\n ctx?: Ctx,\n getPos?: () => number | undefined,\n) {\n const {\n dragPreviewRef,\n yLineHandleRef,\n xLineHandleRef,\n dragInfo,\n } = refs\n const host = useHost()\n const root = useMemo(() => host.current.getRootNode() as HTMLElement, [host])\n\n const dragRow = useMemo(() => createDragRowHandler(refs, ctx), [refs])\n const dragCol = useMemo(() => createDragColHandler(refs, ctx), [refs])\n\n useEffect(() => {\n const onDragEnd = () => {\n const preview = dragPreviewRef.current\n if (!preview)\n return\n\n if (preview.dataset.show === 'false')\n return\n\n const previewRoot = preview?.querySelector('tbody')\n\n while (previewRoot?.firstChild)\n previewRoot?.removeChild(previewRoot.firstChild)\n\n if (preview)\n preview.dataset.show = 'false'\n }\n\n const onDrop = () => {\n const preview = dragPreviewRef.current\n if (!preview)\n return\n const yHandle = yLineHandleRef.current\n if (!yHandle)\n return\n const xHandle = xLineHandleRef.current\n if (!xHandle)\n return\n const info = dragInfo.current\n if (!info)\n return\n if (!ctx)\n return\n if (preview.dataset.show === 'false')\n return\n const colHandle = refs.colHandleRef.current\n if (!colHandle)\n return\n const rowHandle = refs.rowHandleRef.current\n if (!rowHandle)\n return\n\n yHandle.dataset.show = 'false'\n xHandle.dataset.show = 'false'\n\n if (info.startIndex === info.endIndex)\n return\n\n const commands = ctx.get(commandsCtx)\n const payload = {\n from: info.startIndex,\n to: info.endIndex,\n pos: (getPos?.() ?? 0) + 1,\n }\n if (info.type === 'col') {\n commands.call(selectColCommand.key, {\n pos: payload.pos,\n index: info.startIndex,\n })\n commands.call(moveColCommand.key, payload)\n const index: CellIndex = [0, info.endIndex]\n computeColHandlePositionByIndex({\n refs,\n index,\n })\n }\n else {\n commands.call(selectRowCommand.key, {\n pos: payload.pos,\n index: info.startIndex,\n })\n commands.call(moveRowCommand.key, payload)\n const index: CellIndex = [info.endIndex, 0]\n computeRowHandlePositionByIndex({\n refs,\n index,\n })\n }\n }\n const onDragOver = createDragOverHandler(refs)\n\n root.addEventListener('dragover', onDragOver)\n root.addEventListener('dragend', onDragEnd)\n root.addEventListener('drop', onDrop)\n return () => {\n root.removeEventListener('dragover', onDragOver)\n root.removeEventListener('dragend', onDragEnd)\n root.removeEventListener('drop', onDrop)\n }\n }, [])\n\n return {\n dragRow,\n dragCol,\n }\n}\n","import { computePosition, offset } from '@floating-ui/dom'\nimport type { EditorView } from '@milkdown/prose/view'\nimport throttle from 'lodash.throttle'\nimport { useMemo } from 'atomico'\nimport type { Refs } from './types'\nimport {\n computeColHandlePositionByIndex,\n computeRowHandlePositionByIndex,\n findPointerIndex,\n getRelatedDOM,\n} from './utils'\n\nexport function createPointerMoveHandler(refs: Refs, view?: EditorView): (e: PointerEvent) => void {\n return throttle((e: PointerEvent) => {\n if (!view?.editable)\n return\n const {\n contentWrapperRef,\n yLineHandleRef,\n xLineHandleRef,\n colHandleRef,\n rowHandleRef,\n hoverIndex,\n lineHoverIndex,\n } = refs\n const yHandle = yLineHandleRef.current\n if (!yHandle)\n return\n const xHandle = xLineHandleRef.current\n if (!xHandle)\n return\n const content = contentWrapperRef.current\n if (!content)\n return\n const rowHandle = rowHandleRef.current\n if (!rowHandle)\n return\n const colHandle = colHandleRef.current\n if (!colHandle)\n return\n\n const index = findPointerIndex(e, view)\n if (!index)\n return\n\n const dom = getRelatedDOM(contentWrapperRef, index)\n if (!dom)\n return\n\n const [rowIndex, colIndex] = index\n const boundary = dom.col.getBoundingClientRect()\n const closeToBoundaryLeft = Math.abs(e.clientX - boundary.left) < 8\n const closeToBoundaryRight = Math.abs(boundary.right - e.clientX) < 8\n const closeToBoundaryTop = Math.abs(e.clientY - boundary.top) < 8\n const closeToBoundaryBottom = Math.abs(boundary.bottom - e.clientY) < 8\n\n const closeToBoundary = closeToBoundaryLeft || closeToBoundaryRight || closeToBoundaryTop || closeToBoundaryBottom\n\n const rowButtonGroup = rowHandle.querySelector<HTMLElement>('.button-group')\n const colButtonGroup = colHandle.querySelector<HTMLElement>('.button-group')\n if (rowButtonGroup)\n rowButtonGroup.dataset.show = 'false'\n if (colButtonGroup)\n colButtonGroup.dataset.show = 'false'\n\n if (closeToBoundary) {\n const contentBoundary = content.getBoundingClientRect()\n rowHandle.dataset.show = 'false'\n colHandle.dataset.show = 'false'\n xHandle.dataset.displayType = 'tool'\n yHandle.dataset.displayType = 'tool'\n\n const yHandleWidth = yHandle.getBoundingClientRect().width\n const xHandleHeight = xHandle.getBoundingClientRect().height\n\n // display vertical line handle\n if (closeToBoundaryLeft || closeToBoundaryRight) {\n lineHoverIndex.current![1] = closeToBoundaryLeft ? colIndex : colIndex + 1\n computePosition(dom.col, yHandle, {\n placement: closeToBoundaryLeft ? 'left' : 'right',\n middleware: [offset(closeToBoundaryLeft ? -1 * yHandleWidth : 0)],\n })\n .then(({ x }) => {\n yHandle.dataset.show = 'true'\n Object.assign(yHandle.style, {\n height: `${contentBoundary.height}px`,\n left: `${x}px`,\n })\n })\n }\n else {\n yHandle.dataset.show = 'false'\n }\n\n // display horizontal line handle\n // won't display if the row is the header row\n if (index[0] !== 0 && (closeToBoundaryTop || closeToBoundaryBottom)) {\n lineHoverIndex.current![0] = closeToBoundaryTop ? rowIndex : rowIndex + 1\n computePosition(dom.row, xHandle, {\n placement: closeToBoundaryTop ? 'top' : 'bottom',\n middleware: [offset(closeToBoundaryTop ? -1 * xHandleHeight : 0)],\n })\n .then(({ y }) => {\n xHandle.dataset.show = 'true'\n Object.assign(xHandle.style, {\n width: `${contentBoundary.width}px`,\n top: `${y}px`,\n })\n })\n }\n else {\n xHandle.dataset.show = 'false'\n }\n\n return\n }\n\n lineHoverIndex.current = [-1, -1]\n\n yHandle.dataset.show = 'false'\n xHandle.dataset.show = 'false'\n rowHandle.dataset.show = 'true'\n colHandle.dataset.show = 'true'\n\n computeRowHandlePositionByIndex({\n refs,\n index,\n })\n computeColHandlePositionByIndex({\n refs,\n index,\n })\n hoverIndex.current = index\n }, 20)\n}\n\nexport function createPointerLeaveHandler(refs: Refs): () => void {\n return () => {\n const {\n rowHandleRef,\n colHandleRef,\n yLineHandleRef,\n xLineHandleRef,\n } = refs\n setTimeout(() => {\n const rowHandle = rowHandleRef.current\n if (!rowHandle)\n return\n const colHandle = colHandleRef.current\n if (!colHandle)\n return\n const yHandle = yLineHandleRef.current\n if (!yHandle)\n return\n const xHandle = xLineHandleRef.current\n if (!xHandle)\n return\n\n rowHandle.dataset.show = 'false'\n colHandle.dataset.show = 'false'\n yHandle.dataset.show = 'false'\n xHandle.dataset.show = 'false'\n }, 200)\n }\n}\n\nexport function usePointerHandlers(refs: Refs, view?: EditorView) {\n const pointerMove = useMemo(() => createPointerMoveHandler(refs, view), [])\n const pointerLeave = useMemo(() => createPointerLeaveHandler(refs), [])\n\n return {\n pointerMove,\n pointerLeave,\n }\n}\n","import { useCallback } from 'atomico'\nimport { commandsCtx, editorViewCtx } from '@milkdown/core'\nimport {\n addColAfterCommand,\n addColBeforeCommand,\n addRowAfterCommand,\n addRowBeforeCommand,\n deleteSelectedCellsCommand,\n selectColCommand,\n selectRowCommand,\n setAlignCommand,\n} from '@milkdown/preset-gfm'\nimport type { Ctx } from '@milkdown/ctx'\nimport type { Refs } from './types'\n\nexport function useOperation(refs: Refs, ctx?: Ctx, getPos?: () => number | undefined) {\n const {\n xLineHandleRef,\n contentWrapperRef,\n colHandleRef,\n rowHandleRef,\n hoverIndex,\n lineHoverIndex,\n } = refs\n\n const onAddRow = useCallback(() => {\n if (!ctx)\n return\n const xHandle = xLineHandleRef.current\n if (!xHandle)\n return\n\n const [rowIndex] = lineHoverIndex.current!\n if (rowIndex < 0)\n return\n\n if (!ctx.get(editorViewCtx).editable)\n return\n\n const rows = Array.from(contentWrapperRef.current?.querySelectorAll('tr') ?? [])\n const commands = ctx.get(commandsCtx)\n const pos = (getPos?.() ?? 0) + 1\n if (rows.length === rowIndex) {\n commands.call(selectRowCommand.key, { pos, index: rowIndex - 1 })\n commands.call(addRowAfterCommand.key)\n }\n else {\n commands.call(selectRowCommand.key, { pos, index: rowIndex })\n commands.call(addRowBeforeCommand.key)\n }\n\n commands.call(selectRowCommand.key, { pos, index: rowIndex })\n xHandle.dataset.show = 'false'\n }, [])\n\n const onAddCol = useCallback(() => {\n if (!ctx)\n return\n const xHandle = xLineHandleRef.current\n if (!xHandle)\n return\n\n const [_, colIndex] = lineHoverIndex.current!\n if (colIndex < 0)\n return\n\n if (!ctx.get(editorViewCtx).editable)\n return\n\n const cols = Array.from(contentWrapperRef.current?.querySelector('tr')?.children ?? [])\n const commands = ctx.get(commandsCtx)\n\n const pos = (getPos?.() ?? 0) + 1\n if (cols.length === colIndex) {\n commands.call(selectColCommand.key, { pos, index: colIndex - 1 })\n commands.call(addColAfterCommand.key)\n }\n else {\n commands.call(selectColCommand.key, { pos, index: colIndex })\n commands.call(addColBeforeCommand.key)\n }\n\n commands.call(selectColCommand.key, { pos, index: colIndex })\n }, [])\n\n const selectCol = useCallback(() => {\n if (!ctx)\n return\n const [_, colIndex] = hoverIndex.current!\n const commands = ctx.get(commandsCtx)\n const pos = (getPos?.() ?? 0) + 1\n commands.call(selectColCommand.key, { pos, index: colIndex })\n const buttonGroup = colHandleRef.current?.querySelector<HTMLElement>('.button-group')\n if (buttonGroup)\n buttonGroup.dataset.show = buttonGroup.dataset.show === 'true' ? 'false' : 'true'\n }, [])\n\n const selectRow = useCallback(() => {\n if (!ctx)\n return\n const [rowIndex, _] = hoverIndex.current!\n const commands = ctx.get(commandsCtx)\n const pos = (getPos?.() ?? 0) + 1\n commands.call(selectRowCommand.key, { pos, index: rowIndex })\n const buttonGroup = rowHandleRef.current?.querySelector<HTMLElement>('.button-group')\n if (buttonGroup && rowIndex > 0)\n buttonGroup.dataset.show = buttonGroup.dataset.show === 'true' ? 'false' : 'true'\n }, [])\n\n const deleteSelected = useCallback((e: PointerEvent) => {\n if (!ctx)\n return\n\n if (!ctx.get(editorViewCtx).editable)\n return\n\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(deleteSelectedCellsCommand.key)\n }, [])\n\n const onAlign = useCallback((direction: 'left' | 'center' | 'right') =>\n (e: PointerEvent) => {\n if (!ctx)\n return\n\n if (!ctx.get(editorViewCtx).editable)\n return\n\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(setAlignCommand.key, direction)\n }, [])\n\n return {\n onAddRow,\n onAddCol,\n selectCol,\n selectRow,\n deleteSelected,\n onAlign,\n }\n}\n","import type { Component } from 'atomico'\nimport { c, html, useHost, useLayoutEffect, useMemo, useRef } from 'atomico'\nimport type { Node } from '@milkdown/prose/model'\nimport type { EditorView } from '@milkdown/prose/view'\nimport type { Ctx } from '@milkdown/ctx'\n\nimport clsx from 'clsx'\nimport type { TableBlockConfig } from '../config'\nimport { useDragHandlers } from './drag'\nimport type { CellIndex, DragInfo, Refs } from './types'\nimport { recoveryStateBetweenUpdate } from './utils'\nimport { usePointerHandlers } from './pointer'\nimport { useOperation } from './operation'\n\nexport interface TableComponentProps {\n view: EditorView\n ctx: Ctx\n getPos: () => number | undefined\n node: Node\n config: TableBlockConfig\n}\n\nexport const tableComponent: Component<TableComponentProps> = ({\n view,\n ctx,\n getPos,\n node,\n config,\n}) => {\n const host = useHost()\n const contentWrapperRef = useRef<HTMLDivElement>()\n const colHandleRef = useRef<HTMLDivElement>()\n const rowHandleRef = useRef<HTMLDivElement>()\n const xLineHandleRef = useRef<HTMLDivElement>()\n const yLineHandleRef = useRef<HTMLDivElement>()\n const tableWrapperRef = useRef<HTMLDivElement>()\n const dragPreviewRef = useRef<HTMLDivElement>()\n const hoverIndex = useRef<CellIndex>([0, 0])\n const lineHoverIndex = useRef<CellIndex>([-1, -1])\n const dragInfo = useRef<DragInfo>()\n const refs: Refs = useMemo(() => {\n return {\n dragPreviewRef,\n tableWrapperRef,\n contentWrapperRef,\n yLineHandleRef,\n xLineHandleRef,\n colHandleRef,\n rowHandleRef,\n hoverIndex,\n lineHoverIndex,\n dragInfo,\n }\n }, [])\n\n useLayoutEffect(() => {\n const current = contentWrapperRef.current\n if (!current)\n return\n\n const contentDOM = host.current.querySelector('[data-content-dom]')\n\n if (contentDOM)\n current.appendChild(contentDOM)\n\n if (view?.editable)\n recoveryStateBetweenUpdate(refs, ctx, node)\n }, [])\n\n const { pointerLeave, pointerMove } = usePointerHandlers(refs, view)\n const { dragRow, dragCol } = useDragHandlers(refs, ctx, getPos)\n const {\n onAddRow,\n onAddCol,\n selectCol,\n selectRow,\n deleteSelected,\n onAlign,\n } = useOperation(refs, ctx, getPos)\n\n return html`\n <host\n class=${clsx(!view?.editable && 'readonly')}\n ondragstart=${(e: DragEvent) => e.preventDefault()}\n ondragover=${(e: DragEvent) => e.preventDefault()}\n ondragleave=${(e: DragEvent) => e.preventDefault()}\n onpointermove=${pointerMove}\n onpointerleave=${pointerLeave}\n >\n <button\n data-show=\"false\"\n contenteditable=\"false\"\n draggable=\"true\"\n data-role=\"col-drag-handle\"\n class=\"handle cell-handle\"\n ondragstart=${dragCol}\n onclick=${selectCol}\n onpointerdown=${(e: PointerEvent) => e.stopPropagation()}\n onpointermove=${(e: PointerEvent) => e.stopPropagation()}\n ref=${colHandleRef}\n >\n ${config?.renderButton('col_drag_handle')}\n <div\n data-show=\"false\"\n class=\"button-group\"\n onpointermove=${(e: PointerEvent) => e.stopPropagation}\n >\n <button onpointerdown=${onAlign('left')}>\n ${config?.renderButton('align_col_left')}\n </button>\n <button onpointerdown=${onAlign('center')}>\n ${config?.renderButton('align_col_center')}\n </button>\n <button onpointerdown=${onAlign('right')}>\n ${config?.renderButton('align_col_right')}\n </button>\n <button onpointerdown=${deleteSelected}>\n ${config?.renderButton('delete_col')}\n </button>\n </div>\n </button>\n <button\n data-show=\"false\"\n contenteditable=\"false\"\n draggable=\"true\"\n data-role=\"row-drag-handle\"\n class=\"handle cell-handle\"\n ondragstart=${dragRow}\n onclick=${selectRow}\n onpointerdown=${(e: PointerEvent) => e.stopPropagation()}\n onpointermove=${(e: PointerEvent) => e.stopPropagation()}\n ref=${rowHandleRef}\n >\n ${config?.renderButton('row_drag_handle')}\n <div\n data-show=\"false\"\n class=\"button-group\"\n onpointermove=${(e: PointerEvent) => e.stopPropagation}\n >\n <button onpointerdown=${deleteSelected}>\n ${config?.renderButton('delete_row')}\n </button>\n </div>\n </button>\n <div class=\"table-wrapper\" ref=${tableWrapperRef}>\n <div\n data-show=\"false\"\n class=\"drag-preview\"\n data-direction=\"vertical\"\n ref=${dragPreviewRef}\n >\n <table>\n <tbody>\n </tbody>\n </table>\n </div>\n <div\n data-show=\"false\"\n contenteditable=\"false\"\n data-display-type=\"tool\"\n data-role=\"x-line-drag-handle\"\n class=\"handle line-handle\"\n onpointermove=${(e: PointerEvent) => e.stopPropagation}\n ref=${xLineHandleRef}\n >\n <button onclick=${onAddRow} class=\"add-button\">\n ${config?.renderButton('add_row')}\n </button>\n </div>\n <div\n data-show=\"false\"\n contenteditable=\"false\"\n data-display-type=\"tool\"\n data-role=\"y-line-drag-handle\"\n class=\"handle line-handle\"\n onpointermove=${(e: PointerEvent) => e.stopPropagation}\n ref=${yLineHandleRef}\n >\n <button onclick=${onAddCol} class=\"add-button\">\n ${config?.renderButton('add_col')}\n </button>\n </div>\n <table ref=${contentWrapperRef} class=\"children\"></table>\n </div>\n </host>\n `\n}\n\ntableComponent.props = {\n getPos: Function,\n view: Object,\n ctx: Object,\n node: Object,\n config: Object,\n}\n\nexport const TableElement = c(tableComponent)\n","import { $view } from '@milkdown/utils'\nimport { tableSchema } from '@milkdown/preset-gfm'\nimport type { Node } from '@milkdown/prose/model'\nimport type { EditorView, NodeView, NodeViewConstructor } from '@milkdown/prose/view'\nimport type { Ctx } from '@milkdown/ctx'\nimport { NodeSelection } from '@milkdown/prose/state'\nimport { findParent } from '@milkdown/prose'\nimport { CellSelection } from '@milkdown/prose/tables'\nimport { defIfNotExists } from '../../__internal__/helper'\nimport { tableBlockConfig } from '../config'\nimport { withMeta } from '../../__internal__/meta'\nimport type { TableComponentProps } from './component'\nimport { TableElement } from './component'\n\nexport class TableNodeView implements NodeView {\n dom: HTMLElement & TableComponentProps\n contentDOM: HTMLElement\n constructor(\n public ctx: Ctx,\n public node: Node,\n public view: EditorView,\n public getPos: () => number | undefined,\n ) {\n const dom = document.createElement('milkdown-table-block') as HTMLElement & TableComponentProps\n this.dom = dom\n dom.view = view\n dom.ctx = ctx\n dom.getPos = getPos\n dom.node = node\n dom.config = ctx.get(tableBlockConfig.key)\n\n const contentDOM = document.createElement('tbody')\n this.contentDOM = contentDOM\n contentDOM.setAttribute('data-content-dom', 'true')\n contentDOM.classList.add('content-dom')\n\n dom.appendChild(contentDOM)\n }\n\n update(node: Node) {\n if (node.type !== this.node.type)\n return false\n\n if (node.sameMarkup(this.node) && node.content.eq(this.node.content))\n return false\n\n this.node = node\n this.dom.node = node\n\n return true\n }\n\n #handleClick(event: PointerEvent) {\n const view = this.view\n if (!view.editable)\n return false\n\n const { state, dispatch } = view\n const pos = view.posAtCoords({ left: event.clientX, top: event.clientY })\n\n if (!pos)\n return false\n\n const $pos = state.doc.resolve(pos.inside)\n const node = findParent(node => node.type.name === 'table_cell' || node.type.name === 'table_header')($pos)\n if (!node)\n return false\n\n const { from } = node\n\n const selection = NodeSelection.create(state.doc, from + 1)\n if (state.selection.eq(selection))\n return false\n\n if (state.selection instanceof CellSelection) {\n setTimeout(() => {\n dispatch(state.tr.setSelection(selection).scrollIntoView())\n }, 20)\n }\n else {\n requestAnimationFrame(() => {\n dispatch(state.tr.setSelection(selection).scrollIntoView())\n })\n }\n return true\n }\n\n stopEvent(e: Event) {\n if (e.type === 'drop' || e.type.startsWith('drag'))\n return true\n\n if (e.type === 'mousedown') {\n if (e.target instanceof HTMLButtonElement)\n return true\n\n const target = e.target\n if (target instanceof HTMLElement && (target.closest('th') || target.closest('td'))) {\n const event = e as PointerEvent\n return this.#handleClick(event)\n }\n }\n\n return false\n }\n\n ignoreMutation(mutation: MutationRecord) {\n if (!this.dom || !this.contentDOM)\n return true\n\n if ((mutation.type as unknown) === 'selection')\n return false\n\n if (this.contentDOM === mutation.target && mutation.type === 'attributes')\n return true\n\n if (this.contentDOM.contains(mutation.target))\n return false\n\n return true\n }\n}\n\ndefIfNotExists('milkdown-table-block', TableElement)\nexport const tableBlockView = $view(tableSchema.node, (ctx): NodeViewConstructor => {\n return (initialNode, view, getPos) => {\n return new TableNodeView(ctx, initialNode, view, getPos)\n }\n})\n\nwithMeta(tableBlockView, {\n displayName: 'NodeView<table-block>',\n group: 'TableBlock',\n})\n","import type { MilkdownPlugin } from '@milkdown/ctx'\nimport { tableBlockView } from './view'\nimport { tableBlockConfig } from './config'\n\nexport * from './view'\nexport * from './config'\n\nexport const tableBlock: MilkdownPlugin[] = [\n tableBlockConfig,\n tableBlockView,\n]\n","import { tableBlock, tableBlockConfig } from '@milkdown/kit/component/table-block'\nimport type { DefineFeature, Icon } from '../shared'\nimport {\n alignCenterIcon,\n alignLeftIcon,\n alignRightIcon,\n dragHandleIcon,\n plusIcon,\n removeIcon,\n} from '../../icons'\n\ninterface TableConfig {\n addRowIcon: Icon\n addColIcon: Icon\n deleteRowIcon: Icon\n deleteColIcon: Icon\n alignLeftIcon: Icon\n alignCenterIcon: Icon\n alignRightIcon: Icon\n colDragHandleIcon: Icon\n rowDragHandleIcon: Icon\n}\n\nexport type TableFeatureConfig = Partial<TableConfig>\n\nexport const defineFeature: DefineFeature<TableFeatureConfig> = (editor, config) => {\n editor.config((ctx) => {\n ctx.update(tableBlockConfig.key, defaultConfig => ({\n ...defaultConfig,\n renderButton: (renderType) => {\n switch (renderType) {\n case 'add_row':\n return config?.addRowIcon?.() ?? plusIcon\n case 'add_col':\n return config?.addColIcon?.() ?? plusIcon\n case 'delete_row':\n return config?.deleteRowIcon?.() ?? removeIcon\n case 'delete_col':\n return config?.deleteColIcon?.() ?? removeIcon\n case 'align_col_left':\n return config?.alignLeftIcon?.() ?? alignLeftIcon\n case 'align_col_center':\n return config?.alignCenterIcon?.() ?? alignCenterIcon\n case 'align_col_right':\n return config?.alignRightIcon?.() ?? alignRightIcon\n case 'col_drag_handle':\n return config?.colDragHandleIcon?.() ?? dragHandleIcon\n case 'row_drag_handle':\n return config?.rowDragHandleIcon?.() ?? dragHandleIcon\n }\n },\n }))\n }).use(tableBlock)\n}\n"],"names":["node","col","row"],"mappings":"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"}
|