kritzel-stencil 0.0.121 → 0.0.123

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 (170) hide show
  1. package/dist/cjs/{index-BcrLbdO1.js → index-C05uAr89.js} +10 -4
  2. package/dist/cjs/index-C05uAr89.js.map +1 -0
  3. package/dist/cjs/{index-BjLSiQIM.js → index-UcX3pzju.js} +348 -141
  4. package/dist/cjs/index-UcX3pzju.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +1 -1
  6. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +137 -81
  7. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/stencil.cjs.js +2 -2
  10. package/dist/cjs/stencil.cjs.js.map +1 -1
  11. package/dist/collection/classes/commands/remove-object.command.js +3 -0
  12. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  13. package/dist/collection/classes/handlers/context-menu.handler.js +1 -1
  14. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  15. package/dist/collection/classes/handlers/hover.handler.js +22 -0
  16. package/dist/collection/classes/handlers/hover.handler.js.map +1 -0
  17. package/dist/collection/classes/handlers/move.handler.js +2 -2
  18. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  19. package/dist/collection/classes/handlers/selection.handler.js +16 -20
  20. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  21. package/dist/collection/classes/history.class.js +16 -13
  22. package/dist/collection/classes/history.class.js.map +1 -1
  23. package/dist/collection/classes/objects/base-object.class.js +34 -32
  24. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  25. package/dist/collection/classes/objects/custom-element.class.js +52 -0
  26. package/dist/collection/classes/objects/custom-element.class.js.map +1 -0
  27. package/dist/collection/classes/objects/image.class.js +1 -1
  28. package/dist/collection/classes/objects/image.class.js.map +1 -1
  29. package/dist/collection/classes/objects/path.class.js +133 -4
  30. package/dist/collection/classes/objects/path.class.js.map +1 -1
  31. package/dist/collection/classes/objects/selection-box.class.js +2 -2
  32. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  33. package/dist/collection/classes/objects/selection-group.class.js +3 -2
  34. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  35. package/dist/collection/classes/objects/text.class.js +1 -1
  36. package/dist/collection/classes/objects/text.class.js.map +1 -1
  37. package/dist/collection/classes/reviver.class.js +4 -0
  38. package/dist/collection/classes/reviver.class.js.map +1 -1
  39. package/dist/collection/classes/store.class.js +45 -6
  40. package/dist/collection/classes/store.class.js.map +1 -1
  41. package/dist/collection/classes/tools/eraser-tool.class.js +17 -14
  42. package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
  43. package/dist/collection/classes/tools/image-tool.class.js +1 -1
  44. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  45. package/dist/collection/classes/tools/selection-tool.class.js +5 -6
  46. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  47. package/dist/collection/classes/viewport.class.js +20 -12
  48. package/dist/collection/classes/viewport.class.js.map +1 -1
  49. package/dist/collection/collection-manifest.json +1 -1
  50. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +6 -6
  51. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  52. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +43 -37
  53. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  54. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +1 -1
  55. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +1 -1
  56. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +1 -1
  57. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +1 -1
  58. package/dist/collection/configs/default-engine-state.js +2 -2
  59. package/dist/collection/configs/default-engine-state.js.map +1 -1
  60. package/dist/collection/helpers/html.helper.js +7 -0
  61. package/dist/collection/helpers/html.helper.js.map +1 -0
  62. package/dist/collection/helpers/object.helper.js +6 -2
  63. package/dist/collection/helpers/object.helper.js.map +1 -1
  64. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  65. package/dist/collection/interfaces/object.interface.js.map +1 -1
  66. package/dist/components/index.js +3 -3
  67. package/dist/components/kritzel-brush-style.js +1 -1
  68. package/dist/components/kritzel-color-palette.js +1 -1
  69. package/dist/components/kritzel-color.js +1 -1
  70. package/dist/components/kritzel-context-menu.js +1 -1
  71. package/dist/components/kritzel-control-brush-config.js +1 -1
  72. package/dist/components/kritzel-control-text-config.js +1 -1
  73. package/dist/components/kritzel-controls.js +1 -1
  74. package/dist/components/kritzel-cursor-trail.js +1 -1
  75. package/dist/components/kritzel-dropdown.js +1 -1
  76. package/dist/components/kritzel-editor.js +23 -23
  77. package/dist/components/kritzel-editor.js.map +1 -1
  78. package/dist/components/kritzel-engine.js +1 -1
  79. package/dist/components/kritzel-font-family.js +1 -1
  80. package/dist/components/kritzel-font-size.js +1 -1
  81. package/dist/components/kritzel-font.js +1 -1
  82. package/dist/components/kritzel-icon.js +1 -1
  83. package/dist/components/kritzel-stroke-size.js +1 -1
  84. package/dist/components/kritzel-tooltip.js +1 -1
  85. package/dist/components/kritzel-utility-panel.js +1 -1
  86. package/dist/components/{p-CqPrOhzi.js → p-BOj_wqdw.js} +4 -4
  87. package/dist/components/{p-CqPrOhzi.js.map → p-BOj_wqdw.js.map} +1 -1
  88. package/dist/components/{p-CEYRFk55.js → p-BY8BWGge.js} +4 -4
  89. package/dist/components/{p-CEYRFk55.js.map → p-BY8BWGge.js.map} +1 -1
  90. package/dist/components/{p-D-Rf05Ov.js → p-Bn5P7YQn.js} +5 -5
  91. package/dist/components/{p-D-Rf05Ov.js.map → p-Bn5P7YQn.js.map} +1 -1
  92. package/dist/components/{p-CIb4IA9u.js → p-C9usqwb5.js} +5 -5
  93. package/dist/components/{p-CIb4IA9u.js.map → p-C9usqwb5.js.map} +1 -1
  94. package/dist/components/{p-gDLg_PJJ.js → p-CF8ziFc4.js} +4 -4
  95. package/dist/components/{p-gDLg_PJJ.js.map → p-CF8ziFc4.js.map} +1 -1
  96. package/dist/components/{p-CDpq9L_H.js → p-CiT5gBDh.js} +3 -3
  97. package/dist/components/{p-CDpq9L_H.js.map → p-CiT5gBDh.js.map} +1 -1
  98. package/dist/components/{p-D1oFXBAp.js → p-Cn_kantt.js} +5 -5
  99. package/dist/components/{p-D1oFXBAp.js.map → p-Cn_kantt.js.map} +1 -1
  100. package/dist/components/{p-DC3j4P1n.js → p-Cnc43o9b.js} +227 -41
  101. package/dist/components/p-Cnc43o9b.js.map +1 -0
  102. package/dist/components/{p-BAMl2Ww6.js → p-CneTqrgt.js} +18 -18
  103. package/dist/components/{p-BAMl2Ww6.js.map → p-CneTqrgt.js.map} +1 -1
  104. package/dist/components/{p-B2wWYPH8.js → p-CtiROna-.js} +3 -3
  105. package/dist/components/{p-B2wWYPH8.js.map → p-CtiROna-.js.map} +1 -1
  106. package/dist/components/{p-D0L3GqSK.js → p-Cw2ATHMj.js} +3 -3
  107. package/dist/components/{p-D0L3GqSK.js.map → p-Cw2ATHMj.js.map} +1 -1
  108. package/dist/components/{p-CxmkJbeV.js → p-D0sLslUq.js} +3 -3
  109. package/dist/components/{p-CxmkJbeV.js.map → p-D0sLslUq.js.map} +1 -1
  110. package/dist/components/{p-dCaxwGmu.js → p-DJN0U8pI.js} +10 -4
  111. package/dist/components/p-DJN0U8pI.js.map +1 -0
  112. package/dist/components/{p-q-xqpmae.js → p-DJaVT2yR.js} +255 -178
  113. package/dist/components/p-DJaVT2yR.js.map +1 -0
  114. package/dist/components/{p-C3E9PtD3.js → p-DMAzUKo6.js} +10 -10
  115. package/dist/components/{p-C3E9PtD3.js.map → p-DMAzUKo6.js.map} +1 -1
  116. package/dist/components/{p-DbPbyRLO.js → p-DSLY0tr5.js} +5 -5
  117. package/dist/components/{p-DbPbyRLO.js.map → p-DSLY0tr5.js.map} +1 -1
  118. package/dist/components/{p--2FkikYE.js → p-DpiklJU9.js} +3 -3
  119. package/dist/components/{p--2FkikYE.js.map → p-DpiklJU9.js.map} +1 -1
  120. package/dist/components/{p--tElassI.js → p-NZJPrwJV.js} +3 -3
  121. package/dist/components/{p--tElassI.js.map → p-NZJPrwJV.js.map} +1 -1
  122. package/dist/components/{p-BSS4UREq.js → p-ubNAWsY_.js} +9 -9
  123. package/dist/components/{p-BSS4UREq.js.map → p-ubNAWsY_.js.map} +1 -1
  124. package/dist/esm/{index-BPFXWTBp.js → index-BGl8znzE.js} +10 -4
  125. package/dist/esm/index-BGl8znzE.js.map +1 -0
  126. package/dist/esm/{index-DsUDklEm.js → index-DO2IiM_o.js} +348 -141
  127. package/dist/esm/index-DO2IiM_o.js.map +1 -0
  128. package/dist/esm/index.js +1 -1
  129. package/dist/esm/kritzel-brush-style_18.entry.js +137 -81
  130. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  131. package/dist/esm/loader.js +2 -2
  132. package/dist/esm/stencil.js +3 -3
  133. package/dist/esm/stencil.js.map +1 -1
  134. package/dist/stencil/index.esm.js +1 -1
  135. package/dist/stencil/p-BGl8znzE.js +3 -0
  136. package/dist/stencil/p-BGl8znzE.js.map +1 -0
  137. package/dist/stencil/p-DO2IiM_o.js +2 -0
  138. package/dist/stencil/p-DO2IiM_o.js.map +1 -0
  139. package/dist/stencil/p-c64f6589.entry.js +2 -0
  140. package/dist/stencil/p-c64f6589.entry.js.map +1 -0
  141. package/dist/stencil/stencil.esm.js +1 -1
  142. package/dist/stencil/stencil.esm.js.map +1 -1
  143. package/dist/types/classes/handlers/hover.handler.d.ts +6 -0
  144. package/dist/types/classes/handlers/selection.handler.d.ts +1 -1
  145. package/dist/types/classes/history.class.d.ts +1 -0
  146. package/dist/types/classes/objects/base-object.class.d.ts +12 -6
  147. package/dist/types/classes/objects/custom-element.class.d.ts +26 -0
  148. package/dist/types/classes/objects/image.class.d.ts +1 -1
  149. package/dist/types/classes/objects/path.class.d.ts +9 -2
  150. package/dist/types/classes/objects/text.class.d.ts +1 -1
  151. package/dist/types/classes/store.class.d.ts +5 -0
  152. package/dist/types/classes/tools/selection-tool.class.d.ts +2 -0
  153. package/dist/types/components.d.ts +4 -4
  154. package/dist/types/helpers/html.helper.d.ts +3 -0
  155. package/dist/types/interfaces/engine-state.interface.d.ts +2 -2
  156. package/dist/types/interfaces/object.interface.d.ts +12 -4
  157. package/package.json +5 -5
  158. package/dist/cjs/index-BcrLbdO1.js.map +0 -1
  159. package/dist/cjs/index-BjLSiQIM.js.map +0 -1
  160. package/dist/components/p-DC3j4P1n.js.map +0 -1
  161. package/dist/components/p-dCaxwGmu.js.map +0 -1
  162. package/dist/components/p-q-xqpmae.js.map +0 -1
  163. package/dist/esm/index-BPFXWTBp.js.map +0 -1
  164. package/dist/esm/index-DsUDklEm.js.map +0 -1
  165. package/dist/stencil/p-3797c300.entry.js +0 -2
  166. package/dist/stencil/p-3797c300.entry.js.map +0 -1
  167. package/dist/stencil/p-BPFXWTBp.js +0 -3
  168. package/dist/stencil/p-BPFXWTBp.js.map +0 -1
  169. package/dist/stencil/p-DsUDklEm.js +0 -2
  170. package/dist/stencil/p-DsUDklEm.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-dCaxwGmu.js';
