@jvs-milkdown/components 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/lib/__internal__/components/icon.d.ts +24 -0
  2. package/lib/__internal__/components/icon.d.ts.map +1 -0
  3. package/lib/__internal__/components/image-input.d.ts +17 -0
  4. package/lib/__internal__/components/image-input.d.ts.map +1 -0
  5. package/lib/__internal__/keep-alive.d.ts +2 -0
  6. package/lib/__internal__/keep-alive.d.ts.map +1 -0
  7. package/lib/__internal__/meta.d.ts +3 -0
  8. package/lib/__internal__/meta.d.ts.map +1 -0
  9. package/lib/__tests__/setup.d.ts +2 -0
  10. package/lib/__tests__/setup.d.ts.map +1 -0
  11. package/lib/code-block/config.d.ts +25 -0
  12. package/lib/code-block/config.d.ts.map +1 -0
  13. package/lib/code-block/index.d.ts +5 -0
  14. package/lib/code-block/index.d.ts.map +1 -0
  15. package/lib/code-block/view/components/code-block.d.ts +18 -0
  16. package/lib/code-block/view/components/code-block.d.ts.map +1 -0
  17. package/lib/code-block/view/components/copy-button.d.ts +9 -0
  18. package/lib/code-block/view/components/copy-button.d.ts.map +1 -0
  19. package/lib/code-block/view/components/language-picker.d.ts +5 -0
  20. package/lib/code-block/view/components/language-picker.d.ts.map +1 -0
  21. package/lib/code-block/view/components/preview-panel.d.ts +9 -0
  22. package/lib/code-block/view/components/preview-panel.d.ts.map +1 -0
  23. package/lib/code-block/view/index.d.ts +3 -0
  24. package/lib/code-block/view/index.d.ts.map +1 -0
  25. package/lib/code-block/view/loader.d.ts +13 -0
  26. package/lib/code-block/view/loader.d.ts.map +1 -0
  27. package/lib/code-block/view/node-view.d.ts +43 -0
  28. package/lib/code-block/view/node-view.d.ts.map +1 -0
  29. package/lib/image-block/config.d.ts +21 -0
  30. package/lib/image-block/config.d.ts.map +1 -0
  31. package/lib/image-block/convert-plugin.d.ts +2 -0
  32. package/lib/image-block/convert-plugin.d.ts.map +1 -0
  33. package/lib/image-block/index.d.ts +9 -0
  34. package/lib/image-block/index.d.ts.map +1 -0
  35. package/lib/image-block/index.js +120 -56
  36. package/lib/image-block/index.js.map +1 -1
  37. package/lib/image-block/paste-rule.d.ts +2 -0
  38. package/lib/image-block/paste-rule.d.ts.map +1 -0
  39. package/lib/image-block/remark-plugin.d.ts +2 -0
  40. package/lib/image-block/remark-plugin.d.ts.map +1 -0
  41. package/lib/image-block/schema.d.ts +3 -0
  42. package/lib/image-block/schema.d.ts.map +1 -0
  43. package/lib/image-block/view/components/__tests__/image-viewer.onImageLoadError.spec.d.ts +2 -0
  44. package/lib/image-block/view/components/__tests__/image-viewer.onImageLoadError.spec.d.ts.map +1 -0
  45. package/lib/image-block/view/components/image-block.d.ts +27 -0
  46. package/lib/image-block/view/components/image-block.d.ts.map +1 -0
  47. package/lib/image-block/view/components/image-viewer.d.ts +3 -0
  48. package/lib/image-block/view/components/image-viewer.d.ts.map +1 -0
  49. package/lib/image-block/view/index.d.ts +3 -0
  50. package/lib/image-block/view/index.d.ts.map +1 -0
  51. package/lib/image-inline/components/image-inline.d.ts +18 -0
  52. package/lib/image-inline/components/image-inline.d.ts.map +1 -0
  53. package/lib/image-inline/config.d.ts +11 -0
  54. package/lib/image-inline/config.d.ts.map +1 -0
  55. package/lib/image-inline/index.d.ts +5 -0
  56. package/lib/image-inline/index.d.ts.map +1 -0
  57. package/lib/image-inline/view.d.ts +3 -0
  58. package/lib/image-inline/view.d.ts.map +1 -0
  59. package/lib/index.d.ts +2 -0
  60. package/lib/index.d.ts.map +1 -0
  61. package/lib/link-tooltip/command.d.ts +2 -0
  62. package/lib/link-tooltip/command.d.ts.map +1 -0
  63. package/lib/link-tooltip/configure.d.ts +3 -0
  64. package/lib/link-tooltip/configure.d.ts.map +1 -0
  65. package/lib/link-tooltip/edit/component.d.ts +11 -0
  66. package/lib/link-tooltip/edit/component.d.ts.map +1 -0
  67. package/lib/link-tooltip/edit/edit-configure.d.ts +3 -0
  68. package/lib/link-tooltip/edit/edit-configure.d.ts.map +1 -0
  69. package/lib/link-tooltip/edit/edit-view.d.ts +15 -0
  70. package/lib/link-tooltip/edit/edit-view.d.ts.map +1 -0
  71. package/lib/link-tooltip/index.d.ts +7 -0
  72. package/lib/link-tooltip/index.d.ts.map +1 -0
  73. package/lib/link-tooltip/index.js +1 -2
  74. package/lib/link-tooltip/index.js.map +1 -1
  75. package/lib/link-tooltip/preview/component.d.ts +11 -0
  76. package/lib/link-tooltip/preview/component.d.ts.map +1 -0
  77. package/lib/link-tooltip/preview/preview-configure.d.ts +3 -0
  78. package/lib/link-tooltip/preview/preview-configure.d.ts.map +1 -0
  79. package/lib/link-tooltip/preview/preview-view.d.ts +14 -0
  80. package/lib/link-tooltip/preview/preview-view.d.ts.map +1 -0
  81. package/lib/link-tooltip/slices.d.ts +34 -0
  82. package/lib/link-tooltip/slices.d.ts.map +1 -0
  83. package/lib/link-tooltip/tooltips.d.ts +3 -0
  84. package/lib/link-tooltip/tooltips.d.ts.map +1 -0
  85. package/lib/link-tooltip/utils.d.ts +14 -0
  86. package/lib/link-tooltip/utils.d.ts.map +1 -0
  87. package/lib/list-item-block/component.d.ts +19 -0
  88. package/lib/list-item-block/component.d.ts.map +1 -0
  89. package/lib/list-item-block/config.d.ts +13 -0
  90. package/lib/list-item-block/config.d.ts.map +1 -0
  91. package/lib/list-item-block/index.d.ts +6 -0
  92. package/lib/list-item-block/index.d.ts.map +1 -0
  93. package/lib/list-item-block/view.d.ts +3 -0
  94. package/lib/list-item-block/view.d.ts.map +1 -0
  95. package/lib/table-block/config.d.ts +8 -0
  96. package/lib/table-block/config.d.ts.map +1 -0
  97. package/lib/table-block/dnd/calc-drag-over.d.ts +3 -0
  98. package/lib/table-block/dnd/calc-drag-over.d.ts.map +1 -0
  99. package/lib/table-block/dnd/create-drag-handler.d.ts +5 -0
  100. package/lib/table-block/dnd/create-drag-handler.d.ts.map +1 -0
  101. package/lib/table-block/dnd/drag-over-handler.d.ts +3 -0
  102. package/lib/table-block/dnd/drag-over-handler.d.ts.map +1 -0
  103. package/lib/table-block/dnd/prepare-dnd-context.d.ts +3 -0
  104. package/lib/table-block/dnd/prepare-dnd-context.d.ts.map +1 -0
  105. package/lib/table-block/dnd/preview.d.ts +3 -0
  106. package/lib/table-block/dnd/preview.d.ts.map +1 -0
  107. package/lib/table-block/index.d.ts +5 -0
  108. package/lib/table-block/index.d.ts.map +1 -0
  109. package/lib/table-block/index.js.map +1 -1
  110. package/lib/table-block/view/component.d.ts +16 -0
  111. package/lib/table-block/view/component.d.ts.map +1 -0
  112. package/lib/table-block/view/drag.d.ts +10 -0
  113. package/lib/table-block/view/drag.d.ts.map +1 -0
  114. package/lib/table-block/view/index.d.ts +2 -0
  115. package/lib/table-block/view/index.d.ts.map +1 -0
  116. package/lib/table-block/view/operation.d.ts +13 -0
  117. package/lib/table-block/view/operation.d.ts.map +1 -0
  118. package/lib/table-block/view/pointer.d.ts +7 -0
  119. package/lib/table-block/view/pointer.d.ts.map +1 -0
  120. package/lib/table-block/view/types.d.ts +28 -0
  121. package/lib/table-block/view/types.d.ts.map +1 -0
  122. package/lib/table-block/view/utils.d.ts +12 -0
  123. package/lib/table-block/view/utils.d.ts.map +1 -0
  124. package/lib/table-block/view/view.d.ts +22 -0
  125. package/lib/table-block/view/view.d.ts.map +1 -0
  126. package/lib/tsconfig.tsbuildinfo +1 -1
  127. package/package.json +10 -10
  128. package/src/image-block/convert-plugin.ts +1 -1
  129. package/src/image-block/paste-rule.ts +1 -21
  130. package/src/image-block/view/components/image-viewer.tsx +139 -53
  131. package/src/link-tooltip/edit/component.tsx +0 -1
  132. package/src/table-block/view/utils.ts +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-drag-handler.d.ts","sourceRoot":"","sources":["../../../src/table-block/dnd/create-drag-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAI5C,OAAO,KAAK,EAAe,IAAI,EAAE,MAAM,eAAe,CAAA;AAKtD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAChD,OAAO,SAAS,UAazB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAChD,OAAO,SAAS,UAczB"}
