@jvs-milkdown/components 1.2.7 → 1.2.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jvs-milkdown/components",
3
- "version": "1.2.7",
3
+ "version": "1.2.9",
4
4
  "keywords": [
5
5
  "milkdown",
6
6
  "milkdown plugin"
@@ -50,15 +50,15 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@floating-ui/dom": "^1.5.1",
53
- "@jvs-milkdown/core": "^1.2.7",
54
- "@jvs-milkdown/ctx": "^1.2.7",
55
- "@jvs-milkdown/exception": "^1.2.7",
56
- "@jvs-milkdown/plugin-tooltip": "^1.2.7",
57
- "@jvs-milkdown/preset-commonmark": "^1.2.7",
58
- "@jvs-milkdown/preset-gfm": "^1.2.7",
59
- "@jvs-milkdown/prose": "^1.2.7",
60
- "@jvs-milkdown/transformer": "^1.2.7",
61
- "@jvs-milkdown/utils": "^1.2.7",
53
+ "@jvs-milkdown/core": "^1.2.9",
54
+ "@jvs-milkdown/ctx": "^1.2.9",
55
+ "@jvs-milkdown/exception": "^1.2.9",
56
+ "@jvs-milkdown/plugin-tooltip": "^1.2.9",
57
+ "@jvs-milkdown/preset-commonmark": "^1.2.9",
58
+ "@jvs-milkdown/preset-gfm": "^1.2.9",
59
+ "@jvs-milkdown/prose": "^1.2.9",
60
+ "@jvs-milkdown/transformer": "^1.2.9",
61
+ "@jvs-milkdown/utils": "^1.2.9",
62
62
  "@types/lodash-es": "^4.17.12",
63
63
  "clsx": "^2.0.0",
64
64
  "dompurify": "^3.2.5",
@@ -8,6 +8,7 @@ import {
8
8
  mergeCells,
9
9
  splitCell,
10
10
  selectedRect,
11
+ TableMap,
11
12
  } from '@jvs-milkdown/prose/tables'
12
13
  import {
13
14
  defineComponent,
@@ -358,23 +359,33 @@ export const TableBlock = defineComponent<TableBlockProps>({
358
359
  }
359
360
  const tableNode = node.value
360
361
  let tr = view.state.tr
361
- let pos = tablePos + 1
362
-
363
- tableNode.forEach((row) => {
364
- let cellIdx = 0
365
- row.forEach((cell, _offset, cellNodePos) => {
366
- if (cellIdx === colIndex) {
367
- const absPos = tablePos + 1 + cellNodePos
368
- const colwidth = [Math.round(newWidth)]
369
- tr = tr.setNodeMarkup(absPos, undefined, {
370
- ...cell.attrs,
371
- colwidth,
372
- })
373
- }
374
- cellIdx++
362
+ const map = TableMap.get(tableNode)
363
+
364
+ for (let row = 0; row < map.height; row++) {
365
+ const mapIndex = row * map.width + colIndex
366
+ if (row > 0 && map.map[mapIndex] === map.map[mapIndex - map.width])
367
+ continue
368
+
369
+ const cellPos = map.map[mapIndex]
370
+ if (cellPos == null) continue
371
+ const cell = tableNode.nodeAt(cellPos)
372
+ if (!cell) continue
373
+
374
+ const rect = map.findCell(cellPos)
375
+ const widthIndex = colIndex - rect.left
376
+
377
+ const colspan = cell.attrs.colspan || 1
378
+ const colwidth = cell.attrs.colwidth
379
+ ? cell.attrs.colwidth.slice()
380
+ : Array(colspan).fill(0)
381
+ colwidth[widthIndex] = Math.round(newWidth)
382
+
383
+ const absPos = tablePos + 1 + cellPos
384
+ tr = tr.setNodeMarkup(absPos, undefined, {
385
+ ...cell.attrs,
386
+ colwidth,
375
387
  })
376
- pos += row.nodeSize
377
- })
388
+ }
378
389
 
379
390
  resizingCol.value = -1
380
391
  if (tr.docChanged) view.dispatch(tr)