kritzel-stencil 0.0.104 → 0.0.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/cjs/index-D62tBCuq.js.map +1 -1
  2. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +281 -2167
  3. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/stencil.cjs.js +1 -1
  6. package/dist/cjs/stencil.cjs.js.map +1 -1
  7. package/dist/collection/classes/handlers/context-menu.handler.js +1 -1
  8. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  9. package/dist/collection/classes/handlers/rotation.handler.js +1 -0
  10. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  11. package/dist/collection/classes/handlers/selection.handler.js +4 -4
  12. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  13. package/dist/collection/classes/objects/base-object.class.js +7 -2
  14. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  15. package/dist/collection/classes/objects/image.class.js +15 -10
  16. package/dist/collection/classes/objects/image.class.js.map +1 -1
  17. package/dist/collection/classes/objects/path.class.js +22 -16
  18. package/dist/collection/classes/objects/path.class.js.map +1 -1
  19. package/dist/collection/classes/objects/selection-box.class.js +15 -9
  20. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  21. package/dist/collection/classes/objects/selection-group.class.js +19 -12
  22. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  23. package/dist/collection/classes/objects/text.class.js +29 -12
  24. package/dist/collection/classes/objects/text.class.js.map +1 -1
  25. package/dist/collection/classes/reviver.class.js +4 -4
  26. package/dist/collection/classes/reviver.class.js.map +1 -1
  27. package/dist/collection/classes/store.class.js +30 -14
  28. package/dist/collection/classes/store.class.js.map +1 -1
  29. package/dist/collection/classes/structures/octree.structure.js +2 -2
  30. package/dist/collection/classes/structures/octree.structure.js.map +1 -1
  31. package/dist/collection/classes/tools/brush-tool.class.js +4 -4
  32. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  33. package/dist/collection/classes/tools/image-tool.class.js +3 -2
  34. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  35. package/dist/collection/classes/tools/selection-tool.class.js +1 -1
  36. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  37. package/dist/collection/classes/tools/text-tool.class.js +2 -2
  38. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  39. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  40. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  41. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
  42. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +42 -1
  43. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  44. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +236 -23
  45. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  46. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +43 -43
  47. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +3 -3
  48. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
  49. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +20 -20
  50. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  51. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
  52. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  53. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +53 -53
  54. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +2 -2
  55. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
  56. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  57. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  58. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
  59. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  60. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +3 -3
  61. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
  62. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  63. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  64. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
  65. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +17 -17
  66. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  67. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +17 -17
  68. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +4 -4
  69. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
  70. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -1
  71. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  72. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +18 -18
  73. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +2 -2
  74. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
  75. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
  76. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +2 -2
  77. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  78. package/dist/collection/helpers/object.helper.js +2 -15
  79. package/dist/collection/helpers/object.helper.js.map +1 -1
  80. package/dist/collection/interfaces/object.interface.js.map +1 -1
  81. package/dist/components/kritzel-brush-style.js +1 -1
  82. package/dist/components/kritzel-color-palette.js +1 -1
  83. package/dist/components/kritzel-color.js +1 -1
  84. package/dist/components/kritzel-context-menu.js +1 -1
  85. package/dist/components/kritzel-control-brush-config.js +1 -1
  86. package/dist/components/kritzel-control-text-config.js +1 -1
  87. package/dist/components/kritzel-controls.js +1 -1
  88. package/dist/components/kritzel-cursor-trail.js +1 -1
  89. package/dist/components/kritzel-dropdown.js +1 -1
  90. package/dist/components/kritzel-editor.js +58 -18
  91. package/dist/components/kritzel-editor.js.map +1 -1
  92. package/dist/components/kritzel-engine.js +1 -1
  93. package/dist/components/kritzel-font-family.js +1 -1
  94. package/dist/components/kritzel-font-size.js +1 -1
  95. package/dist/components/kritzel-font.js +1 -1
  96. package/dist/components/kritzel-stroke-size.js +1 -1
  97. package/dist/components/kritzel-tooltip.js +1 -1
  98. package/dist/components/kritzel-utility-panel.js +1 -1
  99. package/dist/components/{p-X3xYsp4r.js → p-9IX8ss5J.js} +6 -6
  100. package/dist/components/p-9IX8ss5J.js.map +1 -0
  101. package/dist/components/{p-Ddfewfv9.js → p-B1tJ3Woq.js} +3 -3
  102. package/dist/components/{p-Ddfewfv9.js.map → p-B1tJ3Woq.js.map} +1 -1
  103. package/dist/components/{p-D06w3u84.js → p-B7P9QBiE.js} +4 -4
  104. package/dist/components/p-B7P9QBiE.js.map +1 -0
  105. package/dist/components/{p-BjqfG-5H.js → p-BFlJumTk.js} +10 -10
  106. package/dist/components/{p-BjqfG-5H.js.map → p-BFlJumTk.js.map} +1 -1
  107. package/dist/components/p-BcQCX1Z6.js +813 -0
  108. package/dist/components/p-BcQCX1Z6.js.map +1 -0
  109. package/dist/components/{p-_wFpvzNp.js → p-Bhfk_puI.js} +4 -4
  110. package/dist/components/p-Bhfk_puI.js.map +1 -0
  111. package/dist/components/{p-BYH2jNAX.js → p-CF5pcRGS.js} +4 -4
  112. package/dist/components/{p-BYH2jNAX.js.map → p-CF5pcRGS.js.map} +1 -1
  113. package/dist/components/p-CZkSABuJ.js.map +1 -1
  114. package/dist/components/{p-BYt7-mGK.js → p-Cbu5RSmC.js} +3 -3
  115. package/dist/components/{p-BYt7-mGK.js.map → p-Cbu5RSmC.js.map} +1 -1
  116. package/dist/components/{p-DaeIjoQm.js → p-Ck2d5Wd1.js} +4 -4
  117. package/dist/components/p-Ck2d5Wd1.js.map +1 -0
  118. package/dist/components/{p-DMSOfO6k.js → p-CkPd1oL1.js} +165 -84
  119. package/dist/components/p-CkPd1oL1.js.map +1 -0
  120. package/dist/components/{p-C8KDwUb7.js → p-D9nf_Yw4.js} +3 -3
  121. package/dist/components/p-D9nf_Yw4.js.map +1 -0
  122. package/dist/components/p-DC8SDK2U.js.map +1 -1
  123. package/dist/components/{p-DJUnTtGg.js → p-DIxwvThL.js} +17 -17
  124. package/dist/components/{p-DJUnTtGg.js.map → p-DIxwvThL.js.map} +1 -1
  125. package/dist/components/{p-CDhTT8u8.js → p-Ds3FhuuO.js} +3 -3
  126. package/dist/components/p-Ds3FhuuO.js.map +1 -0
  127. package/dist/components/{p-BgUIonZF.js → p-I1jXruHK.js} +4 -4
  128. package/dist/components/p-I1jXruHK.js.map +1 -0
  129. package/dist/components/{p-BqUM5gV3.js → p-JvUh5Cky.js} +9 -9
  130. package/dist/components/p-JvUh5Cky.js.map +1 -0
  131. package/dist/components/{p-DQHNxDS7.js → p-c6tIpE_t.js} +3 -3
  132. package/dist/components/p-c6tIpE_t.js.map +1 -0
  133. package/dist/components/{p-BJ5xxphF.js → p-wUZba7Vi.js} +4 -4
  134. package/dist/components/{p-BJ5xxphF.js.map → p-wUZba7Vi.js.map} +1 -1
  135. package/dist/esm/index-BOJOOWaP.js.map +1 -1
  136. package/dist/esm/kritzel-brush-style_18.entry.js +281 -2167
  137. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  138. package/dist/esm/loader.js +1 -1
  139. package/dist/esm/stencil.js +1 -1
  140. package/dist/esm/stencil.js.map +1 -1
  141. package/dist/stencil/p-7aaf3e49.entry.js +2 -0
  142. package/dist/stencil/p-7aaf3e49.entry.js.map +1 -0
  143. package/dist/stencil/p-BOJOOWaP.js.map +1 -1
  144. package/dist/stencil/stencil.esm.js +1 -1
  145. package/dist/stencil/stencil.esm.js.map +1 -1
  146. package/dist/types/classes/objects/base-object.class.d.ts +4 -3
  147. package/dist/types/classes/objects/image.class.d.ts +2 -2
  148. package/dist/types/classes/objects/path.class.d.ts +1 -1
  149. package/dist/types/classes/objects/selection-box.class.d.ts +1 -1
  150. package/dist/types/classes/objects/selection-group.class.d.ts +1 -1
  151. package/dist/types/classes/objects/text.class.d.ts +12 -1
  152. package/dist/types/classes/store.class.d.ts +3 -3
  153. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +7 -0
  154. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +8 -1
  155. package/dist/types/components.d.ts +11 -3
  156. package/dist/types/helpers/object.helper.d.ts +0 -1
  157. package/dist/types/interfaces/object.interface.d.ts +1 -1
  158. package/package.json +3 -5
  159. package/dist/components/p-BgUIonZF.js.map +0 -1
  160. package/dist/components/p-BqUM5gV3.js.map +0 -1
  161. package/dist/components/p-C8KDwUb7.js.map +0 -1
  162. package/dist/components/p-CDhTT8u8.js.map +0 -1
  163. package/dist/components/p-CFkDfXW4.js +0 -2814
  164. package/dist/components/p-CFkDfXW4.js.map +0 -1
  165. package/dist/components/p-D06w3u84.js.map +0 -1
  166. package/dist/components/p-DMSOfO6k.js.map +0 -1
  167. package/dist/components/p-DQHNxDS7.js.map +0 -1
  168. package/dist/components/p-DaeIjoQm.js.map +0 -1
  169. package/dist/components/p-X3xYsp4r.js.map +0 -1
  170. package/dist/components/p-_wFpvzNp.js.map +0 -1
  171. package/dist/stencil/p-f059fbff.entry.js +0 -2
  172. package/dist/stencil/p-f059fbff.entry.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-DC8SDK2U.js';
