From e95f36dca83350fe19e9049e432bf5285b48db7c Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Wed, 25 Jul 2018 14:04:24 -0700 Subject: [PATCH] Settings editor - remove 'img' and 'a' tags from description markdown --- .../parts/preferences/browser/settingsTree.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index 5e97b6c4987..7025d43a330 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -962,6 +962,7 @@ export class SettingsRenderer implements ITreeRenderer { disposeables: template.toDispose } }); + cleanRenderedMarkdown(renderedDescription); renderedDescription.classList.add('setting-item-description-markdown'); template.descriptionElement.innerHTML = ''; template.descriptionElement.appendChild(renderedDescription); @@ -1025,7 +1026,6 @@ export class SettingsRenderer implements ITreeRenderer { if (template.controlElement.firstElementChild) { template.controlElement.firstElementChild.setAttribute('tabindex', isSelected ? '0' : '-1'); } - } private renderText(dataElement: SettingsTreeSettingElement, isSelected: boolean, template: ISettingTextItemTemplate, onChange: (value: string) => void): void { @@ -1061,6 +1061,17 @@ export class SettingsRenderer implements ITreeRenderer { } } +function cleanRenderedMarkdown(element: Node): void { + element.childNodes.forEach(child => { + const tagName = (child).tagName && (child).tagName.toLowerCase(); + if (tagName === 'img' || tagName === 'a') { + element.removeChild(child); + } else { + cleanRenderedMarkdown(child); + } + }); +} + function getDisplayEnumOptions(setting: ISetting): string[] { if (setting.enum.length > SettingsRenderer.MAX_ENUM_DESCRIPTIONS && setting.enumDescriptions) { return setting.enum -- GitLab