1
+ import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-DJN0U8pI.js';
2
2
  import { K as KritzelMouseButton } from './p-D8W6LE-c.js';
3
- import { d as KritzelBaseObject, e as KritzelBaseCommand, f as KritzelBaseTool, g as KritzelEventHelper, c as KritzelTextTool, b as KritzelBrushTool, K as KritzelText, a as KritzelPath, O as ObjectHelper, A as AddObjectCommand, h as KritzelToolRegistry, i as KritzelKeyboardHelper } from './p-DC3j4P1n.js';
4
- import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-CEYRFk55.js';
5
- import { d as defineCustomElement$2 } from './p-D0L3GqSK.js';
6
- import { d as defineCustomElement$1 } from './p-B2wWYPH8.js';
3
+ import { d as KritzelBaseObject, e as KritzelBaseCommand, f as KritzelBaseTool, g as KritzelEventHelper, c as KritzelTextTool, b as KritzelBrushTool, K as KritzelText, a as KritzelPath, O as ObjectHelper, A as AddObjectCommand, h as KritzelToolRegistry, i as KritzelKeyboardHelper } from './p-Cnc43o9b.js';
4
+ import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-BY8BWGge.js';
5
+ import { d as defineCustomElement$2 } from './p-Cw2ATHMj.js';
6
+ import { d as defineCustomElement$1 } from './p-CtiROna-.js';
7
7
 
