diff --git a/src/blockview.ts b/src/blockview.ts index e3a29b0..0bf5cc1 100644 --- a/src/blockview.ts +++ b/src/blockview.ts @@ -205,7 +205,7 @@ export class BlockWidgetView extends ContentView implements BlockView { if (this.dom && this.prevWidget) this.prevWidget.destroy(this.dom) this.prevWidget = null this.setDOM(this.widget.toDOM(view)) - this.dom!.contentEditable = "false" + if (!this.widget.editable) this.dom!.contentEditable = "false" } } diff --git a/src/decoration.ts b/src/decoration.ts index 7a77716..316b8c7 100644 --- a/src/decoration.ts +++ b/src/decoration.ts @@ -152,6 +152,9 @@ export abstract class WidgetType { /// @internal get isHidden() { return false } + /// @internal + get editable() { return false } + /// This is called when the an instance of the widget is removed /// from the editor view. destroy(dom: HTMLElement) {} diff --git a/src/docview.ts b/src/docview.ts index 883607b..ae9edf4 100644 --- a/src/docview.ts +++ b/src/docview.ts @@ -555,6 +555,8 @@ class BlockGapWidget extends WidgetType { return true } + get editable() { return true } + get estimatedHeight() { return this.height } } diff --git a/src/inlineview.ts b/src/inlineview.ts index e6ad4f1..aa6bdb6 100644 --- a/src/inlineview.ts +++ b/src/inlineview.ts @@ -182,7 +182,7 @@ export class WidgetView extends ContentView { if (this.dom && this.prevWidget) this.prevWidget.destroy(this.dom) this.prevWidget = null this.setDOM(this.widget.toDOM(view)) - this.dom!.contentEditable = "false" + if (!this.widget.editable) this.dom!.contentEditable = "false" } }