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.