diff --git a/dist/index.cjs b/dist/index.cjs
index 6c65eb7d57e207a8cd1f2a2ae3bb99507c405cef..c163932957846385623eb2980bf1141eb6631db1 100644
--- a/dist/index.cjs
+++ b/dist/index.cjs
@@ -2443,6 +2443,21 @@ function handleMouseLeave(view) {
 	const pluginState = columnResizingPluginKey.getState(view.state);
 	if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging) updateHandle(view, -1);
 }
+function safeDispatch(view, tr) {
+	try {
+		view.dispatch(tr);
+		return true;
+	} catch (_error) {
+		return false;
+	}
+}
+function safeDomAtPos(view, pos) {
+	try {
+		return view.domAtPos(pos);
+	} catch (_error) {
+		return null;
+	}
+}
 function handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth) {
 	var _view$dom$ownerDocume;
 	if (!view.editable) return false;
@@ -2451,17 +2466,18 @@ function handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth) {
 	if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging) return false;
 	const cell = view.state.doc.nodeAt(pluginState.activeHandle);
 	const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);
-	view.dispatch(view.state.tr.setMeta(columnResizingPluginKey, { setDragging: {
+	if (width == null) return false;
+	if (!safeDispatch(view, view.state.tr.setMeta(columnResizingPluginKey, { setDragging: {
 		startX: event.clientX,
 		startWidth: width
-	} }));
+	} }))) return false;
 	function finish(event$1) {
 		win.removeEventListener("mouseup", finish);
 		win.removeEventListener("mousemove", move);
 		const pluginState$1 = columnResizingPluginKey.getState(view.state);
 		if (pluginState$1 === null || pluginState$1 === void 0 ? void 0 : pluginState$1.dragging) {
 			updateColumnWidth(view, pluginState$1.activeHandle, draggedWidth(pluginState$1.dragging, event$1, cellMinWidth));
-			view.dispatch(view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null }));
+			safeDispatch(view, view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null }));
 		}
 	}
 	function move(event$1) {
@@ -2482,15 +2498,18 @@ function handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth) {
 function currentColWidth(view, cellPos, { colspan, colwidth }) {
 	const width = colwidth && colwidth[colwidth.length - 1];
 	if (width) return width;
-	const dom = view.domAtPos(cellPos);
-	let domWidth = dom.node.childNodes[dom.offset].offsetWidth, parts = colspan;
+	const dom = safeDomAtPos(view, cellPos);
+	if (!dom) return null;
+	const cellDom = dom.node && dom.node.childNodes ? dom.node.childNodes[dom.offset] : null;
+	if (!cellDom || typeof cellDom.offsetWidth != "number") return null;
+	let domWidth = cellDom.offsetWidth, parts = colspan;
 	if (colwidth) {
 		for (let i = 0; i < colspan; i++) if (colwidth[i]) {
 			domWidth -= colwidth[i];
 			parts--;
 		}
 	}
-	return domWidth / parts;
+	return parts ? domWidth / parts : null;
 }
 function domCellAround(target) {
 	while (target && target.nodeName != "TD" && target.nodeName != "TH") target = target.classList && target.classList.contains("ProseMirror") ? null : target.parentNode;
@@ -2516,10 +2535,15 @@ function draggedWidth(dragging, event, resizeMinWidth) {
 	return Math.max(resizeMinWidth, dragging.startWidth + offset);
 }
 function updateHandle(view, value) {
-	view.dispatch(view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value }));
+	safeDispatch(view, view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value }));
 }
 function updateColumnWidth(view, cell, width) {
-	const $cell = view.state.doc.resolve(cell);
+	let $cell;
+	try {
+		$cell = view.state.doc.resolve(cell);
+	} catch (_error) {
+		return false;
+	}
 	const table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);
 	const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;
 	const tr = view.state.tr;
@@ -2537,16 +2561,24 @@ function updateColumnWidth(view, cell, width) {
 			colwidth
 		});
 	}
-	if (tr.docChanged) view.dispatch(tr);
+	if (tr.docChanged) return safeDispatch(view, tr);
+	return true;
 }
 function displayColumnWidth(view, cell, width, defaultCellMinWidth) {
-	const $cell = view.state.doc.resolve(cell);
+	let $cell;
+	try {
+		$cell = view.state.doc.resolve(cell);
+	} catch (_error) {
+		return false;
+	}
 	const table = $cell.node(-1), start = $cell.start(-1);
 	const col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;
-	let dom = view.domAtPos($cell.start(-1)).node;
+	const domAtPos = safeDomAtPos(view, $cell.start(-1));
+	let dom = domAtPos && domAtPos.node;
 	while (dom && dom.nodeName != "TABLE") dom = dom.parentNode;
-	if (!dom) return;
+	if (!dom) return false;
 	updateColumnsOnResize(table, dom.firstChild, dom, defaultCellMinWidth, col, width);
+	return true;
 }
 function zeroes(n) {
 	return Array(n).fill(0);
diff --git a/dist/index.js b/dist/index.js
index 5b4ac25594ba5722409332b1e5c812f108c9bf11..5b811ee70ff2fcb0c7587f838f00bc6fc19e906a 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -2443,6 +2443,21 @@ function handleMouseLeave(view) {
 	const pluginState = columnResizingPluginKey.getState(view.state);
 	if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging) updateHandle(view, -1);
 }