2
- import { b as KritzelBaseCommand, c as KritzelBaseTool, d as KritzelEventHelper, e as KritzelBaseObject, f as KritzelText, g as KritzelToolRegistry, a as KritzelTextTool, K as KritzelBrushTool, h as KritzelPath, O as ObjectHelper, A as AddObjectCommand } from './p-CFkDfXW4.js';
3
- import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-BYt7-mGK.js';
4
- import { d as defineCustomElement$2 } from './p-CDhTT8u8.js';
2
+ import { c as KritzelBaseCommand, d as KritzelBaseTool, e as KritzelEventHelper, f as KritzelBaseObject, b as KritzelText, g as KritzelToolRegistry, a as KritzelTextTool, K as KritzelBrushTool, h as KritzelPath, O as ObjectHelper, A as AddObjectCommand } from './p-BcQCX1Z6.js';
3
+ import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-Cbu5RSmC.js';
4
+ import { d as defineCustomElement$2 } from './p-Ds3FhuuO.js';
5
5
  import { d as defineCustomElement$1 } from './p-CZkSABuJ.js';
6
6
 
7
7
  class BatchCommand extends KritzelBaseCommand {
@@ -105,18 +105,23 @@ class KritzelEraserTool extends KritzelBaseTool {
105
105
  }
106
106
 
107
107
  class KritzelImage extends KritzelBaseObject {
108
- constructor(store, img) {
109
- super(store);
108
+ constructor() {
109
+ super(...arguments);
110
110
  this.__class__ = 'KritzelImage';
111
+ this.src = '';
111
112
  this.debugInfoVisible = true;
112
- this.img = img;
113
- this.x = 0;
114
- this.y = 0;
115
- this.translateX = 0;
116
- this.translateY = 0;
117
- this.width = img.width;
118
- this.height = img.height;
119
- this.scale = this._store.state.scale;
113
+ }
114
+ static create(store) {
115
+ const object = new KritzelImage();
116
+ object._store = store;
117
+ object.id = object.generateId();
118
+ object.x = 0;
119
+ object.y = 0;
120
+ object.translateX = 0;
121
+ object.translateY = 0;
122
+ object.scale = object._store.state.scale;
123
+ object.zIndex = store.currentZIndex;
124
+ return object;
120
125
  }
121
126
  resize(x, y, width, height) {
122
127
  if (width <= 1 || height <= 1) {
@@ -512,6 +517,7 @@ class KritzelRotationHandler extends KritzelBaseHandler {
512
517
  const currentRotation = Math.atan2(groupCenterY - cursorY, groupCenterX - cursorX);
513
518
  this.rotation = currentRotation - this.initialRotation;
514
519
  this._store.state.selectionGroup.rotate(this.rotation);
520
+ this._store.rerender();
515
521
  clearTimeout(this._store.state.longTouchTimeout);
516
522
  }
517
523
  }
@@ -580,17 +586,23 @@ class KritzelGeometryHelper {
580
586
  }
581
587
 
582
588
  class KrtizelSelectionBox extends KritzelBaseObject {
583
- constructor(store) {
584
- super(store);
589
+ constructor() {
590
+ super(...arguments);
585
591
  this.__class__ = 'KrtizelSelectionBox';
586
592
  this.objects = [];
587
- this.backgroundColor = 'var(--kritzel-selection-box-background-color, rgba(14, 17, 17, 0.2))';
588
- this.borderColor = 'var(--kritzel-selection-box-border-color, rgba(14, 17, 17, 0.5))';
589
- this.borderWidth = 2;
590
- this.scale = this._store.state.scale;
591
- this.height = 0;
592
- this.width = 0;
593
- this.zIndex = 9999;
593
+ }
594
+ static create(store) {
595
+ const object = new KrtizelSelectionBox();
596
+ object._store = store;
597
+ object.id = object.generateId();
598
+ object.scale = store.state.scale;
599
+ object.zIndex = 99999;
600
+ object.backgroundColor = 'var(--kritzel-selection-box-background-color, rgba(14, 17, 17, 0.2))';
601
+ object.borderColor = 'var(--kritzel-selection-box-border-color, rgba(14, 17, 17, 0.5))';
602
+ object.borderWidth = 2;
603
+ object.height = 0;
604
+ object.width = 0;
605
+ return object;
594
606
  }
595
607
  }
596
608
 
@@ -692,7 +704,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
692
704
  let clientX, clientY;
693
705
  clientX = event.clientX - this._store.offsetX;
694
706
  clientY = event.clientY - this._store.offsetY;
695
- const selectionBox = new KrtizelSelectionBox(this._store);
707
+ const selectionBox = KrtizelSelectionBox.create(this._store);
696
708
  this.startX = (clientX - this._store.state.translateX) / this._store.state.scale;
697
709
  this.startY = (clientY - this._store.state.translateY) / this._store.state.scale;
698
710
  selectionBox.translateX = this.startX;
@@ -713,7 +725,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
713
725
  clientY = Math.round(firstTouch.clientY - this._store.offsetY);
714
726
  this.touchStartX = clientX;
715
727
  this.touchStartY = clientY;
716
- const selectionBox = new KrtizelSelectionBox(this._store);
728
+ const selectionBox = KrtizelSelectionBox.create(this._store);
717
729
  this.startX = (clientX - this._store.state.translateX) / this._store.state.scale;
718
730
  this.startY = (clientY - this._store.state.translateY) / this._store.state.scale;
719
731
  selectionBox.translateX = this.startX;
@@ -775,7 +787,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
775
787
  return;
776
788
  }
777
789
  selectedObjects.forEach(o => (o.selected = false));
778
- this._store.state.selectionGroup = new KritzelSelectionGroup(this._store);
790
+ this._store.state.selectionGroup = KritzelSelectionGroup.create(this._store);
779
791
  this._store.state.selectionGroup.addOrRemove(selectedObject);
780
792
  this._store.state.selectionGroup.selected = true;
781
793
  this._store.state.selectionGroup.rotation = this._store.state.selectionGroup.objects[0].rotation;
@@ -786,7 +798,7 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
786
798
  if (selectedObjects.length === 0) {
787
799
  return;
788
800
  }
789
- this._store.state.selectionGroup = new KritzelSelectionGroup(this._store);
801
+ this._store.state.selectionGroup = KritzelSelectionGroup.create(this._store);
790
802
  selectedObjects.forEach(o => {
791
803
  o.selected = false;
792
804
  this._store.state.selectionGroup.addOrRemove(o);
@@ -926,7 +938,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
926
938
  return object;
927
939
  }
928
940
  else {
929
- const group = new KritzelSelectionGroup(this._store);
941
+ const group = KritzelSelectionGroup.create(this._store);
930
942
  group.translateX = 0;
931
943
  group.translateY = 0;
932
944
  group.addOrRemove(object);
@@ -968,16 +980,16 @@ class KritzelReviver {
968
980
  let revivedObj;
969
981
  switch (obj.__class__) {
970
982
  case 'KritzelPath':
971
- revivedObj = new KritzelPath(this._store).revive(obj);
983
+ revivedObj = KritzelPath.create(this._store).revive(obj);
972
984
  break;
973
985
  case 'KritzelText':
974
- revivedObj = new KritzelText(this._store, obj.fontSize, obj.fontFamily).revive(obj);
986
+ revivedObj = KritzelText.create(this._store, obj.fontSize, obj.fontFamily).revive(obj);
975
987
  break;
976
988
  case 'KritzelImage':
977
- revivedObj = new KritzelImage(this._store, obj.img).revive(obj);
989
+ revivedObj = KritzelImage.create(this._store).revive(obj);
978
990
  break;
979
991
  case 'KritzelSelectionGroup':
980
- revivedObj = new KritzelSelectionGroup(this._store).revive(obj);
992
+ revivedObj = KritzelSelectionGroup.create(this._store).revive(obj);
981
993
  break;
982
994
  case 'KritzelBrushTool':
983
995
  revivedObj = new KritzelBrushTool(this._store);
@@ -1012,17 +1024,23 @@ class KritzelReviver {
1012
1024
  }
1013
1025
 
1014
1026
  class KritzelSelectionGroup extends KritzelBaseObject {
1015
- constructor(store) {
1016
- super(store);
1027
+ constructor() {
1028
+ super(...arguments);
1017
1029
  this.__class__ = 'KritzelSelectionGroup';
1018
1030
  this.objects = [];
1019
1031
  this.unchangedObjects = [];
1020
- this.scale = this._store.state.scale;
1021
- this.zIndex = 99999;
1022
1032
  }
1023
1033
  get length() {
1024
1034
  return this.objects.length;
1025
1035
  }
1036
+ static create(store) {
1037
+ const object = new KritzelSelectionGroup();
1038
+ object._store = store;
1039
+ object.id = object.generateId();
1040
+ object.scale = store.state.scale;
1041
+ object.zIndex = 99999;
1042
+ return object;
1043
+ }
1026
1044
  addOrRemove(object) {
1027
1045
  const index = this.objects.findIndex(obj => obj.id === object.id);
1028
1046
  if (index === -1) {
@@ -1076,13 +1094,13 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1076
1094
  const heightScaleFactor = height / this.height;
1077
1095
  const deltaX = x - this.translateX;
1078
1096
  const deltaY = y - this.translateY;
1079
- this.objects.forEach(obj => {
1080
- const updatedWidth = obj.width * widthScaleFactor;
1081
- const updatedHeight = obj.height * heightScaleFactor;
1082
- const updatedX = obj.translateX + deltaX + (obj.translateX - this.translateX) * (widthScaleFactor - 1);
1083
- const updatedY = obj.translateY + deltaY + (obj.translateY - this.translateY) * (heightScaleFactor - 1);
1084
- obj.resize(updatedX, updatedY, updatedWidth, updatedHeight);
1085
- this._store.state.objectsOctree.update(obj);
1097
+ this.objects.forEach(child => {
1098
+ const updatedWidth = child.width * widthScaleFactor;
1099
+ const updatedHeight = child.height * heightScaleFactor;
1100
+ const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);
1101
+ const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);
1102
+ child.resize(updatedX, updatedY, updatedWidth, updatedHeight);
1103
+ this._store.state.objectsOctree.update(child);
1086
1104
  });
1087
1105
  this.refreshObjectDimensions();
1088
1106
  this.unchangedObjects = ObjectHelper.clone(this.objects);
@@ -1103,10 +1121,11 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1103
1121
  child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
1104
1122
  child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
1105
1123
  child.rotation = this.objects.length === 1 ? value : value + unchangedChild.rotation;
1124
+ this._store.state.objectsOctree.update(child);
1106
1125
  });
1107
1126
  }
1108
1127
  copy() {
1109
- const selectionGroup = new KritzelSelectionGroup(this._store);
1128
+ const selectionGroup = KritzelSelectionGroup.create(this._store);
1110
1129
  let currentZIndex = this._store.currentZIndex;
1111
1130
  this.objects.forEach(obj => {
1112
1131
  const copiedObject = obj.copy();
@@ -1245,7 +1264,8 @@ class KritzelImageTool extends KritzelBaseTool {
1245
1264
  return { scaledWidth, scaledHeight };
1246
1265
  }
1247
1266
  createKritzelImage(img, width, height) {
1248
- const image = new KritzelImage(this._store, img);
1267
+ const image = KritzelImage.create(this._store);
1268
+ image.src = img.src;
1249
1269
  image.width = width;
1250
1270
  image.height = height;
1251
1271
  image.zIndex = this._store.currentZIndex;
@@ -1253,7 +1273,7 @@ class KritzelImageTool extends KritzelBaseTool {
1253
1273
  return image;
1254
1274
  }
1255
1275
  addImageToStore(image) {
1256
- const selectionGroup = new KritzelSelectionGroup(this._store);
1276
+ const selectionGroup = KritzelSelectionGroup.create(this._store);
1257
1277
  selectionGroup.addOrRemove(image);
1258
1278
  selectionGroup.selected = true;
1259
1279
  const addImageCommand = new AddObjectCommand(this._store, this, image);
@@ -1635,11 +1655,11 @@ class KritzelOctree {
1635
1655
  ];
1636
1656
  }
1637
1657
  intersects(a, b) {
1638
- return !((a.x >= b.x + b.width || // a is completely to the right of b
1658
+ return !(a.x >= b.x + b.width || // a is completely to the right of b
1639
1659
  a.x + a.width <= b.x || // a is completely to the left of b
1640
1660
  a.y >= b.y + b.height || // a is completely below b
1641
1661
  a.y + a.height <= b.y // a is completely above b
1642
- ));
1662
+ );
1643
1663
  }
1644
1664
  }
1645
1665
 
@@ -1802,9 +1822,6 @@ class KritzelStore {
1802
1822
  }
1803
1823
  }
1804
1824
  }
1805
- clearSelection() {
1806
- this.history.executeCommand(new RemoveSelectionGroupCommand(this, this.state.selectionGroup));
1807
- }
1808
1825
  delete() {
1809
1826
  if (!this.state.selectionGroup) {
1810
1827
  return;
@@ -1881,7 +1898,23 @@ class KritzelStore {
1881
1898
  });
1882
1899
  this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
1883
1900
  }
1884
- selectAllInViewport() {
1901
+ selectObjects(objects) {
1902
+ if (objects.length === 0) {
1903
+ return;
1904
+ }
1905
+ const selectionGroup = KritzelSelectionGroup.create(this);
1906
+ objects.forEach(obj => {
1907
+ obj.selected = false;
1908
+ selectionGroup.addOrRemove(obj);
1909
+ });
1910
+ selectionGroup.selected = true;
1911
+ this.state.selectionGroup = selectionGroup;
1912
+ if (objects.length === 1) {
1913
+ selectionGroup.rotation = selectionGroup.objects[0].rotation;
1914
+ }
1915
+ this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
1916
+ }
1917
+ selectAllObjectsInViewport() {
1885
1918
  const objectsInViewport = this._state.objectsOctree
1886
1919
  .query({
1887
1920
  x: -this._state.translateX / this._state.scale,
@@ -1893,17 +1926,29 @@ class KritzelStore {
1893
1926
  })
1894
1927
  .filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox) && !(o instanceof KritzelContextMenu));
1895
1928
  if (objectsInViewport.length > 0) {
1896
- const selectionGroup = new KritzelSelectionGroup(this);
1929
+ const selectionGroup = KritzelSelectionGroup.create(this);
1897
1930
  objectsInViewport.forEach(obj => {
1898
1931
  obj.selected = false;
1899
1932
  selectionGroup.addOrRemove(obj);
1900
1933
  });
1901
1934
  selectionGroup.selected = true;
1902
1935
  this.state.isSelecting = false;
1936
+ if (objectsInViewport.length === 1) {
1937
+ selectionGroup.rotation = selectionGroup.objects[0].rotation;
1938
+ }
1903
1939
  this.history.executeCommand(new AddSelectionGroupCommand(this, this, selectionGroup));
1904
1940
  this.setState('activeTool', KritzelToolRegistry.getTool('selection'));
1905
1941
  }
1906
1942
  }
1943
+ clearSelection() {
1944
+ const command = new RemoveSelectionGroupCommand(this, this.state.selectionGroup);
1945
+ this.history.executeCommand(command);
1946
+ this.state.selectionGroup = null;
1947
+ this.state.selectionBox = null;
1948
+ this.state.isSelecting = false;
1949
+ this.state.isResizeHandleSelected = false;
1950
+ this.state.isRotationHandleSelected = false;
1951
+ }
1907
1952
  resetActiveText() {
1908
1953
  if (this.state.activeText && this.state.activeText.value === ' ') {
1909
1954
  this.deleteObject(this.state.activeText.id, false);
@@ -1938,15 +1983,6 @@ class KritzelStore {
1938
1983
  }
1939
1984
  return null;
1940
1985
  }
1941
- resetSelection() {
1942
- this.state.selectionGroup = null;
1943
- this.state.selectionBox = null;
1944
- this.state.isSelecting = false;
1945
- this.state.isResizeHandleSelected = false;
1946
- this.state.isRotationHandleSelected = false;
1947
- this._state.objectsOctree.remove(obj => obj instanceof KritzelSelectionGroup);
1948
- this.rerender();
1949
- }
1950
1986
  }
1951
1987
 
1952
1988
  class KritzelKeyHandler extends KritzelBaseHandler {
@@ -2086,7 +2122,7 @@ class KritzelContextMenuHandler extends KritzelBaseHandler {
2086
2122
  }
2087
2123
  const selectedObject = this._store.getObjectFromPointerEvent(event, '.object');
2088
2124
  if (selectedObject && !(selectedObject instanceof KritzelSelectionGroup)) {
2089
- this._store.state.selectionGroup = new KritzelSelectionGroup(this._store);
2125
+ this._store.state.selectionGroup = KritzelSelectionGroup.create(this._store);
2090
2126
  this._store.state.selectionGroup.addOrRemove(selectedObject);
2091
2127
  this._store.state.selectionGroup.selected = true;
2092
2128
  this._store.state.selectionGroup.rotation = selectedObject.rotation;
@@ -2145,7 +2181,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2145
2181
  this.paste(x, y);
2146
2182
  },
2147
2183
  },
2148
- { label: 'Select All', icon: 'select-all', action: () => this.selectAllInViewport() },
2184
+ { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },
2149
2185
  ];
2150
2186
  this.objectContextMenuItems = [
2151
2187
  { label: 'Copy', icon: 'copy', action: () => this.copy() },
@@ -2170,7 +2206,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2170
2206
  this.keyHandler = new KritzelKeyHandler(this.store);
2171
2207
  this.store.onStateChange('activeTool', (activeTool) => {
2172
2208
  if (!(activeTool instanceof KritzelSelectionTool)) {
2173
- this.store.resetSelection();
2209
+ this.store.clearSelection();
2174
2210
  }
2175
2211
  this.store.state.skipContextMenu = false;
2176
2212
  this.activeToolChange.emit(activeTool);
@@ -2356,9 +2392,6 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2356
2392
  async moveToBottom() {
2357
2393
  this.store.moveToBottom();
2358
2394
  }
2359
- async selectAllInViewport() {
2360
- this.store.selectAllInViewport();
2361
- }
2362
2395
  async undo() {
2363
2396
  this.store.history.undo();
2364
2397
  }
@@ -2370,21 +2403,63 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2370
2403
  this.store.state.selectionBox = null;
2371
2404
  this.store.state.isSelecting = false;
2372
2405
  }
2406
+ async getObjectById(id) {
2407
+ const object = this.store.objects.find(obj => obj.id === id);
2408
+ return object || null;
2409
+ }
2410
+ async addObject(object) {
2411
+ this.store.deselectAllObjects();
2412
+ object.id = object.generateId();
2413
+ object._store = this.store;
2414
+ object.zIndex = this.store.currentZIndex;
2415
+ const command = new AddObjectCommand(this.store, this, object);
2416
+ this.store.history.executeCommand(command);
2417
+ return object;
2418
+ }
2419
+ async updateObject(object, updatedProperties) {
2420
+ this.store.deselectAllObjects();
2421
+ const command = new UpdateObjectCommand(this.store, this, object, updatedProperties);
2422
+ this.store.history.executeCommand(command);
2423
+ return object;
2424
+ }
2425
+ async removeObject(object) {
2426
+ this.store.deselectAllObjects();
2427
+ const command = new RemoveObjectCommand(this.store, this, object);
2428
+ this.store.history.executeCommand(command);
2429
+ return object;
2430
+ }
2431
+ async selectObjects(objects) {
2432
+ var _a;
2433
+ (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
2434
+ this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
2435
+ this.store.deselectAllObjects();
2436
+ this.store.selectObjects(objects);
2437
+ }
2438
+ async selectAllObjectsInViewport() {
2439
+ var _a;
2440
+ (_a = this.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
2441
+ this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
2442
+ this.store.deselectAllObjects();
2443
+ this.store.selectAllObjectsInViewport();
2444
+ }
2445
+ async clearSelection() {
2446
+ this.store.clearSelection();
2447
+ }
2373
2448
  render() {
2374
2449
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2;
2375
2450
  const computedStyle = window.getComputedStyle(this.host);
2376
2451
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
2377
2452
  const baseHandleSize = parseFloat(baseHandleSizePx);
2378
2453
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
2379
- return (h(Host, { key: '81d2f8efadded214fde44f3dbaea3b678d0b182b' }, h("div", { key: '6657555d40bff3b5d44733e286c4076a82ca2e98', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: 'e0cf766f7e8c8e7856a6b55c9c24272fa865c86e' }, "TranslateX: ", (_a = this.store.state) === null || _a === void 0 ? void 0 :
2380
- _a.translateX), h("div", { key: '6c979eb953d01507fd29013d9186618f8f14588b' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
2381
- _b.translateY), h("div", { key: '3be6ea4a5b5eef5d07ddc48aa8ac2e57edbe0887' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
2382
- _c.viewportWidth), h("div", { key: '70aed9d3ee1227ba2a4f54a95eda27cb748f4b9f' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
2383
- _d.viewportHeight), h("div", { key: 'c2e79c4245e9f107e5512472030684e0ed617d1a' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '66f4284c2d4fd5dae03ffa9b641a28b2528ea117' }, "Scale: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
2384
- _e.scale), h("div", { key: 'e4518d18cf923b57dceb38c07f409471bc178e9d' }, "ActiveTool: ", (_g = (_f = this.store.state) === null || _f === void 0 ? void 0 : _f.activeTool) === null || _g === void 0 ? void 0 :
2385
- _g.name), h("div", { key: '47ea576f9c78f3bfb3e03649a88ec0f7b544f2d7' }, "HasViewportChanged: ", ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.hasViewportChanged) ? 'true' : 'false'), h("div", { key: 'fe92910fd861170651688fedbdc2f15829c15a58' }, "IsEnabled: ", ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.isEnabled) ? 'true' : 'false'), h("div", { key: 'cbe7e87d9a3be8acd47dd45f1b69314a8a9c536a' }, "IsScaling: ", ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.isScaling) ? 'true' : 'false'), h("div", { key: '722a58415ae67530dfe611e03a34f30e4c1db64e' }, "IsPanning: ", ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.isPanning) ? 'true' : 'false'), h("div", { key: 'd9686a405ee05480c17358afb865a39bd64a2346' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: '383f8e4a9e98b891507ff95416a20279e4d79431' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: 'fbda2b9f1ba4fe9daefb7f8b36d25d297b47a764' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: 'c1bb88c228cd6bbd2bdb0fe6bb3fd9b47d92bc2e' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '26c77aadc8cda5f27f746d0c38049d830127c81e' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '885725248c47714a49769b94ba48a3a0f59a7f97' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: '035d1c72d476ea9f8110145a25084eca59cfbedc' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: 'd6ac0024bec7d64ca327e6a5760e427e88269b8d' }, "CursorX: ", (_m = this.store.state) === null || _m === void 0 ? void 0 :
2386
- _m.cursorX), h("div", { key: 'b3bdd26eb7d5ac0fdfda0f13b7d4cde9f3712954' }, "CursorY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
2387
- _o.cursorY)), h("div", { key: '186591f736514dcdb96f22d5ab3d14347a4c51ae', class: "origin", style: {
2454
+ return (h(Host, { key: '0c20c50e3ad8ac088902881c35c406ad2f0787d5' }, h("div", { key: 'a89d76b5f6a10cbc54c40d034a08b3ceb99be063', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '94345439d02de7d005bb92abb377b7ebeb91fcdb' }, "TranslateX: ", (_a = this.store.state) === null || _a === void 0 ? void 0 :
2455
+ _a.translateX), h("div", { key: '1e2e3ffc6ad760f089f4d02d94dfeb09bb5725cb' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
2456
+ _b.translateY), h("div", { key: '36d6170934959e19b95326d84b32c9abe2385edc' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
2457
+ _c.viewportWidth), h("div", { key: '57e5d37af3fd1f6ad24ea89ca525a6f0bc8e014b' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
2458
+ _d.viewportHeight), h("div", { key: '8281e788e350db75bbf1fe12dd8c17b91b429135' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '9f42aad27d0a266cbc720d1e13292bea5be84770' }, "Scale: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
2459
+ _e.scale), h("div", { key: '76848c1a0eb2379ee0d0314523a540dbeb3d0697' }, "ActiveTool: ", (_g = (_f = this.store.state) === null || _f === void 0 ? void 0 : _f.activeTool) === null || _g === void 0 ? void 0 :
2460
+ _g.name), h("div", { key: '77f8ff0b660227f7b25c12b74d70946bc1f66e78' }, "HasViewportChanged: ", ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.hasViewportChanged) ? 'true' : 'false'), h("div", { key: '229e94fee90a847a853419ae61bc131221313fc6' }, "IsEnabled: ", ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.isEnabled) ? 'true' : 'false'), h("div", { key: 'f31784916ab54f9a5eda02cffebe55a1f9aaa51f' }, "IsScaling: ", ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.isScaling) ? 'true' : 'false'), h("div", { key: '4611a6dd48f1033d42fc3b7813634cbc16bf9b3b' }, "IsPanning: ", ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.isPanning) ? 'true' : 'false'), h("div", { key: '14388f4b5cca60d8a2d8d474f941b53a78ad327d' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: '2f3dcd488855413e392f56718af640e369d99fae' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '2cd0e44a1d13eaf5d3a942f75a727a074bf37622' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '99d51cf25e02c9d06865bf1f847c704ad8a32110' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '87ab9908a318b238ad1fb00e91dba9c485038443' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '20f291bf45ba06b4107002e288b93f8f61ef9520' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: '52244f4f0d368e7bc183eed4c65abe536d134f44' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: '641edd47e7bccc7514ed6aeac3ecbead95568dde' }, "CursorX: ", (_m = this.store.state) === null || _m === void 0 ? void 0 :
2461
+ _m.cursorX), h("div", { key: 'bf0826a9cbc800ca0f13d4de4da7dbb21241498f' }, "CursorY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
2462
+ _o.cursorY)), h("div", { key: '5659cb254f57b79ca8e33ab11a8087d5ca5088dc', class: "origin", style: {
2388
2463
  transform: `matrix(${(_p = this.store.state) === null || _p === void 0 ? void 0 : _p.scale}, 0, 0, ${(_q = this.store.state) === null || _q === void 0 ? void 0 : _q.scale}, ${(_r = this.store.state) === null || _r === void 0 ? void 0 : _r.translateX}, ${(_s = this.store.state) === null || _s === void 0 ? void 0 : _s.translateY})`,
2389
2464
  } }, (_t = this.store.objects) === null || _t === void 0 ? void 0 :
2390
2465
  _t.map(object => {
@@ -2414,7 +2489,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2414
2489
  width: object === null || object === void 0 ? void 0 : object.width.toString(),
2415
2490
  position: 'absolute',
2416
2491
  overflow: 'visible',
2417
- }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox }, h("path", { d: object === null || object === void 0 ? void 0 : object.d, fill: object.fill, stroke: object === null || object === void 0 ? void 0 : object.stroke }))), object instanceof KritzelImage && (h("img", { ref: el => object.mount(el), src: object.img.src, style: {
2492
+ }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox }, h("path", { d: object === null || object === void 0 ? void 0 : object.d, fill: object.fill, stroke: object === null || object === void 0 ? void 0 : object.stroke }))), object instanceof KritzelImage && (h("img", { ref: el => object.mount(el), src: object.src, style: {
2418
2493
  width: '100%',
2419
2494
  height: '100%',
2420
2495
  userSelect: 'none',
@@ -2481,7 +2556,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2481
2556
  fill: 'transparent',
2482
2557
  cursor: 'grab',
2483
2558
  }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.debugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation)))))));
2484
- }), h("svg", { key: '76788f88c63996a85778fac600f568e651f2604f', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
2559
+ }), h("svg", { key: '05a35ebb17312d00a4065dc6dc76f3a93a72eff4', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
2485
2560
  height: (_u = this.store.state.currentPath) === null || _u === void 0 ? void 0 : _u.height.toString(),
2486
2561
  width: (_v = this.store.state.currentPath) === null || _v === void 0 ? void 0 : _v.width.toString(),
2487
2562
  left: '0',
@@ -2491,12 +2566,12 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2491
2566
  transform: (_x = this.store.state.currentPath) === null || _x === void 0 ? void 0 : _x.transformationMatrix,
2492
2567
  transformOrigin: 'top left',
2493
2568
  overflow: 'visible',
2494
- }, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, h("path", { key: 'e0356205729f20a61f5bbac14393d4d607a7c865', d: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.d, fill: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.fill, stroke: (_1 = this.store.state.currentPath) === null || _1 === void 0 ? void 0 : _1.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '23ab721c25518e6c6a6e6e163fa0753e054cb5e7', ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, style: {
2569
+ }, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, h("path", { key: 'cb232e2697ce6ede2e4d9ed2e1b433ccde3961b5', d: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.d, fill: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.fill, stroke: (_1 = this.store.state.currentPath) === null || _1 === void 0 ? void 0 : _1.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: 'e41b88a78bbd25f692fbdba88fda80993055a078', ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, style: {
2495
2570
  position: 'fixed',
2496
2571
  left: `${this.store.state.contextMenuX}px`,
2497
2572
  top: `${this.store.state.contextMenuY}px`,
2498
2573
  zIndex: '10000',
2499
- }, onActionSelected: event => this.handleContextMenuAction(event) })), ((_2 = this.store.state) === null || _2 === void 0 ? void 0 : _2.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '01f90ff856d6a3b0812ce47796fd59dbbf0cd52d' })));
2574
+ }, onActionSelected: event => this.handleContextMenuAction(event) })), ((_2 = this.store.state) === null || _2 === void 0 ? void 0 : _2.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '1d96c0d7fa94ddcf5820fd76fbaf69c54b1face2' })));
2500
2575
  }
2501
2576
  get host() { return this; }
2502
2577
  static get style() { return kritzelEngineCss; }
@@ -2515,10 +2590,16 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2515
2590
  "paste": [64],
2516
2591
  "moveToTop": [64],
2517
2592
  "moveToBottom": [64],
2518
- "selectAllInViewport": [64],
2519
2593
  "undo": [64],
2520
2594
  "redo": [64],
2521
- "hideContextMenu": [64]
2595
+ "hideContextMenu": [64],
2596
+ "getObjectById": [64],
2597
+ "addObject": [64],
2598
+ "updateObject": [64],
2599
+ "removeObject": [64],
2600
+ "selectObjects": [64],
2601
+ "selectAllObjectsInViewport": [64],
2602
+ "clearSelection": [64]
2522
2603
  }, [[0, "contextmenu", "handleContextMenu"], [1, "mousedown", "handleMouseDown"], [1, "mousemove", "handleMouseMove"], [1, "mouseup", "handleMouseUp"], [0, "dblclick", "handleDoubleClick"], [0, "doubletap", "handleDoubleTap"], [0, "touchstart", "handleTouchStart"], [0, "touchmove", "handleTouchMove"], [0, "touchend", "handleTouchEnd"], [0, "touchcancel", "handleTouchCancel"], [0, "wheel", "handleWheel"], [9, "resize", "handleResize"], [8, "keydown", "handleKeyDown"], [8, "keyup", "handleKeyUp"], [9, "mousedown", "updateFocus"]]]);
2523
2604
  function defineCustomElement() {
2524
2605
  if (typeof customElements === "undefined") {
@@ -2550,6 +2631,6 @@ function defineCustomElement() {
2550
2631
  }
2551
2632
 
2552
2633
  export { KritzelEngine as K, KritzelSelectionTool as a, KritzelEraserTool as b, KritzelImageTool as c, defineCustomElement as d };
2553
- //# sourceMappingURL=p-DMSOfO6k.js.map
2634
+ //# sourceMappingURL=p-CkPd1oL1.js.map
2554
2635
 
2555
- //# sourceMappingURL=p-DMSOfO6k.js.map
2636
+ //# sourceMappingURL=p-CkPd1oL1.js.map