From d869847da143a6b22b97f0529f0c7adc5831b903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 31 Mar 2020 13:06:34 +0200 Subject: [PATCH] remove styling on destroy --- packages/core/src/Editor.ts | 5 ++++- packages/core/src/utils/injectCSS.ts | 20 +++++++++----------- packages/core/src/utils/removeElement.ts | 5 +++++ 3 files changed, 18 insertions(+), 12 deletions(-) create mode 100644 packages/core/src/utils/removeElement.ts diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index beb73715..124fb3b0 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -16,6 +16,7 @@ import getAllMethodNames from './utils/getAllMethodNames' import nodeIsActive from './utils/nodeIsActive' import markIsActive from './utils/markIsActive' import getMarkAttrs from './utils/getMarkAttrs' +import removeElement from './utils/removeElement' import getSchemaTypeByName from './utils/getSchemaTypeByName' import ExtensionManager from './ExtensionManager' import Extension from './Extension' @@ -44,6 +45,7 @@ export class Editor extends EventEmitter { extensions: [], } commands: { [key: string]: any } = {} + css!: HTMLStyleElement private lastCommand = Promise.resolve() @@ -62,7 +64,7 @@ export class Editor extends EventEmitter { this.registerCommand('clearContent', require('./commands/clearContent').default) if (this.options.injectCSS) { - injectCSS(require('./style.css')) + this.css = injectCSS(require('./style.css')) } } @@ -232,6 +234,7 @@ export class Editor extends EventEmitter { this.view.destroy() this.removeAllListeners() + removeElement(this.css) } } diff --git a/packages/core/src/utils/injectCSS.ts b/packages/core/src/utils/injectCSS.ts index b1511116..a9c073ce 100644 --- a/packages/core/src/utils/injectCSS.ts +++ b/packages/core/src/utils/injectCSS.ts @@ -1,15 +1,13 @@ export default function injectCSS(css: string) { - if (process.env.NODE_ENV !== 'test') { - const style = document.createElement('style') - style.type = 'text/css' - style.textContent = css - const { head } = document - const { firstChild } = head + const style = document.createElement('style') + style.type = 'text/css' + style.textContent = css + const { head } = document + const { firstChild } = head - if (firstChild) { - head.insertBefore(style, firstChild) - } else { - head.appendChild(style) - } + if (firstChild) { + return head.insertBefore(style, firstChild) + } else { + return head.appendChild(style) } } diff --git a/packages/core/src/utils/removeElement.ts b/packages/core/src/utils/removeElement.ts new file mode 100644 index 00000000..a2cca1e0 --- /dev/null +++ b/packages/core/src/utils/removeElement.ts @@ -0,0 +1,5 @@ +export default function removeElement(element: HTMLElement) { + if (element && element.parentNode) { + element.parentNode.removeChild(element) + } +} \ No newline at end of file