+function safeDispatch(view, tr) {
+	try {
+		view.dispatch(tr);
+		return true;
+	} catch (_error) {
+		return false;
+	}
+}
+function safeDomAtPos(view, pos) {
+	try {
+		return view.domAtPos(pos);
+	} catch (_error) {
+		return null;
+	}
+}
 function handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth) {
 	var _view$dom$ownerDocume;
 	if (!view.editable) return false;
@@ -2451,17 +2466,18 @@ function handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth) {
 	if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging) return false;
 	const cell = view.state.doc.nodeAt(pluginState.activeHandle);
 	const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);
-	view.dispatch(view.state.tr.setMeta(columnResizingPluginKey, { setDragging: {
+	if (width == null) return false;
+	if (!safeDispatch(view, view.state.tr.setMeta(columnResizingPluginKey, { setDragging: {
 		startX: event.clientX,
 		startWidth: width
-	} }));
+	} }))) return false;
 	function finish(event$1) {
 		win.removeEventListener("mouseup", finish);
 		win.removeEventListener("mousemove", move);
 		const pluginState$1 = columnResizingPluginKey.getState(view.state);
 		if (pluginState$1 === null || pluginState$1 === void 0 ? void 0 : pluginState$1.dragging) {
 			updateColumnWidth(view, pluginState$1.activeHandle, draggedWidth(pluginState$1.dragging, event$1, cellMinWidth));
-			view.dispatch(view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null }));
+			safeDispatch(view, view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null }));
 		}
 	}
 	function move(event$1) {
@@ -2482,15 +2498,18 @@ function handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth) {
 function currentColWidth(view, cellPos, { colspan, colwidth }) {
 	const width = colwidth && colwidth[colwidth.length - 1];
 	if (width) return width;
-	const dom = view.domAtPos(cellPos);
-	let domWidth = dom.node.childNodes[dom.offset].offsetWidth, parts = colspan;
+	const dom = safeDomAtPos(view, cellPos);
+	if (!dom) return null;
+	const cellDom = dom.node && dom.node.childNodes ? dom.node.childNodes[dom.offset] : null;
+	if (!cellDom || typeof cellDom.offsetWidth != "number") return null;
+	let domWidth = cellDom.offsetWidth, parts = colspan;
 	if (colwidth) {
 		for (let i = 0; i < colspan; i++) if (colwidth[i]) {
 			domWidth -= colwidth[i];
 			parts--;
 		}
 	}
-	return domWidth / parts;
+	return parts ? domWidth / parts : null;
 }
 function domCellAround(target) {
 	while (target && target.nodeName != "TD" && target.nodeName != "TH") target = target.classList && target.classList.contains("ProseMirror") ? null : target.parentNode;
@@ -2516,10 +2535,15 @@ function draggedWidth(dragging, event, resizeMinWidth) {
 	return Math.max(resizeMinWidth, dragging.startWidth + offset);
 }
 function updateHandle(view, value) {
-	view.dispatch(view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value }));
+	safeDispatch(view, view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value }));
 }
 function updateColumnWidth(view, cell, width) {
-	const $cell = view.state.doc.resolve(cell);
+	let $cell;
+	try {
+		$cell = view.state.doc.resolve(cell);
+	} catch (_error) {
+		return false;
+	}
 	const table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);
 	const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;
 	const tr = view.state.tr;
@@ -2537,16 +2561,24 @@ function updateColumnWidth(view, cell, width) {
 			colwidth
 		});
 	}
-	if (tr.docChanged) view.dispatch(tr);
+	if (tr.docChanged) return safeDispatch(view, tr);
+	return true;
 }
 function displayColumnWidth(view, cell, width, defaultCellMinWidth) {
-	const $cell = view.state.doc.resolve(cell);
+	let $cell;
+	try {
+		$cell = view.state.doc.resolve(cell);
+	} catch (_error) {
+		return false;
+	}
 	const table = $cell.node(-1), start = $cell.start(-1);
 	const col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;
-	let dom = view.domAtPos($cell.start(-1)).node;
+	const domAtPos = safeDomAtPos(view, $cell.start(-1));
+	let dom = domAtPos && domAtPos.node;
 	while (dom && dom.nodeName != "TABLE") dom = dom.parentNode;
-	if (!dom) return;
+	if (!dom) return false;
 	updateColumnsOnResize(table, dom.firstChild, dom, defaultCellMinWidth, col, width);
+	return true;
 }
 function zeroes(n) {
 	return Array(n).fill(0);
