From 3d22437c4214391383d67be9838ee7f1fef0af3d Mon Sep 17 00:00:00 2001 From: Nicolas Bayet Date: Mon, 22 Jun 2020 16:23:38 +0200 Subject: [PATCH] [IMP] DomHelpers: add append and prepend in domHelpers --- packages/plugin-dom-helpers/src/DomHelpers.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/plugin-dom-helpers/src/DomHelpers.ts b/packages/plugin-dom-helpers/src/DomHelpers.ts index 60fe58fb9..00a50ba06 100644 --- a/packages/plugin-dom-helpers/src/DomHelpers.ts +++ b/packages/plugin-dom-helpers/src/DomHelpers.ts @@ -175,6 +175,32 @@ export class DomHelpers extends JWPlu } await this.editor.dispatcher.dispatchHooks('@redraw'); } + /** + * Prepend a DOM Node to another DOM Node's children. + * + * @param params + */ + async prepend(container: Node, node: Node): Promise { + const toNodes = this.getNodes(node); + const toNode = toNodes[toNodes.length - 1]; + for (const vnode of this.getNodes(container).reverse()) { + vnode.prepend(toNode); + } + await this.editor.dispatcher.dispatchHooks('@redraw'); + } + /** + * Append a DOM Node to another DOM Node's children. + * + * @param params + */ + async append(container: Node, node: Node): Promise { + const toNodes = this.getNodes(node); + const toNode = toNodes[toNodes.length - 1]; + for (const vnode of this.getNodes(container)) { + vnode.append(toNode); + } + await this.editor.dispatcher.dispatchHooks('@redraw'); + } /** * Insert html content before, after or inside a DOM Node. If no DOM Node * was provided, empty the range and insert the html content before the it.