@@ -0,0 +1,3 @@
1
+ import type { Refs } from '../view/types';
2
+ export declare function createDragOverHandler(refs: Refs): (e: DragEvent) => void;
3
+ //# sourceMappingURL=drag-over-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag-over-handler.d.ts","sourceRoot":"","sources":["../../../src/table-block/dnd/drag-over-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAMzC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAmIxE"}
@@ -0,0 +1,3 @@
1
+ import type { DragContext, Refs } from '../view/types';
2
+ export declare function prepareDndContext(refs: Refs): DragContext | undefined;
3
+ //# sourceMappingURL=prepare-dnd-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-dnd-context.d.ts","sourceRoot":"","sources":["../../../src/table-block/dnd/prepare-dnd-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEtD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS,CAmCrE"}
@@ -0,0 +1,3 @@
1
+ export declare function clearPreview(previewRoot: HTMLElement): void;
2
+ export declare function renderPreview(axis: 'x' | 'y', preview: HTMLElement, previewRoot: HTMLElement, tableContent: HTMLElement, index: number): void;
3
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/table-block/dnd/preview.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,QAEpD;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,GAAG,GAAG,GAAG,EACf,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,WAAW,EACzB,KAAK,EAAE,MAAM,QAgDd"}
@@ -0,0 +1,5 @@
1
+ import type { MilkdownPlugin } from '@jvs-milkdown/ctx';
2
+ export * from './view';
3
+ export * from './config';
4
+ export declare const tableBlock: MilkdownPlugin[];
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table-block/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKvD,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AAExB,eAAO,MAAM,UAAU,EAAE,cAAc,EAAuC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/__internal__/meta.ts","../../src/table-block/config.ts","../../src/__internal__/keep-alive.ts","../../src/__internal__/components/icon.tsx","../../src/table-block/dnd/prepare-dnd-context.ts","../../src/table-block/dnd/preview.ts","../../src/table-block/dnd/create-drag-handler.ts","../../src/table-block/view/utils.ts","../../src/table-block/dnd/calc-drag-over.ts","../../src/table-block/dnd/drag-over-handler.ts","../../src/table-block/view/drag.ts","../../src/table-block/view/operation.ts","../../src/table-block/view/pointer.ts","../../src/table-block/view/component.tsx","../../src/table-block/view/view.ts","../../src/table-block/index.ts"],"sourcesContent":["import type { Meta, MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@jvs-milkdown/components',\n ...meta,\n },\n })\n\n return plugin\n}\n","import { $ctx } from '@jvs-milkdown/utils'\n\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 | 'merge_cells'\n | 'split_cell'\n\nexport interface TableBlockConfig {\n renderButton: (renderType: RenderType) => 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 case 'merge_cells':\n return '⊞'\n case 'split_cell':\n return '⊟'\n }\n },\n}\n\nexport const tableBlockConfig = $ctx(\n { ...defaultTableBlockConfig },\n 'tableBlockConfigCtx'\n)\n\nwithMeta(tableBlockConfig, {\n displayName: 'Config<table-block>',\n group: 'TableBlock',\n})\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import clsx from 'clsx'\nimport DOMPurify from 'dompurify'\nimport { h } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\n\nkeepAlive(h)\n\ntype IconProps = {\n icon?: string | null\n class?: string\n onClick?: (event: PointerEvent) => void\n}\n\nexport function Icon({ icon, class: className, onClick }: IconProps) {\n return (\n <span\n class={clsx('milkdown-icon', className)}\n onPointerdown={onClick}\n innerHTML={icon ? DOMPurify.sanitize(icon.trim()) : undefined}\n />\n )\n}\n\nIcon.props = {\n icon: {\n type: String,\n required: false,\n },\n class: {\n type: String,\n required: false,\n },\n onClick: {\n type: Function,\n required: false,\n },\n}\n","import type { DragContext, Refs } from '../view/types'\n\nexport function prepareDndContext(refs: Refs): DragContext | undefined {\n const {\n dragPreviewRef,\n tableWrapperRef,\n contentWrapperRef,\n yLineHandleRef,\n xLineHandleRef,\n } = refs\n\n const preview = dragPreviewRef.value\n if (!preview) return\n const wrapper = tableWrapperRef.value\n if (!wrapper) return\n const content = contentWrapperRef.value\n if (!content) return\n const contentRoot = content.querySelector('tbody')\n if (!contentRoot) return\n const previewRoot = preview.querySelector('tbody')\n if (!previewRoot) return\n const yHandle = yLineHandleRef.value\n if (!yHandle) return\n const xHandle = xLineHandleRef.value\n if (!xHandle) return\n\n const context = {\n preview,\n wrapper,\n content,\n contentRoot,\n previewRoot,\n yHandle,\n xHandle,\n }\n\n return context\n}\n","export function clearPreview(previewRoot: HTMLElement) {\n while (previewRoot.firstChild) previewRoot.removeChild(previewRoot.firstChild)\n}\n\nexport function renderPreview(\n axis: 'x' | 'y',\n preview: HTMLElement,\n previewRoot: HTMLElement,\n tableContent: HTMLElement,\n index: number\n) {\n const tableBodyOrContent = tableContent.querySelector('tbody') || tableContent\n const { width: tableWidth, height: tableHeight } =\n tableBodyOrContent.getBoundingClientRect()\n if (axis === 'y') {\n const rows = tableContent.querySelectorAll('tr')\n const row = rows[index]\n if (!row) return\n\n previewRoot.appendChild(row.cloneNode(true))\n const height = row.getBoundingClientRect().height\n\n Object.assign(preview.style, {\n width: `${tableWidth}px`,\n height: `${height}px`,\n })\n\n preview.dataset.show = 'true'\n\n return\n }\n\n if (axis === 'x') {\n const rows = tableContent.querySelectorAll('tr')\n let width: number | undefined\n\n Array.from(rows).forEach((row) => {\n const col = row.children[index]\n if (!col) return\n\n if (width === undefined) 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 Object.assign(preview.style, {\n width: `${width}px`,\n height: `${tableHeight}px`,\n })\n\n preview.dataset.show = 'true'\n\n return\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\n\nimport { editorViewCtx } from '@jvs-milkdown/core'\n\nimport type { DragContext, Refs } from '../view/types'\n\nimport { prepareDndContext } from './prepare-dnd-context'\nimport { clearPreview, renderPreview } from './preview'\n\nexport function createDragRowHandler(refs: Refs, ctx?: Ctx) {\n return (event: DragEvent) => {\n handleDrag(refs, event, ctx, (context) => {\n updateDragInfo('y', event, context, refs)\n\n const { preview, content, previewRoot } = context\n\n clearPreview(previewRoot)\n\n const { hoverIndex } = refs\n const [rowIndex] = hoverIndex.value\n renderPreview('y', preview, previewRoot, content, rowIndex)\n })\n }\n}\n\nexport function createDragColHandler(refs: Refs, ctx?: Ctx) {\n return (event: DragEvent) => {\n handleDrag(refs, event, ctx, (context) => {\n updateDragInfo('x', event, context, refs)\n\n const { preview, content, previewRoot } = context\n\n const { hoverIndex } = refs\n const [_, colIndex] = hoverIndex.value\n\n clearPreview(previewRoot)\n\n renderPreview('x', preview, previewRoot, content, colIndex)\n })\n }\n}\n\nfunction updateDragInfo(\n axis: 'x' | 'y',\n event: DragEvent,\n context: DragContext,\n refs: Refs\n) {\n const { xHandle, yHandle, preview } = context\n xHandle.dataset.displayType = axis === 'y' ? 'indicator' : 'none'\n yHandle.dataset.displayType = axis === 'x' ? 'indicator' : 'none'\n\n const { hoverIndex, dragInfo } = refs\n const [rowIndex, colIndex] = hoverIndex.value\n\n dragInfo.value = {\n startCoords: [event.clientX, event.clientY],\n startIndex: axis === 'y' ? rowIndex : colIndex,\n endIndex: axis === 'y' ? rowIndex : colIndex,\n type: axis === 'y' ? 'row' : 'col',\n }\n\n preview.dataset.direction = axis === 'y' ? 'vertical' : 'horizontal'\n}\n\nfunction handleDrag(\n refs: Refs,\n event: DragEvent,\n ctx: Ctx | undefined,\n fn: (context: DragContext) => void\n) {\n const view = ctx?.get(editorViewCtx)\n if (!view?.editable) return\n\n event.stopPropagation()\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move'\n // Required by some browsers to properly initiate the drag; empty string might be rejected\n event.dataTransfer.setData('text/plain', 'milkdown-table-drag')\n }\n\n const context = prepareDndContext(refs)\n\n if (!context) 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","import type { Node } from '@jvs-milkdown/prose/model'\nimport type { EditorView } from '@jvs-milkdown/prose/view'\nimport type { Ref } from 'vue'\n\nimport { findParent } from '@jvs-milkdown/prose'\nimport { CellSelection, findTable } from '@jvs-milkdown/prose/tables'\n\nimport type { CellIndex, Refs } from './types'\n\nfunction findNodeIndex(parent: Node, child: Node) {\n for (let i = 0; i < parent.childCount; i++) {\n if (parent.child(i) === child) return i\n }\n return -1\n}\n\nexport function findPointerIndex(\n event: PointerEvent,\n view?: EditorView\n): CellIndex | undefined {\n if (!view) return\n\n try {\n const posAtCoords = view.posAtCoords({\n left: event.clientX,\n top: event.clientY,\n })\n if (!posAtCoords) return\n const pos = posAtCoords?.inside\n if (pos == null || pos < 0) return\n\n const $pos = view.state.doc.resolve(pos)\n const node = view.state.doc.nodeAt(pos)\n if (!node) 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)\n ? node\n : findParent((node) => cellType.includes(node.type.name))($pos)?.node\n const row = findParent((node) => rowType.includes(node.type.name))(\n $pos\n )?.node\n const table = findParent((node) => node.type.name === 'table')($pos)?.node\n if (!cell || !row || !table) return\n\n const columnIndex = findNodeIndex(row, cell)\n const rowIndex = findNodeIndex(table, row)\n\n return [rowIndex, columnIndex]\n } catch {\n return undefined\n }\n}\n\nexport function getRelatedDOM(\n contentWrapperRef: Ref<HTMLElement | undefined>,\n [rowIndex, columnIndex]: CellIndex\n) {\n const content = contentWrapperRef.value\n if (!content) return\n const rows = content.querySelectorAll('tr')\n const row = rows[rowIndex]\n if (!row) return\n\n const firstRow = rows[0]\n if (!firstRow) return\n\n const headerCol = firstRow.children[columnIndex]\n if (!headerCol) return\n\n const col = row.children[columnIndex]\n if (!col) return\n\n return {\n row,\n col,\n headerCol,\n }\n}\n\nexport function recoveryStateBetweenUpdate(\n refs: Refs,\n view?: EditorView,\n node?: Node\n) {\n if (!node) return\n if (!view) return\n const { selection } = view.state\n const isCellSelection = (sel: any) =>\n sel &&\n typeof sel.isColSelection === 'function' &&\n typeof sel.forEachCell === 'function'\n\n if (!isCellSelection(selection)) return\n\n const { $from } = selection\n const table = findTable($from)\n if (!table || table.node !== node) return\n\n if (selection.isColSelection()) {\n const { $head } = selection\n const colIndex = $head.index($head.depth - 1)\n refs.hoverIndex.value = [0, colIndex]\n return\n }\n if (selection.isRowSelection()) {\n const { $head } = selection\n const rowNode = findParent(\n (node) =>\n node.type.name === 'table_row' || node.type.name === 'table_header_row'\n )($head)\n if (!rowNode) return\n const rowIndex = findNodeIndex(table.node, rowNode.node)\n refs.hoverIndex.value = [rowIndex, 0]\n }\n}\n","function findDragOverElement(\n elements: Element[],\n pointer: number,\n axis: 'x' | 'y'\n): [Element, number] | undefined {\n const startProp = axis === 'x' ? 'left' : 'top'\n const endProp = axis === 'x' ? 'right' : 'bottom'\n const lastIndex = elements.length - 1\n\n const index = elements.findIndex((el, index) => {\n const rect = el.getBoundingClientRect()\n const boundaryStart = rect[startProp]\n const boundaryEnd = rect[endProp]\n\n // The pointer is within the boundary of the current element.\n if (boundaryStart <= pointer && pointer <= boundaryEnd) return true\n // The pointer is beyond the last element.\n if (index === lastIndex && pointer > boundaryEnd) return true\n // The pointer is before the first element.\n if (index === 0 && pointer < boundaryStart) return true\n\n return false\n })\n\n const element = elements[index]\n\n return element ? [element, index] : undefined\n}\n\nexport function getDragOverColumn(\n table: Element,\n pointerX: number\n): [element: Element, index: number] | undefined {\n const firstRow = table.querySelector('tr')\n if (!firstRow) return\n const cells = Array.from(firstRow.children)\n return findDragOverElement(cells, pointerX, 'x')\n}\n\nexport function getDragOverRow(\n table: Element,\n pointerY: number\n): [element: Element, index: number] | undefined {\n const rows = Array.from(table.querySelectorAll('tr'))\n return findDragOverElement(rows, pointerY, 'y')\n}\n","import { computePosition, offset } from '@floating-ui/dom'\nimport { throttle } from 'lodash-es'\n\nimport type { Refs } from '../view/types'\n\nimport { getRelatedDOM } from '../view/utils'\nimport { getDragOverColumn, getDragOverRow } from './calc-drag-over'\nimport { prepareDndContext } from './prepare-dnd-context'\n\nexport function createDragOverHandler(refs: Refs): (e: DragEvent) => void {\n const updatePosition = throttle((e: DragEvent) => {\n const context = prepareDndContext(refs)\n if (!context) return\n const { preview, content, contentRoot, xHandle, yHandle } = context\n const { dragInfo, hoverIndex } = refs\n\n if (preview.dataset.show === 'false') return\n const dom = getRelatedDOM(refs.contentWrapperRef, hoverIndex.value!)\n if (!dom) return\n const firstRow = contentRoot.querySelector('tr')\n if (!firstRow) return\n const info = dragInfo.value\n if (!info) return\n\n if (!contentRoot.offsetParent) return\n\n const wrapperOffsetTop = (contentRoot.offsetParent as HTMLElement).offsetTop\n const wrapperOffsetLeft = (contentRoot.offsetParent as HTMLElement)\n .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\n const [startX] = info.startCoords\n const direction = startX < e.clientX ? 'right' : 'left'\n\n preview.style.top = `${wrapperOffsetTop}px`\n const previewLeftOffset =\n 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 dragOverColumn = getDragOverColumn(contentRoot, e.clientX)\n if (dragOverColumn) {\n const [col, index] = dragOverColumn\n const yHandleWidth = yHandle.getBoundingClientRect().width\n const contentBoundary = content.getBoundingClientRect()\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 .catch(console.error)\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\n const [_, startY] = info.startCoords\n const direction = startY < e.clientY ? 'down' : 'up'\n\n const previewTopOffset =\n 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 dragOverRow = getDragOverRow(contentRoot, e.clientY)\n if (dragOverRow) {\n const [row, index] = dragOverRow\n const xHandleHeight = xHandle.getBoundingClientRect().height\n const contentBoundary = content.getBoundingClientRect()\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 .catch(console.error)\n }\n }\n }, 20)\n\n return (e: DragEvent) => {\n const context = prepareDndContext(refs)\n if (!context) return\n const { preview, contentRoot } = context\n if (preview.dataset.show === 'false') return\n\n e.preventDefault()\n e.stopPropagation()\n\n // SYNCHRONOUSLY update the endIndex so that rapid drops don't miss the final position\n const info = refs.dragInfo.value\n if (info) {\n if (info.type === 'col') {\n const dragOverColumn = getDragOverColumn(contentRoot, e.clientX)\n if (dragOverColumn) {\n info.endIndex = dragOverColumn[1]\n }\n } else if (info.type === 'row') {\n const dragOverRow = getDragOverRow(contentRoot, e.clientY)\n if (dragOverRow) {\n info.endIndex = dragOverRow[1]\n }\n }\n }\n\n updatePosition(e)\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\n\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/core'\nimport {\n moveColCommand,\n moveRowCommand,\n selectColCommand,\n selectRowCommand,\n} from '@jvs-milkdown/preset-gfm'\n\nimport type { CellIndex, Refs } from './types'\n\nimport {\n createDragColHandler,\n createDragRowHandler,\n} from '../dnd/create-drag-handler'\nimport { createDragOverHandler } from '../dnd/drag-over-handler'\n\nexport function useDragHandlers(\n refs: Refs,\n ctx?: Ctx,\n getPos?: () => number | undefined\n) {\n const { dragPreviewRef, yLineHandleRef, xLineHandleRef, dragInfo } = refs\n\n const dragRow = createDragRowHandler(refs, ctx)\n const dragCol = createDragColHandler(refs, ctx)\n\n const onDragEnd = (e: DragEvent) => {\n const preview = dragPreviewRef.value\n if (!preview) return\n\n if (preview.dataset.show === 'false') return\n\n e.preventDefault()\n e.stopPropagation()\n\n const previewRoot = preview?.querySelector('tbody')\n\n while (previewRoot?.firstChild)\n previewRoot?.removeChild(previewRoot.firstChild)\n\n if (preview) preview.dataset.show = 'false'\n dragInfo.value = undefined\n }\n\n const onDrop = (e: DragEvent) => {\n const preview = dragPreviewRef.value\n if (!preview) return\n const yHandle = yLineHandleRef.value\n if (!yHandle) return\n const xHandle = xLineHandleRef.value\n if (!xHandle) return\n const info = dragInfo.value\n if (!info) return\n if (!ctx) return\n if (preview.dataset.show === 'false') return\n\n // Prevent browser default drop behavior and stop ProseMirror from handling\n e.preventDefault()\n e.stopPropagation()\n\n yHandle.dataset.show = 'false'\n xHandle.dataset.show = 'false'\n\n if (info.startIndex === info.endIndex) {\n // Clean up preview even when no move is needed\n const previewRoot = preview?.querySelector('tbody')\n while (previewRoot?.firstChild)\n previewRoot?.removeChild(previewRoot.firstChild)\n preview.dataset.show = 'false'\n dragInfo.value = undefined\n return\n }\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 refs.hoverIndex.value = index\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 refs.hoverIndex.value = index\n }\n\n // Clean up preview\n const previewRoot = preview?.querySelector('tbody')\n while (previewRoot?.firstChild)\n previewRoot?.removeChild(previewRoot.firstChild)\n preview.dataset.show = 'false'\n dragInfo.value = undefined\n\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n const onDragOver = createDragOverHandler(refs)\n\n return {\n dragRow,\n dragCol,\n onDragOver,\n onDrop,\n onDragEnd,\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\n\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/core'\nimport {\n addRowWithAlignment,\n deleteSelectedCellsCommand,\n mergeCellsCommand,\n selectColCommand,\n selectRowCommand,\n setAlignCommand,\n} from '@jvs-milkdown/preset-gfm'\nimport { TextSelection } from '@jvs-milkdown/prose/state'\nimport {\n CellSelection,\n selectedRect,\n splitCellWithType,\n TableMap,\n type TableRect,\n addColumn,\n} from '@jvs-milkdown/prose/tables'\n\nimport type { Refs } from './types'\n\nexport function useOperation(\n refs: Refs,\n ctx?: Ctx,\n getPos?: () => number | undefined\n) {\n const { hoverIndex } = refs\n\n const addRowByIndex = (index: number) => {\n if (!ctx || !ctx.get(editorViewCtx).editable) return\n\n const view = ctx.get(editorViewCtx)\n const tablePos = getPos?.()\n if (tablePos == null) return\n\n const table = view.state.doc.nodeAt(tablePos)\n if (!table) return\n\n const tableStart = tablePos + 1\n const map = TableMap.get(table)\n const insertRow = Math.min(index, map.height)\n\n const tr = view.state.tr\n const rect: TableRect = {\n map,\n tableStart,\n table,\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n }\n addRowWithAlignment(ctx, tr, rect, insertRow)\n view.dispatch(tr)\n }\n\n const addColByIndex = (index: number) => {\n if (!ctx || !ctx.get(editorViewCtx).editable) return\n\n const view = ctx.get(editorViewCtx)\n const tablePos = getPos?.()\n if (tablePos == null) return\n\n const table = view.state.doc.nodeAt(tablePos)\n if (!table) return\n\n const tableStart = tablePos + 1\n const map = TableMap.get(table)\n const insertCol = Math.min(index, map.width)\n\n const tr = view.state.tr\n const rect: TableRect = {\n map,\n tableStart,\n table,\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n }\n addColumn(tr, rect, insertCol)\n view.dispatch(tr)\n }\n\n const selectCol = () => {\n if (!ctx) return\n const [_, colIndex] = hoverIndex.value!\n const commands = ctx.get(commandsCtx)\n const pos = (getPos?.() ?? 0) + 1\n commands.call(selectColCommand.key, { pos, index: colIndex })\n }\n\n const selectRow = () => {\n if (!ctx) return\n const [rowIndex, _] = hoverIndex.value!\n const commands = ctx.get(commandsCtx)\n const pos = (getPos?.() ?? 0) + 1\n commands.call(selectRowCommand.key, { pos, index: rowIndex })\n }\n\n const deleteSelected = (e: PointerEvent) => {\n if (!ctx) return\n\n if (!ctx.get(editorViewCtx).editable) return\n\n if (e.button !== 0) return\n\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(deleteSelectedCellsCommand.key)\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n\n const onAlign =\n (direction: 'left' | 'center' | 'right') => (e: PointerEvent) => {\n if (!ctx) return\n\n if (!ctx.get(editorViewCtx).editable) return\n\n if (e.button !== 0) return\n\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(setAlignCommand.key, direction)\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n\n const onMergeCells = (e: PointerEvent) => {\n if (!ctx) return\n if (!ctx.get(editorViewCtx).editable) return\n if (e.button !== 0) return\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(mergeCellsCommand.key)\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n\n const onSplitCell = (e: PointerEvent) => {\n if (!ctx) return\n if (!ctx.get(editorViewCtx).editable) return\n if (e.button !== 0) return\n e.preventDefault()\n e.stopPropagation()\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { selection } = state\n\n // Find the merged cell\n let cellNode: ReturnType<typeof selection.$from.node> | null = null\n let cellPos: number | null = null\n\n if (selection instanceof CellSelection) {\n selection.forEachCell((cell, pos) => {\n if (\n !cellNode &&\n ((cell.attrs.rowspan ?? 1) > 1 || (cell.attrs.colspan ?? 1) > 1)\n ) {\n cellNode = cell\n cellPos = pos\n }\n })\n } else {\n const { $from } = selection\n for (let d = $from.depth; d > 0; d--) {\n const n = $from.node(d)\n if (n.type.name === 'table_cell' || n.type.name === 'table_header') {\n cellNode = n\n cellPos = $from.before(d)\n break\n }\n }\n }\n\n if (!cellNode || cellPos == null) return\n if (\n (cellNode.attrs.colspan ?? 1) == 1 &&\n (cellNode.attrs.rowspan ?? 1) == 1\n )\n return\n\n // Set selection to TextSelection inside the merged cell.\n // This avoids the prosemirror-tables bug where splitCell creates\n // a CellSelection using unmapped positions after the split.\n const $cellPos = state.doc.resolve(cellPos + 2)\n view.dispatch(state.tr.setSelection(TextSelection.near($cellPos)))\n\n // Use splitCellWithType to produce correct cell types per row.\n // prosemirror-tables' splitCell always uses the merged cell's type\n // (e.g. table_header) for ALL new cells, but milkdown's schema\n // requires table_header in table_header_row and table_cell in\n // table_row. Without this, inserts into body rows fail due to\n // schema mismatch, corrupting the table.\n const newState = view.state\n const { table } = selectedRect(newState)\n const { schema } = newState\n\n splitCellWithType(({ row }) => {\n const rowNode = table.child(row)\n return rowNode.type.name === 'table_header_row'\n ? schema.nodes.table_header!\n : schema.nodes.table_cell!\n })(newState, (tr) => {\n view.dispatch(tr)\n })\n\n requestAnimationFrame(() => {\n view.focus()\n })\n }\n\n return {\n addRowByIndex,\n addColByIndex,\n selectCol,\n selectRow,\n deleteSelected,\n onAlign,\n onMergeCells,\n onSplitCell,\n }\n}\n","import type { EditorView } from '@jvs-milkdown/prose/view'\n\nimport type { Refs } from './types'\n\nexport function usePointerHandlers(_refs: Refs, _view?: EditorView) {\n const pointerMove = (_e: PointerEvent) => {}\n const pointerLeave = () => {}\n\n return {\n pointerMove,\n pointerLeave,\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\nimport type { Node } from '@jvs-milkdown/prose/model'\nimport type { EditorView } from '@jvs-milkdown/prose/view'\n\nimport { computePosition } from '@floating-ui/dom'\nimport {\n CellSelection,\n mergeCells,\n splitCell,\n} from '@jvs-milkdown/prose/tables'\nimport {\n defineComponent,\n ref,\n type VNodeRef,\n h,\n onMounted,\n onBeforeUnmount,\n type Ref,\n watch,\n} from 'vue'\n\nimport type { TableBlockConfig } from '../config'\nimport type { CellIndex, DragInfo, Refs } from './types'\n\nimport { Icon } from '../../__internal__/components/icon'\nimport { keepAlive } from '../../__internal__/keep-alive'\nimport { useDragHandlers } from './drag'\nimport { useOperation } from './operation'\nimport { usePointerHandlers } from './pointer'\nimport { recoveryStateBetweenUpdate } from './utils'\n\nkeepAlive(h)\n\ntype TableBlockProps = {\n view: EditorView\n ctx: Ctx\n getPos: () => number | undefined\n config: TableBlockConfig\n onMount: (div: Element) => void\n node: Ref<Node>\n}\n\nexport const TableBlock = defineComponent<TableBlockProps>({\n props: {\n view: {\n type: Object,\n required: true,\n },\n ctx: {\n type: Object,\n required: true,\n },\n getPos: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n onMount: {\n type: Function,\n required: true,\n },\n node: {\n type: Object,\n required: true,\n },\n },\n setup({ view, node, ctx, getPos, config, onMount }) {\n const contentWrapperRef = ref<HTMLElement>()\n let contentMounted = false\n const contentWrapperFunctionRef: VNodeRef = (div) => {\n if (div == null) return\n if (div instanceof HTMLElement) {\n contentWrapperRef.value = div\n if (!contentMounted) {\n onMount(div)\n contentMounted = true\n }\n } else {\n contentWrapperRef.value = undefined\n }\n }\n const tableWrapperRef = ref<HTMLDivElement>()\n const dragPreviewRef = ref<HTMLDivElement>()\n const hoverIndex = ref<CellIndex>([0, 0])\n const lineHoverIndex = ref<CellIndex>([-1, -1])\n const dragInfo = ref<DragInfo>()\n const yLineHandleRef = ref<HTMLDivElement>()\n const xLineHandleRef = ref<HTMLDivElement>()\n\n // --- Column resize state ---\n const resizingCol = ref(-1)\n const colWidths = ref<number[]>([])\n\n /** Count total columns in the table by expanding colspan across all rows */\n const getColCount = () => {\n let maxCols = 0\n node.value.forEach((row) => {\n let cols = 0\n row.forEach((cell) => {\n cols += (cell.attrs.colspan as number) || 1\n })\n if (cols > maxCols) maxCols = cols\n })\n return maxCols\n }\n\n const syncColWidths = () => {\n if (resizingCol.value >= 0) return\n const colCount = getColCount()\n const prevColCount = colWidths.value.length\n const widths: number[] = []\n const hasBounds = colBounds.value.length >= colCount\n\n // Compute average width of existing columns for new columns without data\n const existingNonZero = colWidths.value.filter((w) => w > 0)\n const avgWidth =\n existingNonZero.length > 0\n ? Math.round(\n existingNonZero.reduce((a, b) => a + b, 0) /\n existingNonZero.length\n )\n : 0\n\n for (let i = 0; i < colCount; i++) {\n const isNewColumn = i >= prevColCount\n // Find a cell that covers this column index\n let found = false\n node.value.forEach((row) => {\n if (found) return\n let colIdx = 0\n row.forEach((cell) => {\n if (found) return\n const colspan = (cell.attrs.colspan as number) || 1\n const colwidth: unknown = cell.attrs.colwidth\n if (colIdx === i) {\n if (colspan > 1) {\n if (Array.isArray(colwidth) && colwidth.length > 0) {\n const totalW = colwidth.reduce(\n (sum: number, w: unknown) => sum + ((w as number) || 0),\n 0\n )\n widths.push(Math.round(totalW / colspan))\n } else if (!isNewColumn && hasBounds && colBounds.value[i]) {\n widths.push(Math.round(colBounds.value[i]!.width))\n } else {\n widths.push(avgWidth)\n }\n } else {\n if (Array.isArray(colwidth) && colwidth[0]) {\n widths.push(colwidth[0] as number)\n } else if (!isNewColumn && hasBounds && colBounds.value[i]) {\n widths.push(Math.round(colBounds.value[i]!.width))\n } else {\n widths.push(avgWidth)\n }\n }\n found = true\n }\n colIdx += colspan\n })\n })\n if (!found) {\n widths.push(\n !isNewColumn && hasBounds && colBounds.value[i]\n ? Math.round(colBounds.value[i]!.width)\n : avgWidth\n )\n }\n }\n colWidths.value = widths\n }\n\n const refs: Refs = {\n dragPreviewRef,\n tableWrapperRef,\n contentWrapperRef,\n yLineHandleRef,\n xLineHandleRef,\n hoverIndex,\n lineHoverIndex,\n dragInfo,\n }\n\n const { pointerLeave, pointerMove } = usePointerHandlers(refs, view)\n const { dragRow, dragCol, onDragOver, onDragEnd, onDrop } = useDragHandlers(\n refs,\n ctx,\n getPos\n )\n const {\n addRowByIndex,\n addColByIndex,\n selectCol,\n selectRow,\n deleteSelected,\n onAlign,\n onMergeCells,\n onSplitCell,\n } = useOperation(refs, ctx, getPos)\n\n // --- Floating cell toolbar state ---\n const cellToolbarRef = ref<HTMLDivElement>()\n const showCellToolbar = ref(false)\n const canMerge = ref(false)\n const canSplit = ref(false)\n\n const updateCellToolbar = () => {\n const { selection } = view.state\n const tablePos = getPos()\n if (tablePos == null) {\n showCellToolbar.value = false\n return\n }\n const tableEnd = tablePos + node.value.nodeSize\n if (selection.from < tablePos || selection.from > tableEnd) {\n showCellToolbar.value = false\n return\n }\n\n // Bypass instanceof checks due to potential multiple instances of prosemirror-tables\n const isCellSelection = (sel: any) =>\n sel &&\n typeof sel.isColSelection === 'function' &&\n typeof sel.forEachCell === 'function'\n\n if (isCellSelection(selection)) {\n // Use prosemirror-tables commands (without dispatch) to check if merge/split is currently possible\n canMerge.value = mergeCells(view.state)\n canSplit.value = splitCell(view.state)\n } else {\n // TextSelection: only show toolbar for CellSelection-based actions\n showCellToolbar.value = false\n return\n }\n\n if (!canMerge.value && !canSplit.value) {\n showCellToolbar.value = false\n return\n }\n\n if (activeColIndex.value !== -1 || activeRowIndex.value !== -1) {\n showCellToolbar.value = false\n return\n }\n\n showCellToolbar.value = true\n\n // Position toolbar above the first selected cell using floating-ui\n requestAnimationFrame(() => {\n const toolbar = cellToolbarRef.value\n const content = contentWrapperRef.value\n if (!toolbar || !content) return\n\n const selectedCells = content.querySelectorAll('.selectedCell')\n let refEl: Element | null =\n selectedCells.length > 0 ? selectedCells[0]! : null\n\n if (!refEl && !(view.state.selection instanceof CellSelection)) {\n const { $from } = view.state.selection\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (\n node.type.name === 'table_cell' ||\n node.type.name === 'table_header'\n ) {\n const cellPos = $from.before(d)\n const dom = view.nodeDOM(cellPos)\n if (dom instanceof HTMLElement) refEl = dom\n break\n }\n }\n }\n\n if (!refEl) return\n\n computePosition(refEl, toolbar, { placement: 'top' })\n .then(({ x, y }) => {\n toolbar.style.left = `${x}px`\n toolbar.style.top = `${y}px`\n toolbar.dataset.show = 'true'\n })\n .catch(console.error)\n })\n }\n\n const colBounds = ref<{ left: number; width: number }[]>([])\n const rowBounds = ref<{ top: number; height: number }[]>([])\n\n let ro: ResizeObserver | null = null\n let mo: MutationObserver | null = null\n\n const updateBounds = () => {\n const content = contentWrapperRef.value\n if (!content) return\n\n const rows = content.querySelectorAll('tr')\n const tableRect = content.getBoundingClientRect()\n const expectedColCount = getColCount()\n\n // Find the first row where all cells are unmerged (no colspan),\n // so we can accurately measure individual column positions.\n let bestRow: HTMLTableRowElement | null = null\n rows.forEach((row) => {\n if (bestRow) return\n if (row.children.length === expectedColCount) {\n bestRow = row as HTMLTableRowElement\n }\n })\n\n const measureRow = bestRow ?? content.querySelector('tr')\n if (measureRow) {\n colBounds.value = Array.from(measureRow.children).map((c) => {\n const rect = c.getBoundingClientRect()\n return { left: rect.left - tableRect.left, width: rect.width }\n })\n }\n\n rowBounds.value = Array.from(rows).map((c) => {\n const rect = c.getBoundingClientRect()\n return { top: rect.top - tableRect.top, height: rect.height }\n })\n syncColWidths()\n }\n\n const startResize = (e: PointerEvent, colIndex: number) => {\n if (!view.editable) return\n e.preventDefault()\n e.stopPropagation()\n const startX = e.clientX\n const startWidth = colBounds.value[colIndex]?.width ?? 100\n resizingCol.value = colIndex\n\n const onMove = (ev: PointerEvent) => {\n const delta = ev.clientX - startX\n const newWidth = Math.max(50, startWidth + delta)\n colWidths.value = colWidths.value.map((w, i) =>\n i === colIndex ? newWidth : w\n )\n }\n\n const onUp = (ev: PointerEvent) => {\n document.removeEventListener('pointermove', onMove)\n document.removeEventListener('pointerup', onUp)\n\n const delta = ev.clientX - startX\n const newWidth = Math.max(50, startWidth + delta)\n\n // Commit via ProseMirror transaction\n const tablePos = getPos()\n if (tablePos == null) {\n resizingCol.value = -1\n return\n }\n const tableNode = node.value\n let tr = view.state.tr\n let pos = tablePos + 1\n\n tableNode.forEach((row) => {\n let cellIdx = 0\n row.forEach((cell, _offset, cellNodePos) => {\n if (cellIdx === colIndex) {\n const absPos = tablePos + 1 + cellNodePos\n const colwidth = [Math.round(newWidth)]\n tr = tr.setNodeMarkup(absPos, undefined, {\n ...cell.attrs,\n colwidth,\n })\n }\n cellIdx++\n })\n pos += row.nodeSize\n })\n\n resizingCol.value = -1\n if (tr.docChanged) view.dispatch(tr)\n }\n\n document.addEventListener('pointermove', onMove)\n document.addEventListener('pointerup', onUp)\n }\n\n const activeColIndex = ref(-1)\n const activeRowIndex = ref(-1)\n\n // Listen for ProseMirror state updates\n const dispatchListener = () => {\n setTimeout(() => {\n // Update active handler button groups based on selection\n const { selection } = view.state\n const isCellSelection = (sel: any) =>\n sel &&\n typeof sel.isColSelection === 'function' &&\n typeof sel.forEachCell === 'function'\n\n if (isCellSelection(selection)) {\n const selAny = selection as any\n if (selAny.isColSelection()) {\n const $headCell = selAny.$headCell\n activeColIndex.value = $headCell\n ? $headCell.index($headCell.depth)\n : -1\n activeRowIndex.value = -1\n } else if (selAny.isRowSelection()) {\n const $headCell = selAny.$headCell\n activeColIndex.value = -1\n activeRowIndex.value = $headCell\n ? $headCell.index($headCell.depth - 1)\n : -1\n } else {\n activeColIndex.value = -1\n activeRowIndex.value = -1\n }\n } else {\n activeColIndex.value = -1\n activeRowIndex.value = -1\n }\n\n updateCellToolbar()\n }, 0)\n }\n\n onMounted(() => {\n requestAnimationFrame(() => {\n if (view.editable) recoveryStateBetweenUpdate(refs, view, node.value)\n syncColWidths()\n })\n view.dom.addEventListener('keyup', dispatchListener)\n view.dom.addEventListener('pointerup', dispatchListener)\n updateCellToolbar()\n\n ro = new ResizeObserver(() => {\n requestAnimationFrame(updateBounds)\n })\n mo = new MutationObserver((mutations) => {\n let shouldUpdate = false\n for (const mut of mutations) {\n if (mut.type === 'childList') {\n for (const node of mut.addedNodes) {\n if (\n node instanceof HTMLElement &&\n ['TR', 'TD', 'TH', 'TBODY'].includes(node.nodeName)\n )\n shouldUpdate = true\n }\n for (const node of mut.removedNodes) {\n if (\n node instanceof HTMLElement &&\n ['TR', 'TD', 'TH', 'TBODY'].includes(node.nodeName)\n )\n shouldUpdate = true\n }\n } else if (mut.type === 'attributes') {\n shouldUpdate = true\n }\n }\n if (shouldUpdate) {\n requestAnimationFrame(updateBounds)\n }\n })\n\n if (contentWrapperRef.value) {\n ro.observe(contentWrapperRef.value)\n mo.observe(contentWrapperRef.value, {\n childList: true,\n subtree: true,\n attributes: true,\n })\n }\n })\n\n watch(node, () => {\n dispatchListener()\n requestAnimationFrame(updateBounds)\n })\n\n onBeforeUnmount(() => {\n view.dom.removeEventListener('keyup', dispatchListener)\n view.dom.removeEventListener('pointerup', dispatchListener)\n if (ro) ro.disconnect()\n if (mo) mo.disconnect()\n })\n\n return () => {\n return (\n <div\n onDragend={onDragEnd}\n onDragover={(e) => {\n e.preventDefault()\n onDragOver(e)\n // Stop propagation during active drag to prevent ProseMirror interference\n if (dragInfo.value) {\n e.stopPropagation()\n }\n }}\n onDrop={(e) => {\n const isDragging = !!dragInfo.value\n onDrop(e)\n // Stop ProseMirror from handling the drop during table drag\n if (isDragging) {\n e.preventDefault()\n e.stopPropagation()\n }\n }}\n onDragleave={(e) => e.preventDefault()}\n onPointermove={pointerMove}\n onPointerleave={pointerLeave}\n class=\"milkdown-table-wrapper-outer\"\n >\n {/* Floating cell toolbar (merge/split) */}\n <div\n ref={cellToolbarRef}\n data-show={showCellToolbar.value ? 'true' : 'false'}\n class=\"cell-toolbar\"\n contenteditable=\"false\"\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n {canMerge.value ? (\n <button\n type=\"button\"\n class=\"cell-toolbar-btn\"\n onPointerdown={onMergeCells}\n >\n <Icon icon={config.renderButton('merge_cells')} />\n </button>\n ) : canSplit.value ? (\n <button\n type=\"button\"\n class=\"cell-toolbar-btn\"\n onPointerdown={onSplitCell}\n >\n <Icon icon={config.renderButton('split_cell')} />\n </button>\n ) : undefined}\n </div>\n\n <div class=\"table-wrapper\" ref={tableWrapperRef}>\n {/* Fixed Col Drag Handles */}\n <div contenteditable=\"false\" class=\"fixed-handles-col\">\n {colBounds.value.map((bound, i) => (\n <div\n key={`col-${i}`}\n class=\"handle cell-handle fixed\"\n data-role=\"col-drag-handle\"\n draggable=\"true\"\n style={{ left: `${bound.left}px`, width: `${bound.width}px` }}\n onDragstart={(e) => {\n hoverIndex.value = [0, i]\n dragCol(e)\n }}\n onClick={() => {\n hoverIndex.value = [0, i]\n selectCol()\n dispatchListener()\n activeColIndex.value = i\n activeRowIndex.value = -1\n }}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n onPointermove={(e: PointerEvent) => e.stopPropagation()}\n >\n <div\n class=\"button-group\"\n data-show={activeColIndex.value === i ? 'true' : 'false'}\n onPointermove={(e: PointerEvent) => e.stopPropagation()}\n >\n {canMerge.value ? (\n <button type=\"button\" onPointerdown={onMergeCells}>\n <Icon icon={config.renderButton('merge_cells')} />\n </button>\n ) : canSplit.value ? (\n <button type=\"button\" onPointerdown={onSplitCell}>\n <Icon icon={config.renderButton('split_cell')} />\n </button>\n ) : undefined}\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n onAlign('left')(e)\n }}\n >\n <Icon icon={config.renderButton('align_col_left')} />\n </button>\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n onAlign('center')(e)\n }}\n >\n <Icon icon={config.renderButton('align_col_center')} />\n </button>\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n onAlign('right')(e)\n }}\n >\n <Icon icon={config.renderButton('align_col_right')} />\n </button>\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n deleteSelected(e)\n }}\n >\n <Icon icon={config.renderButton('delete_col')} />\n </button>\n </div>\n </div>\n ))}\n </div>\n\n {/* Add Col Dots */}\n <div contenteditable=\"false\" class=\"add-dots-col\">\n {[\n ...colBounds.value.map((b) => b.left),\n colBounds.value.length\n ? colBounds.value[colBounds.value.length - 1]!.left +\n colBounds.value[colBounds.value.length - 1]!.width\n : 0,\n ].map((left, i) => (\n <div\n key={`add-col-${i}`}\n class=\"add-dot\"\n style={{ left: `${left}px` }}\n onClick={() => addColByIndex(i)}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon icon={config.renderButton('add_col')} />\n </div>\n ))}\n </div>\n\n {/* Column Resize Handles */}\n <div contenteditable=\"false\" class=\"resize-handles-col\">\n {colBounds.value.map((bound, i) => (\n <div\n key={`resize-${i}`}\n class={[\n 'col-resize-handle',\n resizingCol.value === i ? 'active' : '',\n ].join(' ')}\n style={{\n left: `${bound.left + bound.width - 3}px`,\n }}\n onPointerdown={(e: PointerEvent) => startResize(e, i)}\n />\n ))}\n </div>\n\n {/* Fixed Row Drag Handles */}\n <div contenteditable=\"false\" class=\"fixed-handles-row\">\n {rowBounds.value.map((bound, i) => (\n <div\n key={`row-${i}`}\n class=\"handle cell-handle fixed\"\n data-role=\"row-drag-handle\"\n draggable=\"true\"\n style={{ top: `${bound.top}px`, height: `${bound.height}px` }}\n onDragstart={(e) => {\n hoverIndex.value = [i, 0]\n dragRow(e)\n }}\n onClick={() => {\n hoverIndex.value = [i, 0]\n selectRow()\n dispatchListener()\n activeRowIndex.value = i\n activeColIndex.value = -1\n }}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n <div\n class=\"button-group\"\n data-show={activeRowIndex.value === i ? 'true' : 'false'}\n onPointermove={(e: PointerEvent) => e.stopPropagation()}\n >\n {canMerge.value ? (\n <button type=\"button\" onPointerdown={onMergeCells}>\n <Icon icon={config.renderButton('merge_cells')} />\n </button>\n ) : canSplit.value ? (\n <button type=\"button\" onPointerdown={onSplitCell}>\n <Icon icon={config.renderButton('split_cell')} />\n </button>\n ) : undefined}\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [i, 0]\n deleteSelected(e)\n }}\n >\n <Icon icon={config.renderButton('delete_row')} />\n </button>\n </div>\n </div>\n ))}\n </div>\n\n {/* Add Row Dots */}\n <div contenteditable=\"false\" class=\"add-dots-row\">\n {[\n ...rowBounds.value.map((b) => b.top),\n rowBounds.value.length\n ? rowBounds.value[rowBounds.value.length - 1]!.top +\n rowBounds.value[rowBounds.value.length - 1]!.height\n : 0,\n ].map((top, i) => (\n <div\n key={`add-row-${i}`}\n class=\"add-dot\"\n style={{ top: `${top}px` }}\n onClick={() => addRowByIndex(i)}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon icon={config.renderButton('add_row')} />\n </div>\n ))}\n </div>\n\n <div\n data-show=\"false\"\n class=\"drag-preview\"\n data-direction=\"vertical\"\n ref={dragPreviewRef}\n >\n <table>\n <tbody></tbody>\n </table>\n </div>\n\n {/* Drop Indicators */}\n <div\n data-show=\"false\"\n contenteditable=\"false\"\n data-display-type=\"indicator\"\n data-role=\"x-line-drag-handle\"\n class=\"handle line-handle\"\n ref={xLineHandleRef}\n />\n <div\n data-show=\"false\"\n contenteditable=\"false\"\n data-display-type=\"indicator\"\n data-role=\"y-line-drag-handle\"\n class=\"handle line-handle\"\n ref={yLineHandleRef}\n />\n\n <table ref={contentWrapperFunctionRef} class=\"children\">\n <colgroup>\n {Array.from({ length: getColCount() }, (_, i) => {\n const w = colWidths.value[i]\n return (\n <col\n key={i}\n style={w && w > 0 ? { width: `${w}px` } : undefined}\n />\n )\n })}\n </colgroup>\n </table>\n </div>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/ctx'\nimport type { Node } from '@jvs-milkdown/prose/model'\nimport type {\n EditorView,\n NodeView,\n NodeViewConstructor,\n ViewMutationRecord,\n} from '@jvs-milkdown/prose/view'\n\nimport { tableSchema } from '@jvs-milkdown/preset-gfm'\nimport { $view } from '@jvs-milkdown/utils'\nimport {\n createApp,\n shallowRef,\n triggerRef,\n type App,\n type ShallowRef,\n} from 'vue'\n\nimport { withMeta } from '../../__internal__/meta'\nimport { tableBlockConfig } from '../config'\nimport { TableBlock } from './component'\n\nexport class TableNodeView implements NodeView {\n dom: HTMLElement\n contentDOM: HTMLElement\n app: App\n\n nodeRef: ShallowRef<Node>\n #selectionUpdateScheduled = false\n\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('div')\n dom.className = 'milkdown-table-block'\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 this.nodeRef = shallowRef(node)\n\n const app = createApp(TableBlock, {\n view,\n ctx,\n getPos,\n config: ctx.get(tableBlockConfig.key),\n onMount: (div: Element) => {\n div.appendChild(contentDOM)\n },\n node: this.nodeRef,\n })\n app.mount(dom)\n this.app = app\n\n this.dom = dom\n }\n\n update(node: Node) {\n if (node.type !== this.node.type) return false\n\n if (node.sameMarkup(this.node) && node.content.eq(this.node.content)) {\n // Content unchanged — still trigger a reactive tick for selection-based UI (cell toolbar)\n if (!this.#selectionUpdateScheduled) {\n this.#selectionUpdateScheduled = true\n queueMicrotask(() => {\n triggerRef(this.nodeRef)\n this.#selectionUpdateScheduled = false\n })\n }\n return true\n }\n\n this.node = node\n this.nodeRef.value = node\n\n return true\n }\n\n stopEvent(e: Event) {\n if (e.type === 'drop' || e.type.startsWith('drag')) return true\n\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n if (e.target instanceof Element && e.target.closest('button')) return true\n }\n\n return false\n }\n\n ignoreMutation(mutation: ViewMutationRecord) {\n if (!this.dom || !this.contentDOM) return true\n\n if ((mutation.type as unknown) === 'selection') return false\n\n if (this.contentDOM === mutation.target && mutation.type === 'attributes')\n return true\n\n if (this.contentDOM.contains(mutation.target)) return false\n\n return true\n }\n\n destroy() {\n this.app.unmount()\n this.dom.remove()\n this.contentDOM.remove()\n }\n}\n\nexport const tableBlockView = $view(\n tableSchema.node,\n (ctx): NodeViewConstructor => {\n return (initialNode, view, getPos) => {\n return new TableNodeView(ctx, initialNode, view, getPos)\n }\n }\n)\n\nwithMeta(tableBlockView, {\n displayName: 'NodeView<table-block>',\n group: 'TableBlock',\n})\n","import type { MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nimport { tableBlockConfig } from './config'\nimport { tableBlockView } from './view'\n\nexport * from './view'\nexport * from './config'\n\nexport const tableBlock: MilkdownPlugin[] = [tableBlockConfig, tableBlockView]\n"],"names":["__spreadValues","node","index","previewRoot","_a","_b"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/__internal__/meta.ts","../../src/table-block/config.ts","../../src/__internal__/keep-alive.ts","../../src/__internal__/components/icon.tsx","../../src/table-block/dnd/prepare-dnd-context.ts","../../src/table-block/dnd/preview.ts","../../src/table-block/dnd/create-drag-handler.ts","../../src/table-block/view/utils.ts","../../src/table-block/dnd/calc-drag-over.ts","../../src/table-block/dnd/drag-over-handler.ts","../../src/table-block/view/drag.ts","../../src/table-block/view/operation.ts","../../src/table-block/view/pointer.ts","../../src/table-block/view/component.tsx","../../src/table-block/view/view.ts","../../src/table-block/index.ts"],"sourcesContent":["import type { Meta, MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@jvs-milkdown/components',\n ...meta,\n },\n })\n\n return plugin\n}\n","import { $ctx } from '@jvs-milkdown/utils'\n\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 | 'merge_cells'\n | 'split_cell'\n\nexport interface TableBlockConfig {\n renderButton: (renderType: RenderType) => 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 case 'merge_cells':\n return '⊞'\n case 'split_cell':\n return '⊟'\n }\n },\n}\n\nexport const tableBlockConfig = $ctx(\n { ...defaultTableBlockConfig },\n 'tableBlockConfigCtx'\n)\n\nwithMeta(tableBlockConfig, {\n displayName: 'Config<table-block>',\n group: 'TableBlock',\n})\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import clsx from 'clsx'\nimport DOMPurify from 'dompurify'\nimport { h } from 'vue'\n\nimport { keepAlive } from '../keep-alive'\n\nkeepAlive(h)\n\ntype IconProps = {\n icon?: string | null\n class?: string\n onClick?: (event: PointerEvent) => void\n}\n\nexport function Icon({ icon, class: className, onClick }: IconProps) {\n return (\n <span\n class={clsx('milkdown-icon', className)}\n onPointerdown={onClick}\n innerHTML={icon ? DOMPurify.sanitize(icon.trim()) : undefined}\n />\n )\n}\n\nIcon.props = {\n icon: {\n type: String,\n required: false,\n },\n class: {\n type: String,\n required: false,\n },\n onClick: {\n type: Function,\n required: false,\n },\n}\n","import type { DragContext, Refs } from '../view/types'\n\nexport function prepareDndContext(refs: Refs): DragContext | undefined {\n const {\n dragPreviewRef,\n tableWrapperRef,\n contentWrapperRef,\n yLineHandleRef,\n xLineHandleRef,\n } = refs\n\n const preview = dragPreviewRef.value\n if (!preview) return\n const wrapper = tableWrapperRef.value\n if (!wrapper) return\n const content = contentWrapperRef.value\n if (!content) return\n const contentRoot = content.querySelector('tbody')\n if (!contentRoot) return\n const previewRoot = preview.querySelector('tbody')\n if (!previewRoot) return\n const yHandle = yLineHandleRef.value\n if (!yHandle) return\n const xHandle = xLineHandleRef.value\n if (!xHandle) return\n\n const context = {\n preview,\n wrapper,\n content,\n contentRoot,\n previewRoot,\n yHandle,\n xHandle,\n }\n\n return context\n}\n","export function clearPreview(previewRoot: HTMLElement) {\n while (previewRoot.firstChild) previewRoot.removeChild(previewRoot.firstChild)\n}\n\nexport function renderPreview(\n axis: 'x' | 'y',\n preview: HTMLElement,\n previewRoot: HTMLElement,\n tableContent: HTMLElement,\n index: number\n) {\n const tableBodyOrContent = tableContent.querySelector('tbody') || tableContent\n const { width: tableWidth, height: tableHeight } =\n tableBodyOrContent.getBoundingClientRect()\n if (axis === 'y') {\n const rows = tableContent.querySelectorAll('tr')\n const row = rows[index]\n if (!row) return\n\n previewRoot.appendChild(row.cloneNode(true))\n const height = row.getBoundingClientRect().height\n\n Object.assign(preview.style, {\n width: `${tableWidth}px`,\n height: `${height}px`,\n })\n\n preview.dataset.show = 'true'\n\n return\n }\n\n if (axis === 'x') {\n const rows = tableContent.querySelectorAll('tr')\n let width: number | undefined\n\n Array.from(rows).forEach((row) => {\n const col = row.children[index]\n if (!col) return\n\n if (width === undefined) 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 Object.assign(preview.style, {\n width: `${width}px`,\n height: `${tableHeight}px`,\n })\n\n preview.dataset.show = 'true'\n\n return\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\n\nimport { editorViewCtx } from '@jvs-milkdown/core'\n\nimport type { DragContext, Refs } from '../view/types'\n\nimport { prepareDndContext } from './prepare-dnd-context'\nimport { clearPreview, renderPreview } from './preview'\n\nexport function createDragRowHandler(refs: Refs, ctx?: Ctx) {\n return (event: DragEvent) => {\n handleDrag(refs, event, ctx, (context) => {\n updateDragInfo('y', event, context, refs)\n\n const { preview, content, previewRoot } = context\n\n clearPreview(previewRoot)\n\n const { hoverIndex } = refs\n const [rowIndex] = hoverIndex.value\n renderPreview('y', preview, previewRoot, content, rowIndex)\n })\n }\n}\n\nexport function createDragColHandler(refs: Refs, ctx?: Ctx) {\n return (event: DragEvent) => {\n handleDrag(refs, event, ctx, (context) => {\n updateDragInfo('x', event, context, refs)\n\n const { preview, content, previewRoot } = context\n\n const { hoverIndex } = refs\n const [_, colIndex] = hoverIndex.value\n\n clearPreview(previewRoot)\n\n renderPreview('x', preview, previewRoot, content, colIndex)\n })\n }\n}\n\nfunction updateDragInfo(\n axis: 'x' | 'y',\n event: DragEvent,\n context: DragContext,\n refs: Refs\n) {\n const { xHandle, yHandle, preview } = context\n xHandle.dataset.displayType = axis === 'y' ? 'indicator' : 'none'\n yHandle.dataset.displayType = axis === 'x' ? 'indicator' : 'none'\n\n const { hoverIndex, dragInfo } = refs\n const [rowIndex, colIndex] = hoverIndex.value\n\n dragInfo.value = {\n startCoords: [event.clientX, event.clientY],\n startIndex: axis === 'y' ? rowIndex : colIndex,\n endIndex: axis === 'y' ? rowIndex : colIndex,\n type: axis === 'y' ? 'row' : 'col',\n }\n\n preview.dataset.direction = axis === 'y' ? 'vertical' : 'horizontal'\n}\n\nfunction handleDrag(\n refs: Refs,\n event: DragEvent,\n ctx: Ctx | undefined,\n fn: (context: DragContext) => void\n) {\n const view = ctx?.get(editorViewCtx)\n if (!view?.editable) return\n\n event.stopPropagation()\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move'\n // Required by some browsers to properly initiate the drag; empty string might be rejected\n event.dataTransfer.setData('text/plain', 'milkdown-table-drag')\n }\n\n const context = prepareDndContext(refs)\n\n if (!context) 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","import type { Node } from '@jvs-milkdown/prose/model'\nimport type { EditorView } from '@jvs-milkdown/prose/view'\nimport type { Ref } from 'vue'\n\nimport { findParent } from '@jvs-milkdown/prose'\nimport { findTable } from '@jvs-milkdown/prose/tables'\nimport type { CellSelection } from '@jvs-milkdown/prose/tables'\n\nimport type { CellIndex, Refs } from './types'\n\nfunction findNodeIndex(parent: Node, child: Node) {\n for (let i = 0; i < parent.childCount; i++) {\n if (parent.child(i) === child) return i\n }\n return -1\n}\n\nexport function findPointerIndex(\n event: PointerEvent,\n view?: EditorView\n): CellIndex | undefined {\n if (!view) return\n\n try {\n const posAtCoords = view.posAtCoords({\n left: event.clientX,\n top: event.clientY,\n })\n if (!posAtCoords) return\n const pos = posAtCoords?.inside\n if (pos == null || pos < 0) return\n\n const $pos = view.state.doc.resolve(pos)\n const node = view.state.doc.nodeAt(pos)\n if (!node) 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)\n ? node\n : findParent((node) => cellType.includes(node.type.name))($pos)?.node\n const row = findParent((node) => rowType.includes(node.type.name))(\n $pos\n )?.node\n const table = findParent((node) => node.type.name === 'table')($pos)?.node\n if (!cell || !row || !table) return\n\n const columnIndex = findNodeIndex(row, cell)\n const rowIndex = findNodeIndex(table, row)\n\n return [rowIndex, columnIndex]\n } catch {\n return undefined\n }\n}\n\nexport function getRelatedDOM(\n contentWrapperRef: Ref<HTMLElement | undefined>,\n [rowIndex, columnIndex]: CellIndex\n) {\n const content = contentWrapperRef.value\n if (!content) return\n const rows = content.querySelectorAll('tr')\n const row = rows[rowIndex]\n if (!row) return\n\n const firstRow = rows[0]\n if (!firstRow) return\n\n const headerCol = firstRow.children[columnIndex]\n if (!headerCol) return\n\n const col = row.children[columnIndex]\n if (!col) return\n\n return {\n row,\n col,\n headerCol,\n }\n}\n\nexport function recoveryStateBetweenUpdate(\n refs: Refs,\n view?: EditorView,\n node?: Node\n) {\n if (!node) return\n if (!view) return\n const { selection } = view.state\n const isCellSelection = (sel: any) =>\n sel &&\n typeof sel.isColSelection === 'function' &&\n typeof sel.forEachCell === 'function'\n\n if (!isCellSelection(selection)) return\n\n const { $from } = selection\n const table = findTable($from)\n if (!table || table.node !== node) return\n\n if ((selection as any as CellSelection).isColSelection()) {\n const { $head } = selection\n const colIndex = $head.index($head.depth - 1)\n refs.hoverIndex.value = [0, colIndex]\n return\n }\n if ((selection as any as CellSelection).isRowSelection()) {\n const { $head } = selection\n const rowNode = findParent(\n (node) =>\n node.type.name === 'table_row' || node.type.name === 'table_header_row'\n )($head)\n if (!rowNode) return\n const rowIndex = findNodeIndex(table.node, rowNode.node)\n refs.hoverIndex.value = [rowIndex, 0]\n }\n}\n","function findDragOverElement(\n elements: Element[],\n pointer: number,\n axis: 'x' | 'y'\n): [Element, number] | undefined {\n const startProp = axis === 'x' ? 'left' : 'top'\n const endProp = axis === 'x' ? 'right' : 'bottom'\n const lastIndex = elements.length - 1\n\n const index = elements.findIndex((el, index) => {\n const rect = el.getBoundingClientRect()\n const boundaryStart = rect[startProp]\n const boundaryEnd = rect[endProp]\n\n // The pointer is within the boundary of the current element.\n if (boundaryStart <= pointer && pointer <= boundaryEnd) return true\n // The pointer is beyond the last element.\n if (index === lastIndex && pointer > boundaryEnd) return true\n // The pointer is before the first element.\n if (index === 0 && pointer < boundaryStart) return true\n\n return false\n })\n\n const element = elements[index]\n\n return element ? [element, index] : undefined\n}\n\nexport function getDragOverColumn(\n table: Element,\n pointerX: number\n): [element: Element, index: number] | undefined {\n const firstRow = table.querySelector('tr')\n if (!firstRow) return\n const cells = Array.from(firstRow.children)\n return findDragOverElement(cells, pointerX, 'x')\n}\n\nexport function getDragOverRow(\n table: Element,\n pointerY: number\n): [element: Element, index: number] | undefined {\n const rows = Array.from(table.querySelectorAll('tr'))\n return findDragOverElement(rows, pointerY, 'y')\n}\n","import { computePosition, offset } from '@floating-ui/dom'\nimport { throttle } from 'lodash-es'\n\nimport type { Refs } from '../view/types'\n\nimport { getRelatedDOM } from '../view/utils'\nimport { getDragOverColumn, getDragOverRow } from './calc-drag-over'\nimport { prepareDndContext } from './prepare-dnd-context'\n\nexport function createDragOverHandler(refs: Refs): (e: DragEvent) => void {\n const updatePosition = throttle((e: DragEvent) => {\n const context = prepareDndContext(refs)\n if (!context) return\n const { preview, content, contentRoot, xHandle, yHandle } = context\n const { dragInfo, hoverIndex } = refs\n\n if (preview.dataset.show === 'false') return\n const dom = getRelatedDOM(refs.contentWrapperRef, hoverIndex.value!)\n if (!dom) return\n const firstRow = contentRoot.querySelector('tr')\n if (!firstRow) return\n const info = dragInfo.value\n if (!info) return\n\n if (!contentRoot.offsetParent) return\n\n const wrapperOffsetTop = (contentRoot.offsetParent as HTMLElement).offsetTop\n const wrapperOffsetLeft = (contentRoot.offsetParent as HTMLElement)\n .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\n const [startX] = info.startCoords\n const direction = startX < e.clientX ? 'right' : 'left'\n\n preview.style.top = `${wrapperOffsetTop}px`\n const previewLeftOffset =\n 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 dragOverColumn = getDragOverColumn(contentRoot, e.clientX)\n if (dragOverColumn) {\n const [col, index] = dragOverColumn\n const yHandleWidth = yHandle.getBoundingClientRect().width\n const contentBoundary = content.getBoundingClientRect()\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 .catch(console.error)\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\n const [_, startY] = info.startCoords\n const direction = startY < e.clientY ? 'down' : 'up'\n\n const previewTopOffset =\n 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 dragOverRow = getDragOverRow(contentRoot, e.clientY)\n if (dragOverRow) {\n const [row, index] = dragOverRow\n const xHandleHeight = xHandle.getBoundingClientRect().height\n const contentBoundary = content.getBoundingClientRect()\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 .catch(console.error)\n }\n }\n }, 20)\n\n return (e: DragEvent) => {\n const context = prepareDndContext(refs)\n if (!context) return\n const { preview, contentRoot } = context\n if (preview.dataset.show === 'false') return\n\n e.preventDefault()\n e.stopPropagation()\n\n // SYNCHRONOUSLY update the endIndex so that rapid drops don't miss the final position\n const info = refs.dragInfo.value\n if (info) {\n if (info.type === 'col') {\n const dragOverColumn = getDragOverColumn(contentRoot, e.clientX)\n if (dragOverColumn) {\n info.endIndex = dragOverColumn[1]\n }\n } else if (info.type === 'row') {\n const dragOverRow = getDragOverRow(contentRoot, e.clientY)\n if (dragOverRow) {\n info.endIndex = dragOverRow[1]\n }\n }\n }\n\n updatePosition(e)\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\n\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/core'\nimport {\n moveColCommand,\n moveRowCommand,\n selectColCommand,\n selectRowCommand,\n} from '@jvs-milkdown/preset-gfm'\n\nimport type { CellIndex, Refs } from './types'\n\nimport {\n createDragColHandler,\n createDragRowHandler,\n} from '../dnd/create-drag-handler'\nimport { createDragOverHandler } from '../dnd/drag-over-handler'\n\nexport function useDragHandlers(\n refs: Refs,\n ctx?: Ctx,\n getPos?: () => number | undefined\n) {\n const { dragPreviewRef, yLineHandleRef, xLineHandleRef, dragInfo } = refs\n\n const dragRow = createDragRowHandler(refs, ctx)\n const dragCol = createDragColHandler(refs, ctx)\n\n const onDragEnd = (e: DragEvent) => {\n const preview = dragPreviewRef.value\n if (!preview) return\n\n if (preview.dataset.show === 'false') return\n\n e.preventDefault()\n e.stopPropagation()\n\n const previewRoot = preview?.querySelector('tbody')\n\n while (previewRoot?.firstChild)\n previewRoot?.removeChild(previewRoot.firstChild)\n\n if (preview) preview.dataset.show = 'false'\n dragInfo.value = undefined\n }\n\n const onDrop = (e: DragEvent) => {\n const preview = dragPreviewRef.value\n if (!preview) return\n const yHandle = yLineHandleRef.value\n if (!yHandle) return\n const xHandle = xLineHandleRef.value\n if (!xHandle) return\n const info = dragInfo.value\n if (!info) return\n if (!ctx) return\n if (preview.dataset.show === 'false') return\n\n // Prevent browser default drop behavior and stop ProseMirror from handling\n e.preventDefault()\n e.stopPropagation()\n\n yHandle.dataset.show = 'false'\n xHandle.dataset.show = 'false'\n\n if (info.startIndex === info.endIndex) {\n // Clean up preview even when no move is needed\n const previewRoot = preview?.querySelector('tbody')\n while (previewRoot?.firstChild)\n previewRoot?.removeChild(previewRoot.firstChild)\n preview.dataset.show = 'false'\n dragInfo.value = undefined\n return\n }\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 refs.hoverIndex.value = index\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 refs.hoverIndex.value = index\n }\n\n // Clean up preview\n const previewRoot = preview?.querySelector('tbody')\n while (previewRoot?.firstChild)\n previewRoot?.removeChild(previewRoot.firstChild)\n preview.dataset.show = 'false'\n dragInfo.value = undefined\n\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n const onDragOver = createDragOverHandler(refs)\n\n return {\n dragRow,\n dragCol,\n onDragOver,\n onDrop,\n onDragEnd,\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\n\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/core'\nimport {\n addRowWithAlignment,\n deleteSelectedCellsCommand,\n mergeCellsCommand,\n selectColCommand,\n selectRowCommand,\n setAlignCommand,\n} from '@jvs-milkdown/preset-gfm'\nimport { TextSelection } from '@jvs-milkdown/prose/state'\nimport {\n CellSelection,\n selectedRect,\n splitCellWithType,\n TableMap,\n type TableRect,\n addColumn,\n} from '@jvs-milkdown/prose/tables'\n\nimport type { Refs } from './types'\n\nexport function useOperation(\n refs: Refs,\n ctx?: Ctx,\n getPos?: () => number | undefined\n) {\n const { hoverIndex } = refs\n\n const addRowByIndex = (index: number) => {\n if (!ctx || !ctx.get(editorViewCtx).editable) return\n\n const view = ctx.get(editorViewCtx)\n const tablePos = getPos?.()\n if (tablePos == null) return\n\n const table = view.state.doc.nodeAt(tablePos)\n if (!table) return\n\n const tableStart = tablePos + 1\n const map = TableMap.get(table)\n const insertRow = Math.min(index, map.height)\n\n const tr = view.state.tr\n const rect: TableRect = {\n map,\n tableStart,\n table,\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n }\n addRowWithAlignment(ctx, tr, rect, insertRow)\n view.dispatch(tr)\n }\n\n const addColByIndex = (index: number) => {\n if (!ctx || !ctx.get(editorViewCtx).editable) return\n\n const view = ctx.get(editorViewCtx)\n const tablePos = getPos?.()\n if (tablePos == null) return\n\n const table = view.state.doc.nodeAt(tablePos)\n if (!table) return\n\n const tableStart = tablePos + 1\n const map = TableMap.get(table)\n const insertCol = Math.min(index, map.width)\n\n const tr = view.state.tr\n const rect: TableRect = {\n map,\n tableStart,\n table,\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n }\n addColumn(tr, rect, insertCol)\n view.dispatch(tr)\n }\n\n const selectCol = () => {\n if (!ctx) return\n const [_, colIndex] = hoverIndex.value!\n const commands = ctx.get(commandsCtx)\n const pos = (getPos?.() ?? 0) + 1\n commands.call(selectColCommand.key, { pos, index: colIndex })\n }\n\n const selectRow = () => {\n if (!ctx) return\n const [rowIndex, _] = hoverIndex.value!\n const commands = ctx.get(commandsCtx)\n const pos = (getPos?.() ?? 0) + 1\n commands.call(selectRowCommand.key, { pos, index: rowIndex })\n }\n\n const deleteSelected = (e: PointerEvent) => {\n if (!ctx) return\n\n if (!ctx.get(editorViewCtx).editable) return\n\n if (e.button !== 0) return\n\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(deleteSelectedCellsCommand.key)\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n\n const onAlign =\n (direction: 'left' | 'center' | 'right') => (e: PointerEvent) => {\n if (!ctx) return\n\n if (!ctx.get(editorViewCtx).editable) return\n\n if (e.button !== 0) return\n\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(setAlignCommand.key, direction)\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n\n const onMergeCells = (e: PointerEvent) => {\n if (!ctx) return\n if (!ctx.get(editorViewCtx).editable) return\n if (e.button !== 0) return\n e.preventDefault()\n e.stopPropagation()\n const commands = ctx.get(commandsCtx)\n commands.call(mergeCellsCommand.key)\n requestAnimationFrame(() => {\n ctx.get(editorViewCtx).focus()\n })\n }\n\n const onSplitCell = (e: PointerEvent) => {\n if (!ctx) return\n if (!ctx.get(editorViewCtx).editable) return\n if (e.button !== 0) return\n e.preventDefault()\n e.stopPropagation()\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { selection } = state\n\n // Find the merged cell\n let cellNode: ReturnType<typeof selection.$from.node> | null = null\n let cellPos: number | null = null\n\n if (selection instanceof CellSelection) {\n selection.forEachCell((cell, pos) => {\n if (\n !cellNode &&\n ((cell.attrs.rowspan ?? 1) > 1 || (cell.attrs.colspan ?? 1) > 1)\n ) {\n cellNode = cell\n cellPos = pos\n }\n })\n } else {\n const { $from } = selection\n for (let d = $from.depth; d > 0; d--) {\n const n = $from.node(d)\n if (n.type.name === 'table_cell' || n.type.name === 'table_header') {\n cellNode = n\n cellPos = $from.before(d)\n break\n }\n }\n }\n\n if (!cellNode || cellPos == null) return\n if (\n (cellNode.attrs.colspan ?? 1) == 1 &&\n (cellNode.attrs.rowspan ?? 1) == 1\n )\n return\n\n // Set selection to TextSelection inside the merged cell.\n // This avoids the prosemirror-tables bug where splitCell creates\n // a CellSelection using unmapped positions after the split.\n const $cellPos = state.doc.resolve(cellPos + 2)\n view.dispatch(state.tr.setSelection(TextSelection.near($cellPos)))\n\n // Use splitCellWithType to produce correct cell types per row.\n // prosemirror-tables' splitCell always uses the merged cell's type\n // (e.g. table_header) for ALL new cells, but milkdown's schema\n // requires table_header in table_header_row and table_cell in\n // table_row. Without this, inserts into body rows fail due to\n // schema mismatch, corrupting the table.\n const newState = view.state\n const { table } = selectedRect(newState)\n const { schema } = newState\n\n splitCellWithType(({ row }) => {\n const rowNode = table.child(row)\n return rowNode.type.name === 'table_header_row'\n ? schema.nodes.table_header!\n : schema.nodes.table_cell!\n })(newState, (tr) => {\n view.dispatch(tr)\n })\n\n requestAnimationFrame(() => {\n view.focus()\n })\n }\n\n return {\n addRowByIndex,\n addColByIndex,\n selectCol,\n selectRow,\n deleteSelected,\n onAlign,\n onMergeCells,\n onSplitCell,\n }\n}\n","import type { EditorView } from '@jvs-milkdown/prose/view'\n\nimport type { Refs } from './types'\n\nexport function usePointerHandlers(_refs: Refs, _view?: EditorView) {\n const pointerMove = (_e: PointerEvent) => {}\n const pointerLeave = () => {}\n\n return {\n pointerMove,\n pointerLeave,\n }\n}\n","import type { Ctx } from '@jvs-milkdown/ctx'\nimport type { Node } from '@jvs-milkdown/prose/model'\nimport type { EditorView } from '@jvs-milkdown/prose/view'\n\nimport { computePosition } from '@floating-ui/dom'\nimport {\n CellSelection,\n mergeCells,\n splitCell,\n} from '@jvs-milkdown/prose/tables'\nimport {\n defineComponent,\n ref,\n type VNodeRef,\n h,\n onMounted,\n onBeforeUnmount,\n type Ref,\n watch,\n} from 'vue'\n\nimport type { TableBlockConfig } from '../config'\nimport type { CellIndex, DragInfo, Refs } from './types'\n\nimport { Icon } from '../../__internal__/components/icon'\nimport { keepAlive } from '../../__internal__/keep-alive'\nimport { useDragHandlers } from './drag'\nimport { useOperation } from './operation'\nimport { usePointerHandlers } from './pointer'\nimport { recoveryStateBetweenUpdate } from './utils'\n\nkeepAlive(h)\n\ntype TableBlockProps = {\n view: EditorView\n ctx: Ctx\n getPos: () => number | undefined\n config: TableBlockConfig\n onMount: (div: Element) => void\n node: Ref<Node>\n}\n\nexport const TableBlock = defineComponent<TableBlockProps>({\n props: {\n view: {\n type: Object,\n required: true,\n },\n ctx: {\n type: Object,\n required: true,\n },\n getPos: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n onMount: {\n type: Function,\n required: true,\n },\n node: {\n type: Object,\n required: true,\n },\n },\n setup({ view, node, ctx, getPos, config, onMount }) {\n const contentWrapperRef = ref<HTMLElement>()\n let contentMounted = false\n const contentWrapperFunctionRef: VNodeRef = (div) => {\n if (div == null) return\n if (div instanceof HTMLElement) {\n contentWrapperRef.value = div\n if (!contentMounted) {\n onMount(div)\n contentMounted = true\n }\n } else {\n contentWrapperRef.value = undefined\n }\n }\n const tableWrapperRef = ref<HTMLDivElement>()\n const dragPreviewRef = ref<HTMLDivElement>()\n const hoverIndex = ref<CellIndex>([0, 0])\n const lineHoverIndex = ref<CellIndex>([-1, -1])\n const dragInfo = ref<DragInfo>()\n const yLineHandleRef = ref<HTMLDivElement>()\n const xLineHandleRef = ref<HTMLDivElement>()\n\n // --- Column resize state ---\n const resizingCol = ref(-1)\n const colWidths = ref<number[]>([])\n\n /** Count total columns in the table by expanding colspan across all rows */\n const getColCount = () => {\n let maxCols = 0\n node.value.forEach((row) => {\n let cols = 0\n row.forEach((cell) => {\n cols += (cell.attrs.colspan as number) || 1\n })\n if (cols > maxCols) maxCols = cols\n })\n return maxCols\n }\n\n const syncColWidths = () => {\n if (resizingCol.value >= 0) return\n const colCount = getColCount()\n const prevColCount = colWidths.value.length\n const widths: number[] = []\n const hasBounds = colBounds.value.length >= colCount\n\n // Compute average width of existing columns for new columns without data\n const existingNonZero = colWidths.value.filter((w) => w > 0)\n const avgWidth =\n existingNonZero.length > 0\n ? Math.round(\n existingNonZero.reduce((a, b) => a + b, 0) /\n existingNonZero.length\n )\n : 0\n\n for (let i = 0; i < colCount; i++) {\n const isNewColumn = i >= prevColCount\n // Find a cell that covers this column index\n let found = false\n node.value.forEach((row) => {\n if (found) return\n let colIdx = 0\n row.forEach((cell) => {\n if (found) return\n const colspan = (cell.attrs.colspan as number) || 1\n const colwidth: unknown = cell.attrs.colwidth\n if (colIdx === i) {\n if (colspan > 1) {\n if (Array.isArray(colwidth) && colwidth.length > 0) {\n const totalW = colwidth.reduce(\n (sum: number, w: unknown) => sum + ((w as number) || 0),\n 0\n )\n widths.push(Math.round(totalW / colspan))\n } else if (!isNewColumn && hasBounds && colBounds.value[i]) {\n widths.push(Math.round(colBounds.value[i]!.width))\n } else {\n widths.push(avgWidth)\n }\n } else {\n if (Array.isArray(colwidth) && colwidth[0]) {\n widths.push(colwidth[0] as number)\n } else if (!isNewColumn && hasBounds && colBounds.value[i]) {\n widths.push(Math.round(colBounds.value[i]!.width))\n } else {\n widths.push(avgWidth)\n }\n }\n found = true\n }\n colIdx += colspan\n })\n })\n if (!found) {\n widths.push(\n !isNewColumn && hasBounds && colBounds.value[i]\n ? Math.round(colBounds.value[i]!.width)\n : avgWidth\n )\n }\n }\n colWidths.value = widths\n }\n\n const refs: Refs = {\n dragPreviewRef,\n tableWrapperRef,\n contentWrapperRef,\n yLineHandleRef,\n xLineHandleRef,\n hoverIndex,\n lineHoverIndex,\n dragInfo,\n }\n\n const { pointerLeave, pointerMove } = usePointerHandlers(refs, view)\n const { dragRow, dragCol, onDragOver, onDragEnd, onDrop } = useDragHandlers(\n refs,\n ctx,\n getPos\n )\n const {\n addRowByIndex,\n addColByIndex,\n selectCol,\n selectRow,\n deleteSelected,\n onAlign,\n onMergeCells,\n onSplitCell,\n } = useOperation(refs, ctx, getPos)\n\n // --- Floating cell toolbar state ---\n const cellToolbarRef = ref<HTMLDivElement>()\n const showCellToolbar = ref(false)\n const canMerge = ref(false)\n const canSplit = ref(false)\n\n const updateCellToolbar = () => {\n const { selection } = view.state\n const tablePos = getPos()\n if (tablePos == null) {\n showCellToolbar.value = false\n return\n }\n const tableEnd = tablePos + node.value.nodeSize\n if (selection.from < tablePos || selection.from > tableEnd) {\n showCellToolbar.value = false\n return\n }\n\n // Bypass instanceof checks due to potential multiple instances of prosemirror-tables\n const isCellSelection = (sel: any) =>\n sel &&\n typeof sel.isColSelection === 'function' &&\n typeof sel.forEachCell === 'function'\n\n if (isCellSelection(selection)) {\n // Use prosemirror-tables commands (without dispatch) to check if merge/split is currently possible\n canMerge.value = mergeCells(view.state)\n canSplit.value = splitCell(view.state)\n } else {\n // TextSelection: only show toolbar for CellSelection-based actions\n showCellToolbar.value = false\n return\n }\n\n if (!canMerge.value && !canSplit.value) {\n showCellToolbar.value = false\n return\n }\n\n if (activeColIndex.value !== -1 || activeRowIndex.value !== -1) {\n showCellToolbar.value = false\n return\n }\n\n showCellToolbar.value = true\n\n // Position toolbar above the first selected cell using floating-ui\n requestAnimationFrame(() => {\n const toolbar = cellToolbarRef.value\n const content = contentWrapperRef.value\n if (!toolbar || !content) return\n\n const selectedCells = content.querySelectorAll('.selectedCell')\n let refEl: Element | null =\n selectedCells.length > 0 ? selectedCells[0]! : null\n\n if (!refEl && !(view.state.selection instanceof CellSelection)) {\n const { $from } = view.state.selection\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (\n node.type.name === 'table_cell' ||\n node.type.name === 'table_header'\n ) {\n const cellPos = $from.before(d)\n const dom = view.nodeDOM(cellPos)\n if (dom instanceof HTMLElement) refEl = dom\n break\n }\n }\n }\n\n if (!refEl) return\n\n computePosition(refEl, toolbar, { placement: 'top' })\n .then(({ x, y }) => {\n toolbar.style.left = `${x}px`\n toolbar.style.top = `${y}px`\n toolbar.dataset.show = 'true'\n })\n .catch(console.error)\n })\n }\n\n const colBounds = ref<{ left: number; width: number }[]>([])\n const rowBounds = ref<{ top: number; height: number }[]>([])\n\n let ro: ResizeObserver | null = null\n let mo: MutationObserver | null = null\n\n const updateBounds = () => {\n const content = contentWrapperRef.value\n if (!content) return\n\n const rows = content.querySelectorAll('tr')\n const tableRect = content.getBoundingClientRect()\n const expectedColCount = getColCount()\n\n // Find the first row where all cells are unmerged (no colspan),\n // so we can accurately measure individual column positions.\n let bestRow: HTMLTableRowElement | null = null\n rows.forEach((row) => {\n if (bestRow) return\n if (row.children.length === expectedColCount) {\n bestRow = row as HTMLTableRowElement\n }\n })\n\n const measureRow = bestRow ?? content.querySelector('tr')\n if (measureRow) {\n colBounds.value = Array.from(measureRow.children).map((c) => {\n const rect = c.getBoundingClientRect()\n return { left: rect.left - tableRect.left, width: rect.width }\n })\n }\n\n rowBounds.value = Array.from(rows).map((c) => {\n const rect = c.getBoundingClientRect()\n return { top: rect.top - tableRect.top, height: rect.height }\n })\n syncColWidths()\n }\n\n const startResize = (e: PointerEvent, colIndex: number) => {\n if (!view.editable) return\n e.preventDefault()\n e.stopPropagation()\n const startX = e.clientX\n const startWidth = colBounds.value[colIndex]?.width ?? 100\n resizingCol.value = colIndex\n\n const onMove = (ev: PointerEvent) => {\n const delta = ev.clientX - startX\n const newWidth = Math.max(50, startWidth + delta)\n colWidths.value = colWidths.value.map((w, i) =>\n i === colIndex ? newWidth : w\n )\n }\n\n const onUp = (ev: PointerEvent) => {\n document.removeEventListener('pointermove', onMove)\n document.removeEventListener('pointerup', onUp)\n\n const delta = ev.clientX - startX\n const newWidth = Math.max(50, startWidth + delta)\n\n // Commit via ProseMirror transaction\n const tablePos = getPos()\n if (tablePos == null) {\n resizingCol.value = -1\n return\n }\n const tableNode = node.value\n let tr = view.state.tr\n let pos = tablePos + 1\n\n tableNode.forEach((row) => {\n let cellIdx = 0\n row.forEach((cell, _offset, cellNodePos) => {\n if (cellIdx === colIndex) {\n const absPos = tablePos + 1 + cellNodePos\n const colwidth = [Math.round(newWidth)]\n tr = tr.setNodeMarkup(absPos, undefined, {\n ...cell.attrs,\n colwidth,\n })\n }\n cellIdx++\n })\n pos += row.nodeSize\n })\n\n resizingCol.value = -1\n if (tr.docChanged) view.dispatch(tr)\n }\n\n document.addEventListener('pointermove', onMove)\n document.addEventListener('pointerup', onUp)\n }\n\n const activeColIndex = ref(-1)\n const activeRowIndex = ref(-1)\n\n // Listen for ProseMirror state updates\n const dispatchListener = () => {\n setTimeout(() => {\n // Update active handler button groups based on selection\n const { selection } = view.state\n const isCellSelection = (sel: any) =>\n sel &&\n typeof sel.isColSelection === 'function' &&\n typeof sel.forEachCell === 'function'\n\n if (isCellSelection(selection)) {\n const selAny = selection as any\n if (selAny.isColSelection()) {\n const $headCell = selAny.$headCell\n activeColIndex.value = $headCell\n ? $headCell.index($headCell.depth)\n : -1\n activeRowIndex.value = -1\n } else if (selAny.isRowSelection()) {\n const $headCell = selAny.$headCell\n activeColIndex.value = -1\n activeRowIndex.value = $headCell\n ? $headCell.index($headCell.depth - 1)\n : -1\n } else {\n activeColIndex.value = -1\n activeRowIndex.value = -1\n }\n } else {\n activeColIndex.value = -1\n activeRowIndex.value = -1\n }\n\n updateCellToolbar()\n }, 0)\n }\n\n onMounted(() => {\n requestAnimationFrame(() => {\n if (view.editable) recoveryStateBetweenUpdate(refs, view, node.value)\n syncColWidths()\n })\n view.dom.addEventListener('keyup', dispatchListener)\n view.dom.addEventListener('pointerup', dispatchListener)\n updateCellToolbar()\n\n ro = new ResizeObserver(() => {\n requestAnimationFrame(updateBounds)\n })\n mo = new MutationObserver((mutations) => {\n let shouldUpdate = false\n for (const mut of mutations) {\n if (mut.type === 'childList') {\n for (const node of mut.addedNodes) {\n if (\n node instanceof HTMLElement &&\n ['TR', 'TD', 'TH', 'TBODY'].includes(node.nodeName)\n )\n shouldUpdate = true\n }\n for (const node of mut.removedNodes) {\n if (\n node instanceof HTMLElement &&\n ['TR', 'TD', 'TH', 'TBODY'].includes(node.nodeName)\n )\n shouldUpdate = true\n }\n } else if (mut.type === 'attributes') {\n shouldUpdate = true\n }\n }\n if (shouldUpdate) {\n requestAnimationFrame(updateBounds)\n }\n })\n\n if (contentWrapperRef.value) {\n ro.observe(contentWrapperRef.value)\n mo.observe(contentWrapperRef.value, {\n childList: true,\n subtree: true,\n attributes: true,\n })\n }\n })\n\n watch(node, () => {\n dispatchListener()\n requestAnimationFrame(updateBounds)\n })\n\n onBeforeUnmount(() => {\n view.dom.removeEventListener('keyup', dispatchListener)\n view.dom.removeEventListener('pointerup', dispatchListener)\n if (ro) ro.disconnect()\n if (mo) mo.disconnect()\n })\n\n return () => {\n return (\n <div\n onDragend={onDragEnd}\n onDragover={(e) => {\n e.preventDefault()\n onDragOver(e)\n // Stop propagation during active drag to prevent ProseMirror interference\n if (dragInfo.value) {\n e.stopPropagation()\n }\n }}\n onDrop={(e) => {\n const isDragging = !!dragInfo.value\n onDrop(e)\n // Stop ProseMirror from handling the drop during table drag\n if (isDragging) {\n e.preventDefault()\n e.stopPropagation()\n }\n }}\n onDragleave={(e) => e.preventDefault()}\n onPointermove={pointerMove}\n onPointerleave={pointerLeave}\n class=\"milkdown-table-wrapper-outer\"\n >\n {/* Floating cell toolbar (merge/split) */}\n <div\n ref={cellToolbarRef}\n data-show={showCellToolbar.value ? 'true' : 'false'}\n class=\"cell-toolbar\"\n contenteditable=\"false\"\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n {canMerge.value ? (\n <button\n type=\"button\"\n class=\"cell-toolbar-btn\"\n onPointerdown={onMergeCells}\n >\n <Icon icon={config.renderButton('merge_cells')} />\n </button>\n ) : canSplit.value ? (\n <button\n type=\"button\"\n class=\"cell-toolbar-btn\"\n onPointerdown={onSplitCell}\n >\n <Icon icon={config.renderButton('split_cell')} />\n </button>\n ) : undefined}\n </div>\n\n <div class=\"table-wrapper\" ref={tableWrapperRef}>\n {/* Fixed Col Drag Handles */}\n <div contenteditable=\"false\" class=\"fixed-handles-col\">\n {colBounds.value.map((bound, i) => (\n <div\n key={`col-${i}`}\n class=\"handle cell-handle fixed\"\n data-role=\"col-drag-handle\"\n draggable=\"true\"\n style={{ left: `${bound.left}px`, width: `${bound.width}px` }}\n onDragstart={(e) => {\n hoverIndex.value = [0, i]\n dragCol(e)\n }}\n onClick={() => {\n hoverIndex.value = [0, i]\n selectCol()\n dispatchListener()\n activeColIndex.value = i\n activeRowIndex.value = -1\n }}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n onPointermove={(e: PointerEvent) => e.stopPropagation()}\n >\n <div\n class=\"button-group\"\n data-show={activeColIndex.value === i ? 'true' : 'false'}\n onPointermove={(e: PointerEvent) => e.stopPropagation()}\n >\n {canMerge.value ? (\n <button type=\"button\" onPointerdown={onMergeCells}>\n <Icon icon={config.renderButton('merge_cells')} />\n </button>\n ) : canSplit.value ? (\n <button type=\"button\" onPointerdown={onSplitCell}>\n <Icon icon={config.renderButton('split_cell')} />\n </button>\n ) : undefined}\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n onAlign('left')(e)\n }}\n >\n <Icon icon={config.renderButton('align_col_left')} />\n </button>\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n onAlign('center')(e)\n }}\n >\n <Icon icon={config.renderButton('align_col_center')} />\n </button>\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n onAlign('right')(e)\n }}\n >\n <Icon icon={config.renderButton('align_col_right')} />\n </button>\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [0, i]\n deleteSelected(e)\n }}\n >\n <Icon icon={config.renderButton('delete_col')} />\n </button>\n </div>\n </div>\n ))}\n </div>\n\n {/* Add Col Dots */}\n <div contenteditable=\"false\" class=\"add-dots-col\">\n {[\n ...colBounds.value.map((b) => b.left),\n colBounds.value.length\n ? colBounds.value[colBounds.value.length - 1]!.left +\n colBounds.value[colBounds.value.length - 1]!.width\n : 0,\n ].map((left, i) => (\n <div\n key={`add-col-${i}`}\n class=\"add-dot\"\n style={{ left: `${left}px` }}\n onClick={() => addColByIndex(i)}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon icon={config.renderButton('add_col')} />\n </div>\n ))}\n </div>\n\n {/* Column Resize Handles */}\n <div contenteditable=\"false\" class=\"resize-handles-col\">\n {colBounds.value.map((bound, i) => (\n <div\n key={`resize-${i}`}\n class={[\n 'col-resize-handle',\n resizingCol.value === i ? 'active' : '',\n ].join(' ')}\n style={{\n left: `${bound.left + bound.width - 3}px`,\n }}\n onPointerdown={(e: PointerEvent) => startResize(e, i)}\n />\n ))}\n </div>\n\n {/* Fixed Row Drag Handles */}\n <div contenteditable=\"false\" class=\"fixed-handles-row\">\n {rowBounds.value.map((bound, i) => (\n <div\n key={`row-${i}`}\n class=\"handle cell-handle fixed\"\n data-role=\"row-drag-handle\"\n draggable=\"true\"\n style={{ top: `${bound.top}px`, height: `${bound.height}px` }}\n onDragstart={(e) => {\n hoverIndex.value = [i, 0]\n dragRow(e)\n }}\n onClick={() => {\n hoverIndex.value = [i, 0]\n selectRow()\n dispatchListener()\n activeRowIndex.value = i\n activeColIndex.value = -1\n }}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n <div\n class=\"button-group\"\n data-show={activeRowIndex.value === i ? 'true' : 'false'}\n onPointermove={(e: PointerEvent) => e.stopPropagation()}\n >\n {canMerge.value ? (\n <button type=\"button\" onPointerdown={onMergeCells}>\n <Icon icon={config.renderButton('merge_cells')} />\n </button>\n ) : canSplit.value ? (\n <button type=\"button\" onPointerdown={onSplitCell}>\n <Icon icon={config.renderButton('split_cell')} />\n </button>\n ) : undefined}\n <button\n type=\"button\"\n onPointerdown={(e) => {\n hoverIndex.value = [i, 0]\n deleteSelected(e)\n }}\n >\n <Icon icon={config.renderButton('delete_row')} />\n </button>\n </div>\n </div>\n ))}\n </div>\n\n {/* Add Row Dots */}\n <div contenteditable=\"false\" class=\"add-dots-row\">\n {[\n ...rowBounds.value.map((b) => b.top),\n rowBounds.value.length\n ? rowBounds.value[rowBounds.value.length - 1]!.top +\n rowBounds.value[rowBounds.value.length - 1]!.height\n : 0,\n ].map((top, i) => (\n <div\n key={`add-row-${i}`}\n class=\"add-dot\"\n style={{ top: `${top}px` }}\n onClick={() => addRowByIndex(i)}\n onPointerdown={(e: PointerEvent) => e.stopPropagation()}\n >\n <Icon icon={config.renderButton('add_row')} />\n </div>\n ))}\n </div>\n\n <div\n data-show=\"false\"\n class=\"drag-preview\"\n data-direction=\"vertical\"\n ref={dragPreviewRef}\n >\n <table>\n <tbody></tbody>\n </table>\n </div>\n\n {/* Drop Indicators */}\n <div\n data-show=\"false\"\n contenteditable=\"false\"\n data-display-type=\"indicator\"\n data-role=\"x-line-drag-handle\"\n class=\"handle line-handle\"\n ref={xLineHandleRef}\n />\n <div\n data-show=\"false\"\n contenteditable=\"false\"\n data-display-type=\"indicator\"\n data-role=\"y-line-drag-handle\"\n class=\"handle line-handle\"\n ref={yLineHandleRef}\n />\n\n <table ref={contentWrapperFunctionRef} class=\"children\">\n <colgroup>\n {Array.from({ length: getColCount() }, (_, i) => {\n const w = colWidths.value[i]\n return (\n <col\n key={i}\n style={w && w > 0 ? { width: `${w}px` } : undefined}\n />\n )\n })}\n </colgroup>\n </table>\n </div>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/ctx'\nimport type { Node } from '@jvs-milkdown/prose/model'\nimport type {\n EditorView,\n NodeView,\n NodeViewConstructor,\n ViewMutationRecord,\n} from '@jvs-milkdown/prose/view'\n\nimport { tableSchema } from '@jvs-milkdown/preset-gfm'\nimport { $view } from '@jvs-milkdown/utils'\nimport {\n createApp,\n shallowRef,\n triggerRef,\n type App,\n type ShallowRef,\n} from 'vue'\n\nimport { withMeta } from '../../__internal__/meta'\nimport { tableBlockConfig } from '../config'\nimport { TableBlock } from './component'\n\nexport class TableNodeView implements NodeView {\n dom: HTMLElement\n contentDOM: HTMLElement\n app: App\n\n nodeRef: ShallowRef<Node>\n #selectionUpdateScheduled = false\n\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('div')\n dom.className = 'milkdown-table-block'\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 this.nodeRef = shallowRef(node)\n\n const app = createApp(TableBlock, {\n view,\n ctx,\n getPos,\n config: ctx.get(tableBlockConfig.key),\n onMount: (div: Element) => {\n div.appendChild(contentDOM)\n },\n node: this.nodeRef,\n })\n app.mount(dom)\n this.app = app\n\n this.dom = dom\n }\n\n update(node: Node) {\n if (node.type !== this.node.type) return false\n\n if (node.sameMarkup(this.node) && node.content.eq(this.node.content)) {\n // Content unchanged — still trigger a reactive tick for selection-based UI (cell toolbar)\n if (!this.#selectionUpdateScheduled) {\n this.#selectionUpdateScheduled = true\n queueMicrotask(() => {\n triggerRef(this.nodeRef)\n this.#selectionUpdateScheduled = false\n })\n }\n return true\n }\n\n this.node = node\n this.nodeRef.value = node\n\n return true\n }\n\n stopEvent(e: Event) {\n if (e.type === 'drop' || e.type.startsWith('drag')) return true\n\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n if (e.target instanceof Element && e.target.closest('button')) return true\n }\n\n return false\n }\n\n ignoreMutation(mutation: ViewMutationRecord) {\n if (!this.dom || !this.contentDOM) return true\n\n if ((mutation.type as unknown) === 'selection') return false\n\n if (this.contentDOM === mutation.target && mutation.type === 'attributes')\n return true\n\n if (this.contentDOM.contains(mutation.target)) return false\n\n return true\n }\n\n destroy() {\n this.app.unmount()\n this.dom.remove()\n this.contentDOM.remove()\n }\n}\n\nexport const tableBlockView = $view(\n tableSchema.node,\n (ctx): NodeViewConstructor => {\n return (initialNode, view, getPos) => {\n return new TableNodeView(ctx, initialNode, view, getPos)\n }\n }\n)\n\nwithMeta(tableBlockView, {\n displayName: 'NodeView<table-block>',\n group: 'TableBlock',\n})\n","import type { MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nimport { tableBlockConfig } from './config'\nimport { tableBlockView } from './view'\n\nexport * from './view'\nexport * from './config'\n\nexport const tableBlock: MilkdownPlugin[] = [tableBlockConfig, tableBlockView]\n"],"names":["__spreadValues","node","index","previewRoot","_a","_b"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Ctx } from '@jvs-milkdown/ctx';
2
+ import type { Node } from '@jvs-milkdown/prose/model';
3
+ import type { EditorView } from '@jvs-milkdown/prose/view';
4
+ import { type Ref } from 'vue';
5
+ import type { TableBlockConfig } from '../config';
6
+ type TableBlockProps = {
7
+ view: EditorView;
8
+ ctx: Ctx;
9
+ getPos: () => number | undefined;
10
+ config: TableBlockConfig;
11
+ onMount: (div: Element) => void;
12
+ node: Ref<Node>;
13
+ };
14
+ export declare const TableBlock: import("vue").DefineComponent<TableBlockProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TableBlockProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ export {};
16
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/table-block/view/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAQ1D,OAAO,EAOL,KAAK,GAAG,EAET,MAAM,KAAK,CAAA;AAEZ,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAYjD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IAChC,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,UAAU,0SA2tBrB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { Ctx } from '@jvs-milkdown/ctx';
2
+ import type { Refs } from './types';
3
+ export declare function useDragHandlers(refs: Refs, ctx?: Ctx, getPos?: () => number | undefined): {
4
+ dragRow: (event: DragEvent) => void;
5
+ dragCol: (event: DragEvent) => void;
6
+ onDragOver: (e: DragEvent) => void;
7
+ onDrop: (e: DragEvent) => void;
8
+ onDragEnd: (e: DragEvent) => void;
9
+ };
10
+ //# sourceMappingURL=drag.d.ts.map