diff --git a/.changes/node-type.md b/.changes/node-type.md new file mode 100644 index 0000000..e4ee23d --- /dev/null +++ b/.changes/node-type.md @@ -0,0 +1,5 @@ +--- +"obsidian-css-inlay-colors": patch:fix +--- + +Swap to a more robust method of determining the node type in live preview mode diff --git a/src/live.ts b/src/live.ts index 659666d..bae22bd 100644 --- a/src/live.ts +++ b/src/live.ts @@ -1,4 +1,4 @@ -import { syntaxTree } from '@codemirror/language' +import { syntaxTree, tokenClassNodeProp } from '@codemirror/language' import type { Range } from '@codemirror/state' import { Decoration, @@ -8,6 +8,7 @@ import { type ViewUpdate, WidgetType, } from '@codemirror/view' +import type { NodeProp } from '@lezer/common' import { type Color, formatHex, parse } from 'culori' import { formatColor } from './formatColor' @@ -93,7 +94,9 @@ const createColorWidgets = (view: EditorView, colorPickerEnabled: boolean) => { from, to, enter: (node) => { - if (node.name.includes('inline-code')) { + if ( + node.type.prop(tokenClassNodeProp)?.split(' ').includes('inline-code') + ) { const text = view.state.sliceDoc(node.from, node.to) // Not a valid color @@ -123,3 +126,8 @@ const createColorWidgets = (view: EditorView, colorPickerEnabled: boolean) => { return Decoration.set(widgets) } + +// Codemirror does not correctly export a type for this constant, but it does exist +declare module '@codemirror/language' { + const tokenClassNodeProp: NodeProp +}