diff --git a/packages/core/examples/test/api.html b/packages/core/examples/test/api.html index 393f5ca..5861f17 100644 --- a/packages/core/examples/test/api.html +++ b/packages/core/examples/test/api.html @@ -91,6 +91,12 @@
idraw.clearOperation
+
+
idraw.insertElementBefore
+
+
+
idraw.insertElementAfter
+
@@ -530,6 +536,44 @@ })(); + + + + + \ No newline at end of file diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 0e70841..d9234a2 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -235,6 +235,40 @@ class Core { } } + insertElementBefore(elem: TypeElementBase, beforeUUID: string) { + const index = this[_helper].getElementIndexByUUID(beforeUUID); + if (index !== null) { + this.insertElementBeforeIndex(elem, index); + } + } + + insertElementBeforeIndex(elem: TypeElementBase, index: number) { + const _elem = deepClone(elem); + _elem.uuid = createUUID(); + if (index >= 0) { + this[_data].elements.splice(index, 0, _elem); + this[_emitChangeData](); + this[_draw](); + } + } + + insertElementAfter(elem: TypeElementBase, beforeUUID: string) { + const index = this[_helper].getElementIndexByUUID(beforeUUID); + if (index !== null) { + this.insertElementAfterIndex(elem, index); + } + } + + insertElementAfterIndex(elem: TypeElementBase, index: number) { + const _elem = deepClone(elem); + _elem.uuid = createUUID(); + if (index >= 0) { + this[_data].elements.splice(index + 1, 0, _elem); + this[_emitChangeData](); + this[_draw](); + } + } + clearOperation() { this[_tempData].clear(); this[_draw]();