diff --git a/src/ui/views/inline-field.tsx b/src/ui/views/inline-field.tsx index 6d68d140..c6eab47c 100644 --- a/src/ui/views/inline-field.tsx +++ b/src/ui/views/inline-field.tsx @@ -1,5 +1,4 @@ import { InlineField, extractInlineFields, parseInlineValue } from "data-import/inline-field"; -import { Values } from "data-model/value"; import { MarkdownPostProcessorContext, MarkdownRenderChild } from "obsidian"; import { h, render } from "preact"; import { DataviewContext, DataviewInit, Lit } from "ui/markdown"; @@ -7,16 +6,10 @@ import { canonicalizeVarName } from "util/normalize"; /** Replaces raw textual inline fields in text containers with pretty HTML equivalents. */ export async function replaceInlineFields(ctx: MarkdownPostProcessorContext, init: DataviewInit): Promise { - let inlineFields = extractInlineFields(init.container.innerHTML); + const inlineFields = extractInlineFields(init.container.innerHTML); if (inlineFields.length == 0) return; - const text = ctx.getSectionInfo(init.container)?.text; - let inlineFieldsFromText: InlineField[] | null = null; - if (text) { - inlineFieldsFromText = extractInlineFields(text); - } - - let component = new MarkdownRenderChild(init.container); + const component = new MarkdownRenderChild(init.container); ctx.addChild(component); // Iterate through the raw HTML and replace inline field matches with corresponding rendered values. @@ -60,27 +53,33 @@ export async function replaceInlineFields(ctx: MarkdownPostProcessorContext, ini // Replace the container children with the new rendered children. // TODO: Replace this with a dom-to-dom diff to reduce the actual amount of updates. init.container.replaceChildren(...template.content.childNodes); - + let inlineFieldsFromText: InlineField[] | undefined; + let hasRetrievedText: boolean = false; for (let index = 0; index < inlineFields.length; index++) { const box = init.container.querySelector("#dataview-inline-field-" + index); if (!box) continue; const context = Object.assign({}, init, { container: box, component: component }); - - let parsedValue; - if (inlineFieldsFromText && inlineFieldsFromText[index].key == inlineFields[index].key) { - const parsedValueFromText = parseInlineValue(inlineFieldsFromText[index].value); - if (Values.isString(parsedValueFromText)) { - parsedValue = parsedValueFromText; + const parseInlineValueWrapper = (fieldVal: string) => { + if (fieldVal.startsWith(" - + , box );