kritzel-stencil 0.0.133 → 0.0.135

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/cjs/{index-DCHCVnOl.js → index-DILpAbYp.js} +12 -5
  2. package/dist/cjs/index-DILpAbYp.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/kritzel-color_22.cjs.entry.js +74 -73
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/stencil.cjs.js +1 -1
  7. package/dist/collection/classes/commands/add-selection-group.command.js +6 -3
  8. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  9. package/dist/collection/classes/commands/move-selection-group.command.js +5 -0
  10. package/dist/collection/classes/commands/move-selection-group.command.js.map +1 -1
  11. package/dist/collection/classes/core/core.class.js +3 -1
  12. package/dist/collection/classes/core/core.class.js.map +1 -1
  13. package/dist/collection/classes/core/history.class.js +1 -0
  14. package/dist/collection/classes/core/history.class.js.map +1 -1
  15. package/dist/collection/classes/core/viewport.class.js +0 -6
  16. package/dist/collection/classes/core/viewport.class.js.map +1 -1
  17. package/dist/collection/classes/handlers/key.handler.js +42 -58
  18. package/dist/collection/classes/handlers/key.handler.js.map +1 -1
  19. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +2 -2
  20. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  21. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +10 -3
  22. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  23. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +16 -1
  24. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
  25. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -2
  26. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  27. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +14 -0
  28. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
  29. package/dist/collection/interfaces/shortcut.interface.js +2 -0
  30. package/dist/collection/interfaces/shortcut.interface.js.map +1 -0
  31. package/dist/components/index.js +1 -1
  32. package/dist/components/kritzel-context-menu.js +1 -1
  33. package/dist/components/kritzel-editor.js +7 -7
  34. package/dist/components/kritzel-editor.js.map +1 -1
  35. package/dist/components/kritzel-engine.js +1 -1
  36. package/dist/components/kritzel-menu-item.js +1 -1
  37. package/dist/components/kritzel-menu.js +1 -1
  38. package/dist/components/kritzel-portal.js +1 -1
  39. package/dist/components/kritzel-split-button.js +1 -1
  40. package/dist/components/kritzel-workspace-manager.js +1 -1
  41. package/dist/components/{p-CM8KdFZI.js → p-Bv28MOWN.js} +4 -4
  42. package/dist/components/{p-CM8KdFZI.js.map → p-Bv28MOWN.js.map} +1 -1
  43. package/dist/components/{p-Dw4n-4zp.js → p-C8wKLuRD.js} +3 -3
  44. package/dist/components/{p-Dw4n-4zp.js.map → p-C8wKLuRD.js.map} +1 -1
  45. package/dist/components/{p-CwH-bwjb.js → p-CZzYv_iN.js} +69 -74
  46. package/dist/components/p-CZzYv_iN.js.map +1 -0
  47. package/dist/components/{p-BKvOO7NT.js → p-DEjYSb6x.js} +11 -6
  48. package/dist/components/p-DEjYSb6x.js.map +1 -0
  49. package/dist/components/{p-BGdsAz54.js → p-DOPuq6gn.js} +3 -4
  50. package/dist/components/p-DOPuq6gn.js.map +1 -0
  51. package/dist/components/{p-NP1Htol7.js → p-DSSAcjs7.js} +13 -4
  52. package/dist/components/p-DSSAcjs7.js.map +1 -0
  53. package/dist/esm/{index-DY3KqYWc.js → index-BrCE-Ctm.js} +12 -5
  54. package/dist/esm/index-BrCE-Ctm.js.map +1 -0
  55. package/dist/esm/index.js +1 -1
  56. package/dist/esm/kritzel-color_22.entry.js +74 -73
  57. package/dist/esm/loader.js +1 -1
  58. package/dist/esm/stencil.js +1 -1
  59. package/dist/stencil/index.esm.js +1 -1
  60. package/dist/stencil/p-39d92274.entry.js +2 -0
  61. package/dist/stencil/p-39d92274.entry.js.map +1 -0
  62. package/dist/stencil/p-BrCE-Ctm.js +2 -0
  63. package/dist/stencil/p-BrCE-Ctm.js.map +1 -0
  64. package/dist/stencil/stencil.esm.js +1 -1
  65. package/dist/types/classes/commands/add-selection-group.command.d.ts +2 -1
  66. package/dist/types/classes/handlers/key.handler.d.ts +2 -0
  67. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +1 -0
  68. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +1 -0
  69. package/dist/types/components.d.ts +2 -2
  70. package/dist/types/interfaces/shortcut.interface.d.ts +8 -0
  71. package/package.json +1 -1
  72. package/dist/cjs/index-DCHCVnOl.js.map +0 -1
  73. package/dist/components/p-BGdsAz54.js.map +0 -1
  74. package/dist/components/p-BKvOO7NT.js.map +0 -1
  75. package/dist/components/p-CwH-bwjb.js.map +0 -1
  76. package/dist/components/p-NP1Htol7.js.map +0 -1
  77. package/dist/esm/index-DY3KqYWc.js.map +0 -1
  78. package/dist/stencil/p-DY3KqYWc.js +0 -2
  79. package/dist/stencil/p-DY3KqYWc.js.map +0 -1
  80. package/dist/stencil/p-dc534b01.entry.js +0 -2
  81. package/dist/stencil/p-dc534b01.entry.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DCHCVnOl.js');
3
+ var index = require('./index-DILpAbYp.js');
4
4
 
5
5
 
6
6
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-nzUNdMPh.js');
4
- var index$1 = require('./index-DCHCVnOl.js');
4
+ var index$1 = require('./index-DILpAbYp.js');
5
5
 
6
6
  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)}";
7
7
 
