diff --git a/lib/tcmd/Resolver.tsx b/lib/tcmd/Resolver.tsx
index 0a3ce26..46ba71b 100644
--- a/lib/tcmd/Resolver.tsx
+++ b/lib/tcmd/Resolver.tsx
@@ -21,6 +21,7 @@ export function Resolver({ resolver }: { resolver: string }) {
return {content};
}
+const defaultTemplate = "$x";
export function OnDemandResolver({
resolver,
template,
@@ -34,16 +35,25 @@ export function OnDemandResolver({
const res = useRef(new TTCQueryResolver(parser));
const [content, setContent] = useState("");
const generateContent = useCallback(() => {
- let content = template || "$x";
- const stackIdxs = Array.from(new Set(content.match(/\$(?:\d+|x)/g)));
- for (const idx of stackIdxs) {
- let thing = res.current.getFromStack(idx);
- if (Array.isArray(thing)) thing = thing.at(0);
- if (typeof thing.display === "function")
- content = content.replaceAll(idx, thing.display() as string);
- else content = content.replaceAll(idx, thing.display as string);
- }
- setContent(content);
+ setContent(() => {
+ let content = template || defaultTemplate;
+
+ const stackIdxs = Array.from(new Set(content.match(/\$(?:\d+|x)/g)));
+ for (const idx of stackIdxs) {
+ let thing = res.current.getFromStack(idx);
+ if (Array.isArray(thing)) thing = thing.at(0);
+ console.log(thing);
+ if (typeof thing.display === "function") {
+ const disp = thing.display();
+ if (typeof disp === "string" || typeof disp === "number")
+ content = content.replaceAll(idx, disp.toString());
+ else return disp as ReactNode;
+ }
+ // else if (idx === defaultTemplate && )
+ else content = content.replaceAll(idx, thing.display as string);
+ return content;
+ }
+ });
}, [res, template]);
const resolve = useCallback(() => {
@@ -52,7 +62,7 @@ export function OnDemandResolver({
}, [res, resolver, generateContent]);
return (
-