kritzel-stencil 0.0.139 → 0.0.141
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-BKstgWru.js +16981 -0
- package/dist/cjs/index-BKstgWru.js.map +1 -0
- package/dist/cjs/{index-nzUNdMPh.js → index-DcTwXs_q.js} +47 -22
- package/dist/cjs/index-DcTwXs_q.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
- package/dist/cjs/kritzel-color_22.cjs.entry.js +205 -157
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/stencil.cjs.js +3 -3
- package/dist/cjs/stencil.cjs.js.map +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 +52 -29
- 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 +4 -4
- 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 +123 -75
- 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 +8 -10
- package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -2
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +5 -9
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +21 -8
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +30 -38
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -2
- package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +5 -5
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +4 -5
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +1 -1
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +5 -6
- package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +4 -4
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +3 -4
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +3 -4
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
- package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +5 -5
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +1 -3
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +2 -4
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -1
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +6 -7
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +5 -6
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +2 -3
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +1 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +7 -8
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -3
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +3 -4
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +3 -4
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +1 -1
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +4 -6
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +1 -1
- 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 -3
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
- package/dist/components/index.js +3 -3
- package/dist/components/kritzel-brush-style.js +4 -4
- 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 +26 -26
- 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-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-BlPlPpUy.js → p-BEKicPnH.js} +4 -4
- package/dist/components/{p-BlPlPpUy.js.map → p-BEKicPnH.js.map} +1 -1
- package/dist/components/{p-DCx3703u.js → p-BFNwskCY.js} +5 -5
- package/dist/components/{p-DCx3703u.js.map → p-BFNwskCY.js.map} +1 -1
- package/dist/components/{p-BorT6g39.js → p-BJbN3vca.js} +7 -7
- package/dist/components/{p-BorT6g39.js.map → p-BJbN3vca.js.map} +1 -1
- package/dist/components/p-BuDVaqTF.js +15302 -0
- package/dist/components/p-BuDVaqTF.js.map +1 -0
- package/dist/components/{p-Db3kxVe2.js → p-ByAzDzS5.js} +4 -4
- package/dist/components/{p-Db3kxVe2.js.map → p-ByAzDzS5.js.map} +1 -1
- package/dist/components/{p-sreNwi0N.js → p-BycHaC-9.js} +5 -5
- package/dist/components/{p-sreNwi0N.js.map → p-BycHaC-9.js.map} +1 -1
- package/dist/components/{p-KudVTtHk.js → p-C4nj29RW.js} +310 -210
- package/dist/components/p-C4nj29RW.js.map +1 -0
- package/dist/components/{p-BYanlgdq.js → p-C9hrbrUN.js} +27 -14
- package/dist/components/p-C9hrbrUN.js.map +1 -0
- package/dist/components/{p-BgpsMYcw.js → p-CEn1WeG3.js} +8 -8
- package/dist/components/p-CEn1WeG3.js.map +1 -0
- package/dist/components/{p-BM9IjvnD.js → p-CGb-8cK4.js} +4 -4
- package/dist/components/{p-BM9IjvnD.js.map → p-CGb-8cK4.js.map} +1 -1
- package/dist/components/{p-B7kZ1_RH.js → p-C_hSH2nN.js} +5 -5
- package/dist/components/{p-B7kZ1_RH.js.map → p-C_hSH2nN.js.map} +1 -1
- package/dist/components/{p-CHdJi6b4.js → p-ChLi4Ufe.js} +20 -20
- package/dist/components/{p-CHdJi6b4.js.map → p-ChLi4Ufe.js.map} +1 -1
- package/dist/components/{p-BPsQrpzN.js → p-CieOx1XL.js} +8 -8
- package/dist/components/{p-BPsQrpzN.js.map → p-CieOx1XL.js.map} +1 -1
- package/dist/components/{p-DjU7p3od.js → p-Co5lU_7h.js} +12 -12
- package/dist/components/{p-DjU7p3od.js.map → p-Co5lU_7h.js.map} +1 -1
- package/dist/components/{p-sq9jgfX0.js → p-D27d2rKT.js} +3 -3
- package/dist/components/{p-sq9jgfX0.js.map → p-D27d2rKT.js.map} +1 -1
- package/dist/components/{p-DFO-6kuA.js → p-DPxzgBs0.js} +3 -3
- package/dist/components/{p-DFO-6kuA.js.map → p-DPxzgBs0.js.map} +1 -1
- package/dist/components/{p-0iJh9Z6m.js → p-D_RcVGj0.js} +5 -5
- package/dist/components/{p-0iJh9Z6m.js.map → p-D_RcVGj0.js.map} +1 -1
- package/dist/components/{p-DOPuq6gn.js → p-DqsgZIHC.js} +5 -5
- package/dist/components/{p-DOPuq6gn.js.map → p-DqsgZIHC.js.map} +1 -1
- package/dist/components/{p-BehchtaT.js → p-DzyZA2GT.js} +8 -8
- package/dist/components/{p-BehchtaT.js.map → p-DzyZA2GT.js.map} +1 -1
- package/dist/components/{p-Ddlbt3Bj.js → p-dcR2uxM3.js} +6 -6
- package/dist/components/{p-Ddlbt3Bj.js.map → p-dcR2uxM3.js.map} +1 -1
- package/dist/components/{p-B7w19kIk.js → p-fiFoOjv0.js} +9 -9
- package/dist/components/{p-B7w19kIk.js.map → p-fiFoOjv0.js.map} +1 -1
- package/dist/components/{p-CsyM5q2M.js → p-gCHmJzc2.js} +5 -5
- package/dist/components/{p-CsyM5q2M.js.map → p-gCHmJzc2.js.map} +1 -1
- package/dist/esm/{index-oCOlsFCN.js → index-Cw77zP6g.js} +47 -22
- package/dist/esm/index-Cw77zP6g.js.map +1 -0
- package/dist/esm/index-D0Q2MKPn.js +16953 -0
- package/dist/esm/index-D0Q2MKPn.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/kritzel-brush-style.entry.js +1 -1
- package/dist/esm/kritzel-color_22.entry.js +205 -157
- package/dist/esm/loader.js +3 -3
- package/dist/esm/stencil.js +4 -4
- package/dist/esm/stencil.js.map +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-73784709.entry.js +2 -0
- package/dist/stencil/p-73784709.entry.js.map +1 -0
- package/dist/stencil/{p-25d1e040.entry.js → p-8b831c94.entry.js} +2 -2
- package/dist/stencil/p-Cw77zP6g.js +3 -0
- package/dist/stencil/p-Cw77zP6g.js.map +1 -0
- package/dist/stencil/p-D0Q2MKPn.js +2 -0
- package/dist/stencil/p-D0Q2MKPn.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/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/dist/types/classes/objects/text.class.d.ts +20 -10
- package/dist/types/stencil-public-runtime.d.ts +36 -12
- package/package.json +7 -2
- package/dist/cjs/index-DgZMn9B_.js +0 -2791
- package/dist/cjs/index-DgZMn9B_.js.map +0 -1
- package/dist/cjs/index-nzUNdMPh.js.map +0 -1
- package/dist/components/p-BYanlgdq.js.map +0 -1
- package/dist/components/p-BbGgijCS.js +0 -1164
- 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 +0 -2763
- package/dist/esm/index-CxieEK_G.js.map +0 -1
- package/dist/esm/index-oCOlsFCN.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
- package/dist/stencil/p-oCOlsFCN.js +0 -3
- package/dist/stencil/p-oCOlsFCN.js.map +0 -1
- /package/dist/stencil/{p-25d1e040.entry.js.map → p-8b831c94.entry.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as registerInstance, h, H as Host, c as createEvent, g as getElement } from './index-
|
|
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,
|
|
1
|
+
import { r as registerInstance, h, H as Host, c as createEvent, g as getElement } from './index-Cw77zP6g.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 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-D0Q2MKPn.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
|
}
|
|
@@ -1040,8 +1059,8 @@ class KritzelKeyHandler extends KritzelBaseHandler {
|
|
|
1040
1059
|
},
|
|
1041
1060
|
{ key: 'v', ctrl: true, condition: c => !!c.store.state.copiedObjects && !c.store.state.activeText, action: c => c.paste() },
|
|
1042
1061
|
// Text editing
|
|
1043
|
-
{ key: 'a', ctrl: true, condition: c => !!c.store.state.activeText, action: c => c.store.state.activeText.selectAll() },
|
|
1044
|
-
{ key: 'v', ctrl: true, condition: c => !!c.store.state.activeText, action: c => c.store.state.activeText.insertFromClipboard() },
|
|
1062
|
+
// { key: 'a', ctrl: true, condition: c => !!c.store.state.activeText, action: c => c.store.state.activeText.selectAll() },
|
|
1063
|
+
// { key: 'v', ctrl: true, condition: c => !!c.store.state.activeText, action: c => c.store.state.activeText.insertFromClipboard() },
|
|
1045
1064
|
// Object layering
|
|
1046
1065
|
{ key: '+', ctrl: true, condition: c => !!c.store.state.selectionGroup, action: c => c.bringForward() },
|
|
1047
1066
|
{ key: '-', ctrl: true, condition: c => !!c.store.state.selectionGroup, action: c => c.sendBackward() },
|
|
@@ -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,25 @@ 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
|
-
if (this._store.state.activeText
|
|
1978
|
-
|
|
2022
|
+
if (this._store.state.activeText) {
|
|
2023
|
+
if (this._store.state.activeText.isEmpty) {
|
|
2024
|
+
console.log('Deleting empty text object', this._store.state.activeText.id);
|
|
2025
|
+
this.deleteObject(this._store.state.activeText.id, true);
|
|
2026
|
+
}
|
|
2027
|
+
else {
|
|
2028
|
+
console.log('Saving active text object before resetting', this._store.state.activeText.id);
|
|
2029
|
+
this._store.state.activeText.save();
|
|
2030
|
+
}
|
|
1979
2031
|
}
|
|
1980
|
-
this._store.
|
|
2032
|
+
this._store.state.activeText = null;
|
|
1981
2033
|
}
|
|
1982
2034
|
getObjectFromPointerEvent(event, selector = '.object') {
|
|
1983
2035
|
const shadowRoot = this._store.state.host?.shadowRoot;
|
|
@@ -2032,7 +2084,7 @@ class KritzelCore {
|
|
|
2032
2084
|
}
|
|
2033
2085
|
}
|
|
2034
2086
|
|
|
2035
|
-
const kritzelEngineCss = ":host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.debug-panel{position:absolute;pointer-events:none;top:0;right:0}.origin{position:relative;top:0;left:0;height:0;width:0;pointer-events:none;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top left;overflow:visible}.object{overflow:visible}
|
|
2087
|
+
const kritzelEngineCss = ":host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.ProseMirror{outline:none}p{margin:0;padding:0}.debug-panel{position:absolute;pointer-events:none;top:0;right:0}.origin{position:relative;top:0;left:0;height:0;width:0;pointer-events:none;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top left;overflow:visible}.object{overflow:visible}.resize-handle-overlay.top-left,.resize-handle-overlay.bottom-right{cursor:nwse-resize}.resize-handle-overlay.top-right,.resize-handle-overlay.bottom-left{cursor:nesw-resize}.rotation-handle-overlay{cursor:grab}.PlaygroundEditorTheme__quote{margin:0;margin-left:20px;margin-bottom:10px;font-size:15px;color:rgb(101, 103, 107);border-left-color:rgb(206, 208, 212);border-left-width:4px;border-left-style:solid;padding-left:16px}";
|
|
2036
2088
|
|
|
2037
2089
|
const KritzelEngine = class {
|
|
2038
2090
|
get host() { return getElement(this); }
|
|
@@ -2050,10 +2102,10 @@ const KritzelEngine = class {
|
|
|
2050
2102
|
if (newValue > ABSOLUTE_SCALE_MAX) {
|
|
2051
2103
|
console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);
|
|
2052
2104
|
this.scaleMax = ABSOLUTE_SCALE_MAX;
|
|
2053
|
-
this.core.store.
|
|
2105
|
+
this.core.store.state.scaleMax = this.scaleMax;
|
|
2054
2106
|
}
|
|
2055
2107
|
else {
|
|
2056
|
-
this.core.store.
|
|
2108
|
+
this.core.store.state.scaleMax = newValue;
|
|
2057
2109
|
}
|
|
2058
2110
|
}
|
|
2059
2111
|
scaleMin = ABSOLUTE_SCALE_MIN;
|
|
@@ -2061,10 +2113,10 @@ const KritzelEngine = class {
|
|
|
2061
2113
|
if (newValue < ABSOLUTE_SCALE_MIN) {
|
|
2062
2114
|
console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);
|
|
2063
2115
|
this.scaleMin = ABSOLUTE_SCALE_MIN;
|
|
2064
|
-
this.core.store.
|
|
2116
|
+
this.core.store.state.scaleMin = this.scaleMin;
|
|
2065
2117
|
}
|
|
2066
2118
|
else {
|
|
2067
|
-
this.core.store.
|
|
2119
|
+
this.core.store.state.scaleMin = newValue;
|
|
2068
2120
|
}
|
|
2069
2121
|
}
|
|
2070
2122
|
isEngineReady;
|
|
@@ -2171,11 +2223,11 @@ const KritzelEngine = class {
|
|
|
2171
2223
|
tool?.onActivate();
|
|
2172
2224
|
}
|
|
2173
2225
|
async disable() {
|
|
2174
|
-
this.core.store.
|
|
2226
|
+
this.core.store.state.isEnabled = false;
|
|
2175
2227
|
this.core.rerender();
|
|
2176
2228
|
}
|
|
2177
2229
|
async enable() {
|
|
2178
|
-
this.core.store.
|
|
2230
|
+
this.core.store.state.isEnabled = true;
|
|
2179
2231
|
this.core.rerender();
|
|
2180
2232
|
}
|
|
2181
2233
|
async delete() {
|
|
@@ -2207,10 +2259,10 @@ const KritzelEngine = class {
|
|
|
2207
2259
|
}
|
|
2208
2260
|
async hideContextMenu() {
|
|
2209
2261
|
this.core.store.state.pointers.clear();
|
|
2210
|
-
this.core.store.
|
|
2211
|
-
this.core.store.
|
|
2212
|
-
this.core.store.
|
|
2213
|
-
this.core.store.
|
|
2262
|
+
this.core.store.state.isContextMenuVisible = false;
|
|
2263
|
+
this.core.store.state.selectionBox = null;
|
|
2264
|
+
this.core.store.state.isSelecting = false;
|
|
2265
|
+
this.core.store.state.isEnabled = true;
|
|
2214
2266
|
this.core.rerender();
|
|
2215
2267
|
}
|
|
2216
2268
|
async getObjectById(id) {
|
|
@@ -2317,7 +2369,7 @@ const KritzelEngine = class {
|
|
|
2317
2369
|
await this.core.initializeWorkspace(this.workspace);
|
|
2318
2370
|
this._registerStateChangeListeners();
|
|
2319
2371
|
if (this.core.store.state.isReady === false) {
|
|
2320
|
-
this.core.store.
|
|
2372
|
+
this.core.store.state.isReady = true;
|
|
2321
2373
|
this.isEngineReady.emit(this.core.store.state);
|
|
2322
2374
|
}
|
|
2323
2375
|
}
|
|
@@ -2328,8 +2380,8 @@ const KritzelEngine = class {
|
|
|
2328
2380
|
if (!(activeTool instanceof KritzelSelectionTool)) {
|
|
2329
2381
|
this.core.clearSelection();
|
|
2330
2382
|
}
|
|
2331
|
-
this.core.store.
|
|
2332
|
-
this.core.store.
|
|
2383
|
+
this.core.store.state.skipContextMenu = false;
|
|
2384
|
+
this.core.store.state.copiedObjects = null;
|
|
2333
2385
|
this.activeToolChange.emit(activeTool);
|
|
2334
2386
|
KritzelKeyboardHelper.forceHideKeyboard();
|
|
2335
2387
|
}
|
|
@@ -2338,7 +2390,9 @@ const KritzelEngine = class {
|
|
|
2338
2390
|
const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
|
|
2339
2391
|
const baseHandleSize = parseFloat(baseHandleSizePx);
|
|
2340
2392
|
const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
|
|
2341
|
-
|
|
2393
|
+
const viewportCenterX = this.core.store.state.viewportWidth / 2 + this.core.store.state.translateX;
|
|
2394
|
+
const viewportCenterY = this.core.store.state.viewportHeight / 2 + this.core.store.state.translateY;
|
|
2395
|
+
return (h(Host, { key: 'caabd1ecbf2faccdf7fa50d087a8957df4dd1039' }, h("div", { key: 'd757e7133ed9dd190c17c383fb716f760f2b3906', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '00ced12dd956b6eecff7ac80429c0fd05cc7d1c3' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), h("div", { key: '771f3269627fbe1ef962027f017cf6bdec7bcf8f' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), h("div", { key: '0e49a60afdfb776a61f46b53bd6488786778bf77' }, "TranslateX: ", this.core.store.state?.translateX), h("div", { key: 'e0438479bc9e950ef2cbe88ed0aa0b8ec1888890' }, "TranslateY: ", this.core.store.state?.translateY), h("div", { key: '41d7261ed6b893a97fefb4bb6b199ffea51bd5fe' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), h("div", { key: '7b6470008968eeebc5097252b3b9e3d172fd5d22' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), h("div", { key: '4012ebdc3234ee2775021b38f385dfa0917736cb' }, "Scale: ", this.core.store.state?.scale), h("div", { key: '964d26a0ff4ff93dfa1cc928330c4fbdb0ec9b3d' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), h("div", { key: 'cd68a81778d3e0f83f9453cd813538b2223541e8' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: '2ea80f3b4216a5e3d727c6c94d8b1782fbde80eb' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: '02966d69182e95a8e91d5252f3dcfc19237caafd' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), h("div", { key: '85c06265f3af2b793d1827a40bb74b8837690ce3' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), h("div", { key: '1a2847a815fabc37cae3b7659844975df0c79a81' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: 'd1482aa165ed6b430ec0e640971c47e233103e87' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '3534e455918183d822374edbc80b621939100bd1' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '7b061a4b08956660ee305316eea2e1d13d66d5de' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '61998d0f4ffc65f5bb155dfe434a3a07667ca5ee' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), h("div", { key: 'bdaeb0af59e844351eb46caf7bbe7e246174ccfe' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), h("div", { key: '47518514eb67c486583ee61e6747104b4720924a' }, "PointerX: ", this.core.store.state?.pointerX), h("div", { key: '9b2ef1c30ecb09bc7df7f765e099f87ea836d697' }, "PointerY: ", this.core.store.state?.pointerY), h("div", { key: '72a65218942809918fb5fa1978af83f9442c3ed8' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0), h("div", { key: '1f2ad6b79f28306becd7e83f21ca877c7d15941d' }, "ViewportCenter: (", viewportCenterX.toFixed(2), ", ", viewportCenterY.toFixed(2), ")")), h("div", { key: 'ae8afa17ce2a1c0a06a3579091d6f1616fe9b9a7', id: "origin", class: "origin", style: {
|
|
2342
2396
|
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
2397
|
} }, this.core.store.state.objectsMap.allObjects()?.map(object => {
|
|
2344
2398
|
return (h("div", { key: object.id, style: {
|
|
@@ -2376,22 +2430,16 @@ const KritzelEngine = class {
|
|
|
2376
2430
|
height: '100%',
|
|
2377
2431
|
userSelect: 'none',
|
|
2378
2432
|
pointerEvents: 'none',
|
|
2379
|
-
}, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
overflow: '
|
|
2389
|
-
display: 'block',
|
|
2390
|
-
padding: '1px',
|
|
2391
|
-
whiteSpace: 'nowrap',
|
|
2392
|
-
pointerEvents: object.isReadonly ? 'none' : 'auto',
|
|
2393
|
-
cursor: object.isReadonly ? 'default' : 'text',
|
|
2394
|
-
caretColor: object.isReadonly ? 'transparent' : 'auto',
|
|
2433
|
+
}, draggable: false, onDragStart: e => e.preventDefault() })), KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), onPointerDown: e => object.handlePointerDown(e), onPointerMove: e => object.handlePointerMove(e), onPointerUp: e => object.handlePointerUp(e), style: {
|
|
2434
|
+
minWidth: object.initialWidth + 'px',
|
|
2435
|
+
minHeight: object.initialHeight + 'px',
|
|
2436
|
+
maxWidth: '500px',
|
|
2437
|
+
height: 'auto',
|
|
2438
|
+
width: 'max-content',
|
|
2439
|
+
transformOrigin: 'top left',
|
|
2440
|
+
transform: `scale(${object.scaleFactor})`,
|
|
2441
|
+
backgroundColor: object.backgroundColor,
|
|
2442
|
+
overflow: 'visible'
|
|
2395
2443
|
} })), KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (h("div", { ref: el => (el ? object.mount(el) : object.unmount()), style: {
|
|
2396
2444
|
width: '100%',
|
|
2397
2445
|
height: '100%',
|
|
@@ -2457,7 +2505,7 @@ const KritzelEngine = class {
|
|
|
2457
2505
|
transform: this.core.store.state.currentPath?.transformationMatrix,
|
|
2458
2506
|
transformOrigin: 'top left',
|
|
2459
2507
|
overflow: 'visible',
|
|
2460
|
-
}, viewBox: this.core.store.state.currentPath?.viewBox }, h("path", { key: '
|
|
2508
|
+
}, viewBox: this.core.store.state.currentPath?.viewBox }, h("path", { key: '9428a1401021b38b8b811fd68af9e24d53301c08', 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: '1ccc963df66e4210886717644503be6304c6c99f', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: this.core.store.state.selectionGroup?.objects || [], style: {
|
|
2461
2509
|
position: 'fixed',
|
|
2462
2510
|
left: `${this.core.store.state.contextMenuX}px`,
|
|
2463
2511
|
top: `${this.core.store.state.contextMenuY}px`,
|
|
@@ -2468,7 +2516,7 @@ const KritzelEngine = class {
|
|
|
2468
2516
|
y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,
|
|
2469
2517
|
}, this.core.store.state.selectionGroup?.objects);
|
|
2470
2518
|
this.hideContextMenu();
|
|
2471
|
-
}, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: '
|
|
2519
|
+
}, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: '9b51e52c76f21be679491c21d1921d389d6619fc', core: this.core })));
|
|
2472
2520
|
}
|
|
2473
2521
|
static get watchers() { return {
|
|
2474
2522
|
"workspace": ["onWorkspaceChange"],
|
|
@@ -2488,7 +2536,7 @@ const KritzelFont = class {
|
|
|
2488
2536
|
size = 24;
|
|
2489
2537
|
color = '#000000';
|
|
2490
2538
|
render() {
|
|
2491
|
-
return (h(Host, { key: '
|
|
2539
|
+
return (h(Host, { key: '0a6f1d1326e9dde84a4122d79f75dc1c75ffe0fb' }, h("div", { key: '88a342d01c4150cd4fc5dacca23f7b9904edca52', class: "font-preview", style: {
|
|
2492
2540
|
fontFamily: this.fontFamily,
|
|
2493
2541
|
fontSize: `${this.size}px`,
|
|
2494
2542
|
color: this.color
|
|
@@ -2535,7 +2583,7 @@ const KritzelFontFamily = class {
|
|
|
2535
2583
|
label: option.label,
|
|
2536
2584
|
style: { fontFamily: option.value },
|
|
2537
2585
|
}));
|
|
2538
|
-
return (h(Host, { key: '
|
|
2586
|
+
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
2587
|
}
|
|
2540
2588
|
};
|
|
2541
2589
|
KritzelFontFamily.style = kritzelFontFamilyCss;
|
|
@@ -2556,7 +2604,7 @@ const KritzelFontSize = class {
|
|
|
2556
2604
|
this.sizeChange.emit(size);
|
|
2557
2605
|
}
|
|
2558
2606
|
render() {
|
|
2559
|
-
return (h(Host, { key: '
|
|
2607
|
+
return (h(Host, { key: '9f3d851d443352f7437116cf91eff8d8de41e322' }, this.sizes.map(size => (h("div", { class: {
|
|
2560
2608
|
'size-container': true,
|
|
2561
2609
|
'selected': this.selectedSize === size,
|
|
2562
2610
|
}, onClick: () => this.handleSizeClick(size) }, h("kritzel-font", { fontFamily: this.fontFamily, size: size }))))));
|
|
@@ -2651,7 +2699,7 @@ const KritzelMenu = class {
|
|
|
2651
2699
|
this.itemCloseChildMenu.emit(event.detail);
|
|
2652
2700
|
};
|
|
2653
2701
|
render() {
|
|
2654
|
-
return (h(Host, { key: '
|
|
2702
|
+
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
2703
|
}
|
|
2656
2704
|
};
|
|
2657
2705
|
KritzelMenu.style = kritzelMenuCss;
|
|
@@ -2752,12 +2800,12 @@ const KritzelMenuItem = class {
|
|
|
2752
2800
|
];
|
|
2753
2801
|
}
|
|
2754
2802
|
render() {
|
|
2755
|
-
return (h(Host, { key: '
|
|
2803
|
+
return (h(Host, { key: '9df3acdaff753e3ed910f848c98e8ad73e2b5f5c', tabIndex: this.item.isDisabled ? -1 : 0, class: {
|
|
2756
2804
|
'selected': this.item.isSelected,
|
|
2757
2805
|
'editing': this.item.isEditing,
|
|
2758
2806
|
'disabled': this.item.isDisabled,
|
|
2759
2807
|
'child-open': this.item.isChildMenuOpen,
|
|
2760
|
-
}, onClick: this.handleItemSelect }, h("div", { key: '
|
|
2808
|
+
}, onClick: this.handleItemSelect }, h("div", { key: 'bb73e5c0c3dd87efabcaa0b53d20c7c477b34aa1', class: "menu-item-overlay" }), this.item.isEditing ? this.renderEditMode() : this.renderViewMode()));
|
|
2761
2809
|
}
|
|
2762
2810
|
static get watchers() { return {
|
|
2763
2811
|
"item": ["onItemChange"]
|
|
@@ -2998,7 +3046,7 @@ const KritzelPortal = class {
|
|
|
2998
3046
|
this.portal.style.left = `${left}px`;
|
|
2999
3047
|
}
|
|
3000
3048
|
render() {
|
|
3001
|
-
return (h(Host, { key: '
|
|
3049
|
+
return (h(Host, { key: '9c5cdf7126ff1148dd2364cce9d2524862e27d13', style: { display: this.anchor ? 'block' : 'none' } }, h("slot", { key: '209a77246fedcea0c24882605487452ff5cc62ce' })));
|
|
3002
3050
|
}
|
|
3003
3051
|
static get watchers() { return {
|
|
3004
3052
|
"anchor": ["anchorChanged"]
|
|
@@ -3098,7 +3146,7 @@ const KritzelSplitButton = class {
|
|
|
3098
3146
|
this.menuScrollTop = event.target.scrollTop;
|
|
3099
3147
|
};
|
|
3100
3148
|
render() {
|
|
3101
|
-
return (h(Host, { key: '
|
|
3149
|
+
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
3150
|
}
|
|
3103
3151
|
};
|
|
3104
3152
|
KritzelSplitButton.style = kritzelSplitButtonCss;
|
|
@@ -3118,7 +3166,7 @@ const KritzelStrokeSize = class {
|
|
|
3118
3166
|
this.sizeChange.emit(size);
|
|
3119
3167
|
}
|
|
3120
3168
|
render() {
|
|
3121
|
-
return (h(Host, { key: '
|
|
3169
|
+
return (h(Host, { key: '74579e34c23725e22927afe371c1f7925903720a' }, this.sizes.map(size => (h("div", { tabIndex: 0, class: {
|
|
3122
3170
|
'size-container': true,
|
|
3123
3171
|
'selected': this.selectedSize === size,
|
|
3124
3172
|
}, onClick: () => this.handleSizeClick(size) }, h("kritzel-color", { value: '#000000', size: size }))))));
|
|
@@ -3195,23 +3243,23 @@ const KritzelTooltip = class {
|
|
|
3195
3243
|
}
|
|
3196
3244
|
}
|
|
3197
3245
|
render() {
|
|
3198
|
-
return (h(Host, { key: '
|
|
3246
|
+
return (h(Host, { key: '72a6356a43a15a7abc9a46b0d22c3c62217791e8', style: {
|
|
3199
3247
|
position: 'fixed',
|
|
3200
3248
|
zIndex: '9999',
|
|
3201
3249
|
transition: 'opacity 0.3s ease-in-out, transform 0.3s ease-in-out',
|
|
3202
3250
|
visibility: this.isVisible ? 'visible' : 'hidden',
|
|
3203
3251
|
left: !this.isMobileView ? `${this.positionX}px` : '50%',
|
|
3204
3252
|
marginBottom: `${this.offsetY + this.arrowSize}px`,
|
|
3205
|
-
} }, h("div", { key: '
|
|
3253
|
+
} }, 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
3254
|
position: 'fixed',
|
|
3207
3255
|
left: this.arrowOffset,
|
|
3208
3256
|
bottom: `-${this.arrowSize * 2}px`,
|
|
3209
|
-
} }, h("div", { key: '
|
|
3257
|
+
} }, h("div", { key: '37397c6245dd6b0def23e2611d118e0c4f5860ef', class: "tooltip-arrow", style: {
|
|
3210
3258
|
borderLeft: `${this.arrowSize}px solid transparent`,
|
|
3211
3259
|
borderRight: `${this.arrowSize}px solid transparent`,
|
|
3212
3260
|
borderTop: `${this.arrowSize}px solid var(--kritzel-controls-tooltip-background-color, #ffffff)`,
|
|
3213
3261
|
filter: 'drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2))',
|
|
3214
|
-
} }), h("div", { key: '
|
|
3262
|
+
} }), h("div", { key: 'dbf009c371d46ef0a36e27771758c66e817d9b22', class: "tooltip-arrow-rect", style: {
|
|
3215
3263
|
position: 'relative',
|
|
3216
3264
|
width: `${this.arrowSize * 2}px`,
|
|
3217
3265
|
height: `${this.arrowSize}px`,
|
|
@@ -3247,7 +3295,7 @@ const KritzelUtilityPanel = class {
|
|
|
3247
3295
|
this.redo.emit();
|
|
3248
3296
|
}
|
|
3249
3297
|
render() {
|
|
3250
|
-
return (h(Host, { key: '
|
|
3298
|
+
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
3299
|
}
|
|
3252
3300
|
};
|
|
3253
3301
|
KritzelUtilityPanel.style = kritzelUtilityPanelCss;
|