Skip to content

Commit e2c009f

Browse files
authored
fix: table errors (#1650)
1 parent 5033486 commit e2c009f

File tree

2 files changed

+16
-7
lines changed
  • packages
    • components/src/table-block/view
    • crepe/src/feature/block-edit/menu

2 files changed

+16
-7
lines changed

Diff for: packages/components/src/table-block/view/drag.ts

+2
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@ export function createDragOverHandler(refs: Refs): (e: DragEvent) => void {
221221
const info = dragInfo.current
222222
if (!info) return
223223

224+
if (!contentRoot.offsetParent) return
225+
224226
const wrapperOffsetTop = (contentRoot.offsetParent as HTMLElement).offsetTop
225227
const wrapperOffsetLeft = (contentRoot.offsetParent as HTMLElement)
226228
.offsetLeft

Diff for: packages/crepe/src/feature/block-edit/menu/config.ts

+14-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
orderedListSchema,
1010
paragraphSchema,
1111
} from '@milkdown/kit/preset/commonmark'
12-
import { NodeSelection } from '@milkdown/kit/prose/state'
12+
import { TextSelection } from '@milkdown/kit/prose/state'
1313
import { imageBlockSchema } from '@milkdown/kit/component/image-block'
1414
import { createTable } from '@milkdown/kit/preset/gfm'
1515
import {
@@ -230,15 +230,22 @@ export function getGroups(filter?: string, config?: BlockEditFeatureConfig) {
230230
onRun: (ctx) => {
231231
const view = ctx.get(editorViewCtx)
232232
const { dispatch, state } = view
233-
const tr = clearRange(state.tr)
233+
let { tr } = state
234+
tr = clearRange(tr)
235+
const from = tr.selection.from
234236
const table = createTable(ctx, 3, 3)
235-
tr.replaceSelectionWith(table)
236-
const { from } = tr.selection
237-
const pos = from - table.nodeSize + 2
237+
tr = tr.replaceSelectionWith(table)
238238
dispatch(tr)
239+
239240
requestAnimationFrame(() => {
240-
const selection = NodeSelection.create(view.state.tr.doc, pos)
241-
dispatch(view.state.tr.setSelection(selection).scrollIntoView())
241+
const docSize = view.state.doc.content.size
242+
const $pos = view.state.doc.resolve(
243+
from > docSize ? docSize : from < 0 ? 0 : from
244+
)
245+
const selection = TextSelection.near($pos)
246+
const tr = view.state.tr
247+
tr.setSelection(selection)
248+
dispatch(tr.scrollIntoView())
242249
})
243250
},
244251
})

0 commit comments

Comments
 (0)