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.
- package/dist/cjs/{index-BcrLbdO1.js → index-C05uAr89.js} +10 -4
- package/dist/cjs/index-C05uAr89.js.map +1 -0
- package/dist/cjs/{index-BjLSiQIM.js → index-UcX3pzju.js} +348 -141
- package/dist/cjs/index-UcX3pzju.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +137 -81
- package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/stencil.cjs.js +2 -2
- package/dist/cjs/stencil.cjs.js.map +1 -1
- package/dist/collection/classes/commands/remove-object.command.js +3 -0
- package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
- package/dist/collection/classes/handlers/context-menu.handler.js +1 -1
- package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
- package/dist/collection/classes/handlers/hover.handler.js +22 -0
- package/dist/collection/classes/handlers/hover.handler.js.map +1 -0
- package/dist/collection/classes/handlers/move.handler.js +2 -2
- package/dist/collection/classes/handlers/move.handler.js.map +1 -1
- package/dist/collection/classes/handlers/selection.handler.js +16 -20
- package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
- package/dist/collection/classes/history.class.js +16 -13
- package/dist/collection/classes/history.class.js.map +1 -1
- package/dist/collection/classes/objects/base-object.class.js +34 -32
- package/dist/collection/classes/objects/base-object.class.js.map +1 -1
- package/dist/collection/classes/objects/custom-element.class.js +52 -0
- package/dist/collection/classes/objects/custom-element.class.js.map +1 -0
- package/dist/collection/classes/objects/image.class.js +1 -1
- package/dist/collection/classes/objects/image.class.js.map +1 -1
- package/dist/collection/classes/objects/path.class.js +133 -4
- package/dist/collection/classes/objects/path.class.js.map +1 -1
- package/dist/collection/classes/objects/selection-box.class.js +2 -2
- package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
- package/dist/collection/classes/objects/selection-group.class.js +3 -2
- package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
- package/dist/collection/classes/objects/text.class.js +1 -1
- package/dist/collection/classes/objects/text.class.js.map +1 -1
- package/dist/collection/classes/reviver.class.js +4 -0
- package/dist/collection/classes/reviver.class.js.map +1 -1
- package/dist/collection/classes/store.class.js +45 -6
- package/dist/collection/classes/store.class.js.map +1 -1
- package/dist/collection/classes/tools/eraser-tool.class.js +17 -14
- package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/image-tool.class.js +1 -1
- package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/selection-tool.class.js +5 -6
- package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
- package/dist/collection/classes/viewport.class.js +20 -12
- package/dist/collection/classes/viewport.class.js.map +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +6 -6
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +43 -37
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +1 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +1 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +1 -1
- package/dist/collection/configs/default-engine-state.js +2 -2
- package/dist/collection/configs/default-engine-state.js.map +1 -1
- package/dist/collection/helpers/html.helper.js +7 -0
- package/dist/collection/helpers/html.helper.js.map +1 -0
- package/dist/collection/helpers/object.helper.js +6 -2
- package/dist/collection/helpers/object.helper.js.map +1 -1
- package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
- package/dist/collection/interfaces/object.interface.js.map +1 -1
- package/dist/components/index.js +3 -3
- package/dist/components/kritzel-brush-style.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-context-menu.js +1 -1
- package/dist/components/kritzel-control-brush-config.js +1 -1
- package/dist/components/kritzel-control-text-config.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-cursor-trail.js +1 -1
- package/dist/components/kritzel-dropdown.js +1 -1
- package/dist/components/kritzel-editor.js +23 -23
- package/dist/components/kritzel-editor.js.map +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-font-family.js +1 -1
- package/dist/components/kritzel-font-size.js +1 -1
- package/dist/components/kritzel-font.js +1 -1
- package/dist/components/kritzel-icon.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tooltip.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/{p-CqPrOhzi.js → p-BOj_wqdw.js} +4 -4
- package/dist/components/{p-CqPrOhzi.js.map → p-BOj_wqdw.js.map} +1 -1
- package/dist/components/{p-CEYRFk55.js → p-BY8BWGge.js} +4 -4
- package/dist/components/{p-CEYRFk55.js.map → p-BY8BWGge.js.map} +1 -1
- package/dist/components/{p-D-Rf05Ov.js → p-Bn5P7YQn.js} +5 -5
- package/dist/components/{p-D-Rf05Ov.js.map → p-Bn5P7YQn.js.map} +1 -1
- package/dist/components/{p-CIb4IA9u.js → p-C9usqwb5.js} +5 -5
- package/dist/components/{p-CIb4IA9u.js.map → p-C9usqwb5.js.map} +1 -1
- package/dist/components/{p-gDLg_PJJ.js → p-CF8ziFc4.js} +4 -4
- package/dist/components/{p-gDLg_PJJ.js.map → p-CF8ziFc4.js.map} +1 -1
- package/dist/components/{p-CDpq9L_H.js → p-CiT5gBDh.js} +3 -3
- package/dist/components/{p-CDpq9L_H.js.map → p-CiT5gBDh.js.map} +1 -1
- package/dist/components/{p-D1oFXBAp.js → p-Cn_kantt.js} +5 -5
- package/dist/components/{p-D1oFXBAp.js.map → p-Cn_kantt.js.map} +1 -1
- package/dist/components/{p-DC3j4P1n.js → p-Cnc43o9b.js} +227 -41
- package/dist/components/p-Cnc43o9b.js.map +1 -0
- package/dist/components/{p-BAMl2Ww6.js → p-CneTqrgt.js} +18 -18
- package/dist/components/{p-BAMl2Ww6.js.map → p-CneTqrgt.js.map} +1 -1
- package/dist/components/{p-B2wWYPH8.js → p-CtiROna-.js} +3 -3
- package/dist/components/{p-B2wWYPH8.js.map → p-CtiROna-.js.map} +1 -1
- package/dist/components/{p-D0L3GqSK.js → p-Cw2ATHMj.js} +3 -3
- package/dist/components/{p-D0L3GqSK.js.map → p-Cw2ATHMj.js.map} +1 -1
- package/dist/components/{p-CxmkJbeV.js → p-D0sLslUq.js} +3 -3
- package/dist/components/{p-CxmkJbeV.js.map → p-D0sLslUq.js.map} +1 -1
- package/dist/components/{p-dCaxwGmu.js → p-DJN0U8pI.js} +10 -4
- package/dist/components/p-DJN0U8pI.js.map +1 -0
- package/dist/components/{p-q-xqpmae.js → p-DJaVT2yR.js} +255 -178
- package/dist/components/p-DJaVT2yR.js.map +1 -0
- package/dist/components/{p-C3E9PtD3.js → p-DMAzUKo6.js} +10 -10
- package/dist/components/{p-C3E9PtD3.js.map → p-DMAzUKo6.js.map} +1 -1
- package/dist/components/{p-DbPbyRLO.js → p-DSLY0tr5.js} +5 -5
- package/dist/components/{p-DbPbyRLO.js.map → p-DSLY0tr5.js.map} +1 -1
- package/dist/components/{p--2FkikYE.js → p-DpiklJU9.js} +3 -3
- package/dist/components/{p--2FkikYE.js.map → p-DpiklJU9.js.map} +1 -1
- package/dist/components/{p--tElassI.js → p-NZJPrwJV.js} +3 -3
- package/dist/components/{p--tElassI.js.map → p-NZJPrwJV.js.map} +1 -1
- package/dist/components/{p-BSS4UREq.js → p-ubNAWsY_.js} +9 -9
- package/dist/components/{p-BSS4UREq.js.map → p-ubNAWsY_.js.map} +1 -1
- package/dist/esm/{index-BPFXWTBp.js → index-BGl8znzE.js} +10 -4
- package/dist/esm/index-BGl8znzE.js.map +1 -0
- package/dist/esm/{index-DsUDklEm.js → index-DO2IiM_o.js} +348 -141
- package/dist/esm/index-DO2IiM_o.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/kritzel-brush-style_18.entry.js +137 -81
- package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/stencil.js +3 -3
- package/dist/esm/stencil.js.map +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-BGl8znzE.js +3 -0
- package/dist/stencil/p-BGl8znzE.js.map +1 -0
- package/dist/stencil/p-DO2IiM_o.js +2 -0
- package/dist/stencil/p-DO2IiM_o.js.map +1 -0
- package/dist/stencil/p-c64f6589.entry.js +2 -0
- package/dist/stencil/p-c64f6589.entry.js.map +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/stencil/stencil.esm.js.map +1 -1
- package/dist/types/classes/handlers/hover.handler.d.ts +6 -0
- package/dist/types/classes/handlers/selection.handler.d.ts +1 -1
- package/dist/types/classes/history.class.d.ts +1 -0
- package/dist/types/classes/objects/base-object.class.d.ts +12 -6
- package/dist/types/classes/objects/custom-element.class.d.ts +26 -0
- package/dist/types/classes/objects/image.class.d.ts +1 -1
- package/dist/types/classes/objects/path.class.d.ts +9 -2
- package/dist/types/classes/objects/text.class.d.ts +1 -1
- package/dist/types/classes/store.class.d.ts +5 -0
- package/dist/types/classes/tools/selection-tool.class.d.ts +2 -0
- package/dist/types/components.d.ts +4 -4
- package/dist/types/helpers/html.helper.d.ts +3 -0
- package/dist/types/interfaces/engine-state.interface.d.ts +2 -2
- package/dist/types/interfaces/object.interface.d.ts +12 -4
- package/package.json +5 -5
- package/dist/cjs/index-BcrLbdO1.js.map +0 -1
- package/dist/cjs/index-BjLSiQIM.js.map +0 -1
- package/dist/components/p-DC3j4P1n.js.map +0 -1
- package/dist/components/p-dCaxwGmu.js.map +0 -1
- package/dist/components/p-q-xqpmae.js.map +0 -1
- package/dist/esm/index-BPFXWTBp.js.map +0 -1
- package/dist/esm/index-DsUDklEm.js.map +0 -1
- package/dist/stencil/p-3797c300.entry.js +0 -2
- package/dist/stencil/p-3797c300.entry.js.map +0 -1
- package/dist/stencil/p-BPFXWTBp.js +0 -3
- package/dist/stencil/p-BPFXWTBp.js.map +0 -1
- package/dist/stencil/p-DsUDklEm.js +0 -2
- 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-
|
|
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-
|
|
4
|
-
import { K as KritzelContextMenu, d as defineCustomElement$3 } from './p-
|
|
5
|
-
import { d as defineCustomElement$2 } from './p-
|
|
6
|
-
import { d as defineCustomElement$1 } from './p-
|
|
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.
|
|
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
|
|
159
|
+
var _a;
|
|
107
160
|
if (event.pointerType === 'mouse') {
|
|
108
161
|
if (this._store.state.isErasing) {
|
|
109
|
-
const
|
|
110
|
-
if (
|
|
162
|
+
const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
|
|
163
|
+
if (selectedObjects.length === 0)
|
|
111
164
|
return;
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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 = (
|
|
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
|
|
125
|
-
if (
|
|
178
|
+
const selectedObjects = this._store.getObjectsFromPointerEvent(event, '.object');
|
|
179
|
+
if (selectedObjects.length === 0)
|
|
126
180
|
return;
|
|
127
|
-
|
|
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.
|
|
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.
|
|
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(
|
|
652
|
-
object.borderColor = 'var(--kritzel-selection-box-border-color, rgba(
|
|
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.
|
|
730
|
-
this.
|
|
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.
|
|
745
|
-
this.
|
|
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
|
-
|
|
846
|
-
|
|
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(
|
|
854
|
-
this._store.state.selectionGroup.
|
|
855
|
-
this._store.state.selectionGroup.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.
|
|
865
|
+
o.isSelected = false;
|
|
866
866
|
this._store.state.selectionGroup.addOrRemove(o);
|
|
867
867
|
});
|
|
868
|
-
this._store.state.selectionGroup.
|
|
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.
|
|
902
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
1376
|
-
const
|
|
1377
|
-
|
|
1378
|
-
this._store.state.
|
|
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 -
|
|
1381
|
-
this._store.state.translateY -= this._store.state.startY -
|
|
1382
|
-
this._store.state.startX =
|
|
1383
|
-
this._store.state.startY =
|
|
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
|
-
|
|
1444
|
-
|
|
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 = (
|
|
1449
|
-
const translateYAdjustment = (
|
|
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
|
-
|
|
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
|
-
|
|
1775
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
1993
|
+
obj.isSelected = false;
|
|
1962
1994
|
selectionGroup.addOrRemove(obj);
|
|
1963
1995
|
});
|
|
1964
|
-
selectionGroup.
|
|
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.
|
|
2017
|
+
obj.isSelected = false;
|
|
1986
2018
|
selectionGroup.addOrRemove(obj);
|
|
1987
2019
|
});
|
|
1988
|
-
selectionGroup.
|
|
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.
|
|
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: '
|
|
2445
|
-
_a.translateX), h("div", { key: '
|
|
2446
|
-
_b.translateY), h("div", { key: '
|
|
2447
|
-
_c.viewportWidth), h("div", { key: '
|
|
2448
|
-
_d.viewportHeight), h("div", { key: '
|
|
2449
|
-
_e.scale), h("div", { key: '
|
|
2450
|
-
_g.name), h("div", { key: '
|
|
2451
|
-
_m.
|
|
2452
|
-
_o.
|
|
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, '
|
|
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, #
|
|
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.
|
|
2513
|
-
stroke: 'var(--kritzel-selection-border-color, #
|
|
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.
|
|
2517
|
-
stroke: 'var(--kritzel-selection-border-color, #
|
|
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.
|
|
2521
|
-
stroke: 'var(--kritzel-selection-border-color, #
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
2541
|
-
stroke: 'var(--kritzel-selection-border-color, #
|
|
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.
|
|
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.
|
|
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.
|
|
2549
|
-
}), h("svg", { key: '
|
|
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: '
|
|
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: '
|
|
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-
|
|
2722
|
+
//# sourceMappingURL=p-DJaVT2yR.js.map
|
|
2646
2723
|
|
|
2647
|
-
//# sourceMappingURL=p-
|
|
2724
|
+
//# sourceMappingURL=p-DJaVT2yR.js.map
|