@@ -117,7 +117,6 @@ const KritzelContextMenu = class {
117
117
  close;
118
118
  processedItems = [];
119
119
  handleOutsideClick(event) {
120
- event.preventDefault();
121
120
  const path = event.composedPath();
122
121
  if (!path.includes(this.host)) {
123
122
  this.close.emit();
@@ -152,7 +151,7 @@ const KritzelContextMenu = class {
152
151
  return defaultValue;
153
152
  }
154
153
  render() {
155
- return (index.h(index.Host, { key: 'ff72bd31f6c0f3193674710bccab829f14e011d3' }, index.h("div", { key: '80cd7a99dc9bb1fb9ec4edb09a9bacde70dde7c3', class: "menu-container" }, this.processedItems.map(({ item, isDisabled }, index$1) => (index.h("button", { key: `${item.label}-${index$1}`, class: { 'menu-item': true, 'disabled': isDisabled }, onClick: () => this.handleItemClick(item, isDisabled), disabled: isDisabled }, item.icon && index.h("kritzel-icon", { name: item.icon, size: 16 }), index.h("span", { class: "label" }, item.label)))))));
154
+ return (index.h(index.Host, { key: '908711e45cb4ea41f25c4f66a9d3b03c847f886e' }, index.h("div", { key: '7dcb6e5654ecafebc1fc1a2efb9fa1b8678236c4', class: "menu-container" }, this.processedItems.map(({ item, isDisabled }, index$1) => (index.h("button", { key: `${item.label}-${index$1}`, class: { 'menu-item': true, 'disabled': isDisabled }, onClick: () => this.handleItemClick(item, isDisabled), disabled: isDisabled }, item.icon && index.h("kritzel-icon", { name: item.icon, size: 16 }), index.h("span", { class: "label" }, item.label)))))));
156
155
  }
157
156
  static get watchers() { return {
158
157
  "items": ["onItemsChanged"]
@@ -663,6 +662,7 @@ const KritzelEditor = class {
663
662
  {
664
663
  name: 'selection',
665
664
  type: 'tool',
665
+ isDefault: true,
666
666
  tool: index$1.KritzelSelectionTool,
667
667
  icon: 'cursor',
668
668
  },
@@ -671,7 +671,6 @@ const KritzelEditor = class {
671
671
  type: 'tool',
672
672
  tool: index$1.KritzelBrushTool,
673
673
  icon: 'pen',
674
- isDefault: true,
675
674
  config: index$1.DEFAULT_BRUSH_CONFIG,
676
675
  },
677
676
  {
@@ -1018,89 +1017,67 @@ class KritzelViewport {
1018
1017
  this._core.updateWorkspaceViewport(this._core.store.state.translateX, this._core.store.state.translateY, this._core.store.state.scale);
1019
1018
  setTimeout(() => {
1020
1019
  this._core.store.setState('isScaling', false);
1021
- this._core.rerender();
1022
1020
  }, 300);
1023
1021
  }
1024
1022
  handlePan(event) {
1025
- this._core.store.setState('isPanning', true);
1026
1023
  const panSpeed = 0.8;
1027
1024
  this._core.store.setState('translateX', this._core.store.state.translateX - event.deltaX * panSpeed);
1028
1025
  this._core.store.setState('translateY', this._core.store.state.translateY - event.deltaY * panSpeed);
1029
1026
  this._core.store.setState('hasViewportChanged', true);
1030
1027
  this._core.rerender();
1031
1028
  this._core.updateWorkspaceViewport(this._core.store.state.translateX, this._core.store.state.translateY, this._core.store.state.scale);
1032
- setTimeout(() => {
1033
- this._core.store.setState('isPanning', false);
1034
- this._core.rerender();
1035
- }, 300);
1036
1029
  }
1037
1030
  }
1038
1031
 
1039
1032
  class KritzelKeyHandler extends index$1.KritzelBaseHandler {
1033
+ shortcuts = [
1034
+ // General
1035
+ { key: 'Escape', condition: c => !!c.store.state.selectionGroup, action: c => c.clearSelection() },
1036
+ { key: 'Delete', condition: c => !!c.store.state.selectionGroup, action: c => c.delete() },
1037
+ // History
1038
+ { key: 'z', ctrl: true, action: c => c.history.undo() },
1039
+ { key: 'y', ctrl: true, action: c => c.history.redo() },
1040
+ // Tool selection
1041
+ { key: 's', ctrl: true, action: () => this.switchTool('selection') },
1042
+ { key: 'b', ctrl: true, action: () => this.switchTool('brush') },
1043
+ { key: 'e', ctrl: true, action: () => this.switchTool('eraser') },
1044
+ { key: 'i', ctrl: true, action: () => this.switchTool('image') },
1045
+ { key: 'x', ctrl: true, action: () => this.switchTool('text') },
1046
+ // Clipboard
1047
+ {
1048
+ key: 'c',
1049
+ ctrl: true,
1050
+ condition: c => !!c.store.state.selectionGroup,
1051
+ action: c => {
1052
+ c.copy();
1053
+ c.rerender();
1054
+ },
1055
+ },
1056
+ { key: 'v', ctrl: true, condition: c => !!c.store.state.copiedObjects && !c.store.state.activeText, action: c => c.paste() },
1057
+ // Text editing
1058
+ { key: 'a', ctrl: true, condition: c => !!c.store.state.activeText, action: c => c.store.state.activeText.selectAll() },
1059
+ { key: 'v', ctrl: true, condition: c => !!c.store.state.activeText, action: c => c.store.state.activeText.insertFromClipboard() },
1060
+ // Object layering
1061
+ { key: '+', ctrl: true, condition: c => !!c.store.state.selectionGroup, action: c => c.bringForward() },
1062
+ { key: '-', ctrl: true, condition: c => !!c.store.state.selectionGroup, action: c => c.sendBackward() },
1063
+ { key: '*', shift: true, condition: c => !!c.store.state.selectionGroup, action: c => c.bringToFront() },
1064
+ { key: '_', shift: true, condition: c => !!c.store.state.selectionGroup, action: c => c.sendToBack() },
1065
+ ];
1040
1066
  constructor(core) {
1041
1067
  super(core);
1042
1068
  }
1069
+ switchTool(tool) {
1070
+ const toolInstance = index$1.KritzelToolRegistry.getTool(tool);
1071
+ this._core.store.setState('activeTool', toolInstance);
1072
+ this._core.deselectAllObjects();
1073
+ toolInstance.onActivate();
1074
+ }
1043
1075
  handleKeyDown(event) {
1044
1076
  this._core.store.setState('isCtrlKeyPressed', event.ctrlKey);
1045
- if (this._core.store.state.isCtrlKeyPressed) {
1077
+ const shortcut = this.shortcuts.find(s => s.key === event.key && !!s.ctrl === event.ctrlKey && !!s.shift === event.shiftKey && (!s.condition || s.condition(this._core)));
1078
+ if (shortcut) {
1046
1079
  event.preventDefault();
1047
- }
1048
- if (event.key === 'Escape' && this._core.store.state.selectionGroup) {
1049
- this._core.clearSelection();
1050
- }
1051
- if (event.key === 'Delete' && this._core.store.state.selectionGroup) {
1052
- this._core.delete();
1053
- }
1054
- if (event.key === 'z' && event.ctrlKey) {
1055
- this._core.history.undo();
1056
- }
1057
- if (event.key === 'y' && event.ctrlKey) {
1058
- this._core.history.redo();
1059
- }
1060
- if (event.key === 's' && event.ctrlKey) {
1061
- this._core.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('selection'));
1062
- this._core.deselectAllObjects();
1063
- }
1064
- if (event.key === 'b' && event.ctrlKey) {
1065
- this._core.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('brush'));
1066
- this._core.deselectAllObjects();
1067
- }
1068
- if (event.key === 'e' && event.ctrlKey) {
1069
- this._core.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('eraser'));
1070
- this._core.deselectAllObjects();
1071
- }
1072
- if (event.key === 'i' && event.ctrlKey) {
1073
- this._core.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('image'));
1074
- this._core.deselectAllObjects();
1075
- }
1076
- if (event.key === 'x' && event.ctrlKey) {
1077
- this._core.store.setState('activeTool', index$1.KritzelToolRegistry.getTool('text'));
1078
- this._core.deselectAllObjects();
1079
- }
1080
- if (event.key === 'c' && event.ctrlKey && this._core.store.state.selectionGroup) {
1081
- this._core.copy();
1082
- this._core.rerender();
1083
- }
1084
- if (event.key === 'v' && event.ctrlKey && this._core.store.state.copiedObjects) {
1085
- this._core.paste();
1086
- }
1087
- if (event.key === '+' && event.ctrlKey && this._core.store.state.selectionGroup) {
1088
- this._core.bringForward();
1089
- }
1090
- if (event.key === '-' && event.ctrlKey && this._core.store.state.selectionGroup) {
1091
- this._core.sendBackward();
1092
- }
1093
- if (event.key === '*' && event.shiftKey && this._core.store.state.selectionGroup) {
1094
- this._core.bringToFront();
1095
- }
1096
- if (event.key === '_' && event.shiftKey && this._core.store.state.selectionGroup) {
1097
- this._core.sendToBack();
1098
- }
1099
- if (event.key === 'a' && event.ctrlKey && this._core.store.state.activeText) {
1100
- this._core.store.state.activeText.selectAll();
1101
- }
1102
- if (event.key === 'v' && event.ctrlKey && this._core.store.state.activeText) {
1103
- this._core.store.state.activeText.insertFromClipboard();
1080
+ shortcut.action(this._core);
1104
1081
  }
1105
1082
  }
1106
1083
  handleKeyUp(event) {
@@ -1590,6 +1567,7 @@ class KritzelHistory {
1590
1567
  console.info('undo', command);
1591
1568
  this.redoStack.add(command);
1592
1569
  }
1570
+ this._core.store.setState('copiedObjects', null);
1593
1571
  this._core.rerender();
1594
1572
  }
1595
1573
  redo() {
@@ -1910,11 +1888,13 @@ class KritzelCore {
1910
1888
  const adjustedY = y !== undefined ? y : this._store.state.copiedObjects.translateY + 25 / this._store.state.scale;
1911
1889
  this._store.state.copiedObjects.updatePosition(adjustedX, adjustedY);
1912
1890
  const commands = [];
1891
+ let previousSelectionGroup = null;
1913
1892
  if (this._store.state.selectionGroup !== null) {
1893
+ previousSelectionGroup = this._store.state.selectionGroup;
1914
1894
  commands.push(new index$1.RemoveSelectionGroupCommand(this, this._store.state.selectionGroup));
1915
1895
  }
1916
1896
  const addCopiedObjectsCommands = this._store.state.copiedObjects.objects.map(obj => new index$1.AddObjectCommand(this, this, obj));
1917
- const addCopiedObjectsAsSelectionGroupCommand = new index$1.AddSelectionGroupCommand(this, this, this._store.state.copiedObjects);
1897
+ const addCopiedObjectsAsSelectionGroupCommand = new index$1.AddSelectionGroupCommand(this, this, this._store.state.copiedObjects, previousSelectionGroup);
1918
1898
  commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);
1919
1899
  this.history.executeCommand(new index$1.BatchCommand(this, this, commands));
1920
1900
  this._store.setState('isSelecting', false);
@@ -2167,9 +2147,15 @@ const KritzelEngine = class {
2167
2147
  this.viewport.handleResize();
2168
2148
  }
2169
2149
  handleKeyDown(ev) {
2150
+ if (this.core.store.isDisabled) {
2151
+ return;
2152
+ }
2170
2153
  this.keyHandler.handleKeyDown(ev);
2171
2154
  }
2172
2155
  handleKeyUp(ev) {
2156
+ if (this.core.store.isDisabled) {
2157
+ return;
2158
+ }
2173
2159
  this.keyHandler.handleKeyUp(ev);
2174
2160
  }
2175
2161
  async registerTool(toolName, toolClass, toolConfig) {
@@ -2350,6 +2336,7 @@ const KritzelEngine = class {
2350
2336
  this.core.clearSelection();
2351
2337
  }
2352
2338
  this.core.store.setState('skipContextMenu', false);
2339
+ this.core.store.setState('copiedObjects', null);
2353
2340
  this.activeToolChange.emit(activeTool);
2354
2341
  index$1.KritzelKeyboardHelper.forceHideKeyboard();
2355
2342
  }
@@ -2358,7 +2345,7 @@ const KritzelEngine = class {
2358
2345
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
2359
2346
  const baseHandleSize = parseFloat(baseHandleSizePx);
2360
2347
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
2361
- return (index.h(index.Host, { key: 'da47553aad7abf8b5daab177c6933a9177b91089' }, index.h("div", { key: '4e64b43bfb85a61154d36ca8ecd3518d61445d50', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, index.h("div", { key: '21742da9258a2b929b81c0ca6c8f37f41b228ad4' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), index.h("div", { key: 'de31fcf57b0faf8fad2bb39336eeea35dbec35ca' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), index.h("div", { key: 'a2cb298a867f92349b5e1fb556ee5f9c6110f1c7' }, "TranslateX: ", this.core.store.state?.translateX), index.h("div", { key: '28697bfcecf9f8b4b1972a90cd02855767433047' }, "TranslateY: ", this.core.store.state?.translateY), index.h("div", { key: '7fb25f6e9c9b8dea11832dbd311d2cc0b981cbeb' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), index.h("div", { key: '92aeade312b3d28e4c9b0e1c7ca55f6932fd23d9' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), index.h("div", { key: 'a4fd8090acaf094e44fdc2e72fcc388695b412c4' }, "Scale: ", this.core.store.state?.scale), index.h("div", { key: '6ff28100b64bafdffcb8fe9d49cd041a6a374817' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), index.h("div", { key: '12a61ad3d070563eb721d0d4068143962914b2bc' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), index.h("div", { key: '437309daa2af1a64c9b9d3548fe12e075dd4a8bd' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), index.h("div", { key: 'e6841095c220ebf081604c548729f085ec9d17bd' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), index.h("div", { key: 'b07316a528782f7560c2e42f7bd9edd473cc256c' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), index.h("div", { key: '7160a5aa21c4cdbf2b523f620c819ad541a2e466' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), index.h("div", { key: '9ad29a686bc76b47d4c5040121b468428ade437a' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), index.h("div", { key: '68f240aa7d7188996647afd0df73d63a253e18a1' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), index.h("div", { key: '260010c089bdf0e8fd8c2406c39394ef79a85262' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), index.h("div", { key: '6b07975c781801b0a7d7727d0666a6765aa9e889' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), index.h("div", { key: '83c949c9ed26c3d445421ba1f965a742f5fc149f' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), index.h("div", { key: '1687122785d3370da5d91a975dd56f11aebc81c1' }, "PointerX: ", this.core.store.state?.pointerX), index.h("div", { key: 'a28e152a0510c9e3eef5624de1b5512baf45b37c' }, "PointerY: ", this.core.store.state?.pointerY), index.h("div", { key: '09e5a0157002fe95a46415d32a3eb17be8d959a9' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0)), index.h("div", { key: '5228fbae773f30d91b129c257ef08adca10a6a70', id: "origin", class: "origin", style: {
2348
+ return (index.h(index.Host, { key: '54dce5fe3011a15e4cf77b1daecf578dd0402c67' }, index.h("div", { key: '569c4253054b6c6e84059175716f180a76fd8a04', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, index.h("div", { key: 'ff87fd8f171e46d211d92709d3141ad884ce0253' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), index.h("div", { key: 'f43f53b4fc28ae9a7fe7e240635a3f410daaa72c' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), index.h("div", { key: 'e2c45f541e0626a6ea1d5a36047fb2144eabf612' }, "TranslateX: ", this.core.store.state?.translateX), index.h("div", { key: 'f7897dde7e2a0b3be1c73342523db9f0c361bdb9' }, "TranslateY: ", this.core.store.state?.translateY), index.h("div", { key: '8f6be6752c49f033eabfd63f1533666e4a4d3c15' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), index.h("div", { key: '26b96ecc0d184d9d224cfb14426503415a00a9ef' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), index.h("div", { key: '7275251e13cb83b670b944d6ce22015525247b83' }, "Scale: ", this.core.store.state?.scale), index.h("div", { key: 'f1f071ce637abd91639c0e6d0809d0493ff649e9' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), index.h("div", { key: 'fbc6e5cc3fad57cbd54b821f9aa1b68b213447a0' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), index.h("div", { key: 'ced900e880436a03d5490d818b10f079df3e2ed6' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), index.h("div", { key: 'ffb1c5e0310d246f04e747df85dcfde58c81d83f' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), index.h("div", { key: '5ad7bc9e7957f071400cc997613ec080b6484b8e' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), index.h("div", { key: '42d93051cb0ea2e24ef549abbffcc720dd62efa8' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), index.h("div", { key: '78a54f7df911c0721fed70be15ccbefae5d99b33' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), index.h("div", { key: 'e4c4ca2b3f5429a5f9378122a5bfc380eea82cc6' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), index.h("div", { key: '1947034670be8512d3654e104c7ea62bf70f207f' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), index.h("div", { key: 'ecca8afceda81c4817db3e91f5bc4837056c4de0' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), index.h("div", { key: '1ca1d5cac7421442851f35574bd7765d850399f9' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), index.h("div", { key: '1e388d4dd59026dff761a598838b5bd10843d177' }, "PointerX: ", this.core.store.state?.pointerX), index.h("div", { key: '2c2b28eb4a9d293dd8d5d98a072f4bbeb7d0349c' }, "PointerY: ", this.core.store.state?.pointerY), index.h("div", { key: 'e41abf270f34643902a0a8d049dad405ead68321' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0)), index.h("div", { key: 'e2ed793fac7f3f289daa962042e05e4fd8f44d3b', id: "origin", class: "origin", style: {
2362
2349
  transform: `matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`,
2363
2350
  } }, this.core.store.state.objectsMap.allObjects()?.map(object => {
2364
2351
  return (index.h("div", { key: object.id, style: {
@@ -2477,7 +2464,7 @@ const KritzelEngine = class {
2477
2464
  transform: this.core.store.state.currentPath?.transformationMatrix,
2478
2465
  transformOrigin: 'top left',
2479
2466
  overflow: 'visible',
2480
- }, viewBox: this.core.store.state.currentPath?.viewBox }, index.h("path", { key: '6dedb398968d275166e042660c4718635b57da84', 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 && (index.h("kritzel-context-menu", { key: '09ae0d7842918bcb4ae9fd16d416badc19942264', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: this.core.store.state.selectionGroup?.objects || [], style: {
2467
+ }, viewBox: this.core.store.state.currentPath?.viewBox }, index.h("path", { key: '2070b03bfd123024e7075da1a969960cf8b37628', 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 && (index.h("kritzel-context-menu", { key: '3fc8fc5b1a75bd119effcf5b8f454e18b9c97fc6', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: this.core.store.state.selectionGroup?.objects || [], style: {
2481
2468
  position: 'fixed',
2482
2469
  left: `${this.core.store.state.contextMenuX}px`,
2483
2470
  top: `${this.core.store.state.contextMenuY}px`,
@@ -2488,7 +2475,7 @@ const KritzelEngine = class {
2488
2475
  y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,
2489
2476
  }, this.core.store.state.selectionGroup?.objects);
2490
2477
  this.hideContextMenu();
2491
- }, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof index$1.KritzelEraserTool && !this.core.store.state.isScaling && index.h("kritzel-cursor-trail", { key: 'e0863ccf8c52ebef822827d8eeac62d3619134ca', core: this.core })));
2478
+ }, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof index$1.KritzelEraserTool && !this.core.store.state.isScaling && index.h("kritzel-cursor-trail", { key: '11612f7439e34cf20843f5ab63b19d5ef07847d7', core: this.core })));
2492
2479
  }
2493
2480
  static get watchers() { return {
2494
2481
  "workspace": ["onWorkspaceChange"],
@@ -2903,6 +2890,15 @@ const KritzelPortal = class {
2903
2890
  handleResize() {
2904
2891
  this.calculatePosition();
2905
2892
  }
2893
+ handleWindowScroll() {
2894
+ const isInViewport = KritzelHTMLHelper.isElementInViewport(this.anchor);
2895
+ if (!isInViewport) {
2896
+ this.anchor.blur();
2897
+ this.closePortal();
2898
+ return;
2899
+ }
2900
+ this.calculatePosition();
2901
+ }
2906
2902
  portal;
2907
2903
  id = `portal-${index$1.ObjectHelper.generateUUID()}`;
2908
2904
  defaultOffset = 0;
@@ -3005,7 +3001,7 @@ const KritzelPortal = class {
3005
3001
  this.portal.style.left = `${left}px`;
3006
3002
  }
3007
3003
  render() {
3008
- return (index.h(index.Host, { key: 'a994d8ab8c758bc92836693f35f8d9415913cfff', style: { display: this.anchor ? 'block' : 'none' } }, index.h("slot", { key: 'a9b9a71d82e9b57de24e5ecfa90197a27ed691c4' })));
3004
+ return (index.h(index.Host, { key: 'cb26dba15d036fe47c64d35b0a6e0be870de5228', style: { display: this.anchor ? 'block' : 'none' } }, index.h("slot", { key: 'de69a0ee1f7e6584037a3e9057ad9f0c39fb9e89' })));
3009
3005
  }
3010
3006
  static get watchers() { return {
3011
3007
  "anchor": ["anchorChanged"]
@@ -3269,6 +3265,11 @@ const KritzelWorkspaceManager = class {
3269
3265
  openChildMenuItem = null;
3270
3266
  newWorkspace = null;
3271
3267
  editingItemId = null;
3268
+ handleWheel(event) {
3269
+ if (event.ctrlKey) {
3270
+ event.preventDefault();
3271
+ }
3272
+ }
3272
3273
  kritzelEngineRef = null;
3273
3274
  splitButtonRef;
3274
3275
  get sortedWorkspaces() {
@@ -6,7 +6,7 @@ var appGlobals = require('./app-globals-V2Kpy_OQ.js');
6
6
  const defineCustomElements = async (win, options) => {
7
7
  if (typeof window === 'undefined') return undefined;
8
8
  await appGlobals.globalScripts();
9
- return index.bootstrapLazy([["kritzel-color_22.cjs",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"dblclick","handleTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[257,"kritzel-workspace-manager",{"activeWorkspace":[16,"active-workspace"],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]}],[257,"kritzel-engine",{"workspace":[16],"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"]],{"workspace":["onWorkspaceChange"],"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-split-button",{"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"items":[16],"mainButtonDisabled":[4,"main-button-disabled"],"menuButtonDisabled":[4,"menu-button-disabled"],"isMenuOpen":[32],"isTouchDevice":[32],"anchorElement":[32],"open":[64],"focusMenu":[64]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"core":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32],"focusContent":[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-menu",{"items":[16],"parent":[16],"selectedIndex":[32],"setFocus":[64]}],[257,"kritzel-menu-item",{"item":[16],"parent":[16],"isDirty":[32]},null,{"item":["onItemChange"]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"options":["optionsChanged"],"value":["externalValueChanged"]}],[257,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[8,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"]],{"anchor":["anchorChanged"]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["kritzel-brush-style.cjs",[[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}]]]], options);
9
+ return index.bootstrapLazy([["kritzel-color_22.cjs",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"dblclick","handleTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[257,"kritzel-workspace-manager",{"activeWorkspace":[16,"active-workspace"],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[257,"kritzel-engine",{"workspace":[16],"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"]],{"workspace":["onWorkspaceChange"],"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-split-button",{"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"items":[16],"mainButtonDisabled":[4,"main-button-disabled"],"menuButtonDisabled":[4,"menu-button-disabled"],"isMenuOpen":[32],"isTouchDevice":[32],"anchorElement":[32],"open":[64],"focusMenu":[64]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"core":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32],"focusContent":[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-menu",{"items":[16],"parent":[16],"selectedIndex":[32],"setFocus":[64]}],[257,"kritzel-menu-item",{"item":[16],"parent":[16],"isDirty":[32]},null,{"item":["onItemChange"]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"options":["optionsChanged"],"value":["externalValueChanged"]}],[257,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[8,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{"anchor":["anchorChanged"]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["kritzel-brush-style.cjs",[[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}]]]], options);
10
10
  };
11
11
 
12
12
  exports.setNonce = index.setNonce;
@@ -19,7 +19,7 @@ var patchBrowser = () => {
19
19
 
20
20
  patchBrowser().then(async (options) => {
21
21
  await appGlobals.globalScripts();
22
- return index.bootstrapLazy([["kritzel-color_22.cjs",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"dblclick","handleTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[257,"kritzel-workspace-manager",{"activeWorkspace":[16,"active-workspace"],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]}],[257,"kritzel-engine",{"workspace":[16],"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"]],{"workspace":["onWorkspaceChange"],"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-split-button",{"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"items":[16],"mainButtonDisabled":[4,"main-button-disabled"],"menuButtonDisabled":[4,"menu-button-disabled"],"isMenuOpen":[32],"isTouchDevice":[32],"anchorElement":[32],"open":[64],"focusMenu":[64]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"core":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32],"focusContent":[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-menu",{"items":[16],"parent":[16],"selectedIndex":[32],"setFocus":[64]}],[257,"kritzel-menu-item",{"item":[16],"parent":[16],"isDirty":[32]},null,{"item":["onItemChange"]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"options":["optionsChanged"],"value":["externalValueChanged"]}],[257,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[8,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"]],{"anchor":["anchorChanged"]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["kritzel-brush-style.cjs",[[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}]]]], options);
22
+ return index.bootstrapLazy([["kritzel-color_22.cjs",[[256,"kritzel-editor",{"scaleMax":[2,"scale-max"],"scaleMin":[2,"scale-min"],"controls":[16],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"customSvgIcons":[16,"custom-svg-icons"],"isControlsVisible":[4,"is-controls-visible"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"isEngineReady":[32],"isControlsReady":[32],"isWorkspaceManagerReady":[32],"workspaces":[32],"activeWorkspace":[32],"isVirtualKeyboardOpen":[32],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"dblclick","handleTouchStart"]],{"isEngineReady":["onIsEngineReady"],"isControlsReady":["onIsControlsReady"]}],[257,"kritzel-controls",{"controls":[16],"activeControl":[1040,"active-control"],"isUtilityPanelVisible":[4,"is-utility-panel-visible"],"firstConfig":[32],"isTooltipVisible":[32],"isTouchDevice":[32],"closeTooltip":[64]},[[4,"click","handleDocumentClick"],[8,"keydown","handleKeyDown"],[4,"activeToolChange","handleActiveToolChange"]]],[257,"kritzel-workspace-manager",{"activeWorkspace":[16,"active-workspace"],"workspaces":[16],"childMenuAnchor":[32],"openChildMenuItem":[32],"newWorkspace":[32],"editingItemId":[32]},[[8,"wheel","handleWheel"]]],[257,"kritzel-engine",{"workspace":[16],"activeTool":[16,"active-tool"],"globalContextMenuItems":[16,"global-context-menu-items"],"objectContextMenuItems":[16,"object-context-menu-items"],"scaleMax":[1026,"scale-max"],"scaleMin":[1026,"scale-min"],"forceUpdate":[32],"registerTool":[64],"changeActiveTool":[64],"disable":[64],"enable":[64],"delete":[64],"copy":[64],"paste":[64],"bringForward":[64],"sendBackward":[64],"bringToFront":[64],"sendToBack":[64],"undo":[64],"redo":[64],"hideContextMenu":[64],"getObjectById":[64],"addObject":[64],"updateObject":[64],"removeObject":[64],"getSelectedObjects":[64],"selectObjects":[64],"selectAllObjectsInViewport":[64],"clearSelection":[64],"centerObjectInViewport":[64],"getCopiedObjects":[64],"createWorkspace":[64],"updateWorkspace":[64],"deleteWorkspace":[64],"getWorkspaces":[64],"getActiveWorkspace":[64]},[[0,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[0,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"]],{"workspace":["onWorkspaceChange"],"scaleMax":["validateScaleMax"],"scaleMin":["validateScaleMin"]}],[257,"kritzel-control-text-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"]}],[257,"kritzel-control-brush-config",{"tool":[1040],"isExpanded":[1028,"is-expanded"],"palette":[32]},null,{"tool":["handleToolChange"]}],[257,"kritzel-split-button",{"buttonIcon":[1,"button-icon"],"dropdownIcon":[1,"dropdown-icon"],"items":[16],"mainButtonDisabled":[4,"main-button-disabled"],"menuButtonDisabled":[4,"menu-button-disabled"],"isMenuOpen":[32],"isTouchDevice":[32],"anchorElement":[32],"open":[64],"focusMenu":[64]}],[257,"kritzel-context-menu",{"items":[16],"objects":[16],"processedItems":[32]},[[9,"pointerdown","handleOutsideClick"]],{"items":["onItemsChanged"]}],[257,"kritzel-utility-panel"],[257,"kritzel-cursor-trail",{"core":[16],"cursorTrailPoints":[32],"isLeftButtonDown":[32]},[[9,"pointerdown","handleMouseDown"],[9,"pointermove","handlePointerMove"],[9,"pointerup","handlePointerUp"]]],[257,"kritzel-tooltip",{"isVisible":[4,"is-visible"],"anchorElement":[16,"anchor-element"],"arrowSize":[2,"arrow-size"],"offsetY":[2,"offset-y"],"positionX":[32],"arrowOffset":[32],"isMobileView":[32],"focusContent":[64]},[[4,"click","handleOutsideClick"],[9,"resize","handleWindowResize"]]],[257,"kritzel-font-family",{"fontOptions":[16,"font-options"],"selectedFontFamily":[1025,"selected-font-family"]}],[257,"kritzel-font-size",{"sizes":[16],"selectedSize":[1026,"selected-size"],"fontFamily":[1,"font-family"]}],[257,"kritzel-stroke-size",{"sizes":[16],"selectedSize":[1026,"selected-size"]}],[257,"kritzel-color-palette",{"colors":[16],"selectedColor":[1025,"selected-color"],"isExpanded":[4,"is-expanded"],"isOpaque":[4,"is-opaque"]}],[257,"kritzel-font",{"fontFamily":[1,"font-family"],"size":[2],"color":[1]}],[257,"kritzel-menu",{"items":[16],"parent":[16],"selectedIndex":[32],"setFocus":[64]}],[257,"kritzel-menu-item",{"item":[16],"parent":[16],"isDirty":[32]},null,{"item":["onItemChange"]}],[257,"kritzel-dropdown",{"options":[16],"value":[1],"width":[1],"selectStyles":[8,"select-styles"],"internalValue":[32],"hasSuffixContent":[32],"hasPrefixContent":[32]},null,{"options":["optionsChanged"],"value":["externalValueChanged"]}],[257,"kritzel-portal",{"anchor":[16],"offsetX":[2,"offset-x"],"offsetY":[2,"offset-y"],"autoFocus":[4,"auto-focus"]},[[8,"click","handleOutsideClick"],[8,"keydown","handleKeyDown"],[11,"resize","handleResize"],[11,"scroll","handleWindowScroll"]],{"anchor":["anchorChanged"]}],[257,"kritzel-color",{"value":[1],"size":[2]}],[257,"kritzel-icon",{"name":[1],"label":[1],"size":[2]}]]],["kritzel-brush-style.cjs",[[257,"kritzel-brush-style",{"type":[1],"brushOptions":[16,"brush-options"]}]]]], options);
23
23
  });
24
24
 
25
25
  exports.setNonce = index.setNonce;
@@ -1,20 +1,23 @@
1
1
  import { KrtizelSelectionBox } from "../objects/selection-box.class";
2
+ import { KritzelSelectionGroup } from "../objects/selection-group.class";
2
3
  import { KritzelBaseCommand } from "./base.command";
3
4
  export class AddSelectionGroupCommand extends KritzelBaseCommand {
4
5
  selectionGroup;
5
- constructor(core, initiator, selectionGroup, skipHistory = false) {
6
+ previousSelectionGroup;
7
+ constructor(core, initiator, selectionGroup, previousSelectionGroup, skipHistory = false) {
6
8
  super(core, initiator, skipHistory);
7
9
  this.selectionGroup = selectionGroup;
10
+ this.previousSelectionGroup = previousSelectionGroup || null;
8
11
  }
9
12
  execute() {
10
- this._core.store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox);
13
+ this._core.store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox || object instanceof KritzelSelectionGroup);
11
14
  this._core.store.state.objectsMap.insert(this.selectionGroup);
12
15
  this._core.store.setState('selectionGroup', this.selectionGroup);
13
16
  this._core.store.setState('selectionBox', null);
14
17
  }
15
18
  undo() {
16
19
  this._core.store.state.objectsMap.remove(object => object.id === this.selectionGroup.id);
17
- this._core.store.setState('selectionGroup', null);
20
+ this._core.store.setState('selectionGroup', this.previousSelectionGroup);
18
21
  this._core.store.setState('selectionBox', null);
19
22
  }
20
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add-selection-group.command.js","sourceRoot":"","sources":["../../../src/classes/commands/add-selection-group.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IACtD,cAAc,CAAwB;IAE9C,YAAY,IAAiB,EAAE,SAAc,EAAE,cAAqC,EAAE,WAAW,GAAG,KAAK;QACvG,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,YAAY,mBAAmB,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["import { KritzelCore } from '../core/core.class';\r\nimport { KrtizelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseCommand } from './base.command';\r\n\r\nexport class AddSelectionGroupCommand extends KritzelBaseCommand {\r\n private selectionGroup: KritzelSelectionGroup;\r\n\r\n constructor(core: KritzelCore, initiator: any, selectionGroup: KritzelSelectionGroup, skipHistory = false) {\r\n super(core, initiator, skipHistory);\r\n this.selectionGroup = selectionGroup;\r\n }\r\n\r\n execute(): void {\r\n this._core.store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox);\r\n this._core.store.state.objectsMap.insert(this.selectionGroup);\r\n\r\n this._core.store.setState('selectionGroup', this.selectionGroup);\r\n this._core.store.setState('selectionBox', null);\r\n }\r\n\r\n undo(): void {\r\n this._core.store.state.objectsMap.remove(object => object.id === this.selectionGroup.id);\r\n this._core.store.setState('selectionGroup', null);\r\n this._core.store.setState('selectionBox', null);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"add-selection-group.command.js","sourceRoot":"","sources":["../../../src/classes/commands/add-selection-group.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IACtD,cAAc,CAAwB;IACtC,sBAAsB,CAA+B;IAE7D,YAAY,IAAiB,EAAE,SAAc,EAAE,cAAqC,EAAE,sBAA8C,EAAE,WAAW,GAAG,KAAK;QACvJ,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,IAAI,IAAI,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,YAAY,mBAAmB,IAAI,MAAM,YAAY,qBAAqB,CAAC,CAAC;QACrI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["import { KritzelCore } from '../core/core.class';\r\nimport { KrtizelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseCommand } from './base.command';\r\n\r\nexport class AddSelectionGroupCommand extends KritzelBaseCommand {\r\n private selectionGroup: KritzelSelectionGroup;\r\n private previousSelectionGroup: KritzelSelectionGroup | null;\r\n\r\n constructor(core: KritzelCore, initiator: any, selectionGroup: KritzelSelectionGroup, previousSelectionGroup?: KritzelSelectionGroup, skipHistory = false) {\r\n super(core, initiator, skipHistory);\r\n this.selectionGroup = selectionGroup;\r\n this.previousSelectionGroup = previousSelectionGroup || null;\r\n }\r\n\r\n execute(): void {\r\n this._core.store.state.objectsMap.remove(object => object instanceof KrtizelSelectionBox || object instanceof KritzelSelectionGroup);\r\n this._core.store.state.objectsMap.insert(this.selectionGroup);\r\n\r\n this._core.store.setState('selectionGroup', this.selectionGroup);\r\n this._core.store.setState('selectionBox', null);\r\n }\r\n\r\n undo(): void {\r\n this._core.store.state.objectsMap.remove(object => object.id === this.selectionGroup.id);\r\n this._core.store.setState('selectionGroup', this.previousSelectionGroup);\r\n this._core.store.setState('selectionBox', null);\r\n }\r\n}\r\n"]}
@@ -18,6 +18,11 @@ export class MoveSelectionGroupCommand extends KritzelBaseCommand {
18
18
  execute() {
19
19
  if (this.skipExecution) {
20
20
  this.skipExecution = false;
21
+ // Skip execution, but still update objects
22
+ this._core.store.state.selectionGroup.objects.forEach(object => {
23
+ this._core.store.state.objectsMap.update(object);
24
+ this._core.updateObjectInDatabase(object);
25
+ });
21
26
  return;
22
27
  }
23
28
  this._core.store.setState('selectionGroup', this.selectionGroup);
@@ -1 +1 @@
1
- {"version":3,"file":"move-selection-group.command.js","sourceRoot":"","sources":["../../../src/classes/commands/move-selection-group.command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IACvD,cAAc,CAAwB;IAEtC,MAAM,CAAS;IAEf,MAAM,CAAS;IAEf,IAAI,CAAS;IAEb,IAAI,CAAS;IAEb,aAAa,CAAU;IAE/B,YAAY,IAAiB,EAAE,SAAc,EAAE,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,IAAY,EAAE,kBAAkB,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK;QACxJ,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { KritzelCore } from '../core/core.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseCommand } from './base.command';\r\n\r\nexport class MoveSelectionGroupCommand extends KritzelBaseCommand {\r\n private selectionGroup: KritzelSelectionGroup;\r\n\r\n private startX: number;\r\n\r\n private startY: number;\r\n\r\n private endX: number;\r\n\r\n private endY: number;\r\n\r\n private skipExecution: boolean;\r\n\r\n constructor(core: KritzelCore, initiator: any, startX: number, startY: number, endX: number, endY: number, skipFirstExecution = false, skipHistory = false) {\r\n super(core, initiator, skipHistory);\r\n this.startX = startX;\r\n this.startY = startY;\r\n this.endX = endX;\r\n this.endY = endY;\r\n this.skipExecution = skipFirstExecution;\r\n this.selectionGroup = this._core.store.state.selectionGroup;\r\n }\r\n\r\n execute(): void {\r\n if (this.skipExecution) {\r\n this.skipExecution = false;\r\n return;\r\n }\r\n\r\n this._core.store.setState('selectionGroup', this.selectionGroup);\r\n this._core.store.state.selectionGroup.move(this.startX, this.startY, this.endX, this.endY);\r\n this._core.store.state.selectionGroup.objects.forEach(object => {\r\n this._core.store.state.objectsMap.update(object);\r\n this._core.updateObjectInDatabase(object);\r\n });\r\n }\r\n\r\n undo(): void {\r\n this._core.store.setState('selectionGroup', this.selectionGroup);\r\n this._core.store.state.selectionGroup.move(this.endX, this.endY, this.startX, this.startY);\r\n this._core.store.state.selectionGroup.objects.forEach(object => {\r\n this._core.store.state.objectsMap.update(object);\r\n this._core.updateObjectInDatabase(object);\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"move-selection-group.command.js","sourceRoot":"","sources":["../../../src/classes/commands/move-selection-group.command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IACvD,cAAc,CAAwB;IAEtC,MAAM,CAAS;IAEf,MAAM,CAAS;IAEf,IAAI,CAAS;IAEb,IAAI,CAAS;IAEb,aAAa,CAAU;IAE/B,YAAY,IAAiB,EAAE,SAAc,EAAE,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,IAAY,EAAE,kBAAkB,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK;QACxJ,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,2CAA2C;YAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { KritzelCore } from '../core/core.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseCommand } from './base.command';\r\n\r\nexport class MoveSelectionGroupCommand extends KritzelBaseCommand {\r\n private selectionGroup: KritzelSelectionGroup;\r\n\r\n private startX: number;\r\n\r\n private startY: number;\r\n\r\n private endX: number;\r\n\r\n private endY: number;\r\n\r\n private skipExecution: boolean;\r\n\r\n constructor(core: KritzelCore, initiator: any, startX: number, startY: number, endX: number, endY: number, skipFirstExecution = false, skipHistory = false) {\r\n super(core, initiator, skipHistory);\r\n this.startX = startX;\r\n this.startY = startY;\r\n this.endX = endX;\r\n this.endY = endY;\r\n this.skipExecution = skipFirstExecution;\r\n this.selectionGroup = this._core.store.state.selectionGroup;\r\n }\r\n\r\n execute(): void {\r\n if (this.skipExecution) {\r\n this.skipExecution = false;\r\n // Skip execution, but still update objects\r\n this._core.store.state.selectionGroup.objects.forEach(object => {\r\n this._core.store.state.objectsMap.update(object);\r\n this._core.updateObjectInDatabase(object);\r\n });\r\n return;\r\n }\r\n\r\n this._core.store.setState('selectionGroup', this.selectionGroup);\r\n this._core.store.state.selectionGroup.move(this.startX, this.startY, this.endX, this.endY);\r\n this._core.store.state.selectionGroup.objects.forEach(object => {\r\n this._core.store.state.objectsMap.update(object);\r\n this._core.updateObjectInDatabase(object);\r\n });\r\n }\r\n\r\n undo(): void {\r\n this._core.store.setState('selectionGroup', this.selectionGroup);\r\n this._core.store.state.selectionGroup.move(this.endX, this.endY, this.startX, this.startY);\r\n this._core.store.state.selectionGroup.objects.forEach(object => {\r\n this._core.store.state.objectsMap.update(object);\r\n this._core.updateObjectInDatabase(object);\r\n });\r\n }\r\n}\r\n"]}
@@ -215,11 +215,13 @@ export class KritzelCore {
215
215
  const adjustedY = y !== undefined ? y : this._store.state.copiedObjects.translateY + 25 / this._store.state.scale;
216
216
  this._store.state.copiedObjects.updatePosition(adjustedX, adjustedY);
217
217
  const commands = [];
218
+ let previousSelectionGroup = null;
218
219
  if (this._store.state.selectionGroup !== null) {
220
+ previousSelectionGroup = this._store.state.selectionGroup;
219
221
  commands.push(new RemoveSelectionGroupCommand(this, this._store.state.selectionGroup));
220
222
  }
221
223
  const addCopiedObjectsCommands = this._store.state.copiedObjects.objects.map(obj => new AddObjectCommand(this, this, obj));
222
- const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this._store.state.copiedObjects);
224
+ const addCopiedObjectsAsSelectionGroupCommand = new AddSelectionGroupCommand(this, this, this._store.state.copiedObjects, previousSelectionGroup);
223
225
  commands.push(...addCopiedObjectsCommands, addCopiedObjectsAsSelectionGroupCommand);
224
226
  this.history.executeCommand(new BatchCommand(this, this, commands));
225
227
  this._store.setState('isSelecting', false);