kritzel-stencil 0.0.139 → 0.0.140
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-DgZMn9B_.js → index-Clh2g9JM.js} +162 -103
- package/dist/cjs/index-Clh2g9JM.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-color_22.cjs.entry.js +182 -135
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/stencil.cjs.js +1 -1
- package/dist/collection/classes/commands/add-selection-group.command.js +4 -4
- package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/move-selection-group.command.js +2 -2
- package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/remove-selection-group.command.js +2 -2
- package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/resize-selection-group.command.js +2 -2
- package/dist/collection/classes/commands/resize-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/rotate-selection-group.command.js +2 -2
- package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
- package/dist/collection/classes/commands/update-viewport.command.js +6 -6
- package/dist/collection/classes/commands/update-viewport.command.js.map +1 -1
- package/dist/collection/classes/core/core.class.js +43 -27
- package/dist/collection/classes/core/core.class.js.map +1 -1
- package/dist/collection/classes/core/history.class.js +3 -3
- package/dist/collection/classes/core/history.class.js.map +1 -1
- package/dist/collection/classes/core/store.class.js +4 -1
- package/dist/collection/classes/core/store.class.js.map +1 -1
- package/dist/collection/classes/core/viewport.class.js +63 -44
- package/dist/collection/classes/core/viewport.class.js.map +1 -1
- package/dist/collection/classes/handlers/context-menu.handler.js +16 -8
- package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
- package/dist/collection/classes/handlers/key.handler.js +2 -2
- package/dist/collection/classes/handlers/key.handler.js.map +1 -1
- package/dist/collection/classes/handlers/move.handler.js +30 -8
- package/dist/collection/classes/handlers/move.handler.js.map +1 -1
- package/dist/collection/classes/handlers/resize.handler.js +6 -6
- package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
- package/dist/collection/classes/handlers/rotation.handler.js +6 -6
- package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
- package/dist/collection/classes/handlers/selection.handler.js +56 -28
- package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
- package/dist/collection/classes/objects/base-object.class.js +9 -3
- package/dist/collection/classes/objects/base-object.class.js.map +1 -1
- package/dist/collection/classes/objects/selection-group.class.js +3 -1
- package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
- package/dist/collection/classes/objects/text.class.js +5 -4
- package/dist/collection/classes/objects/text.class.js.map +1 -1
- package/dist/collection/classes/tools/brush-tool.class.js +16 -16
- package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/eraser-tool.class.js +4 -4
- package/dist/collection/classes/tools/eraser-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/selection-tool.class.js +7 -7
- package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
- package/dist/collection/classes/tools/text-tool.class.js +6 -6
- package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +1 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +18 -16
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -2
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +1 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +4 -4
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -1
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +2 -2
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +3 -3
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +1 -1
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
- package/dist/components/index.js +2 -2
- 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-editor.js +20 -20
- 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-menu-item.js +1 -1
- package/dist/components/kritzel-menu.js +1 -1
- package/dist/components/kritzel-portal.js +1 -1
- package/dist/components/kritzel-split-button.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/kritzel-workspace-manager.js +1 -1
- package/dist/components/{p-DjU7p3od.js → p-BFLXutiB.js} +9 -9
- package/dist/components/{p-DjU7p3od.js.map → p-BFLXutiB.js.map} +1 -1
- package/dist/components/{p-B7kZ1_RH.js → p-BJZudenH.js} +4 -4
- package/dist/components/{p-B7kZ1_RH.js.map → p-BJZudenH.js.map} +1 -1
- package/dist/components/{p-B7w19kIk.js → p-BLc8TzcU.js} +7 -7
- package/dist/components/{p-B7w19kIk.js.map → p-BLc8TzcU.js.map} +1 -1
- package/dist/components/{p-BlPlPpUy.js → p-BQJhnpY3.js} +3 -3
- package/dist/components/{p-BlPlPpUy.js.map → p-BQJhnpY3.js.map} +1 -1
- package/dist/components/{p-KudVTtHk.js → p-BV5iL9W6.js} +283 -184
- package/dist/components/p-BV5iL9W6.js.map +1 -0
- package/dist/components/{p-DOPuq6gn.js → p-C-ozL_Es.js} +3 -3
- package/dist/components/{p-DOPuq6gn.js.map → p-C-ozL_Es.js.map} +1 -1
- package/dist/components/{p-BbGgijCS.js → p-C5sTCwe3.js} +38 -31
- package/dist/components/p-C5sTCwe3.js.map +1 -0
- package/dist/components/{p-BM9IjvnD.js → p-C7UWRUAy.js} +3 -3
- package/dist/components/{p-BM9IjvnD.js.map → p-C7UWRUAy.js.map} +1 -1
- package/dist/components/{p-sreNwi0N.js → p-CE_sOMS2.js} +4 -4
- package/dist/components/{p-sreNwi0N.js.map → p-CE_sOMS2.js.map} +1 -1
- package/dist/components/{p-BPsQrpzN.js → p-D2eJXNMx.js} +6 -6
- package/dist/components/{p-BPsQrpzN.js.map → p-D2eJXNMx.js.map} +1 -1
- package/dist/components/{p-DCx3703u.js → p-D6FeQRzi.js} +3 -3
- package/dist/components/{p-DCx3703u.js.map → p-D6FeQRzi.js.map} +1 -1
- package/dist/components/{p-Ddlbt3Bj.js → p-DbmQ5DrU.js} +3 -3
- package/dist/components/{p-Ddlbt3Bj.js.map → p-DbmQ5DrU.js.map} +1 -1
- package/dist/components/{p-BehchtaT.js → p-Dh61W3GT.js} +6 -6
- package/dist/components/{p-BehchtaT.js.map → p-Dh61W3GT.js.map} +1 -1
- package/dist/components/{p-CsyM5q2M.js → p-IgPm36bH.js} +4 -4
- package/dist/components/{p-CsyM5q2M.js.map → p-IgPm36bH.js.map} +1 -1
- package/dist/components/{p-BgpsMYcw.js → p-JYqCBcMd.js} +6 -6
- package/dist/components/p-JYqCBcMd.js.map +1 -0
- package/dist/components/{p-CHdJi6b4.js → p-SKH0G2nM.js} +16 -16
- package/dist/components/{p-CHdJi6b4.js.map → p-SKH0G2nM.js.map} +1 -1
- package/dist/components/{p-Db3kxVe2.js → p-bC64Ng59.js} +3 -3
- package/dist/components/{p-Db3kxVe2.js.map → p-bC64Ng59.js.map} +1 -1
- package/dist/components/{p-BorT6g39.js → p-sHDCqDbD.js} +5 -5
- package/dist/components/{p-BorT6g39.js.map → p-sHDCqDbD.js.map} +1 -1
- package/dist/components/{p-0iJh9Z6m.js → p-vNnVlsJt.js} +4 -4
- package/dist/components/{p-0iJh9Z6m.js.map → p-vNnVlsJt.js.map} +1 -1
- package/dist/esm/{index-CxieEK_G.js → index-BAbkwyRx.js} +163 -104
- package/dist/esm/index-BAbkwyRx.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/kritzel-color_22.entry.js +182 -135
- package/dist/esm/loader.js +1 -1
- package/dist/esm/stencil.js +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-BAbkwyRx.js +2 -0
- package/dist/stencil/p-BAbkwyRx.js.map +1 -0
- package/dist/stencil/p-fe465059.entry.js +2 -0
- package/dist/stencil/p-fe465059.entry.js.map +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/core/store.class.d.ts +2 -1
- package/dist/types/classes/core/viewport.class.d.ts +3 -0
- package/dist/types/classes/handlers/move.handler.d.ts +2 -0
- package/dist/types/classes/handlers/selection.handler.d.ts +3 -0
- package/package.json +1 -1
- package/dist/cjs/index-DgZMn9B_.js.map +0 -1
- package/dist/components/p-BbGgijCS.js.map +0 -1
- package/dist/components/p-BgpsMYcw.js.map +0 -1
- package/dist/components/p-KudVTtHk.js.map +0 -1
- package/dist/esm/index-CxieEK_G.js.map +0 -1
- package/dist/stencil/p-CxieEK_G.js +0 -2
- package/dist/stencil/p-CxieEK_G.js.map +0 -1
- package/dist/stencil/p-ab074e87.entry.js +0 -2
- package/dist/stencil/p-ab074e87.entry.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, h, H as Host, c as createEvent, g as getElement } from './index-oCOlsFCN.js';
|
|
2
|
-
import { K as KritzelBrushTool, a as KritzelTextTool, b as KritzelMouseButton, c as KritzelSelectionTool, D as DEFAULT_BRUSH_CONFIG, d as KritzelEraserTool, e as DEFAULT_TEXT_CONFIG, f as KritzelImageTool, g as KritzelWorkspace, h as KritzelKeyboardHelper, i as KritzelEventHelper, j as KritzelBaseHandler, k as KritzelToolRegistry, l as KritzelSelectionGroup, B as BatchCommand, R as RemoveSelectionGroupCommand, A as AddSelectionGroupCommand,
|
|
2
|
+
import { K as KritzelBrushTool, a as KritzelTextTool, b as KritzelMouseButton, c as KritzelSelectionTool, D as DEFAULT_BRUSH_CONFIG, d as KritzelEraserTool, e as DEFAULT_TEXT_CONFIG, f as KritzelImageTool, g as KritzelWorkspace, h as KritzelKeyboardHelper, i as KritzelEventHelper, j as KritzelBaseHandler, k as KritzelToolRegistry, l as KrtizelSelectionBox, m as KritzelSelectionGroup, B as BatchCommand, R as RemoveSelectionGroupCommand, A as AddSelectionGroupCommand, n as KritzelBaseCommand, O as ObjectHelper, o as KritzelReviver, p as RemoveObjectCommand, q as AddObjectCommand, U as UpdateObjectCommand, r as KritzelBaseTool } from './index-BAbkwyRx.js';
|
|
3
3
|
|
|
4
4
|
const kritzelColorCss = ":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}";
|
|
5
5
|
|
|
@@ -35,13 +35,13 @@ const KritzelColor = class {
|
|
|
35
35
|
}
|
|
36
36
|
render() {
|
|
37
37
|
const isColorVeryLight = this.isLightColor(this.value);
|
|
38
|
-
return (h(Host, { key: '
|
|
38
|
+
return (h(Host, { key: '000e54c604c8ceca2c44365e95ec1f5bfb1b729a' }, h("div", { key: '77b2abeae70e4a80714e1364eb4e11e67f16d066', class: "checkerboard-bg", style: {
|
|
39
39
|
width: `${this.size}px`,
|
|
40
40
|
height: `${this.size}px`,
|
|
41
41
|
borderRadius: '50%',
|
|
42
42
|
display: 'inline-block',
|
|
43
43
|
position: 'relative',
|
|
44
|
-
} }, h("div", { key: '
|
|
44
|
+
} }, h("div", { key: 'df71720cf51d845a36598499adb900a30770c503', class: {
|
|
45
45
|
'color-circle': true,
|
|
46
46
|
'white': isColorVeryLight,
|
|
47
47
|
}, style: {
|
|
@@ -84,7 +84,7 @@ const KritzelColorPalette = class {
|
|
|
84
84
|
render() {
|
|
85
85
|
const displayedColors = this.isExpanded ? this.colors : this.colors.slice(0, 6);
|
|
86
86
|
const expandedHeight = this.isExpanded ? this.calculateHeight() : '32px';
|
|
87
|
-
return (h(Host, { key: '
|
|
87
|
+
return (h(Host, { key: 'd533725a8ab2019ae963959727283fbbf833c56a' }, h("div", { key: '7fb50c16d79e9b7330100b0f4e116f8f07b20827', class: {
|
|
88
88
|
'color-grid': true,
|
|
89
89
|
'expanded': this.isExpanded,
|
|
90
90
|
}, style: {
|
|
@@ -149,7 +149,7 @@ const KritzelContextMenu = class {
|
|
|
149
149
|
return defaultValue;
|
|
150
150
|
}
|
|
151
151
|
render() {
|
|
152
|
-
return (h(Host, { key: '
|
|
152
|
+
return (h(Host, { key: '45b9652285f9c3fe7568cbe222667d23c151622f' }, h("div", { key: '9aecc01027f297fa4d991780efaaf51b8d4542dc', class: "menu-container" }, this.processedItems.map(({ item, isDisabled }, index) => (h("button", { key: `${item.label}-${index}`, class: { 'menu-item': true, 'disabled': isDisabled }, onClick: () => this.handleItemClick(item, isDisabled), disabled: isDisabled }, item.icon && h("kritzel-icon", { name: item.icon, size: 16 }), h("span", { class: "label" }, item.label)))))));
|
|
153
153
|
}
|
|
154
154
|
static get watchers() { return {
|
|
155
155
|
"items": ["onItemsChanged"]
|
|
@@ -192,14 +192,14 @@ const KritzelControlBrushConfig = class {
|
|
|
192
192
|
this.toolChange.emit(this.tool);
|
|
193
193
|
}
|
|
194
194
|
render() {
|
|
195
|
-
return (h(Host, { key: '
|
|
195
|
+
return (h(Host, { key: '4b060826312e6d5a2117f5ba9522553af9b02d6f' }, h("div", { key: '0975a250184d5bb2d38cc60263bd718157230d8c', style: {
|
|
196
196
|
display: 'flex',
|
|
197
197
|
flexDirection: 'row',
|
|
198
198
|
alignItems: this.isExpanded ? 'flex-start' : 'center',
|
|
199
199
|
justifyContent: 'flex-start',
|
|
200
200
|
width: '100%',
|
|
201
201
|
gap: '8px',
|
|
202
|
-
} }, h("kritzel-color-palette", { key: '
|
|
202
|
+
} }, h("kritzel-color-palette", { key: 'df84a6fdda01bc7bf3aff42e3b88c4bd9dca500f', colors: this.palette, selectedColor: this.tool.color, isExpanded: this.isExpanded, isOpaque: true, onColorChange: color => this.handleColorChange(color) }), h("button", { key: 'e43c19612807fc4f9cd1bf04f4fb79a048cfd62b', class: "expand-toggle", onClick: () => this.handleToggleExpand(), title: this.isExpanded ? 'Collapse' : 'Expand', style: this.palette.length > 6 ? { visibillity: 'visible' } : { visibility: 'hidden' } }, h("kritzel-icon", { key: '915cce6c4744ad175f3836c946330882de840880', name: this.isExpanded ? 'chevron-up' : 'chevron-down' }))), h("kritzel-stroke-size", { key: 'c07eebae3ba1785e2644c6b5a22d23f76be950fb', selectedSize: this.tool.size, onSizeChange: event => this.handleSizeChange(event) })));
|
|
203
203
|
}
|
|
204
204
|
static get watchers() { return {
|
|
205
205
|
"tool": ["handleToolChange"]
|
|
@@ -233,14 +233,14 @@ const KritzelControlTextConfig = class {
|
|
|
233
233
|
this.toolChange.emit(this.tool);
|
|
234
234
|
}
|
|
235
235
|
render() {
|
|
236
|
-
return (h(Host, { key: '
|
|
236
|
+
return (h(Host, { key: '82e611092700f057bd36823e7f7503fe7a0423ed' }, h("div", { key: '37ed39adeeeb58981a917918cd185e96d589e973', style: {
|
|
237
237
|
display: 'flex',
|
|
238
238
|
flexDirection: 'row',
|
|
239
239
|
alignItems: 'center',
|
|
240
240
|
justifyContent: 'flex-start',
|
|
241
241
|
width: '100%',
|
|
242
242
|
gap: '8px',
|
|
243
|
-
} }, h("kritzel-font-family", { key: '
|
|
243
|
+
} }, h("kritzel-font-family", { key: 'cd8afc5c4a1eee087610cd3d5a6c05210cfda6b3', selectedFontFamily: this.tool.fontFamily, onFontFamilyChange: event => this.handleFamilyChange(event) }), h("button", { key: '085f1bba060bde27a7b64dc5477bb51305b76235', class: "expand-toggle", onClick: () => this.handleToggleExpand(), title: this.isExpanded ? 'Collapse' : 'Expand' }, h("kritzel-icon", { key: '3ff8fec207120e67f43315c6dace72fc2f6bd0f1', name: this.isExpanded ? 'chevron-up' : 'chevron-down' }))), h("kritzel-color-palette", { key: '2e29d01a6b5c0e4a8ec347e63b6a2698c282db40', colors: this.tool.palette, selectedColor: this.tool.fontColor, isExpanded: this.isExpanded, onColorChange: event => this.handleColorChange(event) }), h("kritzel-font-size", { key: 'c972068f1251d66e756b8de72fbdd1b6002d1daa', selectedSize: this.tool.fontSize, fontFamily: this.tool.fontFamily, onSizeChange: event => this.handleSizeChange(event) })));
|
|
244
244
|
}
|
|
245
245
|
};
|
|
246
246
|
KritzelControlTextConfig.style = kritzelControlTextConfigCss;
|
|
@@ -374,13 +374,13 @@ const KritzelControls = class {
|
|
|
374
374
|
}
|
|
375
375
|
render() {
|
|
376
376
|
const hasNoConfig = this.activeControl?.config === undefined || this.activeControl?.config === null;
|
|
377
|
-
return (h(Host, { key: '
|
|
377
|
+
return (h(Host, { key: 'ab3e5f078d6d197c6e10c9dee180c04ef85281bf', class: {
|
|
378
378
|
mobile: this.isTouchDevice,
|
|
379
|
-
} }, this.isUtilityPanelVisible && (h("kritzel-utility-panel", { key: '
|
|
379
|
+
} }, this.isUtilityPanelVisible && (h("kritzel-utility-panel", { key: '290ceb6f2c46eb7e869a4741dd6600bc7c47bbb4', style: {
|
|
380
380
|
position: 'absolute',
|
|
381
381
|
bottom: '56px',
|
|
382
382
|
left: '12px',
|
|
383
|
-
}, onUndo: () => this.kritzelEngine?.undo(), onRedo: () => this.kritzelEngine?.redo(), onDelete: () => this.kritzelEngine?.delete() })), h("div", { key: '
|
|
383
|
+
}, onUndo: () => this.kritzelEngine?.undo(), onRedo: () => this.kritzelEngine?.redo(), onDelete: () => this.kritzelEngine?.delete() })), h("div", { key: 'd2590bc56b709e77910e7159296741c8859158d7', class: "kritzel-controls" }, this.controls.map(control => {
|
|
384
384
|
if (control.type === 'tool') {
|
|
385
385
|
return (h("button", { class: {
|
|
386
386
|
'kritzel-control': true,
|
|
@@ -477,7 +477,7 @@ const KritzelCursorTrail = class {
|
|
|
477
477
|
}
|
|
478
478
|
}
|
|
479
479
|
render() {
|
|
480
|
-
return (h(Host, { key: '
|
|
480
|
+
return (h(Host, { key: '10ef620f19d72a8a5c3a12d0d98686bc69308a30' }, this.cursorTrailPoints.length > 1 && (h("svg", { key: 'd03403051e53422aaa28d6360aaa9c0391e3ef6a', class: "cursor-trail-svg", xmlns: "http://www.w3.org/2000/svg", style: {
|
|
481
481
|
position: 'absolute',
|
|
482
482
|
left: '0',
|
|
483
483
|
top: '0',
|
|
@@ -848,7 +848,7 @@ const KritzelEditor = class {
|
|
|
848
848
|
}
|
|
849
849
|
}
|
|
850
850
|
render() {
|
|
851
|
-
return (h(Host, { key: '
|
|
851
|
+
return (h(Host, { key: '8dc4fa4d4c3512d3a0ac40d5ab67566720b8a3e4' }, h("kritzel-workspace-manager", { key: 'b7a032b8bb01b27af192719b46a3891037770a28', workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, onWorkspaceChange: event => (this.activeWorkspace = event.detail), onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), h("kritzel-engine", { key: '163c4aea9d07290c89e63931ed4a4cf0184757be', ref: el => (this.engineRef = el), workspace: this.activeWorkspace, scaleMax: this.scaleMax, scaleMin: this.scaleMin, globalContextMenuItems: this.globalContextMenuItems, objectContextMenuItems: this.objectContextMenuItems, onIsEngineReady: event => this.onEngineReady(event), onWorkspacesChange: event => (this.workspaces = event.detail) }), h("kritzel-controls", { key: '4c9307c3831f2b179a446265f3226b0ae1541afc', class: { 'keyboard-open': this.isVirtualKeyboardOpen }, style: { display: this.isControlsVisible ? 'flex' : 'none' }, ref: el => (this.controlsRef = el), controls: this.controls, isUtilityPanelVisible: this.isUtilityPanelVisible, onIsControlsReady: () => (this.isControlsReady = true) })));
|
|
852
852
|
}
|
|
853
853
|
static get watchers() { return {
|
|
854
854
|
"isEngineReady": ["onIsEngineReady"],
|
|
@@ -864,18 +864,18 @@ class KritzelViewport {
|
|
|
864
864
|
startY = 0;
|
|
865
865
|
constructor(core, host) {
|
|
866
866
|
this._core = core;
|
|
867
|
-
this._core.store.
|
|
868
|
-
this._core.store.
|
|
869
|
-
this._core.store.
|
|
870
|
-
this._core.store.
|
|
871
|
-
this._core.store.
|
|
872
|
-
this._core.store.
|
|
873
|
-
this._core.store.
|
|
867
|
+
this._core.store.state.host = host;
|
|
868
|
+
this._core.store.state.viewportWidth = host.clientWidth;
|
|
869
|
+
this._core.store.state.viewportHeight = host.clientHeight;
|
|
870
|
+
this._core.store.state.startX = 0;
|
|
871
|
+
this._core.store.state.startY = 0;
|
|
872
|
+
this._core.store.state.translateX = 0;
|
|
873
|
+
this._core.store.state.translateY = 0;
|
|
874
874
|
}
|
|
875
875
|
handleResize() {
|
|
876
|
-
this._core.store.
|
|
877
|
-
this._core.store.
|
|
878
|
-
this._core.store.
|
|
876
|
+
this._core.store.state.viewportWidth = this._core.store.state.host.clientWidth;
|
|
877
|
+
this._core.store.state.viewportHeight = this._core.store.state.host.clientHeight;
|
|
878
|
+
this._core.store.state.hasViewportChanged = true;
|
|
879
879
|
this._core.rerender();
|
|
880
880
|
}
|
|
881
881
|
handlePointerDown(event) {
|
|
@@ -883,16 +883,16 @@ class KritzelViewport {
|
|
|
883
883
|
const adjustedClientX = event.clientX - this._core.store.offsetX;
|
|
884
884
|
const adjustedClientY = event.clientY - this._core.store.offsetY;
|
|
885
885
|
if (event.button === KritzelMouseButton.Right) {
|
|
886
|
-
this._core.store.
|
|
887
|
-
this._core.store.
|
|
888
|
-
this._core.store.
|
|
886
|
+
this._core.store.state.isPanning = true;
|
|
887
|
+
this._core.store.state.startX = adjustedClientX;
|
|
888
|
+
this._core.store.state.startY = adjustedClientY;
|
|
889
889
|
}
|
|
890
890
|
}
|
|
891
891
|
if (event.pointerType === 'touch') {
|
|
892
892
|
const activePointers = Array.from(this._core.store.state.pointers.values());
|
|
893
893
|
if (activePointers.length === 2) {
|
|
894
|
-
this._core.store.
|
|
895
|
-
this._core.store.
|
|
894
|
+
this._core.store.state.currentPath = null;
|
|
895
|
+
this._core.store.state.isScaling = true;
|
|
896
896
|
const firstTouchX = activePointers[0].clientX - this._core.store.offsetX;
|
|
897
897
|
const firstTouchY = activePointers[0].clientY - this._core.store.offsetY;
|
|
898
898
|
const secondTouchX = activePointers[1].clientX - this._core.store.offsetX;
|
|
@@ -909,17 +909,17 @@ class KritzelViewport {
|
|
|
909
909
|
const hostRect = this._core.store.state.host.getBoundingClientRect();
|
|
910
910
|
const xRelativeToHost = event.clientX - hostRect.left;
|
|
911
911
|
const yRelativeToHost = event.clientY - hostRect.top;
|
|
912
|
-
this._core.store.
|
|
913
|
-
this._core.store.
|
|
912
|
+
this._core.store.state.pointerX = (xRelativeToHost - this._core.store.state.translateX) / this._core.store.state.scale;
|
|
913
|
+
this._core.store.state.pointerY = (yRelativeToHost - this._core.store.state.translateY) / this._core.store.state.scale;
|
|
914
914
|
if (this._core.store.state.isPanning) {
|
|
915
915
|
const dx = xRelativeToHost - this._core.store.state.startX;
|
|
916
916
|
const dy = yRelativeToHost - this._core.store.state.startY;
|
|
917
|
-
this._core.store.
|
|
918
|
-
this._core.store.
|
|
919
|
-
this._core.store.
|
|
920
|
-
this._core.store.
|
|
921
|
-
this._core.store.
|
|
922
|
-
this._core.store.
|
|
917
|
+
this._core.store.state.translateX += dx;
|
|
918
|
+
this._core.store.state.translateY += dy;
|
|
919
|
+
this._core.store.state.startX = xRelativeToHost;
|
|
920
|
+
this._core.store.state.startY = yRelativeToHost;
|
|
921
|
+
this._core.store.state.hasViewportChanged = true;
|
|
922
|
+
this._core.store.state.skipContextMenu = true;
|
|
923
923
|
this._core.rerender();
|
|
924
924
|
this._core.updateWorkspaceViewport(this._core.store.state.translateX, this._core.store.state.translateY, this._core.store.state.scale);
|
|
925
925
|
}
|
|
@@ -928,8 +928,8 @@ class KritzelViewport {
|
|
|
928
928
|
const hostRect = this._core.store.state.host.getBoundingClientRect();
|
|
929
929
|
const xRelativeToHost = event.clientX - hostRect.left;
|
|
930
930
|
const yRelativeToHost = event.clientY - hostRect.top;
|
|
931
|
-
this._core.store.
|
|
932
|
-
this._core.store.
|
|
931
|
+
this._core.store.state.pointerX = (xRelativeToHost - this._core.store.state.translateX) / this._core.store.state.scale;
|
|
932
|
+
this._core.store.state.pointerY = (yRelativeToHost - this._core.store.state.translateY) / this._core.store.state.scale;
|
|
933
933
|
const activePointers = Array.from(this._core.store.state.pointers.values());
|
|
934
934
|
if (activePointers.length === 2) {
|
|
935
935
|
const firstTouchX = activePointers[0].clientX - this._core.store.offsetX;
|
|
@@ -942,20 +942,20 @@ class KritzelViewport {
|
|
|
942
942
|
const scaleRatio = currentTouchDistance / this.initialTouchDistance;
|
|
943
943
|
const newScale = this._core.store.state.scale * scaleRatio;
|
|
944
944
|
if (newScale > this._core.store.state.scaleMax || newScale < this._core.store.state.scaleMin) {
|
|
945
|
-
this._core.store.
|
|
946
|
-
this._core.store.
|
|
945
|
+
this._core.store.state.translateX = this._core.store.state.translateX + midpointX - this.startX;
|
|
946
|
+
this._core.store.state.translateY = this._core.store.state.translateY + midpointY - this.startY;
|
|
947
947
|
}
|
|
948
948
|
else {
|
|
949
949
|
const translateXAdjustment = (midpointX - this._core.store.state.translateX) * (scaleRatio - 1);
|
|
950
950
|
const translateYAdjustment = (midpointY - this._core.store.state.translateY) * (scaleRatio - 1);
|
|
951
|
-
this._core.store.
|
|
952
|
-
this._core.store.
|
|
953
|
-
this._core.store.
|
|
951
|
+
this._core.store.state.translateX = this._core.store.state.translateX + midpointX - this.startX - translateXAdjustment;
|
|
952
|
+
this._core.store.state.translateY = this._core.store.state.translateY + midpointY - this.startY - translateYAdjustment;
|
|
953
|
+
this._core.store.state.scale = newScale;
|
|
954
954
|
this.initialTouchDistance = currentTouchDistance;
|
|
955
955
|
}
|
|
956
956
|
this.startX = midpointX;
|
|
957
957
|
this.startY = midpointY;
|
|
958
|
-
this._core.store.
|
|
958
|
+
this._core.store.state.hasViewportChanged = true;
|
|
959
959
|
this._core.rerender();
|
|
960
960
|
this._core.updateWorkspaceViewport(this._core.store.state.translateX, this._core.store.state.translateY, this._core.store.state.scale);
|
|
961
961
|
}
|
|
@@ -964,12 +964,12 @@ class KritzelViewport {
|
|
|
964
964
|
handlePointerUp(event) {
|
|
965
965
|
if (event.pointerType === 'mouse') {
|
|
966
966
|
if (this._core.store.state.isPanning) {
|
|
967
|
-
this._core.store.
|
|
967
|
+
this._core.store.state.isPanning = false;
|
|
968
968
|
this._core.rerender();
|
|
969
969
|
}
|
|
970
970
|
}
|
|
971
971
|
if (event.pointerType === 'touch') {
|
|
972
|
-
this._core.store.
|
|
972
|
+
this._core.store.state.isScaling = false;
|
|
973
973
|
this._core.rerender();
|
|
974
974
|
}
|
|
975
975
|
}
|
|
@@ -982,33 +982,52 @@ class KritzelViewport {
|
|
|
982
982
|
this.handlePan(event);
|
|
983
983
|
}
|
|
984
984
|
}
|
|
985
|
+
centerInViewport(object) {
|
|
986
|
+
const { scale, viewportWidth, viewportHeight } = this._core.store.state;
|
|
987
|
+
const { x, y, width, height } = object.rotatedBoundingBox;
|
|
988
|
+
const objectCenterX = x + width / 2;
|
|
989
|
+
const objectCenterY = y + height / 2;
|
|
990
|
+
this._core.store.state.translateX = viewportWidth / 2 - objectCenterX * scale;
|
|
991
|
+
this._core.store.state.translateY = viewportHeight / 2 - objectCenterY * scale;
|
|
992
|
+
this._core.store.state.hasViewportChanged = true;
|
|
993
|
+
this._core.rerender();
|
|
994
|
+
this._core.updateWorkspaceViewport(this._core.store.state.translateX, this._core.store.state.translateY, this._core.store.state.scale);
|
|
995
|
+
}
|
|
996
|
+
centerFitInViewport(object) {
|
|
997
|
+
const scaleX = this._core.store.state.viewportWidth / (object.rotatedBoundingBox.width * 1.1);
|
|
998
|
+
const scaleY = this._core.store.state.viewportHeight / (object.rotatedBoundingBox.height * 1.1);
|
|
999
|
+
const newScale = Math.min(scaleX, scaleY, this._core.store.state.scaleMax);
|
|
1000
|
+
const clampedScale = Math.max(newScale, this._core.store.state.scaleMin);
|
|
1001
|
+
this._core.store.state.scale = clampedScale;
|
|
1002
|
+
this.centerInViewport(object);
|
|
1003
|
+
}
|
|
985
1004
|
handleZoom(event) {
|
|
986
|
-
this._core.store.
|
|
1005
|
+
this._core.store.state.isScaling = true;
|
|
987
1006
|
const rect = this._core.store.state.host.getBoundingClientRect();
|
|
988
1007
|
const xRelativeToHost = event.clientX - rect.left;
|
|
989
1008
|
const yRelativeToHost = event.clientY - rect.top;
|
|
990
|
-
this._core.store.
|
|
991
|
-
this._core.store.
|
|
1009
|
+
this._core.store.state.pointerX = (xRelativeToHost - this._core.store.state.translateX) / this._core.store.state.scale;
|
|
1010
|
+
this._core.store.state.pointerY = (yRelativeToHost - this._core.store.state.translateY) / this._core.store.state.scale;
|
|
992
1011
|
const delta = event.deltaY > 0 ? -this._core.store.state.scaleStep * this._core.store.state.scale : this._core.store.state.scaleStep * this._core.store.state.scale;
|
|
993
1012
|
const newScale = Math.min(this._core.store.state.scaleMax, Math.max(this._core.store.state.scaleMin, this._core.store.state.scale + delta));
|
|
994
1013
|
const scaleRatio = newScale / this._core.store.state.scale;
|
|
995
1014
|
const translateXAdjustment = (xRelativeToHost - this._core.store.state.translateX) * (scaleRatio - 1);
|
|
996
1015
|
const translateYAdjustment = (yRelativeToHost - this._core.store.state.translateY) * (scaleRatio - 1);
|
|
997
|
-
this._core.store.
|
|
998
|
-
this._core.store.
|
|
999
|
-
this._core.store.
|
|
1000
|
-
this._core.store.
|
|
1016
|
+
this._core.store.state.scale = newScale;
|
|
1017
|
+
this._core.store.state.translateX = this._core.store.state.translateX - translateXAdjustment;
|
|
1018
|
+
this._core.store.state.translateY = this._core.store.state.translateY - translateYAdjustment;
|
|
1019
|
+
this._core.store.state.hasViewportChanged = true;
|
|
1001
1020
|
this._core.rerender();
|
|
1002
1021
|
this._core.updateWorkspaceViewport(this._core.store.state.translateX, this._core.store.state.translateY, this._core.store.state.scale);
|
|
1003
1022
|
setTimeout(() => {
|
|
1004
|
-
this._core.store.
|
|
1023
|
+
this._core.store.state.isScaling = false;
|
|
1005
1024
|
}, 300);
|
|
1006
1025
|
}
|
|
1007
1026
|
handlePan(event) {
|
|
1008
1027
|
const panSpeed = 0.8;
|
|
1009
|
-
this._core.store.
|
|
1010
|
-
this._core.store.
|
|
1011
|
-
this._core.store.
|
|
1028
|
+
this._core.store.state.translateX = this._core.store.state.translateX - event.deltaX * panSpeed;
|
|
1029
|
+
this._core.store.state.translateY = this._core.store.state.translateY - event.deltaY * panSpeed;
|
|
1030
|
+
this._core.store.state.hasViewportChanged = true;
|
|
1012
1031
|
this._core.rerender();
|
|
1013
1032
|
this._core.updateWorkspaceViewport(this._core.store.state.translateX, this._core.store.state.translateY, this._core.store.state.scale);
|
|
1014
1033
|
}
|
|
@@ -1058,7 +1077,7 @@ class KritzelKeyHandler extends KritzelBaseHandler {
|
|
|
1058
1077
|
toolInstance.onActivate();
|
|
1059
1078
|
}
|
|
1060
1079
|
handleKeyDown(event) {
|
|
1061
|
-
this._core.store.
|
|
1080
|
+
this._core.store.state.isCtrlKeyPressed = event.ctrlKey;
|
|
1062
1081
|
const shortcut = this.shortcuts.find(s => s.key === event.key && !!s.ctrl === event.ctrlKey && !!s.shift === event.shiftKey && (!s.condition || s.condition(this._core)));
|
|
1063
1082
|
if (shortcut) {
|
|
1064
1083
|
event.preventDefault();
|
|
@@ -1066,7 +1085,7 @@ class KritzelKeyHandler extends KritzelBaseHandler {
|
|
|
1066
1085
|
}
|
|
1067
1086
|
}
|
|
1068
1087
|
handleKeyUp(event) {
|
|
1069
|
-
this._core.store.
|
|
1088
|
+
this._core.store.state.isCtrlKeyPressed = event.ctrlKey;
|
|
1070
1089
|
}
|
|
1071
1090
|
}
|
|
1072
1091
|
|
|
@@ -1083,23 +1102,30 @@ class KritzelContextMenuHandler extends KritzelBaseHandler {
|
|
|
1083
1102
|
return;
|
|
1084
1103
|
}
|
|
1085
1104
|
if (this._core.store.state.skipContextMenu) {
|
|
1086
|
-
this._core.store.
|
|
1105
|
+
this._core.store.state.skipContextMenu = false;
|
|
1087
1106
|
return;
|
|
1088
1107
|
}
|
|
1108
|
+
const selectionTool = this._core.store.state.activeTool;
|
|
1109
|
+
selectionTool?.moveHandler?.cancelPendingDrag();
|
|
1110
|
+
if (this._core.store.state.selectionBox) {
|
|
1111
|
+
this._core.store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox);
|
|
1112
|
+
this._core.store.state.selectionBox = null;
|
|
1113
|
+
this._core.store.state.isSelecting = false;
|
|
1114
|
+
}
|
|
1089
1115
|
const selectedObject = this._core.getObjectFromPointerEvent(event, '.object');
|
|
1090
|
-
if (selectedObject && !(selectedObject instanceof KritzelSelectionGroup)) {
|
|
1116
|
+
if (selectedObject && !(selectedObject instanceof KritzelSelectionGroup) && !(selectedObject instanceof KrtizelSelectionBox)) {
|
|
1091
1117
|
const selectionGroup = KritzelSelectionGroup.create(this._core);
|
|
1092
1118
|
selectionGroup.addOrRemove(selectedObject);
|
|
1093
1119
|
selectionGroup.isSelected = true;
|
|
1094
1120
|
selectionGroup.rotation = selectedObject.rotation;
|
|
1095
|
-
this._core.store.
|
|
1121
|
+
this._core.store.state.isSelecting = false;
|
|
1096
1122
|
const batch = new BatchCommand(this._core, this, [
|
|
1097
1123
|
new RemoveSelectionGroupCommand(this._core, this._core.store.state.selectionGroup),
|
|
1098
1124
|
new AddSelectionGroupCommand(this._core, this, selectionGroup),
|
|
1099
1125
|
]);
|
|
1100
1126
|
this._core.history.executeCommand(batch);
|
|
1101
1127
|
}
|
|
1102
|
-
this._core.store.
|
|
1128
|
+
this._core.store.state.contextMenuItems = this._core.store.state.selectionGroup ? this.objectContextMenuItems : this.globalContextMenuItems;
|
|
1103
1129
|
let x = event.clientX - this._core.store.offsetX;
|
|
1104
1130
|
let y = event.clientY - this._core.store.offsetY;
|
|
1105
1131
|
const menuWidthEstimate = 150;
|
|
@@ -1113,10 +1139,10 @@ class KritzelContextMenuHandler extends KritzelBaseHandler {
|
|
|
1113
1139
|
}
|
|
1114
1140
|
x = Math.max(margin, x);
|
|
1115
1141
|
y = Math.max(margin, y);
|
|
1116
|
-
this._core.store.
|
|
1117
|
-
this._core.store.
|
|
1118
|
-
this._core.store.
|
|
1119
|
-
this._core.store.
|
|
1142
|
+
this._core.store.state.contextMenuX = x;
|
|
1143
|
+
this._core.store.state.contextMenuY = y;
|
|
1144
|
+
this._core.store.state.isContextMenuVisible = true;
|
|
1145
|
+
this._core.store.state.isEnabled = false;
|
|
1120
1146
|
this._core.rerender();
|
|
1121
1147
|
}
|
|
1122
1148
|
}
|
|
@@ -1437,14 +1463,14 @@ class UpdateViewportCommand extends KritzelBaseCommand {
|
|
|
1437
1463
|
};
|
|
1438
1464
|
}
|
|
1439
1465
|
execute() {
|
|
1440
|
-
this._core.store.
|
|
1441
|
-
this._core.store.
|
|
1442
|
-
this._core.store.
|
|
1466
|
+
this._core.store.state.scale = this.currentViewport.scale;
|
|
1467
|
+
this._core.store.state.translateX = this.currentViewport.translateX;
|
|
1468
|
+
this._core.store.state.translateY = this.currentViewport.translateY;
|
|
1443
1469
|
}
|
|
1444
1470
|
undo() {
|
|
1445
|
-
this._core.store.
|
|
1446
|
-
this._core.store.
|
|
1447
|
-
this._core.store.
|
|
1471
|
+
this._core.store.state.scale = this.previousViewport.scale;
|
|
1472
|
+
this._core.store.state.translateX = this.previousViewport.translateX;
|
|
1473
|
+
this._core.store.state.translateY = this.previousViewport.translateY;
|
|
1448
1474
|
}
|
|
1449
1475
|
}
|
|
1450
1476
|
|
|
@@ -1542,7 +1568,7 @@ class KritzelHistory {
|
|
|
1542
1568
|
if (this._core.store.state.hasViewportChanged) {
|
|
1543
1569
|
const command = new UpdateViewportCommand(this._core, this, this.previousViewport);
|
|
1544
1570
|
command.undo();
|
|
1545
|
-
this._core.store.
|
|
1571
|
+
this._core.store.state.hasViewportChanged = false;
|
|
1546
1572
|
this._core.rerender();
|
|
1547
1573
|
return;
|
|
1548
1574
|
}
|
|
@@ -1553,7 +1579,7 @@ class KritzelHistory {
|
|
|
1553
1579
|
console.info('undo', command);
|
|
1554
1580
|
this.redoStack.add(command);
|
|
1555
1581
|
}
|
|
1556
|
-
this._core.store.
|
|
1582
|
+
this._core.store.state.copiedObjects = null;
|
|
1557
1583
|
this._core.rerender();
|
|
1558
1584
|
}
|
|
1559
1585
|
redo() {
|
|
@@ -1573,7 +1599,7 @@ class KritzelHistory {
|
|
|
1573
1599
|
if (this.redoStack.isEmpty() === false) {
|
|
1574
1600
|
this.redoStack.clear();
|
|
1575
1601
|
}
|
|
1576
|
-
this._core.store.
|
|
1602
|
+
this._core.store.state.hasViewportChanged = false;
|
|
1577
1603
|
this.previousViewport = {
|
|
1578
1604
|
scale: this._core.store.state.scale,
|
|
1579
1605
|
scaleStep: this._core.store.state.scaleStep,
|
|
@@ -1633,11 +1659,14 @@ class KritzelStore {
|
|
|
1633
1659
|
return this._state;
|
|
1634
1660
|
}
|
|
1635
1661
|
get currentZIndex() {
|
|
1636
|
-
return this._state.objectsMap.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).
|
|
1662
|
+
return Math.max(0, ...this._state.objectsMap.filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox)).map(o => o.zIndex)) + 1;
|
|
1637
1663
|
}
|
|
1638
1664
|
get allObjects() {
|
|
1639
1665
|
return this._state.objectsMap.allObjects();
|
|
1640
1666
|
}
|
|
1667
|
+
get allNonSelectionObjects() {
|
|
1668
|
+
return this._state.objectsMap.allObjects().filter(o => !(o instanceof KritzelSelectionGroup) && !(o instanceof KrtizelSelectionBox));
|
|
1669
|
+
}
|
|
1641
1670
|
get selectedObjects() {
|
|
1642
1671
|
return this.allObjects.filter(o => !(o instanceof KritzelSelectionGroup)).filter(o => o.isSelected);
|
|
1643
1672
|
}
|
|
@@ -1711,18 +1740,21 @@ class KritzelCore {
|
|
|
1711
1740
|
const workspaces = await this.getWorkspaces();
|
|
1712
1741
|
const mostRecentWorkspace = [...workspaces].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())[0];
|
|
1713
1742
|
const fallbackWorkspace = new KritzelWorkspace(ObjectHelper.generateUUID(), 'New Workspace');
|
|
1714
|
-
|
|
1715
|
-
const
|
|
1716
|
-
if (
|
|
1743
|
+
const candidateWorkspace = workspace ?? mostRecentWorkspace ?? fallbackWorkspace;
|
|
1744
|
+
const existingWorkspace = await this.getWorkspace(candidateWorkspace.id);
|
|
1745
|
+
if (existingWorkspace) {
|
|
1746
|
+
this._store.state.activeWorkspace = existingWorkspace;
|
|
1717
1747
|
await this.updateWorkspace(this._store.state.activeWorkspace);
|
|
1718
1748
|
}
|
|
1719
1749
|
else {
|
|
1750
|
+
this._store.state.activeWorkspace = candidateWorkspace;
|
|
1720
1751
|
await this.createWorkspace(this._store.state.activeWorkspace);
|
|
1721
1752
|
}
|
|
1722
|
-
this._store.
|
|
1723
|
-
|
|
1724
|
-
this._store.
|
|
1725
|
-
this._store.
|
|
1753
|
+
this._store.state.workspaces = await this.getWorkspaces();
|
|
1754
|
+
const viewport = this._store.state.activeWorkspace.viewport ?? { translateX: 0, translateY: 0, scale: 1 };
|
|
1755
|
+
this._store.state.translateX = viewport.translateX ?? 0;
|
|
1756
|
+
this._store.state.translateY = viewport.translateY ?? 0;
|
|
1757
|
+
this._store.state.scale = viewport.scale ?? 1;
|
|
1726
1758
|
await this.initializeWorkspaceObjects(this._store.state.activeWorkspace.id);
|
|
1727
1759
|
}
|
|
1728
1760
|
async initializeWorkspaceObjects(workspaceId) {
|
|
@@ -1817,7 +1849,7 @@ class KritzelCore {
|
|
|
1817
1849
|
const index = workspaces.findIndex(w => w.id === workspace.id);
|
|
1818
1850
|
if (index !== -1) {
|
|
1819
1851
|
workspaces[index] = workspace;
|
|
1820
|
-
this._store.
|
|
1852
|
+
this._store.state.workspaces = workspaces;
|
|
1821
1853
|
}
|
|
1822
1854
|
}
|
|
1823
1855
|
async deleteWorkspace(workspace) {
|
|
@@ -1827,7 +1859,7 @@ class KritzelCore {
|
|
|
1827
1859
|
const objectRange = IDBKeyRange.bound([workspace.id], [workspace.id, '\uffff']);
|
|
1828
1860
|
await this._database.deleteByRange('objects', objectRange);
|
|
1829
1861
|
await this._database.delete('workspaces', workspace.id);
|
|
1830
|
-
this._store.
|
|
1862
|
+
this._store.state.workspaces = this._store.state.workspaces.filter(ws => ws.id !== workspace.id);
|
|
1831
1863
|
}
|
|
1832
1864
|
rerender() {
|
|
1833
1865
|
if (this._kritzelEngine) {
|
|
@@ -1864,18 +1896,27 @@ class KritzelCore {
|
|
|
1864
1896
|
}
|
|
1865
1897
|
}
|
|
1866
1898
|
copy() {
|
|
1867
|
-
this._store.
|
|
1899
|
+
this._store.state.copiedObjects = this._store.state.selectionGroup.copy();
|
|
1868
1900
|
}
|
|
1869
1901
|
paste(x, y) {
|
|
1870
1902
|
const copiedObjects = this._store.state.copiedObjects;
|
|
1871
1903
|
copiedObjects.isSelected = true;
|
|
1872
|
-
this._store.
|
|
1904
|
+
this._store.state.copiedObjects = copiedObjects;
|
|
1873
1905
|
const adjustedX = x !== undefined ? x : this._store.state.copiedObjects.translateX + 25 / this._store.state.scale;
|
|
1874
1906
|
const adjustedY = y !== undefined ? y : this._store.state.copiedObjects.translateY + 25 / this._store.state.scale;
|
|
1875
1907
|
this._store.state.copiedObjects.updatePosition(adjustedX, adjustedY);
|
|
1908
|
+
this._store.state.copiedObjects.updateZIndices(this._store.currentZIndex);
|
|
1876
1909
|
const activeWorkspace = this._store.state.activeWorkspace;
|
|
1877
|
-
this.store.state.copiedObjects.
|
|
1878
|
-
|
|
1910
|
+
if (this.store.state.copiedObjects.workspaceId !== activeWorkspace.id) {
|
|
1911
|
+
this.store.state.copiedObjects.updateWorkspaceId(activeWorkspace.id);
|
|
1912
|
+
if (x !== undefined && y !== undefined) {
|
|
1913
|
+
this._store.state.copiedObjects.updatePosition(x, y);
|
|
1914
|
+
}
|
|
1915
|
+
else {
|
|
1916
|
+
this.store.state.copiedObjects.centerInViewport();
|
|
1917
|
+
}
|
|
1918
|
+
this.engine.viewport.centerFitInViewport(copiedObjects);
|
|
1919
|
+
}
|
|
1879
1920
|
const commands = [];
|
|
1880
1921
|
let previousSelectionGroup = null;
|
|
1881
1922
|
if (this._store.state.selectionGroup !== null) {
|
|
@@ -1886,13 +1927,14 @@ class KritzelCore {
|
|
|
1886
1927
|
const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this._store.state.copiedObjects, previousSelectionGroup);
|
|
1887
1928
|
commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);
|
|
1888
1929
|
this.history.executeCommand(new BatchCommand(this, this, commands));
|
|
1889
|
-
this._store.
|
|
1890
|
-
this._store.
|
|
1930
|
+
this._store.state.isSelecting = false;
|
|
1931
|
+
this._store.state.copiedObjects = this._store.state.selectionGroup.copy();
|
|
1891
1932
|
this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
|
|
1892
1933
|
}
|
|
1893
1934
|
bringForward(object) {
|
|
1894
|
-
const max = this._store.allObjects.length + 1;
|
|
1895
1935
|
const objects = object ? [object] : this._store.state.selectionGroup.objects;
|
|
1936
|
+
const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
|
|
1937
|
+
const max = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1 : 0;
|
|
1896
1938
|
const increaseZIndexCommands = objects.map(obj => {
|
|
1897
1939
|
if (obj.zIndex === max) {
|
|
1898
1940
|
return;
|
|
@@ -1902,8 +1944,9 @@ class KritzelCore {
|
|
|
1902
1944
|
this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
|
|
1903
1945
|
}
|
|
1904
1946
|
sendBackward(object) {
|
|
1905
|
-
const min = 0;
|
|
1906
1947
|
const objects = object ? [object] : this._store.state.selectionGroup.objects;
|
|
1948
|
+
const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
|
|
1949
|
+
const min = allNonSelectionObjectsWithoutCurrent.length > 0 ? Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1 : 0;
|
|
1907
1950
|
const decreaseZIndexCommands = objects.map(obj => {
|
|
1908
1951
|
if (obj.zIndex === min) {
|
|
1909
1952
|
return;
|
|
@@ -1913,16 +1956,18 @@ class KritzelCore {
|
|
|
1913
1956
|
this.history.executeCommand(new BatchCommand(this, this, decreaseZIndexCommands));
|
|
1914
1957
|
}
|
|
1915
1958
|
bringToFront(object) {
|
|
1916
|
-
const max = Math.max(...this._store.allObjects.map(obj => obj.zIndex)) + 1;
|
|
1917
1959
|
const objects = object ? [object] : this._store.state.selectionGroup.objects;
|
|
1960
|
+
const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
|
|
1961
|
+
const max = Math.max(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) + 1;
|
|
1918
1962
|
const increaseZIndexCommands = objects.map(obj => {
|
|
1919
1963
|
return new UpdateObjectCommand(this, this, obj, { zIndex: max });
|
|
1920
1964
|
});
|
|
1921
1965
|
this.history.executeCommand(new BatchCommand(this, this, increaseZIndexCommands));
|
|
1922
1966
|
}
|
|
1923
1967
|
sendToBack(object) {
|
|
1924
|
-
const min = Math.min(...this._store.allObjects.map(obj => obj.zIndex)) - 1;
|
|
1925
1968
|
const objects = object ? [object] : this._store.state.selectionGroup.objects;
|
|
1969
|
+
const allNonSelectionObjectsWithoutCurrent = this._store.allNonSelectionObjects.filter(o => objects.findIndex(obj => obj.id === o.id) === -1);
|
|
1970
|
+
const min = Math.min(...allNonSelectionObjectsWithoutCurrent.map(obj => obj.zIndex)) - 1;
|
|
1926
1971
|
const decreaseZIndexCommands = objects.map(obj => {
|
|
1927
1972
|
return new UpdateObjectCommand(this, this, obj, { zIndex: min });
|
|
1928
1973
|
});
|
|
@@ -1938,7 +1983,7 @@ class KritzelCore {
|
|
|
1938
1983
|
selectionGroup.addOrRemove(obj);
|
|
1939
1984
|
});
|
|
1940
1985
|
selectionGroup.isSelected = true;
|
|
1941
|
-
this._store.
|
|
1986
|
+
this._store.state.selectionBox = selectionGroup;
|
|
1942
1987
|
if (objects.length === 1) {
|
|
1943
1988
|
selectionGroup.rotation = selectionGroup.objects[0].rotation;
|
|
1944
1989
|
}
|
|
@@ -1955,7 +2000,7 @@ class KritzelCore {
|
|
|
1955
2000
|
selectionGroup.addOrRemove(obj);
|
|
1956
2001
|
});
|
|
1957
2002
|
selectionGroup.isSelected = true;
|
|
1958
|
-
this._store.
|
|
2003
|
+
this._store.state.isSelecting = false;
|
|
1959
2004
|
if (objectsInViewport.length === 1) {
|
|
1960
2005
|
selectionGroup.rotation = selectionGroup.objects[0].rotation;
|
|
1961
2006
|
}
|
|
@@ -1966,18 +2011,18 @@ class KritzelCore {
|
|
|
1966
2011
|
clearSelection() {
|
|
1967
2012
|
const command = new RemoveSelectionGroupCommand(this, this._store.state.selectionGroup);
|
|
1968
2013
|
this.history.executeCommand(command);
|
|
1969
|
-
this._store.
|
|
1970
|
-
this._store.
|
|
1971
|
-
this._store.
|
|
1972
|
-
this._store.
|
|
1973
|
-
this._store.
|
|
2014
|
+
this._store.state.selectionGroup = null;
|
|
2015
|
+
this._store.state.selectionBox = null;
|
|
2016
|
+
this._store.state.isSelecting = false;
|
|
2017
|
+
this._store.state.isResizeHandleSelected = false;
|
|
2018
|
+
this._store.state.isRotationHandleSelected = false;
|
|
1974
2019
|
this.rerender();
|
|
1975
2020
|
}
|
|
1976
2021
|
resetActiveText() {
|
|
1977
2022
|
if (this._store.state.activeText && this._store.state.activeText.value === ' ') {
|
|
1978
2023
|
this.deleteObject(this._store.state.activeText.id, true);
|
|
1979
2024
|
}
|
|
1980
|
-
this._store.
|
|
2025
|
+
this._store.state.activeText = null;
|
|
1981
2026
|
}
|
|
1982
2027
|
getObjectFromPointerEvent(event, selector = '.object') {
|
|
1983
2028
|
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
@@ -2050,10 +2095,10 @@ const KritzelEngine = class {
|
|
|
2050
2095
|
if (newValue > ABSOLUTE_SCALE_MAX) {
|
|
2051
2096
|
console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);
|
|
2052
2097
|
this.scaleMax = ABSOLUTE_SCALE_MAX;
|
|
2053
|
-
this.core.store.
|
|
2098
|
+
this.core.store.state.scaleMax = this.scaleMax;
|
|
2054
2099
|
}
|
|
2055
2100
|
else {
|
|
2056
|
-
this.core.store.
|
|
2101
|
+
this.core.store.state.scaleMax = newValue;
|
|
2057
2102
|
}
|
|
2058
2103
|
}
|
|
2059
2104
|
scaleMin = ABSOLUTE_SCALE_MIN;
|
|
@@ -2061,10 +2106,10 @@ const KritzelEngine = class {
|
|
|
2061
2106
|
if (newValue < ABSOLUTE_SCALE_MIN) {
|
|
2062
2107
|
console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);
|
|
2063
2108
|
this.scaleMin = ABSOLUTE_SCALE_MIN;
|
|
2064
|
-
this.core.store.
|
|
2109
|
+
this.core.store.state.scaleMin = this.scaleMin;
|
|
2065
2110
|
}
|
|
2066
2111
|
else {
|
|
2067
|
-
this.core.store.
|
|
2112
|
+
this.core.store.state.scaleMin = newValue;
|
|
2068
2113
|
}
|
|
2069
2114
|
}
|
|
2070
2115
|
isEngineReady;
|
|
@@ -2171,11 +2216,11 @@ const KritzelEngine = class {
|
|
|
2171
2216
|
tool?.onActivate();
|
|
2172
2217
|
}
|
|
2173
2218
|
async disable() {
|
|
2174
|
-
this.core.store.
|
|
2219
|
+
this.core.store.state.isEnabled = false;
|
|
2175
2220
|
this.core.rerender();
|
|
2176
2221
|
}
|
|
2177
2222
|
async enable() {
|
|
2178
|
-
this.core.store.
|
|
2223
|
+
this.core.store.state.isEnabled = true;
|
|
2179
2224
|
this.core.rerender();
|
|
2180
2225
|
}
|
|
2181
2226
|
async delete() {
|
|
@@ -2207,10 +2252,10 @@ const KritzelEngine = class {
|
|
|
2207
2252
|
}
|
|
2208
2253
|
async hideContextMenu() {
|
|
2209
2254
|
this.core.store.state.pointers.clear();
|
|
2210
|
-
this.core.store.
|
|
2211
|
-
this.core.store.
|
|
2212
|
-
this.core.store.
|
|
2213
|
-
this.core.store.
|
|
2255
|
+
this.core.store.state.isContextMenuVisible = false;
|
|
2256
|
+
this.core.store.state.selectionBox = null;
|
|
2257
|
+
this.core.store.state.isSelecting = false;
|
|
2258
|
+
this.core.store.state.isEnabled = true;
|
|
2214
2259
|
this.core.rerender();
|
|
2215
2260
|
}
|
|
2216
2261
|
async getObjectById(id) {
|
|
@@ -2317,7 +2362,7 @@ const KritzelEngine = class {
|
|
|
2317
2362
|
await this.core.initializeWorkspace(this.workspace);
|
|
2318
2363
|
this._registerStateChangeListeners();
|
|
2319
2364
|
if (this.core.store.state.isReady === false) {
|
|
2320
|
-
this.core.store.
|
|
2365
|
+
this.core.store.state.isReady = true;
|
|
2321
2366
|
this.isEngineReady.emit(this.core.store.state);
|
|
2322
2367
|
}
|
|
2323
2368
|
}
|
|
@@ -2328,8 +2373,8 @@ const KritzelEngine = class {
|
|
|
2328
2373
|
if (!(activeTool instanceof KritzelSelectionTool)) {
|
|
2329
2374
|
this.core.clearSelection();
|
|
2330
2375
|
}
|
|
2331
|
-
this.core.store.
|
|
2332
|
-
this.core.store.
|
|
2376
|
+
this.core.store.state.skipContextMenu = false;
|
|
2377
|
+
this.core.store.state.copiedObjects = null;
|
|
2333
2378
|
this.activeToolChange.emit(activeTool);
|
|
2334
2379
|
KritzelKeyboardHelper.forceHideKeyboard();
|
|
2335
2380
|
}
|
|
@@ -2338,7 +2383,9 @@ const KritzelEngine = class {
|
|
|
2338
2383
|
const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
|
|
2339
2384
|
const baseHandleSize = parseFloat(baseHandleSizePx);
|
|
2340
2385
|
const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
|
|
2341
|
-
|
|
2386
|
+
const viewportCenterX = (this.core.store.state.viewportWidth / 2) + this.core.store.state.translateX;
|
|
2387
|
+
const viewportCenterY = (this.core.store.state.viewportHeight / 2) + this.core.store.state.translateY;
|
|
2388
|
+
return (h(Host, { key: 'e14b9b0d5ece944a28dbdfd55cd15d3889d344ca' }, h("div", { key: '5bb0cf225392a46c81ccc3fc9cecf08ccf5451dd', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '49c54b5c2cf67a3bf98319a87cc6bf43738e260a' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), h("div", { key: 'c094fbdee828a5699901e5ba09981fdd2970533a' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), h("div", { key: '0b260c50045a2dc90f5131bdec5007c5260f435f' }, "TranslateX: ", this.core.store.state?.translateX), h("div", { key: '36ac3660b4dbc902cc6ec4c042f63b03a8b5f38e' }, "TranslateY: ", this.core.store.state?.translateY), h("div", { key: '4d74e2b8b8df35a8f2423e8210662d614e98c9f3' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), h("div", { key: '2c583b35f9b975191bd30f5bcc44a847d442a75b' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), h("div", { key: 'b8f4de7566c250e637f7fb161ee5d4afcf55a862' }, "Scale: ", this.core.store.state?.scale), h("div", { key: '615063733b8a598d24c090397cbda94196f77861' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), h("div", { key: '66f5d805c6a824bccef568b137a4674007050a1e' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: '91f0313f2cfbc7f123be53d8611d0e5f3cfadfae' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: '944af3ec28b0e7dcf4696477adbd3182d2371196' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), h("div", { key: '82cfb1b949a3612f786a2d41074286996c9b18e7' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), h("div", { key: '743ced0847a98b34c404216e888fc24445e291d5' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '56f7de0f7eb99ee11f4e9c30f14b961c6498415a' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '41c55a52a4a3cb1a04e0bb0249e7095a57c52f78' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: 'f02fbeae6e0e0cb9aca887314f4a5753712373fa' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '1ff7b7f138a51c5cc16894483c908f7bde31be40' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), h("div", { key: '25b4a1c609dc968e70636fcf73d330996a137342' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), h("div", { key: 'd9de8d6553664633a0462130ee71fbbb80984ff4' }, "PointerX: ", this.core.store.state?.pointerX), h("div", { key: '3f7d3604c3da89fc3c98fb4704474d41773a51fa' }, "PointerY: ", this.core.store.state?.pointerY), h("div", { key: 'e32a4265b7ca234766e4ceb5d98c7898917423ef' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0), h("div", { key: 'c0d4bd0aab851c1ab4c1b1d2fd99db7397538dcd' }, "ViewportCenter: (", viewportCenterX.toFixed(2), ", ", viewportCenterY.toFixed(2), ")")), h("div", { key: '47cdf9bd5ae9e88ac39376852b4fcf8ebbf44626', id: "origin", class: "origin", style: {
|
|
2342
2389
|
transform: `matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`,
|
|
2343
2390
|
} }, this.core.store.state.objectsMap.allObjects()?.map(object => {
|
|
2344
2391
|
return (h("div", { key: object.id, style: {
|
|
@@ -2457,7 +2504,7 @@ const KritzelEngine = class {
|
|
|
2457
2504
|
transform: this.core.store.state.currentPath?.transformationMatrix,
|
|
2458
2505
|
transformOrigin: 'top left',
|
|
2459
2506
|
overflow: 'visible',
|
|
2460
|
-
}, viewBox: this.core.store.state.currentPath?.viewBox }, h("path", { key: '
|
|
2507
|
+
}, viewBox: this.core.store.state.currentPath?.viewBox }, h("path", { key: '318e360ef363dd90e613e2bc35233d6b045fe6df', d: this.core.store.state.currentPath?.d, fill: this.core.store.state.currentPath?.fill, stroke: this.core.store.state.currentPath?.stroke }))), this.core.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '455cd5c01932246ef318e83934b7869edd063a99', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: this.core.store.state.selectionGroup?.objects || [], style: {
|
|
2461
2508
|
position: 'fixed',
|
|
2462
2509
|
left: `${this.core.store.state.contextMenuX}px`,
|
|
2463
2510
|
top: `${this.core.store.state.contextMenuY}px`,
|
|
@@ -2468,7 +2515,7 @@ const KritzelEngine = class {
|
|
|
2468
2515
|
y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,
|
|
2469
2516
|
}, this.core.store.state.selectionGroup?.objects);
|
|
2470
2517
|
this.hideContextMenu();
|
|
2471
|
-
}, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: '
|
|
2518
|
+
}, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: 'a70d8765402f0938e9df4c1cc2f8c9a13dfa4445', core: this.core })));
|
|
2472
2519
|
}
|
|
2473
2520
|
static get watchers() { return {
|
|
2474
2521
|
"workspace": ["onWorkspaceChange"],
|
|
@@ -2488,7 +2535,7 @@ const KritzelFont = class {
|
|
|
2488
2535
|
size = 24;
|
|
2489
2536
|
color = '#000000';
|
|
2490
2537
|
render() {
|
|
2491
|
-
return (h(Host, { key: '
|
|
2538
|
+
return (h(Host, { key: '0a6f1d1326e9dde84a4122d79f75dc1c75ffe0fb' }, h("div", { key: '88a342d01c4150cd4fc5dacca23f7b9904edca52', class: "font-preview", style: {
|
|
2492
2539
|
fontFamily: this.fontFamily,
|
|
2493
2540
|
fontSize: `${this.size}px`,
|
|
2494
2541
|
color: this.color
|
|
@@ -2535,7 +2582,7 @@ const KritzelFontFamily = class {
|
|
|
2535
2582
|
label: option.label,
|
|
2536
2583
|
style: { fontFamily: option.value },
|
|
2537
2584
|
}));
|
|
2538
|
-
return (h(Host, { key: '
|
|
2585
|
+
return (h(Host, { key: '27d14ddb4a57b9cd7b936047b6ea6a9251a1ab27' }, h("kritzel-dropdown", { key: '20ea042c9a907dc1ac5e16a589a8856f87389e36', options: dropdownOptions, value: this.selectedFontFamily, onValueChanged: this.handleDropdownValueChange, selectStyles: { fontFamily: this.selectedFontFamily } }, h("button", { key: 'f63fed16477a327aadaeb54feefe35df1780e37d', class: "font-style-button", slot: "suffix" }, "B"), h("button", { key: '13b3089606c2e83b256ed2cec6513a9911016754', class: "font-style-button italic-text", slot: "suffix" }, "I"))));
|
|
2539
2586
|
}
|
|
2540
2587
|
};
|
|
2541
2588
|
KritzelFontFamily.style = kritzelFontFamilyCss;
|
|
@@ -2556,7 +2603,7 @@ const KritzelFontSize = class {
|
|
|
2556
2603
|
this.sizeChange.emit(size);
|
|
2557
2604
|
}
|
|
2558
2605
|
render() {
|
|
2559
|
-
return (h(Host, { key: '
|
|
2606
|
+
return (h(Host, { key: '9f3d851d443352f7437116cf91eff8d8de41e322' }, this.sizes.map(size => (h("div", { class: {
|
|
2560
2607
|
'size-container': true,
|
|
2561
2608
|
'selected': this.selectedSize === size,
|
|
2562
2609
|
}, onClick: () => this.handleSizeClick(size) }, h("kritzel-font", { fontFamily: this.fontFamily, size: size }))))));
|
|
@@ -2651,7 +2698,7 @@ const KritzelMenu = class {
|
|
|
2651
2698
|
this.itemCloseChildMenu.emit(event.detail);
|
|
2652
2699
|
};
|
|
2653
2700
|
render() {
|
|
2654
|
-
return (h(Host, { key: '
|
|
2701
|
+
return (h(Host, { key: 'be122cb0ecff3227d9e69997de76a73940a61860', tabIndex: 0, onClick: e => e.stopPropagation() }, this.openChildMenuItem && h("div", { key: 'ae10bec61e5c5e1a29b444cb7378f15c6692f3b6', class: "has-open-child-overlay", onClick: this.onOverlayClick }), this.items.map(item => (h("kritzel-menu-item", { key: item.id, item: item, parent: this.parent, style: { pointerEvents: this.editingMenuItem && !item.isEditing ? 'none' : 'auto' }, onItemSelect: this.handleItemSelect, onItemSave: this.handleSave, onItemCancel: this.handleCancel, onItemToggleChildMenu: this.handleToggleChildMenu, onItemCloseChildMenu: this.handleCloseChildMenu })))));
|
|
2655
2702
|
}
|
|
2656
2703
|
};
|
|
2657
2704
|
KritzelMenu.style = kritzelMenuCss;
|
|
@@ -2752,12 +2799,12 @@ const KritzelMenuItem = class {
|
|
|
2752
2799
|
];
|
|
2753
2800
|
}
|
|
2754
2801
|
render() {
|
|
2755
|
-
return (h(Host, { key: '
|
|
2802
|
+
return (h(Host, { key: '9df3acdaff753e3ed910f848c98e8ad73e2b5f5c', tabIndex: this.item.isDisabled ? -1 : 0, class: {
|
|
2756
2803
|
'selected': this.item.isSelected,
|
|
2757
2804
|
'editing': this.item.isEditing,
|
|
2758
2805
|
'disabled': this.item.isDisabled,
|
|
2759
2806
|
'child-open': this.item.isChildMenuOpen,
|
|
2760
|
-
}, onClick: this.handleItemSelect }, h("div", { key: '
|
|
2807
|
+
}, onClick: this.handleItemSelect }, h("div", { key: 'bb73e5c0c3dd87efabcaa0b53d20c7c477b34aa1', class: "menu-item-overlay" }), this.item.isEditing ? this.renderEditMode() : this.renderViewMode()));
|
|
2761
2808
|
}
|
|
2762
2809
|
static get watchers() { return {
|
|
2763
2810
|
"item": ["onItemChange"]
|
|
@@ -2998,7 +3045,7 @@ const KritzelPortal = class {
|
|
|
2998
3045
|
this.portal.style.left = `${left}px`;
|
|
2999
3046
|
}
|
|
3000
3047
|
render() {
|
|
3001
|
-
return (h(Host, { key: '
|
|
3048
|
+
return (h(Host, { key: '9c5cdf7126ff1148dd2364cce9d2524862e27d13', style: { display: this.anchor ? 'block' : 'none' } }, h("slot", { key: '209a77246fedcea0c24882605487452ff5cc62ce' })));
|
|
3002
3049
|
}
|
|
3003
3050
|
static get watchers() { return {
|
|
3004
3051
|
"anchor": ["anchorChanged"]
|
|
@@ -3098,7 +3145,7 @@ const KritzelSplitButton = class {
|
|
|
3098
3145
|
this.menuScrollTop = event.target.scrollTop;
|
|
3099
3146
|
};
|
|
3100
3147
|
render() {
|
|
3101
|
-
return (h(Host, { key: '
|
|
3148
|
+
return (h(Host, { key: '4ff7809dd62c1dd60600fda592aeac43cd9bc74c', class: { mobile: this.isTouchDevice } }, h("button", { key: 'db6485fabcffdd75a25d178aca7b653af499a90c', class: "split-main-button", tabIndex: 0, onClick: this.handleButtonClick, disabled: this.mainButtonDisabled }, this.buttonIcon && h("kritzel-icon", { key: '4001a4e23ef53bec2a578310de8c8b593d7b266c', name: this.buttonIcon })), h("div", { key: '8ff86d3c01a48b06afca77dd066518efa3589cb1', class: "split-divider" }), h("button", { key: 'f1c40edbec3756a7f3681de4e8d0f1981dd312a4', ref: el => (this.splitMenuButtonRef = el), class: "split-menu-button", tabIndex: 0, onClick: this.toggleMenu, disabled: this.menuButtonDisabled }, h("kritzel-icon", { key: '0ddb89976632ae7454e66504f8bab3fd5072c252', name: this.dropdownIcon })), h("kritzel-portal", { key: '64531ffd6ac847fd1a99e32aceefea9f18088992', anchor: this.anchorElement, offsetY: 4, onClose: this.closeMenu }, h("kritzel-menu", { key: 'f3b86cb71e5ba39e8f98e26b3669416e2cdb4802', ref: el => (this.menuRef = el), items: this.items, onItemSelect: this.handleItemSelect, onItemSave: this.handleItemSave, onItemCancel: this.handleItemCancel, onItemToggleChildMenu: this.handleItemToggleChildMenu, onItemCloseChildMenu: this.handleItemCloseChildMenu, onClose: this.closeMenu, onScroll: this.handleScroll }))));
|
|
3102
3149
|
}
|
|
3103
3150
|
};
|
|
3104
3151
|
KritzelSplitButton.style = kritzelSplitButtonCss;
|
|
@@ -3118,7 +3165,7 @@ const KritzelStrokeSize = class {
|
|
|
3118
3165
|
this.sizeChange.emit(size);
|
|
3119
3166
|
}
|
|
3120
3167
|
render() {
|
|
3121
|
-
return (h(Host, { key: '
|
|
3168
|
+
return (h(Host, { key: '74579e34c23725e22927afe371c1f7925903720a' }, this.sizes.map(size => (h("div", { tabIndex: 0, class: {
|
|
3122
3169
|
'size-container': true,
|
|
3123
3170
|
'selected': this.selectedSize === size,
|
|
3124
3171
|
}, onClick: () => this.handleSizeClick(size) }, h("kritzel-color", { value: '#000000', size: size }))))));
|
|
@@ -3195,23 +3242,23 @@ const KritzelTooltip = class {
|
|
|
3195
3242
|
}
|
|
3196
3243
|
}
|
|
3197
3244
|
render() {
|
|
3198
|
-
return (h(Host, { key: '
|
|
3245
|
+
return (h(Host, { key: '72a6356a43a15a7abc9a46b0d22c3c62217791e8', style: {
|
|
3199
3246
|
position: 'fixed',
|
|
3200
3247
|
zIndex: '9999',
|
|
3201
3248
|
transition: 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out',
|
|
3202
3249
|
visibility: this.isVisible ? 'visible' : 'hidden',
|
|
3203
3250
|
left: !this.isMobileView ? `${this.positionX}px` : '50%',
|
|
3204
3251
|
marginBottom: `${this.offsetY + this.arrowSize}px`,
|
|
3205
|
-
} }, h("div", { key: '
|
|
3252
|
+
} }, h("div", { key: '75f5350f23ada0eee009279eddd7d25273ad3740', class: "tooltip-content", onClick: event => event.stopPropagation() }, h("slot", { key: 'ad999154289e933cac1fdc13392de2aec78811a8' }), h("div", { key: '6be3f5c24d42898920c339be2cd2f3dd8a82fa80', class: "tooltip-arrow-wrapper", style: {
|
|
3206
3253
|
position: 'fixed',
|
|
3207
3254
|
left: this.arrowOffset,
|
|
3208
3255
|
bottom: `-${this.arrowSize * 2}px`,
|
|
3209
|
-
} }, h("div", { key: '
|
|
3256
|
+
} }, h("div", { key: '37397c6245dd6b0def23e2611d118e0c4f5860ef', class: "tooltip-arrow", style: {
|
|
3210
3257
|
borderLeft: `${this.arrowSize}px solid transparent`,
|
|
3211
3258
|
borderRight: `${this.arrowSize}px solid transparent`,
|
|
3212
3259
|
borderTop: `${this.arrowSize}px solid var(--kritzel-controls-tooltip-background-color, #ffffff)`,
|
|
3213
3260
|
filter: 'drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2))',
|
|
3214
|
-
} }), h("div", { key: '
|
|
3261
|
+
} }), h("div", { key: 'dbf009c371d46ef0a36e27771758c66e817d9b22', class: "tooltip-arrow-rect", style: {
|
|
3215
3262
|
position: 'relative',
|
|
3216
3263
|
width: `${this.arrowSize * 2}px`,
|
|
3217
3264
|
height: `${this.arrowSize}px`,
|
|
@@ -3247,7 +3294,7 @@ const KritzelUtilityPanel = class {
|
|
|
3247
3294
|
this.redo.emit();
|
|
3248
3295
|
}
|
|
3249
3296
|
render() {
|
|
3250
|
-
return (h(Host, { key: '
|
|
3297
|
+
return (h(Host, { key: '8e2eb13668d8787827b10cee7c9daf2abdecc2c6' }, h("button", { key: '0773e7ef81bc972ba589333f4ac7e85d98737770', class: "utility-button", onClick: event => this.handleUndo(event) }, h("kritzel-icon", { key: 'fa69c1a2535d44bfb871a4d719079d0f900cc6c7', name: "undo" })), h("button", { key: 'edc28968f3ec92467d6b4aaa095a71770413d657', class: "utility-button", onClick: event => this.handleRedo(event) }, h("kritzel-icon", { key: 'd4cf72e2bda411fe9942d473c5e1ceae62a76074', name: "redo" })), h("div", { key: '8927237c6099a147495564657cdef97e7d35d7c1', class: "utility-separator" }), h("button", { key: 'e089819f7dd870165130322c3c4a9d754d4ed023', class: "utility-button" }, h("kritzel-icon", { key: 'a143770d1b3f8fdbe5c5b36c5d7eaab511cd8a4b', name: "delete", onClick: () => this.delete.emit() }))));
|
|
3251
3298
|
}
|
|
3252
3299
|
};
|
|
3253
3300
|
KritzelUtilityPanel.style = kritzelUtilityPanelCss;
|