8
8
  class KritzelImage extends KritzelBaseObject {
9
9
  constructor(config) {
@@ -13,7 +13,7 @@ class KritzelImage extends KritzelBaseObject {
13
13
  this.maxWidth = 300;
14
14
  this.maxHeight = 300;
15
15
  this.maxCompressionSize = 300;
16
- this.debugInfoVisible = true;
16
+ this.isDebugInfoVisible = true;
17
17
  this.src = (config === null || config === void 0 ? void 0 : config.src) || '';
18
18
  this.x = (config === null || config === void 0 ? void 0 : config.x) || 0;
19
19
  this.y = (config === null || config === void 0 ? void 0 : config.y) || 0;
@@ -70,6 +70,57 @@ class BatchCommand extends KritzelBaseCommand {
70
70
  }
71
71
  }
72
72
 
73
+ class KritzelCustomElement extends KritzelBaseObject {
74
+ constructor(config) {
75
+ super();
76
+ this.__class__ = 'KritzelCustomElement';
77
+ this.isInteractive = true;
78
+ if (config) {
79
+ this.translateX = config.translateX || 0;
80
+ this.translateY = config.translateY || 0;
81
+ this.scale = config.scale || 1;
82
+ this.element = config.element;
83
+ this.height = config.height || 0;
84
+ this.width = config.width || 0;
85
+ }
86
+ }
87
+ static create(store, config) {
88
+ const object = new KritzelCustomElement(config);
89
+ object._store = store;
90
+ object.id = object.generateId();
91
+ return object;
92
+ }
93
+ mount(element) {
94
+ if (this.isMounted) {
95
+ return;
96
+ }
97
+ this.elementRef = element;
98
+ this.isMounted = true;
99
+ this.elementRef.appendChild(this.element);
100
+ }
101
+ resize(x, y, width, height) {
102
+ if (width <= 1 || height <= 1) {
103
+ return;
104
+ }
105
+ this.width = width;
106
+ this.height = height;
107
+ this.translateX = x;
108
+ this.translateY = y;
109
+ if (this.element) {
110
+ this.element.style.width = `${width}px`;
111
+ this.element.style.height = `${height}px`;
112
+ }
113
+ }
114
+ copy() {
115
+ const copiedObject = Object.create(Object.getPrototypeOf(this));
116
+ Object.assign(copiedObject, this);
117
+ copiedObject.id = this.generateId();
118
+ copiedObject.isMounted = false;
119
+ copiedObject.element = this.element.cloneNode(true);
120
+ return copiedObject;
121
+ }
122
+ }
123
+
73
124
  class RemoveObjectCommand extends KritzelBaseCommand {
74
125
  constructor(store, initiator, object) {
75
126
  super(store, initiator);
@@ -77,9 +128,11 @@ class RemoveObjectCommand extends KritzelBaseCommand {
77
128
  }
78
129
  execute() {
79
130
  this._store.state.objectsOctree.remove(object => object.id === this.object.id);
131
+ this._store.state.objectsOctree.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
80
132
  }
81
133
  undo() {
82
134
  this._store.state.objectsOctree.insert(this.object);
135
+ this._store.state.objectsOctree.filter(object => object instanceof KritzelCustomElement).forEach(object => object.remount());
83
136
  }
84
137
  }
85
138
 
@@ -103,28 +156,33 @@ class KritzelEraserTool extends KritzelBaseTool {
103
156
  }
104
157
  }
105
158
  handlePointerMove(event) {
106
- var _a, _b;
159
+ var _a;
107
160
  if (event.pointerType === 'mouse') {
108
161
  if (this._store.state.isErasing) {
109
- const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
110
- if (!shadowRoot)
162
+ const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
163
+ if (selectedObjects.length === 0)
111
164
  return;
112
- const selectedObject = this._store.getObjectFromPointerEvent(event, '.object');
113
- if (!selectedObject)
114
- return;
115
- selectedObject.markedForRemoval = true;
165
+ const x = this._store.state.pointerX;
166
+ const y = this._store.state.pointerY;
167
+ selectedObjects.forEach(selectedObject => {
168
+ selectedObject.markedForRemoval = selectedObject.hitTest(x, y);
169
+ });
116
170
  this._store.rerender();
117
171
  }
118
172
  }
119
173
  if (event.pointerType === 'touch') {
120
174
  if (this._store.state.pointers.size === 1 && this._store.state.isErasing) {
121
- const shadowRoot = (_b = this._store.state.host) === null || _b === void 0 ? void 0 : _b.shadowRoot;
175
+ const shadowRoot = (_a = this._store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
122
176
  if (!shadowRoot)
123
177
  return;
124
- const selectedObject = this._store.getObjectFromPointerEvent(event, '.object');
125
- if (!selectedObject)
178
+ const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
179
+ if (selectedObjects.length === 0)
126
180
  return;
127
- selectedObject.markedForRemoval = true;
181
+ const x = this._store.state.pointerX;
182
+ const y = this._store.state.pointerY;
183
+ selectedObjects.forEach(selectedObject => {
184
+ selectedObject.markedForRemoval = selectedObject.hitTest(x, y);
185
+ });
128
186
  this._store.rerender();
129
187
  }
130
188
  }
@@ -132,9 +190,7 @@ class KritzelEraserTool extends KritzelBaseTool {
132
190
  handlePointerUp(event) {
133
191
  if (event.pointerType === 'mouse') {
134
192
  if (this._store.state.isErasing) {
135
- const removeCommands = this._store.allObjects
136
- .filter(object => object.markedForRemoval)
137
- .map(object => {
193
+ const removeCommands = this._store.allObjects.filter(object => object.markedForRemoval).map(object => {
138
194
  object.markedForRemoval = false;
139
195
  return new RemoveObjectCommand(this._store, this, object);
140
196
  });
@@ -217,7 +273,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
217
273
  var _a, _b;
218
274
  if (event.pointerType === 'mouse') {
219
275
  if (KritzelEventHelper.isLeftClick(event)) {
220
- if (((_a = this._store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.selected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
276
+ if (((_a = this._store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.isSelected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
221
277
  const clientX = event.clientX - this._store.offsetX;
222
278
  const clientY = event.clientY - this._store.offsetY;
223
279
  this._store.state.isDragging = true;
@@ -231,7 +287,7 @@ class KritzelMoveHandler extends KritzelBaseHandler {
231
287
  if (event.pointerType === 'touch') {
232
288
  const activePointers = Array.from(this._store.state.pointers.values());
233
289
  if (this._store.state.pointers.size === 1) {
234
- if (((_b = this._store.state.selectionGroup) === null || _b === void 0 ? void 0 : _b.selected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
290
+ if (((_b = this._store.state.selectionGroup) === null || _b === void 0 ? void 0 : _b.isSelected) && !this._store.state.isResizeHandleSelected && !this._store.state.isRotationHandleSelected) {
235
291
  const x = Math.round(activePointers[0].clientX - this._store.offsetX);
236
292
  const y = Math.round(activePointers[0].clientY - this._store.offsetY);
237
293
  this.dragStartX = x;
@@ -583,59 +639,6 @@ class KritzelRotationHandler extends KritzelBaseHandler {
583
639
  }
584
640
  }
585
641
 
586
- class KritzelGeometryHelper {
587
- static doPolygonsIntersect(polygon1, polygon2) {
588
- // 1. Convert polygons to array of points for easier processing
589
- const points1 = [polygon1.bottomLeft, polygon1.bottomRight, polygon1.topRight, polygon1.topLeft];
590
- const points2 = [polygon2.bottomLeft, polygon2.bottomRight, polygon2.topRight, polygon2.topLeft];
591
- // 2. Check if any point of polygon1 is inside polygon2
592
- for (const point of points1) {
593
- if (this.isPointInPolygon(point, points2)) {
594
- return true;
595
- }
596
- }
597
- // 3. Check if any point of polygon2 is inside polygon1
598
- for (const point of points2) {
599
- if (this.isPointInPolygon(point, points1)) {
600
- return true;
601
- }
602
- }
603
- // 4. Check for edge intersections (more complex)
604
- for (let i = 0; i < points1.length; i++) {
605
- const p1a = points1[i];
606
- const p1b = points1[(i + 1) % points1.length]; // Wrap around to the first point
607
- for (let j = 0; j < points2.length; j++) {
608
- const p2a = points2[j];
609
- const p2b = points2[(j + 1) % points2.length];
610
- if (this.intersectLines(p1a, p1b, p2a, p2b)) {
611
- return true;
612
- }
613
- }
614
- }
615
- return false; // No intersection found
616
- }
617
- static isPointInPolygon(point, polygon) {
618
- let inside = false;
619
- for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
620
- const xi = polygon[i].x, yi = polygon[i].y;
621
- const xj = polygon[j].x, yj = polygon[j].y;
622
- const intersect = yi > point.y !== yj > point.y && point.x < ((xj - xi) * (point.y - yi)) / (yj - yi) + xi;
623
- if (intersect)
624
- inside = !inside;
625
- }
626
- return inside;
627
- }
628
- static intersectLines(p1a, p1b, p2a, p2b) {
629
- const det = (p1b.x - p1a.x) * (p2b.y - p2a.y) - (p1b.y - p1a.y) * (p2b.x - p2a.x);
630
- if (det === 0) {
631
- return false; // Lines are parallel
632
- }
633
- const t = ((p2a.x - p1a.x) * (p2b.y - p2a.y) - (p2a.y - p1a.y) * (p2b.x - p2a.x)) / det;
634
- const u = -((p1a.x - p2a.x) * (p1b.y - p1a.y) - (p1a.y - p2a.y) * (p1b.x - p1a.x)) / det;
635
- return t >= 0 && t <= 1 && u >= 0 && u <= 1;
636
- }
637
- }
638
-
639
642
  class KrtizelSelectionBox extends KritzelBaseObject {
640
643
  constructor() {
641
644
  super(...arguments);
@@ -648,8 +651,8 @@ class KrtizelSelectionBox extends KritzelBaseObject {
648
651
  object.id = object.generateId();
649
652
  object.scale = store.state.scale;
650
653
  object.zIndex = 99999;
651
- object.backgroundColor = 'var(--kritzel-selection-box-background-color, rgba(14, 17, 17, 0.2))';
652
- object.borderColor = 'var(--kritzel-selection-box-border-color, rgba(14, 17, 17, 0.5))';
654
+ object.backgroundColor = 'var(--kritzel-selection-box-background-color, rgba(0, 122, 255, 0.2))';
655
+ object.borderColor = 'var(--kritzel-selection-box-border-color, rgba(0, 122, 255, 0.5))';
653
656
  object.borderWidth = 2;
654
657
  object.height = 0;
655
658
  object.width = 0;
@@ -726,8 +729,10 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
726
729
  if (event.pointerType === 'mouse') {
727
730
  if (KritzelEventHelper.isLeftClick(event) && this._store.state.isSelecting) {
728
731
  if (this.isSelectionClick) {
729
- this.updateMouseSelection(event);
730
- this.addSelectedObjectAtIndexToSelectionGroup(0);
732
+ const x = this._store.state.pointerX;
733
+ const y = this._store.state.pointerY;
734
+ const selectedObject = this._store.getObjectsFromPointerEvent(event, '.object').find(obj => obj.hitTest(x, y));
735
+ this.addObjectToSelectionGroup(selectedObject);
731
736
  this.removeSelectionBox();
732
737
  }
733
738
  if (this.isSelectionDrag) {
@@ -741,8 +746,10 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
741
746
  clearTimeout(this.touchStartTimeout);
742
747
  if (this._store.state.isSelecting) {
743
748
  if (this.isSelectionClick) {
744
- this.updateTouchSelection();
745
- this.addSelectedObjectAtIndexToSelectionGroup(0);
749
+ const x = this._store.state.pointerX;
750
+ const y = this._store.state.pointerY;
751
+ const selectedObject = this._store.getObjectsFromPointerEvent(event, '.object').find(obj => obj.hitTest(x, y));
752
+ this.addObjectToSelectionGroup(selectedObject);
746
753
  this.removeSelectionBox();
747
754
  }
748
755
  if (this.isSelectionDrag) {
@@ -836,23 +843,16 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
836
843
  updateSelectedObjects() {
837
844
  this._store.allObjects
838
845
  .filter(o => !(o instanceof KrtizelSelectionBox))
839
- .forEach(object => {
840
- const objectPolygon = object.rotatedPolygon;
841
- const selectionBoxPolygon = this._store.state.selectionBox.rotatedPolygon;
842
- object.selected = KritzelGeometryHelper.doPolygonsIntersect(objectPolygon, selectionBoxPolygon);
843
- });
846
+ .forEach(object => (object.isSelected = object.hitTestPolygon(this._store.state.selectionBox.rotatedPolygon)));
844
847
  }
845
- addSelectedObjectAtIndexToSelectionGroup(index) {
846
- const selectedObjects = this._store.selectedObjects.sort((a, b) => b.zIndex - a.zIndex);
847
- const selectedObject = selectedObjects[index];
848
- if (!selectedObject) {
848
+ addObjectToSelectionGroup(object) {
849
+ if (!object) {
849
850
  return;
850
851
  }
851
- selectedObjects.forEach(o => (o.selected = false));
852
852
  this._store.state.selectionGroup = KritzelSelectionGroup.create(this._store);
853
- this._store.state.selectionGroup.addOrRemove(selectedObject);
854
- this._store.state.selectionGroup.selected = true;
855
- this._store.state.selectionGroup.rotation = this._store.state.selectionGroup.objects[0].rotation;
853
+ this._store.state.selectionGroup.addOrRemove(object);
854
+ this._store.state.selectionGroup.isSelected = true;
855
+ this._store.state.selectionGroup.rotation = object.rotation;
856
856
  this._store.history.executeCommand(new AddSelectionGroupCommand(this._store, this, this._store.state.selectionGroup));
857
857
  }
858
858
  addSelectedObjectsToSelectionGroup() {
@@ -862,10 +862,10 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
862
862
  }
863
863
  this._store.state.selectionGroup = KritzelSelectionGroup.create(this._store);
864
864
  selectedObjects.forEach(o => {
865
- o.selected = false;
865
+ o.isSelected = false;
866
866
  this._store.state.selectionGroup.addOrRemove(o);
867
867
  });
868
- this._store.state.selectionGroup.selected = true;
868
+ this._store.state.selectionGroup.isSelected = true;
869
869
  if (this._store.state.selectionGroup.length === 1) {
870
870
  this._store.state.selectionGroup.rotation = this._store.state.selectionGroup.objects[0].rotation;
871
871
  }
@@ -873,11 +873,31 @@ class KritzelSelectionHandler extends KritzelBaseHandler {
873
873
  }
874
874
  }
875
875
 
876
+ class KritzelHoverHandler extends KritzelBaseHandler {
877
+ constructor(store) {
878
+ super(store);
879
+ }
880
+ handlePointerMove(event) {
881
+ if (event.pointerType === 'mouse') {
882
+ const hoveredObject = this._store.getObjectFromPointerEvent(event, '.object');
883
+ if (!hoveredObject)
884
+ return;
885
+ const x = this._store.state.pointerX;
886
+ const y = this._store.state.pointerY;
887
+ hoveredObject.isHovered = hoveredObject.hitTest(x, y);
888
+ if (hoveredObject.isHovered) {
889
+ console.log(hoveredObject.id);
890
+ }
891
+ }
892
+ }
893
+ }
894
+
876
895
  class KritzelSelectionTool extends KritzelBaseTool {
877
896
  constructor(store) {
878
897
  super(store);
879
898
  this.selectionHandler = new KritzelSelectionHandler(this._store);
880
899
  this.moveHandler = new KritzelMoveHandler(this._store);
900
+ this.hoverHandler = new KritzelHoverHandler(this._store);
881
901
  this.resizeHandler = new KritzelResizeHandler(this._store);
882
902
  this.rotationHandler = new KritzelRotationHandler(this._store);
883
903
  }
@@ -898,12 +918,8 @@ class KritzelSelectionTool extends KritzelBaseTool {
898
918
  !this._store.state.isRotationHandleSelected) {
899
919
  this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));
900
920
  }
901
- if (selectedObject && selectedObject.selected && selectedObject.objects.length === 1) {
902
- setTimeout(() => {
903
- if (this._store.state.isDragging === false && this._store.state.isResizing === false && this._store.state.isRotating === false) {
904
- selectedObject.objects[0].onSelectedClick();
905
- }
906
- }, 100);
921
+ if (selectedObject && selectedObject.isSelected === false && (selectedObject === null || selectedObject === void 0 ? void 0 : selectedObject.objects.length) === 1 && selectedObject.objects[0].isInteractive) {
922
+ return;
907
923
  }
908
924
  }
909
925
  this.moveHandler.handlePointerDown(event);
@@ -944,6 +960,7 @@ class KritzelSelectionTool extends KritzelBaseTool {
944
960
  }
945
961
  if (event.pointerType === 'mouse') {
946
962
  this.moveHandler.handlePointerMove(event);
963
+ this.hoverHandler.handlePointerMove(event);
947
964
  this.selectionHandler.handlePointerMove(event);
948
965
  this.resizeHandler.handlePointerMove(event);
949
966
  this.rotationHandler.handlePointerMove(event);
@@ -1040,6 +1057,9 @@ class KritzelReviver {
1040
1057
  case 'KritzelImage':
1041
1058
  revivedObj = KritzelImage.create(this._store).revive(obj);
1042
1059
  break;
1060
+ case 'KritzelCustomElement':
1061
+ revivedObj = KritzelCustomElement.create(this._store).revive(obj);
1062
+ break;
1043
1063
  case 'KritzelSelectionGroup':
1044
1064
  revivedObj = KritzelSelectionGroup.create(this._store).revive(obj);
1045
1065
  break;
@@ -1105,7 +1125,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1105
1125
  this.refreshObjectDimensions();
1106
1126
  }
1107
1127
  deselectAllChildren() {
1108
- this.objects.forEach(obj => (obj.selected = false));
1128
+ this.objects.forEach(obj => (obj.isSelected = false));
1109
1129
  }
1110
1130
  updatePosition(x, y) {
1111
1131
  this.objects.forEach(obj => {
@@ -1134,6 +1154,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1134
1154
  this.objects.forEach(obj => {
1135
1155
  obj.translateX += deltaX;
1136
1156
  obj.translateY += deltaY;
1157
+ obj.move(startX, startY, endX, endY);
1137
1158
  this._store.state.objectsOctree.update(obj);
1138
1159
  });
1139
1160
  this.unchangedObjects.forEach(obj => {
@@ -1172,7 +1193,7 @@ class KritzelSelectionGroup extends KritzelBaseObject {
1172
1193
  const rotatedY = sin * offsetX + cos * offsetY;
1173
1194
  child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
1174
1195
  child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
1175
- child.rotation = this.objects.length === 1 ? value : value + unchangedChild.rotation;
1196
+ child.rotate(this.objects.length === 1 ? value : value + unchangedChild.rotation);
1176
1197
  this._store.state.objectsOctree.update(child);
1177
1198
  });
1178
1199
  }
@@ -1310,7 +1331,7 @@ class KritzelImageTool extends KritzelBaseTool {
1310
1331
  addImageToStore(image) {
1311
1332
  const selectionGroup = KritzelSelectionGroup.create(this._store);
1312
1333
  selectionGroup.addOrRemove(image);
1313
- selectionGroup.selected = true;
1334
+ selectionGroup.isSelected = true;
1314
1335
  const addImageCommand = new AddObjectCommand(this._store, this, image);
1315
1336
  const addSelectionGroupCommand = new AddSelectionGroupCommand(this._store, this, selectionGroup);
1316
1337
  this._store.history.executeCommand(new BatchCommand(this._store, this, [addImageCommand, addSelectionGroupCommand]));
@@ -1372,21 +1393,27 @@ class KritzelViewport {
1372
1393
  }
1373
1394
  handlePointerMove(event) {
1374
1395
  if (event.pointerType === 'mouse') {
1375
- const adjustedClientX = event.clientX - this._store.offsetX;
1376
- const adjustedClientY = event.clientY - this._store.offsetY;
1377
- this._store.state.cursorX = adjustedClientX;
1378
- this._store.state.cursorY = adjustedClientY;
1396
+ const hostRect = this._store.state.host.getBoundingClientRect();
1397
+ const xRelativeToHost = event.clientX - hostRect.left;
1398
+ const yRelativeToHost = event.clientY - hostRect.top;
1399
+ this._store.state.pointerX = (xRelativeToHost - this._store.state.translateX) / this._store.state.scale;
1400
+ this._store.state.pointerY = (yRelativeToHost - this._store.state.translateY) / this._store.state.scale;
1379
1401
  if (this._store.state.isPanning) {
1380
- this._store.state.translateX -= this._store.state.startX - adjustedClientX;
1381
- this._store.state.translateY -= this._store.state.startY - adjustedClientY;
1382
- this._store.state.startX = adjustedClientX;
1383
- this._store.state.startY = adjustedClientY;
1402
+ this._store.state.translateX -= this._store.state.startX - xRelativeToHost;
1403
+ this._store.state.translateY -= this._store.state.startY - yRelativeToHost;
1404
+ this._store.state.startX = xRelativeToHost;
1405
+ this._store.state.startY = yRelativeToHost;
1384
1406
  this._store.state.hasViewportChanged = true;
1385
1407
  this._store.state.skipContextMenu = true;
1386
1408
  this._store.rerender();
1387
1409
  }
1388
1410
  }
1389
1411
  if (event.pointerType === 'touch') {
1412
+ const hostRect = this._store.state.host.getBoundingClientRect();
1413
+ const xRelativeToHost = event.clientX - hostRect.left;
1414
+ const yRelativeToHost = event.clientY - hostRect.top;
1415
+ this._store.state.pointerX = (xRelativeToHost - this._store.state.translateX) / this._store.state.scale;
1416
+ this._store.state.pointerY = (yRelativeToHost - this._store.state.translateY) / this._store.state.scale;
1390
1417
  const activePointers = Array.from(this._store.state.pointers.values());
1391
1418
  if (activePointers.length === 2) {
1392
1419
  const firstTouchX = activePointers[0].clientX - this._store.offsetX;
@@ -1440,13 +1467,15 @@ class KritzelViewport {
1440
1467
  }
1441
1468
  handleZoom(event) {
1442
1469
  const rect = this._store.state.host.getBoundingClientRect();
1443
- this._store.state.cursorX = event.clientX - rect.left;
1444
- this._store.state.cursorY = event.clientY - rect.top;
1470
+ const xRelativeToHost = event.clientX - rect.left;
1471
+ const yRelativeToHost = event.clientY - rect.top;
1472
+ this._store.state.pointerX = (xRelativeToHost - this._store.state.translateX) / this._store.state.scale;
1473
+ this._store.state.pointerY = (yRelativeToHost - this._store.state.translateY) / this._store.state.scale;
1445
1474
  const delta = event.deltaY > 0 ? -this._store.state.scaleStep * this._store.state.scale : this._store.state.scaleStep * this._store.state.scale;
1446
1475
  const newScale = Math.min(this._store.state.scaleMax, Math.max(this._store.state.scaleMin, this._store.state.scale + delta));
1447
1476
  const scaleRatio = newScale / this._store.state.scale;
1448
- const translateXAdjustment = (this._store.state.cursorX - this._store.state.translateX) * (scaleRatio - 1);
1449
- const translateYAdjustment = (this._store.state.cursorY - this._store.state.translateY) * (scaleRatio - 1);
1477
+ const translateXAdjustment = (xRelativeToHost - this._store.state.translateX) * (scaleRatio - 1);
1478
+ const translateYAdjustment = (yRelativeToHost - this._store.state.translateY) * (scaleRatio - 1);
1450
1479
  this._store.state.scale = newScale;
1451
1480
  this._store.state.translateX -= translateXAdjustment;
1452
1481
  this._store.state.translateY -= translateYAdjustment;
@@ -1544,19 +1573,7 @@ class KritzelHistory {
1544
1573
  }
1545
1574
  executeCommand(command) {
1546
1575
  if (this._store.state.hasViewportChanged) {
1547
- const command = new UpdateViewportCommand(this._store, this, this.previousViewport);
1548
- command.execute();
1549
- this.undoStack.add(command);
1550
- if (this.redoStack.isEmpty() === false) {
1551
- this.redoStack.clear();
1552
- }
1553
- this._store.state.hasViewportChanged = false;
1554
- this.previousViewport = {
1555
- scale: this._store.state.scale,
1556
- scaleStep: this._store.state.scaleStep,
1557
- translateX: this._store.state.translateX,
1558
- translateY: this._store.state.translateY,
1559
- };
1576
+ this.addUpdateViewportCommand();
1560
1577
  }
1561
1578
  command.execute();
1562
1579
  if (this._store.state.debugInfo.logCommands)
@@ -1594,6 +1611,21 @@ class KritzelHistory {
1594
1611
  }
1595
1612
  this._store.rerender();
1596
1613
  }
1614
+ addUpdateViewportCommand() {
1615
+ const command = new UpdateViewportCommand(this._store, this, this.previousViewport);
1616
+ command.execute();
1617
+ this.undoStack.add(command);
1618
+ if (this.redoStack.isEmpty() === false) {
1619
+ this.redoStack.clear();
1620
+ }
1621
+ this._store.state.hasViewportChanged = false;
1622
+ this.previousViewport = {
1623
+ scale: this._store.state.scale,
1624
+ scaleStep: this._store.state.scaleStep,
1625
+ translateX: this._store.state.translateX,
1626
+ translateY: this._store.state.translateY,
1627
+ };
1628
+ }
1597
1629
  }
1598
1630
 
1599
1631
  class KritzelOctree {
@@ -1771,8 +1803,8 @@ const DEFAULT_ENGINE_STATE = {
1771
1803
  logCommands: false,
1772
1804
  },
1773
1805
  host: null,
1774
- cursorX: 0,
1775
- cursorY: 0,
1806
+ pointerX: 0,
1807
+ pointerY: 0,
1776
1808
  scale: 1,
1777
1809
  scaleMax: 1,
1778
1810
  scaleMin: 1,
@@ -1807,7 +1839,7 @@ class KritzelStore {
1807
1839
  return this._state.objectsOctree.allObjects();
1808
1840
  }
1809
1841
  get selectedObjects() {
1810
- return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.selected);
1842
+ return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);
1811
1843
  }
1812
1844
  get offsetX() {
1813
1845
  return this._state.host.getBoundingClientRect().left;
@@ -1898,7 +1930,7 @@ class KritzelStore {
1898
1930
  this.state.copiedObjects = this.state.selectionGroup.copy();
1899
1931
  }
1900
1932
  paste(x, y) {
1901
- this.state.copiedObjects.selected = true;
1933
+ this.state.copiedObjects.isSelected = true;
1902
1934
  const adjustedX = x !== undefined ? x : this.state.copiedObjects.translateX + 25;
1903
1935
  const adjustedY = y !== undefined ? y : this.state.copiedObjects.translateY + 25;
1904
1936
  this.state.copiedObjects.updatePosition(adjustedX, adjustedY);
@@ -1958,10 +1990,10 @@ class KritzelStore {
1958
1990
  }
1959
1991
  const selectionGroup = KritzelSelectionGroup.create(this);
1960
1992
  objects.forEach(obj => {
1961
- obj.selected = false;
1993
+ obj.isSelected = false;
1962
1994
  selectionGroup.addOrRemove(obj);
1963
1995
  });
1964
- selectionGroup.selected = true;
1996
+ selectionGroup.isSelected = true;
1965
1997
  this.state.selectionGroup = selectionGroup;
1966
1998
  if (objects.length === 1) {
1967
1999
  selectionGroup.rotation = selectionGroup.objects[0].rotation;
@@ -1982,10 +2014,10 @@ class KritzelStore {
1982
2014
  if (objectsInViewport.length > 0) {
1983
2015
  const selectionGroup = KritzelSelectionGroup.create(this);
1984
2016
  objectsInViewport.forEach(obj => {
1985
- obj.selected = false;
2017
+ obj.isSelected = false;
1986
2018
  selectionGroup.addOrRemove(obj);
1987
2019
  });
1988
- selectionGroup.selected = true;
2020
+ selectionGroup.isSelected = true;
1989
2021
  this.state.isSelecting = false;
1990
2022
  if (objectsInViewport.length === 1) {
1991
2023
  selectionGroup.rotation = selectionGroup.objects[0].rotation;
@@ -2026,6 +2058,45 @@ class KritzelStore {
2026
2058
  }
2027
2059
  return null;
2028
2060
  }
2061
+ getObjectsFromPointerEvent(event, selector = '.object') {
2062
+ var _a;
2063
+ const shadowRoot = (_a = this.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
2064
+ if (!shadowRoot)
2065
+ return [];
2066
+ const clientX = event.clientX;
2067
+ const clientY = event.clientY;
2068
+ const elementsAtPoint = shadowRoot.elementsFromPoint(clientX, clientY);
2069
+ if (!elementsAtPoint || elementsAtPoint.length === 0)
2070
+ return [];
2071
+ const objectIds = new Set();
2072
+ elementsAtPoint.forEach(element => {
2073
+ const selectedObject = element.closest(selector);
2074
+ if (selectedObject && selectedObject.id) {
2075
+ objectIds.add(selectedObject.id);
2076
+ }
2077
+ });
2078
+ if (objectIds.size > 0) {
2079
+ return this.allObjects.filter(object => objectIds.has(object.id)).sort((a, b) => b.zIndex - a.zIndex);
2080
+ }
2081
+ return [];
2082
+ }
2083
+ getCanvasPoint(event) {
2084
+ if (!this.state.host) {
2085
+ return { x: 0, y: 0 };
2086
+ }
2087
+ // Get the position of the kritzel-engine host element relative to the viewport
2088
+ const hostRect = this.state.host.getBoundingClientRect();
2089
+ // 1. Make the pointer coordinates relative to the host element
2090
+ const xRelativeToHost = event.clientX - hostRect.left;
2091
+ const yRelativeToHost = event.clientY - hostRect.top;
2092
+ // 2. Reverse the translation applied to the #origin div
2093
+ const xWithoutTranslate = xRelativeToHost - this.state.translateX;
2094
+ const yWithoutTranslate = yRelativeToHost - this.state.translateY;
2095
+ // 3. Reverse the scaling to get the final world coordinates
2096
+ const worldX = xWithoutTranslate / this.state.scale;
2097
+ const worldY = yWithoutTranslate / this.state.scale;
2098
+ return { x: worldX, y: worldY };
2099
+ }
2029
2100
  }
2030
2101
 
2031
2102
  class KritzelKeyHandler extends KritzelBaseHandler {
@@ -2124,7 +2195,7 @@ class KritzelContextMenuHandler extends KritzelBaseHandler {
2124
2195
  if (selectedObject && !(selectedObject instanceof KritzelSelectionGroup)) {
2125
2196
  this._store.state.selectionGroup = KritzelSelectionGroup.create(this._store);
2126
2197
  this._store.state.selectionGroup.addOrRemove(selectedObject);
2127
- this._store.state.selectionGroup.selected = true;
2198
+ this._store.state.selectionGroup.isSelected = true;
2128
2199
  this._store.state.selectionGroup.rotation = selectedObject.rotation;
2129
2200
  this._store.state.isSelecting = false;
2130
2201
  this._store.history.executeCommand(new AddSelectionGroupCommand(this._store, this, this._store.state.selectionGroup));
@@ -2441,15 +2512,15 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2441
2512
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
2442
2513
  const baseHandleSize = parseFloat(baseHandleSizePx);
2443
2514
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
2444
- return (h(Host, { key: 'd484b59ebdea9e7b9e8e086c39e7b3a339fb034d' }, h("div", { key: 'ea68c0a3c0020110b5aca6f3a7bdfab223b64744', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '4a7c60073190f2123dbb6bda4e206a1b488db7ac' }, "TranslateX: ", (_a = this.store.state) === null || _a === void 0 ? void 0 :
2445
- _a.translateX), h("div", { key: 'c4fe558accb441fb06ff048f41b07b520ffde505' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
2446
- _b.translateY), h("div", { key: '00d5fd0b0ec3c79f9ab1dc9a1032fa2f70c7c246' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
2447
- _c.viewportWidth), h("div", { key: '87c8f03bfcc6de031e3d9d74576a6028bfc155bc' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
2448
- _d.viewportHeight), h("div", { key: 'f4e82ddee133818b6ad60b5b6c5e9e721fce4968' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '4f9018ce1184b676248614d4edfdeffd49ac7ce2' }, "Scale: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
2449
- _e.scale), h("div", { key: 'cc5d72952bc4b80a42d26ca1b1e56bcab96ab76c' }, "ActiveTool: ", (_g = (_f = this.store.state) === null || _f === void 0 ? void 0 : _f.activeTool) === null || _g === void 0 ? void 0 :
2450
- _g.name), h("div", { key: '387071b0ea3f2064d1ea0e0495aa92de8072a900' }, "HasViewportChanged: ", ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.hasViewportChanged) ? 'true' : 'false'), h("div", { key: 'a386b4fb631860b94f710cb601b1809283ab9664' }, "IsEnabled: ", ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.isEnabled) ? 'true' : 'false'), h("div", { key: 'a67ad19caa6a6cafa8b19dace26c25d60347090a' }, "IsScaling: ", ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.isScaling) ? 'true' : 'false'), h("div", { key: '9fe3152ba0a3e936b6c6551673de3a67bd5de0d1' }, "IsPanning: ", ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.isPanning) ? 'true' : 'false'), h("div", { key: '8103da258c7bdede340c6c64188a2f9657af16c3' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: '10b315366f6cf8eb2f27a20083094c9e483c2fe3' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: 'b65926aca01fe6b41f70e8d7484674f568e9945a' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '5e95a4268ab30bf06918e83aa5f7e96b5ee1dbe2' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '3922b7fcb2b74ec28f515db8254f05b454ef6b12' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '13c162ec56f0990948bac4569c28a6076582c7ea' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: 'f909cbc959961e47dbff28e5c620175dc04f6873' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: '505122e286976b8fa9e9fac5b131bcecb359eaae' }, "CursorX: ", (_m = this.store.state) === null || _m === void 0 ? void 0 :
2451
- _m.cursorX), h("div", { key: '116217379cf67a0a268e97912ec44d52a98c434b' }, "CursorY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
2452
- _o.cursorY)), h("div", { key: 'b0bcbb90404d0cbc1281b932bd13e67df612d58d', class: "origin", style: {
2515
+ return (h(Host, { key: 'a8e6c284c98509ddd158686887d656d3907d40a2' }, h("div", { key: '3935b658e8859f746a5faef0bb91a527b68fcd3e', class: "debug-panel", style: { display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '12c190c7ea99ac69310b27e719e7df8392b2b46e' }, "TranslateX: ", (_a = this.store.state) === null || _a === void 0 ? void 0 :
2516
+ _a.translateX), h("div", { key: '4c98deccc2a029dab06ed76e5af426f4a05c7b66' }, "TranslateY: ", (_b = this.store.state) === null || _b === void 0 ? void 0 :
2517
+ _b.translateY), h("div", { key: '1330191a39c7795f17a6adcc4fbd05e2d6a24d43' }, "ViewportWidth: ", (_c = this.store.state) === null || _c === void 0 ? void 0 :
2518
+ _c.viewportWidth), h("div", { key: '1ee59427037357ee6bf746a094285426eb0e6a58' }, "ViewportHeight: ", (_d = this.store.state) === null || _d === void 0 ? void 0 :
2519
+ _d.viewportHeight), h("div", { key: '1e68312e8516f25dcff34e9f9f70b90f426b8711' }, "ObjectsInViewport. ", this.store.objects.length), h("div", { key: '1d7cea9e21d9b744d8eaac29286528829143b4fa' }, "Scale: ", (_e = this.store.state) === null || _e === void 0 ? void 0 :
2520
+ _e.scale), h("div", { key: '0b60168fbd55aefa3714067bace80f167b8bcac0' }, "ActiveTool: ", (_g = (_f = this.store.state) === null || _f === void 0 ? void 0 : _f.activeTool) === null || _g === void 0 ? void 0 :
2521
+ _g.name), h("div", { key: '109752df6a77633d89929f325d296f96d27d7aa9' }, "HasViewportChanged: ", ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.hasViewportChanged) ? 'true' : 'false'), h("div", { key: 'b35466caf465b490c5d448d694353186ff902f09' }, "IsEnabled: ", ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.isEnabled) ? 'true' : 'false'), h("div", { key: '5df20e47f3bf234f04eea001b0a0abaf57946498' }, "IsScaling: ", ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.isScaling) ? 'true' : 'false'), h("div", { key: '9d1ec8b8268488821a968e109fa279393977fdf8' }, "IsPanning: ", ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.isPanning) ? 'true' : 'false'), h("div", { key: '92fa98b7fa3bf877c4fffaca70683d2d908f5177' }, "IsFocused: ", this.store.state.isFocused ? 'true' : 'false'), h("div", { key: '708d02459c1e3907dd88a2f2fd8916c1ee684cf1' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '27f45c1b6ee0b6bd0b3301a9c09b9198de722ac4' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '50d4476aecfc00d12bae7d8a3880ccb8de82fe68' }, "IsResizeHandleSelected: ", this.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '0c582e97ee1535b4a14b75b7ef15373c43f21c4b' }, "IsRotationHandleSelected: ", this.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '7a8378ac991d17d0eaaba5fbd519875197903a39' }, "IsDrawing: ", this.store.state.isDrawing ? 'true' : 'false'), h("div", { key: '00b56f11ffd16f7b9049d2857f5f7effceba1294' }, "IsWriting: ", this.store.state.isWriting ? 'true' : 'false'), h("div", { key: '3b7773194bd6bc8b8b2d024afc768f4e9fbb54c6' }, "PointerX: ", (_m = this.store.state) === null || _m === void 0 ? void 0 :
2522
+ _m.pointerX), h("div", { key: 'a2b2c96f6180591082a5aee20cc3e82236dac520' }, "PointerY: ", (_o = this.store.state) === null || _o === void 0 ? void 0 :
2523
+ _o.pointerY)), h("div", { key: '309eb61fff5182b5076cb3886bbd79006efc30b1', id: "origin", class: "origin", style: {
2453
2524
  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})`,
2454
2525
  } }, (_t = this.store.objects) === null || _t === void 0 ? void 0 :
2455
2526
  _t.map(object => {
@@ -2473,17 +2544,17 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2473
2544
  borderStyle: 'solid',
2474
2545
  padding: object.padding + 'px',
2475
2546
  overflow: 'visible',
2476
- } }, KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (h("svg", { ref: el => object.mount(el), xmlns: "http://www.w3.org/2000/svg", style: {
2547
+ } }, KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (h("svg", { ref: el => el ? object.mount(el) : object.unmount(), xmlns: "http://www.w3.org/2000/svg", style: {
2477
2548
  height: object === null || object === void 0 ? void 0 : object.height.toString(),
2478
2549
  width: object === null || object === void 0 ? void 0 : object.width.toString(),
2479
2550
  position: 'absolute',
2480
2551
  overflow: 'visible',
2481
- }, 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 }))), KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (h("img", { ref: el => object.mount(el), src: object.src, style: {
2552
+ }, 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 }))), KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (h("img", { ref: el => el ? object.mount(el) : object.unmount(), src: object.src, style: {
2482
2553
  width: '100%',
2483
2554
  height: '100%',
2484
2555
  userSelect: 'none',
2485
2556
  pointerEvents: 'none',
2486
- }, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("textarea", { ref: el => object.mount(el), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
2557
+ }, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("textarea", { ref: el => el ? object.mount(el) : object.unmount(), value: object.value, onKeyDown: event => object.handleKeyDown(event), onInput: event => object.handleInput(event), rows: object.rows, style: {
2487
2558
  width: '100%',
2488
2559
  height: '100%',
2489
2560
  color: object.fontColor,
@@ -2499,54 +2570,60 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2499
2570
  pointerEvents: object.isReadonly ? 'none' : 'auto',
2500
2571
  cursor: object.isReadonly ? 'default' : 'text',
2501
2572
  caretColor: object.isReadonly ? 'transparent' : 'auto',
2502
- } })), KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && (h("div", { ref: el => object.mount(el), style: {
2573
+ } })), KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (h("div", { ref: el => el ? object.mount(el) : object.unmount(), style: {
2574
+ width: '100%',
2575
+ height: '100%',
2576
+ pointerEvents: 'auto',
2577
+ overflow: 'hidden',
2578
+ display: 'block',
2579
+ } })), KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && (h("div", { ref: el => el ? object.mount(el) : object.unmount(), style: {
2503
2580
  width: '100%',
2504
2581
  height: '100%',
2505
- } })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => object.mount(el), style: {
2582
+ } })), KritzelClassHelper.isInstanceOf(object, 'KrtizelSelectionBox') && (h("div", { ref: el => el ? object.mount(el) : object.unmount(), style: {
2506
2583
  width: '100%',
2507
2584
  height: '100%',
2508
2585
  } }))), h("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
2509
- stroke: 'var(--kritzel-selection-border-color, #0e1111)',
2586
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2510
2587
  strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_b = this.store.state) === null || _b === void 0 ? void 0 : _b.scale})`,
2511
2588
  strokeLinecap: 'square',
2512
- }, visibility: object.selected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
2513
- stroke: 'var(--kritzel-selection-border-color, #0e1111)',
2589
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
2590
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2514
2591
  strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_c = this.store.state) === null || _c === void 0 ? void 0 : _c.scale})`,
2515
2592
  strokeLinecap: 'square',
2516
- }, visibility: object.selected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
2517
- stroke: 'var(--kritzel-selection-border-color, #0e1111)',
2593
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
2594
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2518
2595
  strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_d = this.store.state) === null || _d === void 0 ? void 0 : _d.scale})`,
2519
2596
  strokeLinecap: 'square',
2520
- }, visibility: object.selected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
2521
- stroke: 'var(--kritzel-selection-border-color, #0e1111)',
2597
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
2598
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2522
2599
  strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_e = this.store.state) === null || _e === void 0 ? void 0 : _e.scale})`,
2523
2600
  strokeLinecap: 'square',
2524
- }, visibility: object.selected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / ((_f = this.store.state) === null || _f === void 0 ? void 0 : _f.scale)}`, style: {
2601
+ }, visibility: object.isSelected ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-left", cx: "0", cy: "0", r: `${(baseHandleSize * object.scale) / ((_f = this.store.state) === null || _f === void 0 ? void 0 : _f.scale)}`, style: {
2525
2602
  fill: 'var(--kritzel-selection-handle-color, #000000)',
2526
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_g = this.store.state) === null || _g === void 0 ? void 0 : _g.scale)}`, style: {
2603
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-left", cx: "0", cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_g = this.store.state) === null || _g === void 0 ? void 0 : _g.scale)}`, style: {
2527
2604
  fill: 'transparent',
2528
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.scale)}`, style: {
2605
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleSize * object.scale) / ((_h = this.store.state) === null || _h === void 0 ? void 0 : _h.scale)}`, style: {
2529
2606
  fill: 'var(--kritzel-selection-handle-color, #000000)',
2530
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.scale)}`, style: {
2607
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay top-right", cx: object.totalWidth, cy: "0", r: `${(baseHandleTouchSize * object.scale) / ((_j = this.store.state) === null || _j === void 0 ? void 0 : _j.scale)}`, style: {
2531
2608
  fill: 'transparent',
2532
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.scale)}`, style: {
2609
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_k = this.store.state) === null || _k === void 0 ? void 0 : _k.scale)}`, style: {
2533
2610
  fill: 'var(--kritzel-selection-handle-color, #000000)',
2534
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.scale)}`, style: {
2611
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-left", cx: "0", cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_l = this.store.state) === null || _l === void 0 ? void 0 : _l.scale)}`, style: {
2535
2612
  fill: 'transparent',
2536
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_m = this.store.state) === null || _m === void 0 ? void 0 : _m.scale)}`, style: {
2613
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleSize * object.scale) / ((_m = this.store.state) === null || _m === void 0 ? void 0 : _m.scale)}`, style: {
2537
2614
  fill: 'var(--kritzel-selection-handle-color, #000000)',
2538
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_o = this.store.state) === null || _o === void 0 ? void 0 : _o.scale)}`, style: {
2615
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "resize-handle-overlay bottom-right", cx: object.totalWidth, cy: object.totalHeight, r: `${(baseHandleTouchSize * object.scale) / ((_o = this.store.state) === null || _o === void 0 ? void 0 : _o.scale)}`, style: {
2539
2616
  fill: 'transparent',
2540
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / ((_p = this.store.state) === null || _p === void 0 ? void 0 : _p.scale)), style: {
2541
- stroke: 'var(--kritzel-selection-border-color, #0e1111)',
2617
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / ((_p = this.store.state) === null || _p === void 0 ? void 0 : _p.scale)), style: {
2618
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
2542
2619
  strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_q = this.store.state) === null || _q === void 0 ? void 0 : _q.scale})`,
2543
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_r = this.store.state) === null || _r === void 0 ? void 0 : _r.scale)), r: `${(baseHandleSize * object.scale) / ((_s = this.store.state) === null || _s === void 0 ? void 0 : _s.scale)}`, style: {
2620
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_r = this.store.state) === null || _r === void 0 ? void 0 : _r.scale)), r: `${(baseHandleSize * object.scale) / ((_s = this.store.state) === null || _s === void 0 ? void 0 : _s.scale)}`, style: {
2544
2621
  fill: 'var(--kritzel-selection-handle-color, #000000)',
2545
- }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_t = this.store.state) === null || _t === void 0 ? void 0 : _t.scale)), r: `${(baseHandleTouchSize * object.scale) / ((_u = this.store.state) === null || _u === void 0 ? void 0 : _u.scale)}`, style: {
2622
+ }, visibility: object.isSelected && !this.isSelecting ? 'visible' : 'hidden' }), h("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_t = this.store.state) === null || _t === void 0 ? void 0 : _t.scale)), r: `${(baseHandleTouchSize * object.scale) / ((_u = this.store.state) === null || _u === void 0 ? void 0 : _u.scale)}`, style: {
2546
2623
  fill: 'transparent',
2547
2624
  cursor: 'grab',
2548
- }, 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)))))));
2549
- }), h("svg", { key: '4fd9e58c617eaf428edbdc3491d3f4fabe3ce564', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
2625
+ }, visibility: object.isSelected && !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.isDebugInfoVisible ? '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), h("div", { style: { whiteSpace: 'nowrap' } }, "x: ", object.x), h("div", { style: { whiteSpace: 'nowrap' } }, "y: ", object.y)))))));
2626
+ }), h("svg", { key: 'c40c470ce1a341a6d238ea6c313bd3a78465dbd9', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
2550
2627
  height: (_u = this.store.state.currentPath) === null || _u === void 0 ? void 0 : _u.height.toString(),
2551
2628
  width: (_v = this.store.state.currentPath) === null || _v === void 0 ? void 0 : _v.width.toString(),
2552
2629
  left: '0',
@@ -2556,7 +2633,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2556
2633
  transform: (_x = this.store.state.currentPath) === null || _x === void 0 ? void 0 : _x.transformationMatrix,
2557
2634
  transformOrigin: 'top left',
2558
2635
  overflow: 'visible',
2559
- }, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, h("path", { key: 'ac88c3b66d642bbe42a0ac5345b4f4d6cddef5a3', 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: '8dc7ef8180a94bc1b4bf25c969574421ca4d0c4e', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, objects: ((_2 = this.store.state.selectionGroup) === null || _2 === void 0 ? void 0 : _2.objects) || [], style: {
2636
+ }, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, h("path", { key: 'f2d62173bc61abf639e356520419b50c0493f34b', 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: 'ad36d2e5eb72e2cbca73c48ef8a4db6d3b6f7a64', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, objects: ((_2 = this.store.state.selectionGroup) === null || _2 === void 0 ? void 0 : _2.objects) || [], style: {
2560
2637
  position: 'fixed',
2561
2638
  left: `${this.store.state.contextMenuX}px`,
2562
2639
  top: `${this.store.state.contextMenuY}px`,
@@ -2568,7 +2645,7 @@ const KritzelEngine = /*@__PURE__*/ proxyCustomElement(class KritzelEngine exten
2568
2645
  y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,
2569
2646
  }, (_a = this.store.state.selectionGroup) === null || _a === void 0 ? void 0 : _a.objects);
2570
2647
  this.hideContextMenu();
2571
- } })), ((_3 = this.store.state) === null || _3 === void 0 ? void 0 : _3.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: 'c4cd252caaae9e0b1f8f2dd6a669cf4c24154e17', store: this.store })));
2648
+ } })), ((_3 = this.store.state) === null || _3 === void 0 ? void 0 : _3.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '6917e2621b4de0b0985e58a6043898d79e367ccc', store: this.store })));
2572
2649
  }
2573
2650
  get host() { return this; }
2574
2651
  static get watchers() { return {
@@ -2642,6 +2719,6 @@ function defineCustomElement() {
2642
2719
  }
2643
2720
 
2644
2721
  export { ABSOLUTE_SCALE_MAX as A, KritzelImage as K, KritzelEraserTool as a, KritzelImageTool as b, KritzelSelectionTool as c, KritzelEngine as d, defineCustomElement as e, ABSOLUTE_SCALE_MIN as f };
2645
- //# sourceMappingURL=p-q-xqpmae.js.map
2722
+ //# sourceMappingURL=p-DJaVT2yR.js.map
2646
2723
 
2647
- //# sourceMappingURL=p-q-xqpmae.js.map
2724
+ //# sourceMappingURL=p-DJaVT2yR.js.map