Skip to content

Commit ae5f631

Browse files
committed
fix: reduce the use of innerHTML
1 parent 8fb8d86 commit ae5f631

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

packages/viewer/src/lib/renderers/image.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,17 @@ export class ImageRenderer {
1212

1313
update(props: { value: any }) {
1414
if (props.value == null) {
15-
this.element.innerHTML = "(null)";
15+
this.element.innerText = "(null)";
1616
return;
1717
}
1818
let dataUrl = imageToDataUrl(props.value);
1919
if (dataUrl != null) {
20-
this.element.innerHTML = `<img src="${dataUrl}" style="max-height: 100px" />`;
20+
let img = document.createElement("img");
21+
img.src = dataUrl;
22+
img.style.maxHeight = "100px";
23+
this.element.replaceChildren(img);
2124
} else {
22-
this.element.innerHTML = `(unknown)`;
25+
this.element.innerText = `(unknown)`;
2326
}
2427
}
2528
}

packages/viewer/src/lib/renderers/json.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ export class JSONRenderer {
2626
}
2727

2828
update(props: { value: any }) {
29-
this.element.innerHTML = `<pre>${safeJSONStringify(props.value)}</pre>`;
29+
let pre = document.createElement("pre");
30+
pre.innerText = safeJSONStringify(props.value);
31+
this.element.replaceChildren(pre);
3032
}
3133
}

packages/viewer/src/lib/renderers/url.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ export class URLRenderer {
1010

1111
update(props: { value: any }) {
1212
if (props.value != null) {
13-
this.element.innerHTML = `<a href="${props.value}" class="underline" target="_blank">${props.value}</a>`;
13+
let a = document.createElement("a");
14+
a.href = props.value;
15+
a.innerText = props.value;
16+
a.className = "underline";
17+
a.target = "_blank";
18+
this.element.replaceChildren(a);
1419
} else {
15-
this.element.innerHTML = `(null)`;
20+
this.element.innerText = `(null)`;
1621
}
1722
}
1823
}

0 commit comments

Comments
 (0)