kritzel-stencil 0.0.138 → 0.0.139

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 (61) hide show
  1. package/dist/cjs/{index-CYkadfjX.js → index-DgZMn9B_.js} +41 -21
  2. package/dist/cjs/index-DgZMn9B_.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/kritzel-color_22.cjs.entry.js +9 -18
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/stencil.cjs.js +1 -1
  7. package/dist/collection/classes/handlers/move.handler.js +2 -0
  8. package/dist/collection/classes/handlers/move.handler.js.map +1 -1
  9. package/dist/collection/classes/handlers/resize.handler.js +2 -0
  10. package/dist/collection/classes/handlers/resize.handler.js.map +1 -1
  11. package/dist/collection/classes/handlers/rotation.handler.js +2 -0
  12. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  13. package/dist/collection/classes/handlers/selection.handler.js +23 -11
  14. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  15. package/dist/collection/classes/objects/text.class.js +4 -3
  16. package/dist/collection/classes/objects/text.class.js.map +1 -1
  17. package/dist/collection/classes/tools/selection-tool.class.js +1 -1
  18. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  19. package/dist/collection/classes/tools/text-tool.class.js +6 -4
  20. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  21. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +2 -15
  22. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  23. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +12 -3
  24. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  25. package/dist/collection/configs/default-engine-state.js +1 -0
  26. package/dist/collection/configs/default-engine-state.js.map +1 -1
  27. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  28. package/dist/components/index.js +2 -2
  29. package/dist/components/kritzel-controls.js +1 -1
  30. package/dist/components/kritzel-editor.js +4 -17
  31. package/dist/components/kritzel-editor.js.map +1 -1
  32. package/dist/components/kritzel-engine.js +1 -1
  33. package/dist/components/{p-Di5CEwzQ.js → p-BbGgijCS.js} +11 -9
  34. package/dist/components/p-BbGgijCS.js.map +1 -0
  35. package/dist/components/{p-PvCKCYuw.js → p-CHdJi6b4.js} +3 -3
  36. package/dist/components/{p-PvCKCYuw.js.map → p-CHdJi6b4.js.map} +1 -1
  37. package/dist/components/{p-D554MPA9.js → p-KudVTtHk.js} +41 -19
  38. package/dist/components/p-KudVTtHk.js.map +1 -0
  39. package/dist/esm/{index-IhpPa9g4.js → index-CxieEK_G.js} +41 -21
  40. package/dist/esm/index-CxieEK_G.js.map +1 -0
  41. package/dist/esm/index.js +1 -1
  42. package/dist/esm/kritzel-color_22.entry.js +9 -18
  43. package/dist/esm/loader.js +1 -1
  44. package/dist/esm/stencil.js +1 -1
  45. package/dist/stencil/index.esm.js +1 -1
  46. package/dist/stencil/p-CxieEK_G.js +2 -0
  47. package/dist/stencil/p-CxieEK_G.js.map +1 -0
  48. package/dist/stencil/{p-32ac435d.entry.js → p-ab074e87.entry.js} +2 -2
  49. package/dist/stencil/p-ab074e87.entry.js.map +1 -0
  50. package/dist/stencil/stencil.esm.js +1 -1
  51. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +1 -0
  52. package/dist/types/components.d.ts +2 -2
  53. package/dist/types/interfaces/engine-state.interface.d.ts +1 -0
  54. package/package.json +1 -1
  55. package/dist/cjs/index-CYkadfjX.js.map +0 -1
  56. package/dist/components/p-D554MPA9.js.map +0 -1
  57. package/dist/components/p-Di5CEwzQ.js.map +0 -1
  58. package/dist/esm/index-IhpPa9g4.js.map +0 -1
  59. package/dist/stencil/p-32ac435d.entry.js.map +0 -1
  60. package/dist/stencil/p-IhpPa9g4.js +0 -2
  61. package/dist/stencil/p-IhpPa9g4.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"selection.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/selection.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { AddSelectionGroupCommand } from '../commands/add-selection-group.command';\r\nimport { KrtizelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseHandler } from './base.handler';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelSelectionHandler extends KritzelBaseHandler {\r\n startX: number;\r\n startY: number;\r\n\r\n touchStartX: number = 0;\r\n touchStartY: number = 0;\r\n\r\n touchStartTimeout: any = null;\r\n\r\n get isSelectionClick() {\r\n return this._core.store.state.selectionBox && this._core.store.state.selectionBox.width === 0 && this._core.store.state.selectionBox.height === 0;\r\n }\r\n\r\n get isSelectionDrag() {\r\n return this._core.store.state.selectionBox && (this._core.store.state.selectionBox.width > 0 || this._core.store.state.selectionBox.height > 0);\r\n }\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent) {\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event) && !this._core.store.state.selectionGroup) {\r\n this.startMouseSelection(event);\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n this.touchStartTimeout = setTimeout(() => {\r\n if (this._core.store.state.pointers.size === 1 && !this._core.store.state.isScaling && !this._core.store.state.selectionGroup) {\r\n this.startTouchSelection();\r\n this.updateTouchSelection();\r\n }\r\n }, 80);\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent) {\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isSelecting) {\r\n this.updateMouseSelection(event);\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n const x = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const y = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n\r\n const moveDeltaX = Math.abs(x - this.touchStartX);\r\n const moveDeltaY = Math.abs(y - this.touchStartY);\r\n const moveThreshold = 5;\r\n\r\n if ((moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) && this._core.store.state.isSelecting) {\r\n this.updateTouchSelection();\r\n\r\n clearTimeout(this._core.store.state.longTouchTimeout);\r\n }\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent) {\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event) && this._core.store.state.isSelecting) {\r\n if (this.isSelectionClick) {\r\n const x = this._core.store.state.pointerX;\r\n const y = this._core.store.state.pointerY;\r\n const selectedObject = this._core.getObjectsFromPointerEvent(event, '.object').find(obj => obj.hitTest(x, y));\r\n\r\n this.addObjectToSelectionGroup(selectedObject);\r\n this.removeSelectionBox();\r\n }\r\n\r\n if (this.isSelectionDrag) {\r\n this.updateMouseSelection(event);\r\n this.addSelectedObjectsToSelectionGroup();\r\n this.removeSelectionBox();\r\n }\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n clearTimeout(this.touchStartTimeout);\r\n\r\n if (this._core.store.state.isSelecting) {\r\n if (this.isSelectionClick) {\r\n const x = this._core.store.state.pointerX;\r\n const y = this._core.store.state.pointerY;\r\n const selectedObject = this._core.getObjectsFromPointerEvent(event, '.object').find(obj => obj.hitTest(x, y));\r\n\r\n this.addObjectToSelectionGroup(selectedObject);\r\n this.removeSelectionBox();\r\n }\r\n\r\n if (this.isSelectionDrag) {\r\n this.updateTouchSelection();\r\n this.addSelectedObjectsToSelectionGroup();\r\n this.removeSelectionBox();\r\n }\r\n\r\n this._core.store.setState('skipContextMenu', false);\r\n }\r\n }\r\n }\r\n\r\n private removeSelectionBox(): void {\r\n this._core.store.setState('selectionBox', null);\r\n this._core.store.setState('isSelecting', false);\r\n this._core.store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox);\r\n }\r\n\r\n private startMouseSelection(event: MouseEvent): void {\r\n let clientX, clientY;\r\n\r\n clientX = event.clientX - this._core.store.offsetX;\r\n clientY = event.clientY - this._core.store.offsetY;\r\n\r\n const selectionBox = KrtizelSelectionBox.create(this._core);\r\n\r\n this.startX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n this.startY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n\r\n selectionBox.translateX = this.startX;\r\n selectionBox.translateY = this.startY;\r\n\r\n this._core.store.setState('selectionGroup', null);\r\n this._core.store.setState('selectionBox', selectionBox);\r\n this._core.store.setState('isSelecting', true);\r\n\r\n this._core.store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);\r\n this._core.store.state.objectsMap.insert(selectionBox);\r\n }\r\n\r\n private startTouchSelection(): void {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n const firstTouch = activePointers[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n let clientX, clientY;\r\n\r\n clientX = Math.round(firstTouch.clientX - this._core.store.offsetX);\r\n clientY = Math.round(firstTouch.clientY - this._core.store.offsetY);\r\n this.touchStartX = clientX;\r\n this.touchStartY = clientY;\r\n\r\n const selectionBox = KrtizelSelectionBox.create(this._core);\r\n\r\n this.startX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n this.startY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n\r\n selectionBox.translateX = this.startX;\r\n selectionBox.translateY = this.startY;\r\n\r\n this._core.store.setState('selectionGroup', null);\r\n this._core.store.setState('selectionBox', selectionBox);\r\n this._core.store.setState('isSelecting', true);\r\n\r\n this._core.store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);\r\n this._core.store.state.objectsMap.insert(selectionBox);\r\n }\r\n\r\n private updateMouseSelection(event: MouseEvent): void {\r\n let clientX, clientY;\r\n\r\n clientX = event.clientX - this._core.store.offsetX;\r\n clientY = event.clientY - this._core.store.offsetY;\r\n\r\n const selectionBox = this._core.store.state.selectionBox;\r\n\r\n if (selectionBox) {\r\n const currentX = (clientX - this._core.store.state.translateX) / selectionBox.scale;\r\n const currentY = (clientY - this._core.store.state.translateY) / selectionBox.scale;\r\n\r\n selectionBox.width = Math.abs(currentX - this.startX) * selectionBox.scale;\r\n selectionBox.height = Math.abs(currentY - this.startY) * selectionBox.scale;\r\n selectionBox.translateX = Math.min(currentX, this.startX);\r\n selectionBox.translateY = Math.min(currentY, this.startY);\r\n\r\n this.updateSelectedObjects();\r\n }\r\n }\r\n\r\n private updateTouchSelection(): void {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n const firstTouch = activePointers[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n let clientX, clientY;\r\n\r\n clientX = Math.round(firstTouch.clientX - this._core.store.offsetX);\r\n clientY = Math.round(firstTouch.clientY - this._core.store.offsetY);\r\n\r\n const selectionBox = this._core.store.state.selectionBox;\r\n\r\n if (selectionBox) {\r\n const currentX = (clientX - this._core.store.state.translateX) / selectionBox.scale;\r\n const currentY = (clientY - this._core.store.state.translateY) / selectionBox.scale;\r\n\r\n selectionBox.width = Math.abs(currentX - this.startX) * selectionBox.scale;\r\n selectionBox.height = Math.abs(currentY - this.startY) * selectionBox.scale;\r\n selectionBox.translateX = Math.min(currentX, this.startX);\r\n selectionBox.translateY = Math.min(currentY, this.startY);\r\n\r\n this.updateSelectedObjects();\r\n }\r\n }\r\n\r\n private updateSelectedObjects(): void {\r\n this._core.store.allObjects\r\n .filter(o => !(o instanceof KrtizelSelectionBox))\r\n .forEach(object => (object.isSelected = object.hitTestPolygon(this._core.store.state.selectionBox.rotatedPolygon)));\r\n }\r\n\r\n private addObjectToSelectionGroup(object: KritzelBaseObject): void {\r\n if (!object) {\r\n return;\r\n }\r\n\r\n object.isSelected = false;\r\n\r\n const selectionGroup = KritzelSelectionGroup.create(this._core);\r\n selectionGroup.addOrRemove(object);\r\n selectionGroup.isSelected = true;\r\n selectionGroup.rotation = object.rotation;\r\n\r\n this._core.history.executeCommand(new AddSelectionGroupCommand(this._core, this, selectionGroup));\r\n }\r\n\r\n private addSelectedObjectsToSelectionGroup(): void {\r\n const selectedObjects = this._core.store.selectedObjects;\r\n\r\n if (selectedObjects.length === 0) {\r\n return;\r\n }\r\n\r\n this._core.store.setState('selectionGroup', KritzelSelectionGroup.create(this._core));\r\n selectedObjects.forEach(o => {\r\n this._core.store.state.selectionGroup.addOrRemove(o);\r\n o.isSelected = false;\r\n });\r\n\r\n const selectionGroup = this._core.store.state.selectionGroup;\r\n selectionGroup.isSelected = true;\r\n\r\n if (selectionGroup.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this._core.history.executeCommand(new AddSelectionGroupCommand(this._core, this, selectionGroup));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"selection.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/selection.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { AddSelectionGroupCommand } from '../commands/add-selection-group.command';\r\nimport { KrtizelSelectionBox } from '../objects/selection-box.class';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseHandler } from './base.handler';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelSelectionHandler extends KritzelBaseHandler {\r\n startX: number;\r\n startY: number;\r\n\r\n touchStartX: number = 0;\r\n touchStartY: number = 0;\r\n\r\n touchStartTimeout: any = null;\r\n\r\n get isSelectionClick() {\r\n return this._core.store.state.selectionBox && this._core.store.state.selectionBox.width === 0 && this._core.store.state.selectionBox.height === 0;\r\n }\r\n\r\n get isSelectionDrag() {\r\n return this._core.store.state.selectionBox && (this._core.store.state.selectionBox.width > 0 || this._core.store.state.selectionBox.height > 0);\r\n }\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent) {\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event) && !this._core.store.state.selectionGroup) {\r\n this.startMouseSelection(event);\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n this.touchStartTimeout = setTimeout(() => {\r\n if (this._core.store.state.pointers.size === 1 && !this._core.store.state.isScaling && !this._core.store.state.selectionGroup) {\r\n this.startTouchSelection();\r\n this.updateTouchSelection();\r\n }\r\n }, 80);\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent) {\r\n if (event.pointerType === 'mouse') {\r\n if (this._core.store.state.isSelecting) {\r\n this.updateMouseSelection(event);\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n const x = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const y = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n\r\n const moveDeltaX = Math.abs(x - this.touchStartX);\r\n const moveDeltaY = Math.abs(y - this.touchStartY);\r\n const moveThreshold = 5;\r\n\r\n if ((moveDeltaX > moveThreshold || moveDeltaY > moveThreshold) && this._core.store.state.isSelecting) {\r\n this.updateTouchSelection();\r\n\r\n clearTimeout(this._core.store.state.longTouchTimeout);\r\n }\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent) {\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n const hasObjectsMoved = this._core.store.state.hasObjectsChanged;\r\n\r\n if (this._core.store.state.selectionGroup?.objects.length === 1 && hasObjectsMoved === false) {\r\n this._core.store.state.selectionGroup.objects[0].edit();\r\n }\r\n\r\n this._core.store.setState('hasObjectsChanged', false);\r\n\r\n if (this._core.store.state.isSelecting) {\r\n if (this.isSelectionClick) {\r\n const x = this._core.store.state.pointerX;\r\n const y = this._core.store.state.pointerY;\r\n const selectedObject = this._core.getObjectsFromPointerEvent(event, '.object').find(obj => obj.hitTest(x, y));\r\n\r\n this.addObjectToSelectionGroup(selectedObject);\r\n this.removeSelectionBox();\r\n }\r\n\r\n if (this.isSelectionDrag) {\r\n this.updateMouseSelection(event);\r\n this.addSelectedObjectsToSelectionGroup();\r\n this.removeSelectionBox();\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n clearTimeout(this.touchStartTimeout);\r\n\r\n const hasObjectsMoved = this._core.store.state.hasObjectsChanged;\r\n\r\n if (this._core.store.state.selectionGroup?.objects.length === 1 && hasObjectsMoved === false) {\r\n this._core.store.state.selectionGroup.objects[0].edit();\r\n }\r\n\r\n this._core.store.setState('hasObjectsChanged', false);\r\n\r\n if (this._core.store.state.isSelecting) {\r\n if (this.isSelectionClick) {\r\n const x = this._core.store.state.pointerX;\r\n const y = this._core.store.state.pointerY;\r\n const selectedObject = this._core.getObjectsFromPointerEvent(event, '.object').find(obj => obj.hitTest(x, y));\r\n this.addObjectToSelectionGroup(selectedObject);\r\n this.removeSelectionBox();\r\n }\r\n\r\n if (this.isSelectionDrag) {\r\n this.updateTouchSelection();\r\n this.addSelectedObjectsToSelectionGroup();\r\n this.removeSelectionBox();\r\n }\r\n\r\n this._core.store.setState('skipContextMenu', false);\r\n }\r\n }\r\n }\r\n\r\n private removeSelectionBox(): void {\r\n this._core.store.setState('selectionBox', null);\r\n this._core.store.setState('isSelecting', false);\r\n this._core.store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox);\r\n }\r\n\r\n private startMouseSelection(event: MouseEvent): void {\r\n let clientX, clientY;\r\n\r\n clientX = event.clientX - this._core.store.offsetX;\r\n clientY = event.clientY - this._core.store.offsetY;\r\n\r\n const selectionBox = KrtizelSelectionBox.create(this._core);\r\n\r\n this.startX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n this.startY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n\r\n selectionBox.translateX = this.startX;\r\n selectionBox.translateY = this.startY;\r\n\r\n this._core.store.setState('selectionGroup', null);\r\n this._core.store.setState('selectionBox', selectionBox);\r\n this._core.store.setState('isSelecting', true);\r\n\r\n this._core.store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);\r\n this._core.store.state.objectsMap.insert(selectionBox);\r\n }\r\n\r\n private startTouchSelection(): void {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n const firstTouch = activePointers[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n let clientX, clientY;\r\n\r\n clientX = Math.round(firstTouch.clientX - this._core.store.offsetX);\r\n clientY = Math.round(firstTouch.clientY - this._core.store.offsetY);\r\n this.touchStartX = clientX;\r\n this.touchStartY = clientY;\r\n\r\n const selectionBox = KrtizelSelectionBox.create(this._core);\r\n\r\n this.startX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n this.startY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n\r\n selectionBox.translateX = this.startX;\r\n selectionBox.translateY = this.startY;\r\n\r\n this._core.store.setState('selectionGroup', null);\r\n this._core.store.setState('selectionBox', selectionBox);\r\n this._core.store.setState('isSelecting', true);\r\n\r\n this._core.store.state.objectsMap.remove(o => o instanceof KrtizelSelectionBox || o instanceof KritzelSelectionGroup);\r\n this._core.store.state.objectsMap.insert(selectionBox);\r\n }\r\n\r\n private updateMouseSelection(event: MouseEvent): void {\r\n let clientX, clientY;\r\n\r\n clientX = event.clientX - this._core.store.offsetX;\r\n clientY = event.clientY - this._core.store.offsetY;\r\n\r\n const selectionBox = this._core.store.state.selectionBox;\r\n\r\n if (selectionBox) {\r\n const currentX = (clientX - this._core.store.state.translateX) / selectionBox.scale;\r\n const currentY = (clientY - this._core.store.state.translateY) / selectionBox.scale;\r\n\r\n selectionBox.width = Math.abs(currentX - this.startX) * selectionBox.scale;\r\n selectionBox.height = Math.abs(currentY - this.startY) * selectionBox.scale;\r\n selectionBox.translateX = Math.min(currentX, this.startX);\r\n selectionBox.translateY = Math.min(currentY, this.startY);\r\n\r\n this.updateSelectedObjects();\r\n }\r\n }\r\n\r\n private updateTouchSelection(): void {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n const firstTouch = activePointers[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n let clientX, clientY;\r\n\r\n clientX = Math.round(firstTouch.clientX - this._core.store.offsetX);\r\n clientY = Math.round(firstTouch.clientY - this._core.store.offsetY);\r\n\r\n const selectionBox = this._core.store.state.selectionBox;\r\n\r\n if (selectionBox) {\r\n const currentX = (clientX - this._core.store.state.translateX) / selectionBox.scale;\r\n const currentY = (clientY - this._core.store.state.translateY) / selectionBox.scale;\r\n\r\n selectionBox.width = Math.abs(currentX - this.startX) * selectionBox.scale;\r\n selectionBox.height = Math.abs(currentY - this.startY) * selectionBox.scale;\r\n selectionBox.translateX = Math.min(currentX, this.startX);\r\n selectionBox.translateY = Math.min(currentY, this.startY);\r\n\r\n this.updateSelectedObjects();\r\n }\r\n }\r\n\r\n private updateSelectedObjects(): void {\r\n this._core.store.allObjects\r\n .filter(o => !(o instanceof KrtizelSelectionBox))\r\n .forEach(object => (object.isSelected = object.hitTestPolygon(this._core.store.state.selectionBox.rotatedPolygon)));\r\n }\r\n\r\n private addObjectToSelectionGroup(object: KritzelBaseObject): void {\r\n if (!object) {\r\n return;\r\n }\r\n\r\n object.isSelected = false;\r\n\r\n const selectionGroup = KritzelSelectionGroup.create(this._core);\r\n selectionGroup.addOrRemove(object);\r\n selectionGroup.isSelected = true;\r\n selectionGroup.rotation = object.rotation;\r\n\r\n this._core.history.executeCommand(new AddSelectionGroupCommand(this._core, this, selectionGroup));\r\n }\r\n\r\n private addSelectedObjectsToSelectionGroup(): void {\r\n const selectedObjects = this._core.store.selectedObjects;\r\n\r\n if (selectedObjects.length === 0) {\r\n return;\r\n }\r\n\r\n this._core.store.setState('selectionGroup', KritzelSelectionGroup.create(this._core));\r\n selectedObjects.forEach(o => {\r\n this._core.store.state.selectionGroup.addOrRemove(o);\r\n o.isSelected = false;\r\n });\r\n\r\n const selectionGroup = this._core.store.state.selectionGroup;\r\n selectionGroup.isSelected = true;\r\n\r\n if (selectionGroup.length === 1) {\r\n selectionGroup.rotation = selectionGroup.objects[0].rotation;\r\n }\r\n\r\n this._core.history.executeCommand(new AddSelectionGroupCommand(this._core, this, selectionGroup));\r\n }\r\n}\r\n"]}
@@ -2,6 +2,7 @@ import { UpdateObjectCommand } from "../commands/update-object.command";
2
2
  import { KritzelToolRegistry } from "../registries/tool.registry";
3
3
  import { KritzelTextTool } from "../tools/text-tool.class";
4
4
  import { KritzelBaseObject } from "./base-object.class";
5
+ import { KritzelKeyboardHelper } from "../../helpers/keyboard.helper";
5
6
  export class KritzelText extends KritzelBaseObject {
6
7
  __class__ = 'KritzelText';
7
8
  value = '';
@@ -132,12 +133,12 @@ export class KritzelText extends KritzelBaseObject {
132
133
  }
133
134
  }
134
135
  edit() {
136
+ KritzelKeyboardHelper.disableInteractiveWidget();
135
137
  this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));
136
138
  this._core.store.setState('activeText', this);
137
139
  this._core.clearSelection();
138
- setTimeout(() => {
139
- this.focus();
140
- }, 300);
140
+ this.focus();
141
+ KritzelKeyboardHelper.enableInteractiveWidget();
141
142
  }
142
143
  }
143
144
  //# sourceMappingURL=text.class.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.class.js","sourceRoot":"","sources":["../../../src/classes/objects/text.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { UpdateObjectCommand } from '../commands/update-object.command';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelTextTool } from '../tools/text-tool.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelText extends KritzelBaseObject<HTMLTextAreaElement> {\r\n override __class__: string = 'KritzelText';\r\n\r\n value: string = '';\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 8;\r\n fontColor: string = '#000000';\r\n initialWidth: number = 3;\r\n\r\n isNew: boolean = true;\r\n isDebugInfoVisible: boolean = true;\r\n isEditable: boolean = true;\r\n\r\n readonly rows: number = 1;\r\n\r\n get isReadonly(): boolean {\r\n return !(this._core.store.state.activeTool instanceof KritzelTextTool);\r\n }\r\n\r\n constructor(config?: {\r\n value: string;\r\n translateX?: number;\r\n translateY?: number;\r\n fontSize?: number;\r\n fontFamily?: string;\r\n fontColor?: string;\r\n height?: number;\r\n width?: number;\r\n scale?: number;\r\n }) {\r\n super();\r\n\r\n if (config) {\r\n this.value = config.value || ' ';\r\n this.translateX = config.translateX || 0;\r\n this.translateY = config.translateY || 0;\r\n this.fontSize = config.fontSize || 8;\r\n this.fontFamily = config.fontFamily || 'Arial';\r\n this.fontColor = config.fontColor || '#000000';\r\n this.height = config.height || this.fontSize * 1.2;\r\n this.width = config.width || 0;\r\n this.scale = config.scale || 1;\r\n }\r\n }\r\n\r\n static override create(core: KritzelCore, fontSize?: number, fontFamily?: string): KritzelText {\r\n const object = new KritzelText();\r\n\r\n object._core = core;\r\n object.id = object.generateId();\r\n object.workspaceId = core.store.state.activeWorkspace.id;\r\n object.fontSize = fontSize;\r\n object.fontFamily = fontFamily;\r\n object.translateX = 0;\r\n object.translateY = 0;\r\n object.width = object.initialWidth / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.height = (object.fontSize * 1.2) / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.padding = 5;\r\n object.backgroundColor = 'transparent';\r\n object.scale = object._core.store.state.scale;\r\n object.value = ' ';\r\n object.zIndex = core.store.currentZIndex;\r\n\r\n return object;\r\n }\r\n\r\n override mount(element: HTMLTextAreaElement): void {\r\n if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {\r\n return;\r\n }\r\n\r\n this.elementRef = element;\r\n this.isMounted = true;\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const scaleFactor = height / this.height;\r\n\r\n this.fontSize = this.fontSize * scaleFactor;\r\n this.width = this.width * scaleFactor;\r\n this.height = height;\r\n this.translateX = x;\r\n this.translateY = y;\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n if (this.isReadonly) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n handleInput(event: InputEvent): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n if (target.value === '') {\r\n this.value = ' ';\r\n target.value = ' ';\r\n target.selectionStart = target.selectionEnd = target.value.length;\r\n } else {\r\n this.value = target.value.trim();\r\n }\r\n\r\n this.updateTextareaDimensions();\r\n }\r\n\r\n updateTextareaDimensions() {\r\n if (this.elementRef) {\r\n const span = document.createElement('span');\r\n span.style.position = 'absolute';\r\n span.style.whiteSpace = 'pre-wrap';\r\n span.style.visibility = 'hidden';\r\n span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;\r\n span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;\r\n\r\n span.innerHTML = this.elementRef.value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\n/g, '<br>') + '<br>';\r\n\r\n document.body.appendChild(span);\r\n const textWidth = span.offsetWidth;\r\n const textHeight = span.offsetHeight;\r\n document.body.removeChild(span);\r\n\r\n this.width = textWidth;\r\n this.height = textHeight;\r\n\r\n this._core.history.executeCommand(new UpdateObjectCommand(this._core, this, this, { ...this }));\r\n }\r\n }\r\n\r\n focus(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n }\r\n }\r\n\r\n selectAll(): void {\r\n if (this.elementRef) {\r\n this.elementRef.select();\r\n }\r\n }\r\n\r\n insertFromClipboard(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n try {\r\n navigator.clipboard.readText().then(text => {\r\n const start = this.elementRef.selectionStart;\r\n const end = this.elementRef.selectionEnd;\r\n const value = this.elementRef.value;\r\n\r\n this.elementRef.value = value.substring(0, start) + text + value.substring(end);\r\n\r\n this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;\r\n this.value = this.elementRef.value;\r\n this.updateTextareaDimensions();\r\n });\r\n } catch (err) {\r\n console.error('Failed to read clipboard contents:', err);\r\n }\r\n }\r\n }\r\n\r\n edit(): void {\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._core.store.setState('activeText', this);\r\n this._core.clearSelection();\r\n\r\n\r\n setTimeout(() => {\r\n this.focus();\r\n }, 300);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"text.class.js","sourceRoot":"","sources":["../../../src/classes/objects/text.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { UpdateObjectCommand } from '../commands/update-object.command';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelTextTool } from '../tools/text-tool.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nimport { KritzelCore } from '../core/core.class';\r\nimport { KritzelKeyboardHelper } from '../../helpers/keyboard.helper';\r\n\r\nexport class KritzelText extends KritzelBaseObject<HTMLTextAreaElement> {\r\n override __class__: string = 'KritzelText';\r\n\r\n value: string = '';\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 8;\r\n fontColor: string = '#000000';\r\n initialWidth: number = 3;\r\n\r\n isNew: boolean = true;\r\n isDebugInfoVisible: boolean = true;\r\n isEditable: boolean = true;\r\n\r\n readonly rows: number = 1;\r\n\r\n get isReadonly(): boolean {\r\n return !(this._core.store.state.activeTool instanceof KritzelTextTool);\r\n }\r\n\r\n constructor(config?: {\r\n value: string;\r\n translateX?: number;\r\n translateY?: number;\r\n fontSize?: number;\r\n fontFamily?: string;\r\n fontColor?: string;\r\n height?: number;\r\n width?: number;\r\n scale?: number;\r\n }) {\r\n super();\r\n\r\n if (config) {\r\n this.value = config.value || ' ';\r\n this.translateX = config.translateX || 0;\r\n this.translateY = config.translateY || 0;\r\n this.fontSize = config.fontSize || 8;\r\n this.fontFamily = config.fontFamily || 'Arial';\r\n this.fontColor = config.fontColor || '#000000';\r\n this.height = config.height || this.fontSize * 1.2;\r\n this.width = config.width || 0;\r\n this.scale = config.scale || 1;\r\n }\r\n }\r\n\r\n static override create(core: KritzelCore, fontSize?: number, fontFamily?: string): KritzelText {\r\n const object = new KritzelText();\r\n\r\n object._core = core;\r\n object.id = object.generateId();\r\n object.workspaceId = core.store.state.activeWorkspace.id;\r\n object.fontSize = fontSize;\r\n object.fontFamily = fontFamily;\r\n object.translateX = 0;\r\n object.translateY = 0;\r\n object.width = object.initialWidth / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.height = (object.fontSize * 1.2) / (object._core.store.state.scale < 0 ? object._core.store.state.scale : 1);\r\n object.padding = 5;\r\n object.backgroundColor = 'transparent';\r\n object.scale = object._core.store.state.scale;\r\n object.value = ' ';\r\n object.zIndex = core.store.currentZIndex;\r\n\r\n return object;\r\n }\r\n\r\n override mount(element: HTMLTextAreaElement): void {\r\n if ((this.isMounted && this.elementRef === element) || this.isInViewport() === false) {\r\n return;\r\n }\r\n\r\n this.elementRef = element;\r\n this.isMounted = true;\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const scaleFactor = height / this.height;\r\n\r\n this.fontSize = this.fontSize * scaleFactor;\r\n this.width = this.width * scaleFactor;\r\n this.height = height;\r\n this.translateX = x;\r\n this.translateY = y;\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n if (this.isReadonly) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n handleInput(event: InputEvent): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n if (target.value === '') {\r\n this.value = ' ';\r\n target.value = ' ';\r\n target.selectionStart = target.selectionEnd = target.value.length;\r\n } else {\r\n this.value = target.value.trim();\r\n }\r\n\r\n this.updateTextareaDimensions();\r\n }\r\n\r\n updateTextareaDimensions() {\r\n if (this.elementRef) {\r\n const span = document.createElement('span');\r\n span.style.position = 'absolute';\r\n span.style.whiteSpace = 'pre-wrap';\r\n span.style.visibility = 'hidden';\r\n span.style.fontSize = window.getComputedStyle(this.elementRef).fontSize;\r\n span.style.fontFamily = window.getComputedStyle(this.elementRef).fontFamily;\r\n\r\n span.innerHTML = this.elementRef.value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\n/g, '<br>') + '<br>';\r\n\r\n document.body.appendChild(span);\r\n const textWidth = span.offsetWidth;\r\n const textHeight = span.offsetHeight;\r\n document.body.removeChild(span);\r\n\r\n this.width = textWidth;\r\n this.height = textHeight;\r\n\r\n this._core.history.executeCommand(new UpdateObjectCommand(this._core, this, this, { ...this }));\r\n }\r\n }\r\n\r\n focus(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n }\r\n }\r\n\r\n selectAll(): void {\r\n if (this.elementRef) {\r\n this.elementRef.select();\r\n }\r\n }\r\n\r\n insertFromClipboard(): void {\r\n if (this.elementRef) {\r\n this.elementRef.focus();\r\n try {\r\n navigator.clipboard.readText().then(text => {\r\n const start = this.elementRef.selectionStart;\r\n const end = this.elementRef.selectionEnd;\r\n const value = this.elementRef.value;\r\n\r\n this.elementRef.value = value.substring(0, start) + text + value.substring(end);\r\n\r\n this.elementRef.selectionStart = this.elementRef.selectionEnd = start + text.length;\r\n this.value = this.elementRef.value;\r\n this.updateTextareaDimensions();\r\n });\r\n } catch (err) {\r\n console.error('Failed to read clipboard contents:', err);\r\n }\r\n }\r\n }\r\n\r\n edit(): void {\r\n KritzelKeyboardHelper.disableInteractiveWidget();\r\n\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._core.store.setState('activeText', this);\r\n this._core.clearSelection();\r\n\r\n this.focus();\r\n\r\n KritzelKeyboardHelper.enableInteractiveWidget();\r\n }\r\n}\r\n"]}
@@ -104,9 +104,9 @@ export class KritzelSelectionTool extends KritzelBaseTool {
104
104
  }
105
105
  if (event.pointerType === 'mouse') {
106
106
  this.moveHandler.handlePointerUp(event);
107
- this.selectionHandler.handlePointerUp(event);
108
107
  this.resizeHandler.handlePointerUp(event);
109
108
  this.rotationHandler.handlePointerUp(event);
109
+ this.selectionHandler.handlePointerUp(event);
110
110
  this._core.rerender();
111
111
  }
112
112
  if (event.pointerType === 'touch') {
@@ -1 +1 @@
1
- {"version":3,"file":"selection-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/selection-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelHandleType } from '../../enums/handle-type.enum';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { RemoveSelectionGroupCommand } from '../commands/remove-selection-group.command';\r\nimport { KritzelMoveHandler } from '../handlers/move.handler';\r\nimport { KritzelResizeHandler } from '../handlers/resize.handler';\r\nimport { KritzelRotationHandler } from '../handlers/rotation.handler';\r\nimport { KritzelSelectionHandler } from '../handlers/selection.handler';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelHoverHandler } from '../handlers/hover.handler';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelSelectionTool extends KritzelBaseTool {\r\n selectionHandler: KritzelSelectionHandler;\r\n moveHandler: KritzelMoveHandler;\r\n hoverHandler: KritzelHoverHandler;\r\n resizeHandler: KritzelResizeHandler;\r\n rotationHandler: KritzelRotationHandler;\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n this.selectionHandler = new KritzelSelectionHandler(this._core);\r\n this.moveHandler = new KritzelMoveHandler(this._core);\r\n this.hoverHandler = new KritzelHoverHandler(this._core);\r\n this.resizeHandler = new KritzelResizeHandler(this._core);\r\n this.rotationHandler = new KritzelRotationHandler(this._core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n\r\n this._core.store.setState('isResizeHandleSelected', this.isHandleSelected(event));\r\n this._core.store.setState('isRotationHandleSelected', this.isRotationHandleSelected(event));\r\n this._core.store.setState('resizeHandleType', this.getHandleType(event));\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._core.store.state.selectionGroup && selectedObject.id !== this._core.store.state.selectionGroup.id;\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._core.store.state.selectionGroup &&\r\n !this._core.store.state.isResizeHandleSelected &&\r\n !this._core.store.state.isRotationHandleSelected\r\n ) {\r\n this._core.history.executeCommand(new RemoveSelectionGroupCommand(this._core, this._core.store.state.selectionGroup));\r\n }\r\n\r\n if(selectedObject && selectedObject.isSelected === false && selectedObject?.objects.length === 1 && selectedObject.objects[0].isInteractive) {\r\n return;\r\n }\r\n }\r\n\r\n this.moveHandler.handlePointerDown(event);\r\n this.selectionHandler.handlePointerDown(event);\r\n this.resizeHandler.handlePointerDown(event);\r\n this.rotationHandler.handlePointerDown(event);\r\n\r\n this._core.rerender();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n if (this._core.store.state.pointers.size === 1) {\r\n this._core.store.setState('isResizeHandleSelected', this.isHandleSelected(event));\r\n this._core.store.setState('isRotationHandleSelected', this.isRotationHandleSelected(event));\r\n this._core.store.setState('resizeHandleType', this.getHandleType(event));\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._core.store.state.selectionGroup && selectedObject.id !== this._core.store.state.selectionGroup.id;\r\n\r\n if (!this._core.store.state.selectionGroup && selectedObject) {\r\n this._core.store.setState('skipContextMenu', true);\r\n }\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._core.store.state.selectionGroup &&\r\n !this._core.store.state.isResizeHandleSelected &&\r\n !this._core.store.state.isRotationHandleSelected\r\n ) {\r\n this._core.history.executeCommand(new RemoveSelectionGroupCommand(this._core, this._core.store.state.selectionGroup));\r\n }\r\n\r\n }\r\n\r\n this.rotationHandler.handlePointerDown(event);\r\n this.resizeHandler.handlePointerDown(event);\r\n this.moveHandler.handlePointerDown(event);\r\n this.selectionHandler.handlePointerDown(event);\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n this.moveHandler.handlePointerMove(event);\r\n this.hoverHandler.handlePointerMove(event);\r\n this.selectionHandler.handlePointerMove(event);\r\n this.resizeHandler.handlePointerMove(event);\r\n this.rotationHandler.handlePointerMove(event);\r\n\r\n this._core.rerender();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n this.rotationHandler.handlePointerMove(event);\r\n this.resizeHandler.handlePointerMove(event);\r\n this.moveHandler.handlePointerMove(event);\r\n this.selectionHandler.handlePointerMove(event);\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n this.moveHandler.handlePointerUp(event);\r\n this.selectionHandler.handlePointerUp(event);\r\n this.resizeHandler.handlePointerUp(event);\r\n this.rotationHandler.handlePointerUp(event);\r\n\r\n this._core.rerender();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n this.rotationHandler.handlePointerUp(event);\r\n this.resizeHandler.handlePointerUp(event);\r\n this.moveHandler.handlePointerUp(event);\r\n this.selectionHandler.handlePointerUp(event);\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n private getSelectedObject(event: PointerEvent): KritzelSelectionGroup | null {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n if (!object) {\r\n return null;\r\n }\r\n\r\n if (object instanceof KritzelSelectionGroup) {\r\n return object;\r\n } else {\r\n const group = KritzelSelectionGroup.create(this._core);\r\n group.translateX = 0;\r\n group.translateY = 0;\r\n group.addOrRemove(object);\r\n return group;\r\n }\r\n }\r\n\r\n private getHandleType(event: PointerEvent): KritzelHandleType | undefined {\r\n const shadowRoot = this._core.store.state.host?.shadowRoot;\r\n if (!shadowRoot) return;\r\n\r\n const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);\r\n\r\n const handle = elementAtPoint?.closest('.resize-handle-overlay') as HTMLElement | null;\r\n\r\n return handle?.classList[1] as KritzelHandleType;\r\n }\r\n\r\n private isHandleSelected(event: PointerEvent): boolean {\r\n const shadowRoot = this._core.store.state.host?.shadowRoot;\r\n if (!shadowRoot) return false;\r\n\r\n const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);\r\n\r\n return !!elementAtPoint?.classList.contains('resize-handle-overlay');\r\n }\r\n\r\n private isRotationHandleSelected(event: PointerEvent): boolean {\r\n const path = event.composedPath() as HTMLElement[];\r\n\r\n return !!path.find(element => element.classList && element.classList.contains('rotation-handle-overlay'));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"selection-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/selection-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelHandleType } from '../../enums/handle-type.enum';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { RemoveSelectionGroupCommand } from '../commands/remove-selection-group.command';\r\nimport { KritzelMoveHandler } from '../handlers/move.handler';\r\nimport { KritzelResizeHandler } from '../handlers/resize.handler';\r\nimport { KritzelRotationHandler } from '../handlers/rotation.handler';\r\nimport { KritzelSelectionHandler } from '../handlers/selection.handler';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelHoverHandler } from '../handlers/hover.handler';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelSelectionTool extends KritzelBaseTool {\r\n selectionHandler: KritzelSelectionHandler;\r\n moveHandler: KritzelMoveHandler;\r\n hoverHandler: KritzelHoverHandler;\r\n resizeHandler: KritzelResizeHandler;\r\n rotationHandler: KritzelRotationHandler;\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n this.selectionHandler = new KritzelSelectionHandler(this._core);\r\n this.moveHandler = new KritzelMoveHandler(this._core);\r\n this.hoverHandler = new KritzelHoverHandler(this._core);\r\n this.resizeHandler = new KritzelResizeHandler(this._core);\r\n this.rotationHandler = new KritzelRotationHandler(this._core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n this._core.store.setState('isResizeHandleSelected', this.isHandleSelected(event));\r\n this._core.store.setState('isRotationHandleSelected', this.isRotationHandleSelected(event));\r\n this._core.store.setState('resizeHandleType', this.getHandleType(event));\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._core.store.state.selectionGroup && selectedObject.id !== this._core.store.state.selectionGroup.id;\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._core.store.state.selectionGroup &&\r\n !this._core.store.state.isResizeHandleSelected &&\r\n !this._core.store.state.isRotationHandleSelected\r\n ) {\r\n this._core.history.executeCommand(new RemoveSelectionGroupCommand(this._core, this._core.store.state.selectionGroup));\r\n }\r\n\r\n if (selectedObject && selectedObject.isSelected === false && selectedObject?.objects.length === 1 && selectedObject.objects[0].isInteractive) {\r\n return;\r\n }\r\n }\r\n\r\n this.moveHandler.handlePointerDown(event);\r\n this.selectionHandler.handlePointerDown(event);\r\n this.resizeHandler.handlePointerDown(event);\r\n this.rotationHandler.handlePointerDown(event);\r\n\r\n this._core.rerender();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n if (this._core.store.state.pointers.size === 1) {\r\n this._core.store.setState('isResizeHandleSelected', this.isHandleSelected(event));\r\n this._core.store.setState('isRotationHandleSelected', this.isRotationHandleSelected(event));\r\n this._core.store.setState('resizeHandleType', this.getHandleType(event));\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._core.store.state.selectionGroup && selectedObject.id !== this._core.store.state.selectionGroup.id;\r\n\r\n if (!this._core.store.state.selectionGroup && selectedObject) {\r\n this._core.store.setState('skipContextMenu', true);\r\n }\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._core.store.state.selectionGroup &&\r\n !this._core.store.state.isResizeHandleSelected &&\r\n !this._core.store.state.isRotationHandleSelected\r\n ) {\r\n this._core.history.executeCommand(new RemoveSelectionGroupCommand(this._core, this._core.store.state.selectionGroup));\r\n }\r\n }\r\n\r\n this.rotationHandler.handlePointerDown(event);\r\n this.resizeHandler.handlePointerDown(event);\r\n this.moveHandler.handlePointerDown(event);\r\n this.selectionHandler.handlePointerDown(event);\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n handlePointerMove(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n this.moveHandler.handlePointerMove(event);\r\n this.hoverHandler.handlePointerMove(event);\r\n this.selectionHandler.handlePointerMove(event);\r\n this.resizeHandler.handlePointerMove(event);\r\n this.rotationHandler.handlePointerMove(event);\r\n\r\n this._core.rerender();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n this.rotationHandler.handlePointerMove(event);\r\n this.resizeHandler.handlePointerMove(event);\r\n this.moveHandler.handlePointerMove(event);\r\n this.selectionHandler.handlePointerMove(event);\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n this.moveHandler.handlePointerUp(event);\r\n this.resizeHandler.handlePointerUp(event);\r\n this.rotationHandler.handlePointerUp(event);\r\n this.selectionHandler.handlePointerUp(event);\r\n\r\n this._core.rerender();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n if (this._core.store.state.isScaling === true) {\r\n return;\r\n }\r\n \r\n this.rotationHandler.handlePointerUp(event);\r\n this.resizeHandler.handlePointerUp(event);\r\n this.moveHandler.handlePointerUp(event);\r\n this.selectionHandler.handlePointerUp(event);\r\n\r\n this._core.rerender();\r\n }\r\n }\r\n\r\n private getSelectedObject(event: PointerEvent): KritzelSelectionGroup | null {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n if (!object) {\r\n return null;\r\n }\r\n\r\n if (object instanceof KritzelSelectionGroup) {\r\n return object;\r\n } else {\r\n const group = KritzelSelectionGroup.create(this._core);\r\n group.translateX = 0;\r\n group.translateY = 0;\r\n group.addOrRemove(object);\r\n return group;\r\n }\r\n }\r\n\r\n private getHandleType(event: PointerEvent): KritzelHandleType | undefined {\r\n const shadowRoot = this._core.store.state.host?.shadowRoot;\r\n if (!shadowRoot) return;\r\n\r\n const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);\r\n\r\n const handle = elementAtPoint?.closest('.resize-handle-overlay') as HTMLElement | null;\r\n\r\n return handle?.classList[1] as KritzelHandleType;\r\n }\r\n\r\n private isHandleSelected(event: PointerEvent): boolean {\r\n const shadowRoot = this._core.store.state.host?.shadowRoot;\r\n if (!shadowRoot) return false;\r\n\r\n const elementAtPoint = shadowRoot.elementFromPoint(event.clientX, event.clientY);\r\n\r\n return !!elementAtPoint?.classList.contains('resize-handle-overlay');\r\n }\r\n\r\n private isRotationHandleSelected(event: PointerEvent): boolean {\r\n const path = event.composedPath() as HTMLElement[];\r\n\r\n return !!path.find(element => element.classList && element.classList.contains('rotation-handle-overlay'));\r\n }\r\n}\r\n"]}
@@ -36,16 +36,17 @@ export class KritzelTextTool extends KritzelBaseTool {
36
36
  const path = event.composedPath().slice(1);
37
37
  const objectElement = path.find(element => element.classList && element.classList.contains('object'));
38
38
  const object = this._core.findObjectById(objectElement?.id);
39
- if (this._core.store.state.activeText === null && object && object instanceof KritzelText) {
39
+ if (object instanceof KritzelText) {
40
40
  this._core.store.setState('activeText', object);
41
41
  object.focus();
42
42
  return;
43
43
  }
44
44
  if (this._core.store.state.activeText !== null && object instanceof KritzelText) {
45
+ this._core.store.setState('activeText', object);
45
46
  object.focus();
46
47
  return;
47
48
  }
48
- if (this._core.store.state.activeText !== null) {
49
+ if (this._core.store.state.activeText !== null && object instanceof KritzelText === false) {
49
50
  this._core.resetActiveText();
50
51
  this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
51
52
  return;
@@ -68,16 +69,17 @@ export class KritzelTextTool extends KritzelBaseTool {
68
69
  const path = event.composedPath().slice(1);
69
70
  const objectElement = path.find(element => element.classList && element.classList.contains('object'));
70
71
  const object = this._core.findObjectById(objectElement?.id);
71
- if (this._core.store.state.activeText === null && object && object instanceof KritzelText) {
72
+ if (object instanceof KritzelText) {
72
73
  this._core.store.setState('activeText', object);
73
74
  object.focus();
74
75
  return;
75
76
  }
76
77
  if (this._core.store.state.activeText !== null && object instanceof KritzelText) {
78
+ this._core.store.setState('activeText', object);
77
79
  object.focus();
78
80
  return;
79
81
  }
80
- if (this._core.store.state.activeText !== null) {
82
+ if (this._core.store.state.activeText !== null && object instanceof KritzelText === false) {
81
83
  this._core.resetActiveText();
82
84
  this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
83
85
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"text-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/text-tool.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,MAAM,OAAO,eAAgB,SAAQ,eAAe;IAClD,UAAU,GAAW,OAAO,CAAC;IAC7B,QAAQ,GAAW,EAAE,CAAC;IACtB,SAAS,GAAW,SAAS,CAAC;IAE9B,OAAO,GAAa;QAClB,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACV,CAAC;IAEF,YAAY,IAAiB;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,KAAmB;QACnC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAkB,CAAC;YAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAE5D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;gBAC1F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAChD,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;gBAChF,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YACzD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YACzD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE5E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/F,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;YAE7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAE5E,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAkB,CAAC;YAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAE5D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;gBAC1F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAChD,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;gBAChF,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,qBAAqB,CAAC,wBAAwB,EAAE,CAAC;YAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjF,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE5E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/F,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;YAE7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAE9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,eAAe,CAAC,KAAmB;QACjC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;QAC7C,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;YAE3C,qBAAqB,CAAC,uBAAuB,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF","sourcesContent":["import { KritzelText } from '../objects/text.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { AddObjectCommand } from '../commands/add-object.command';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelKeyboardHelper } from '../../helpers/keyboard.helper';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelTextTool extends KritzelBaseTool {\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 16;\r\n fontColor: string = '#000000';\r\n\r\n palette: string[] = [\r\n '#000000',\r\n '#FFFFFF',\r\n '#FF0000',\r\n '#00FF00',\r\n '#0000FF',\r\n '#FFFF00',\r\n '#FF00FF',\r\n '#00FFFF',\r\n '#808080',\r\n '#C0C0C0',\r\n '#800000',\r\n '#008000',\r\n '#000080',\r\n '#808000',\r\n '#800080',\r\n ];\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n if (this._core.store.state.activeText === null && object && object instanceof KritzelText) {\r\n this._core.store.setState('activeText', object);\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null && object instanceof KritzelText) {\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null) {\r\n this._core.resetActiveText();\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.isLeftClick(event) === false) {\r\n return;\r\n }\r\n\r\n const clientX = event.clientX - this._core.store.offsetX;\r\n const clientY = event.clientY - this._core.store.offsetY;\r\n const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n text.zIndex = this._core.store.currentZIndex;\r\n\r\n this._core.store.setState('activeText', text);\r\n\r\n this._core.history.executeCommand(new AddObjectCommand(this._core, this, text));\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n if (this._core.store.state.activeText === null && object && object instanceof KritzelText) {\r\n this._core.store.setState('activeText', object);\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null && object instanceof KritzelText) {\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null) {\r\n this._core.resetActiveText();\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (activePointers.length > 1) {\r\n return;\r\n }\r\n\r\n KritzelKeyboardHelper.disableInteractiveWidget();\r\n\r\n const clientX = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const clientY = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n text.zIndex = this._core.store.currentZIndex;\r\n\r\n this._core.store.setState('activeText', text);\r\n\r\n this._core.history.executeCommand(new AddObjectCommand(this._core, this, text));\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n this._core.store.state.activeText?.updateTextareaDimensions();\r\n this._core.store.state.activeText?.focus();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n this._core.store.state.activeText?.updateTextareaDimensions();\r\n this._core.store.state.activeText?.focus();\r\n\r\n KritzelKeyboardHelper.enableInteractiveWidget();\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"text-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/text-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelText } from '../objects/text.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { AddObjectCommand } from '../commands/add-object.command';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelToolRegistry } from '../registries/tool.registry';\r\nimport { KritzelKeyboardHelper } from '../../helpers/keyboard.helper';\r\nimport { KritzelCore } from '../core/core.class';\r\n\r\nexport class KritzelTextTool extends KritzelBaseTool {\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 16;\r\n fontColor: string = '#000000';\r\n\r\n palette: string[] = [\r\n '#000000',\r\n '#FFFFFF',\r\n '#FF0000',\r\n '#00FF00',\r\n '#0000FF',\r\n '#FFFF00',\r\n '#FF00FF',\r\n '#00FFFF',\r\n '#808080',\r\n '#C0C0C0',\r\n '#800000',\r\n '#008000',\r\n '#000080',\r\n '#808000',\r\n '#800080',\r\n ];\r\n\r\n constructor(core: KritzelCore) {\r\n super(core);\r\n }\r\n\r\n handlePointerDown(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n if (object instanceof KritzelText) {\r\n this._core.store.setState('activeText', object);\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null && object instanceof KritzelText) {\r\n this._core.store.setState('activeText', object);\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null && object instanceof KritzelText === false) {\r\n this._core.resetActiveText();\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.isLeftClick(event) === false) {\r\n return;\r\n }\r\n\r\n const clientX = event.clientX - this._core.store.offsetX;\r\n const clientY = event.clientY - this._core.store.offsetY;\r\n const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n text.zIndex = this._core.store.currentZIndex;\r\n\r\n this._core.store.setState('activeText', text);\r\n\r\n this._core.history.executeCommand(new AddObjectCommand(this._core, this, text));\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n const activePointers = Array.from(this._core.store.state.pointers.values());\r\n\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._core.findObjectById(objectElement?.id);\r\n\r\n if (object instanceof KritzelText) {\r\n this._core.store.setState('activeText', object);\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null && object instanceof KritzelText) {\r\n this._core.store.setState('activeText', object);\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._core.store.state.activeText !== null && object instanceof KritzelText === false) {\r\n this._core.resetActiveText();\r\n this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (activePointers.length > 1) {\r\n return;\r\n }\r\n\r\n KritzelKeyboardHelper.disableInteractiveWidget();\r\n\r\n const clientX = Math.round(activePointers[0].clientX - this._core.store.offsetX);\r\n const clientY = Math.round(activePointers[0].clientY - this._core.store.offsetY);\r\n const text = KritzelText.create(this._core, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._core.store.state.translateX) / this._core.store.state.scale;\r\n text.translateY = (clientY - this._core.store.state.translateY) / this._core.store.state.scale;\r\n text.zIndex = this._core.store.currentZIndex;\r\n\r\n this._core.store.setState('activeText', text);\r\n\r\n this._core.history.executeCommand(new AddObjectCommand(this._core, this, text));\r\n }\r\n }\r\n\r\n handlePointerUp(event: PointerEvent): void {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.pointerType === 'mouse') {\r\n this._core.store.state.activeText?.updateTextareaDimensions();\r\n this._core.store.state.activeText?.focus();\r\n }\r\n\r\n if (event.pointerType === 'touch') {\r\n this._core.store.state.activeText?.updateTextareaDimensions();\r\n this._core.store.state.activeText?.focus();\r\n\r\n KritzelKeyboardHelper.enableInteractiveWidget();\r\n }\r\n }\r\n}\r\n"]}
@@ -68,19 +68,6 @@ export class KritzelEditor {
68
68
  { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },
69
69
  ];
70
70
  objectContextMenuItems = [
71
- {
72
- label: 'Edit',
73
- icon: 'pen',
74
- visible: (_, objects) => objects.length === 1 && objects[0].isEditable,
75
- action: (_, objects) => {
76
- if (objects.length === 1) {
77
- const object = objects[0];
78
- if (object.isEditable) {
79
- object.edit();
80
- }
81
- }
82
- },
83
- },
84
71
  { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },
85
72
  {
86
73
  label: 'Paste',
@@ -220,7 +207,7 @@ export class KritzelEditor {
220
207
  }
221
208
  }
222
209
  render() {
223
- return (h(Host, { key: '17c4e1ce489a5cd359972e67105019ad64703b19' }, h("kritzel-workspace-manager", { key: '963f62afe326d33eccdabda804bc3e260aafc306', workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, onWorkspaceChange: event => (this.activeWorkspace = event.detail), onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), h("kritzel-engine", { key: 'f60f67d06ce73f5f86716fc0ec68408c71100d82', 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: '1dc25c1bbb50978cfac3cdaa2d3ae0a32ca7c4f7', 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) })));
210
+ return (h(Host, { key: 'f4f7cb5fbb6b28bac0735d05c2d1ed788c8ef2a7' }, h("kritzel-workspace-manager", { key: 'bef6f248a06b7a6576687a82a5ea3eb81d3340c3', workspaces: this.workspaces, activeWorkspace: this.activeWorkspace, onWorkspaceChange: event => (this.activeWorkspace = event.detail), onIsWorkspaceManagerReady: () => (this.isWorkspaceManagerReady = true) }), h("kritzel-engine", { key: '8ee352db87d94c367389059074842148e43d8d11', 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: '3e5bfa0fd473a551ba4ab7a7137aedbb3d22db19', 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) })));
224
211
  }
225
212
  static get is() { return "kritzel-editor"; }
226
213
  static get originalStyleUrls() {
@@ -348,7 +335,7 @@ export class KritzelEditor {
348
335
  },
349
336
  "getter": false,
350
337
  "setter": false,
351
- "defaultValue": "[\r\n {\r\n label: 'Edit',\r\n icon: 'pen',\r\n visible: (_, objects) => objects.length === 1 && objects[0].isEditable,\r\n action: (_, objects) => {\r\n if (objects.length === 1) {\r\n const object = objects[0];\r\n if (object.isEditable) {\r\n object.edit();\r\n }\r\n }\r\n },\r\n },\r\n { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\r\n ]"
338
+ "defaultValue": "[\r\n { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\r\n ]"
352
339
  },
353
340
  "customSvgIcons": {
354
341
  "type": "unknown",
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-editor.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-editor/kritzel-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Listen, Prop, Element, h, Method, Event, State, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelIconRegistry } from '../../../classes/registries/icon-registry.class';\r\nimport { KritzelToolbarControl } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelImageTool } from '../../../classes/tools/image-tool.class';\r\nimport { KritzelBrushTool } from '../../../classes/tools/brush-tool.class';\r\nimport { KritzelTextTool } from '../../../classes/tools/text-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { DEFAULT_BRUSH_CONFIG } from '../../../configs/default-brush-tool.config';\r\nimport { DEFAULT_TEXT_CONFIG } from '../../../configs/default-text-tool.config';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelEngineState } from '../../../interfaces/engine-state.interface';\r\nimport { KritzelWorkspace } from '../../../classes/core/workspace.class';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\nimport { KritzelDevicesHelper } from '../../../helpers/devices.helper';\r\n@Component({\r\n tag: 'kritzel-editor',\r\n styleUrl: 'kritzel-editor.css',\r\n shadow: false,\r\n})\r\nexport class KritzelEditor {\r\n @Element() host!: HTMLElement;\r\n\r\n @Prop() scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n @Prop() scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n @Prop() controls: KritzelToolbarControl[] = [\r\n {\r\n name: 'selection',\r\n type: 'tool',\r\n isDefault: true,\r\n tool: KritzelSelectionTool,\r\n icon: 'cursor',\r\n },\r\n {\r\n name: 'brush',\r\n type: 'tool',\r\n tool: KritzelBrushTool,\r\n icon: 'pen',\r\n config: DEFAULT_BRUSH_CONFIG,\r\n },\r\n {\r\n name: 'eraser',\r\n type: 'tool',\r\n tool: KritzelEraserTool,\r\n icon: 'eraser',\r\n },\r\n {\r\n name: 'text',\r\n type: 'tool',\r\n tool: KritzelTextTool,\r\n icon: 'type',\r\n config: DEFAULT_TEXT_CONFIG,\r\n },\r\n {\r\n name: 'image',\r\n type: 'tool',\r\n tool: KritzelImageTool,\r\n icon: 'image',\r\n },\r\n {\r\n name: 'divider',\r\n type: 'divider',\r\n },\r\n {\r\n name: 'config',\r\n type: 'config',\r\n },\r\n ];\r\n\r\n @Prop() globalContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: menu => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },\r\n ];\r\n\r\n @Prop() objectContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Edit',\r\n icon: 'pen',\r\n visible: (_, objects) => objects.length === 1 && objects[0].isEditable,\r\n action: (_, objects) => {\r\n if (objects.length === 1) {\r\n const object = objects[0];\r\n if (object.isEditable) {\r\n object.edit();\r\n }\r\n }\r\n },\r\n },\r\n { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\r\n ];\r\n\r\n @Prop() customSvgIcons: Record<string, string> = {};\r\n @Prop() isControlsVisible: boolean = true;\r\n @Prop() isUtilityPanelVisible: boolean = true;\r\n\r\n @Event() isReady: EventEmitter<HTMLElement>;\r\n\r\n @State() isEngineReady: boolean = false;\r\n @State() isControlsReady: boolean = false;\r\n @State() isWorkspaceManagerReady: boolean = false;\r\n @State() workspaces: KritzelWorkspace[] = [];\r\n @State() activeWorkspace: KritzelWorkspace;\r\n @State() isVirtualKeyboardOpen: boolean = false;\r\n\r\n @Watch('isEngineReady')\r\n onIsEngineReady(newValue: boolean) {\r\n if (newValue && this.isControlsReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Watch('isControlsReady')\r\n onIsControlsReady(newValue: boolean) {\r\n if (newValue && this.isEngineReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Listen('dblclick', { passive: false })\r\n handleTouchStart(event: MouseEvent) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n return this.engineRef.getObjectById(id);\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.addObject(object);\r\n }\r\n\r\n @Method()\r\n async updateObject<T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>): Promise<T | null> {\r\n return this.engineRef.updateObject(object, updatedProperties);\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.removeObject(object);\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.engineRef.getSelectedObjects();\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n return this.engineRef.selectObjects(objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n return this.engineRef.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.engineRef.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n return this.engineRef.centerObjectInViewport(object);\r\n }\r\n\r\n @Method()\r\n async createWorkspace(name: string, viewport?: { translateX: number; translateY: number; scale: number }): Promise<KritzelWorkspace | null> {\r\n const workspace = new KritzelWorkspace(`workspace-${Date.now()}`, name, viewport);\r\n return this.engineRef.createWorkspace(workspace);\r\n }\r\n\r\n @Method()\r\n async updateWorkspace(workspace: KritzelWorkspace): Promise<void> {\r\n return this.engineRef.updateWorkspace(workspace);\r\n }\r\n\r\n @Method()\r\n async deleteWorkspace(workspace: KritzelWorkspace): Promise<void> {\r\n return this.engineRef.deleteWorkspace(workspace);\r\n }\r\n\r\n @Method()\r\n async getWorkspaces(): Promise<KritzelWorkspace[]> {\r\n return this.engineRef.getWorkspaces();\r\n }\r\n\r\n @Method()\r\n async getActiveWorkspace(): Promise<KritzelWorkspace> {\r\n return this.engineRef.getActiveWorkspace();\r\n }\r\n\r\n engineRef!: HTMLKritzelEngineElement;\r\n controlsRef!: HTMLKritzelControlsElement;\r\n splitButtonRef!: HTMLKritzelSplitButtonElement;\r\n\r\n componentDidLoad() {\r\n this.registerCustomSvgIcons();\r\n this.listenForMobileKeyboard();\r\n this.setOsSpecificCssVariables();\r\n }\r\n\r\n async checkIsReady() {\r\n await customElements.whenDefined('kritzel-editor');\r\n await customElements.whenDefined('kritzel-workspace-manager');\r\n await customElements.whenDefined('kritzel-controls');\r\n await customElements.whenDefined('kritzel-engine');\r\n\r\n if (!this.isEngineReady || !this.isControlsReady || !this.isWorkspaceManagerReady) {\r\n return;\r\n }\r\n\r\n this.isReady.emit(this.host);\r\n }\r\n\r\n onEngineReady(event: CustomEvent<KritzelEngineState>) {\r\n this.isEngineReady = true;\r\n this.activeWorkspace = event.detail.activeWorkspace;\r\n this.workspaces = event.detail.workspaces;\r\n }\r\n\r\n private registerCustomSvgIcons() {\r\n for (const [name, svg] of Object.entries(this.customSvgIcons)) {\r\n KritzelIconRegistry.register(name, svg);\r\n }\r\n }\r\n\r\n private listenForMobileKeyboard() {\r\n KritzelKeyboardHelper.onKeyboardVisibleChanged(isOpen => {\r\n this.isVirtualKeyboardOpen = isOpen;\r\n });\r\n }\r\n\r\n private setOsSpecificCssVariables() {\r\n const os = KritzelDevicesHelper.detectOS();\r\n\r\n switch (os) {\r\n case 'iOS':\r\n // iOS specific adjustments\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-top', '14px');\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-left', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-bottom', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-transition', 'cubic-bezier(0.25, 0.1, 0.25, 1.0)');\r\n this.host.style.setProperty('--kritzel-editor-controls-transform', 'translateY(200%)');\r\n this.host.style.setProperty('--kritzel-editor-controls-transition-duration', '0.25s');\r\n break;\r\n\r\n case 'Android':\r\n // Android specific adjustments\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-top', '14px');\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-left', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-bottom', '24px');\r\n break;\r\n\r\n default:\r\n // Default for Windows/Linux\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-top', '14px');\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-left', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-bottom', '14px');\r\n break;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <kritzel-workspace-manager\r\n workspaces={this.workspaces}\r\n activeWorkspace={this.activeWorkspace}\r\n onWorkspaceChange={event => (this.activeWorkspace = event.detail)}\r\n onIsWorkspaceManagerReady={() => (this.isWorkspaceManagerReady = true)}\r\n ></kritzel-workspace-manager>\r\n\r\n <kritzel-engine\r\n ref={el => (this.engineRef = el)}\r\n workspace={this.activeWorkspace}\r\n scaleMax={this.scaleMax}\r\n scaleMin={this.scaleMin}\r\n globalContextMenuItems={this.globalContextMenuItems}\r\n objectContextMenuItems={this.objectContextMenuItems}\r\n onIsEngineReady={event => this.onEngineReady(event)}\r\n onWorkspacesChange={event => (this.workspaces = event.detail)}\r\n ></kritzel-engine>\r\n\r\n <kritzel-controls\r\n class={{ 'keyboard-open': this.isVirtualKeyboardOpen }}\r\n style={{ display: this.isControlsVisible ? 'flex' : 'none' }}\r\n ref={el => (this.controlsRef = el)}\r\n controls={this.controls}\r\n isUtilityPanelVisible={this.isUtilityPanelVisible}\r\n onIsControlsReady={() => (this.isControlsReady = true)}\r\n ></kritzel-controls>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-editor.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-editor/kritzel-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Listen, Prop, Element, h, Method, Event, State, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelIconRegistry } from '../../../classes/registries/icon-registry.class';\r\nimport { KritzelToolbarControl } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelImageTool } from '../../../classes/tools/image-tool.class';\r\nimport { KritzelBrushTool } from '../../../classes/tools/brush-tool.class';\r\nimport { KritzelTextTool } from '../../../classes/tools/text-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { DEFAULT_BRUSH_CONFIG } from '../../../configs/default-brush-tool.config';\r\nimport { DEFAULT_TEXT_CONFIG } from '../../../configs/default-text-tool.config';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelEngineState } from '../../../interfaces/engine-state.interface';\r\nimport { KritzelWorkspace } from '../../../classes/core/workspace.class';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\nimport { KritzelDevicesHelper } from '../../../helpers/devices.helper';\r\n@Component({\r\n tag: 'kritzel-editor',\r\n styleUrl: 'kritzel-editor.css',\r\n shadow: false,\r\n})\r\nexport class KritzelEditor {\r\n @Element() host!: HTMLElement;\r\n\r\n @Prop() scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n @Prop() scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n @Prop() controls: KritzelToolbarControl[] = [\r\n {\r\n name: 'selection',\r\n type: 'tool',\r\n isDefault: true,\r\n tool: KritzelSelectionTool,\r\n icon: 'cursor',\r\n },\r\n {\r\n name: 'brush',\r\n type: 'tool',\r\n tool: KritzelBrushTool,\r\n icon: 'pen',\r\n config: DEFAULT_BRUSH_CONFIG,\r\n },\r\n {\r\n name: 'eraser',\r\n type: 'tool',\r\n tool: KritzelEraserTool,\r\n icon: 'eraser',\r\n },\r\n {\r\n name: 'text',\r\n type: 'tool',\r\n tool: KritzelTextTool,\r\n icon: 'type',\r\n config: DEFAULT_TEXT_CONFIG,\r\n },\r\n {\r\n name: 'image',\r\n type: 'tool',\r\n tool: KritzelImageTool,\r\n icon: 'image',\r\n },\r\n {\r\n name: 'divider',\r\n type: 'divider',\r\n },\r\n {\r\n name: 'config',\r\n type: 'config',\r\n },\r\n ];\r\n\r\n @Prop() globalContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: menu => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Select All', icon: 'select-all', action: () => this.selectAllObjectsInViewport() },\r\n ];\r\n\r\n @Prop() objectContextMenuItems: ContextMenuItem[] = [\r\n { label: 'Copy', icon: 'copy', action: () => this.engineRef.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: async () => (await this.engineRef.getCopiedObjects()).length === 0,\r\n action: (menu, _) => this.engineRef.paste(menu.x, menu.y),\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.engineRef.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.engineRef.bringToFront() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.engineRef.sendToBack() },\r\n ];\r\n\r\n @Prop() customSvgIcons: Record<string, string> = {};\r\n @Prop() isControlsVisible: boolean = true;\r\n @Prop() isUtilityPanelVisible: boolean = true;\r\n\r\n @Event() isReady: EventEmitter<HTMLElement>;\r\n\r\n @State() isEngineReady: boolean = false;\r\n @State() isControlsReady: boolean = false;\r\n @State() isWorkspaceManagerReady: boolean = false;\r\n @State() workspaces: KritzelWorkspace[] = [];\r\n @State() activeWorkspace: KritzelWorkspace;\r\n @State() isVirtualKeyboardOpen: boolean = false;\r\n\r\n @Watch('isEngineReady')\r\n onIsEngineReady(newValue: boolean) {\r\n if (newValue && this.isControlsReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Watch('isControlsReady')\r\n onIsControlsReady(newValue: boolean) {\r\n if (newValue && this.isEngineReady) {\r\n this.checkIsReady();\r\n }\r\n }\r\n\r\n @Listen('dblclick', { passive: false })\r\n handleTouchStart(event: MouseEvent) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n return this.engineRef.getObjectById(id);\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.addObject(object);\r\n }\r\n\r\n @Method()\r\n async updateObject<T extends KritzelBaseObject>(object: T, updatedProperties: Partial<T>): Promise<T | null> {\r\n return this.engineRef.updateObject(object, updatedProperties);\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n return this.engineRef.removeObject(object);\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.engineRef.getSelectedObjects();\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n return this.engineRef.selectObjects(objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n return this.engineRef.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.engineRef.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n return this.engineRef.centerObjectInViewport(object);\r\n }\r\n\r\n @Method()\r\n async createWorkspace(name: string, viewport?: { translateX: number; translateY: number; scale: number }): Promise<KritzelWorkspace | null> {\r\n const workspace = new KritzelWorkspace(`workspace-${Date.now()}`, name, viewport);\r\n return this.engineRef.createWorkspace(workspace);\r\n }\r\n\r\n @Method()\r\n async updateWorkspace(workspace: KritzelWorkspace): Promise<void> {\r\n return this.engineRef.updateWorkspace(workspace);\r\n }\r\n\r\n @Method()\r\n async deleteWorkspace(workspace: KritzelWorkspace): Promise<void> {\r\n return this.engineRef.deleteWorkspace(workspace);\r\n }\r\n\r\n @Method()\r\n async getWorkspaces(): Promise<KritzelWorkspace[]> {\r\n return this.engineRef.getWorkspaces();\r\n }\r\n\r\n @Method()\r\n async getActiveWorkspace(): Promise<KritzelWorkspace> {\r\n return this.engineRef.getActiveWorkspace();\r\n }\r\n\r\n engineRef!: HTMLKritzelEngineElement;\r\n controlsRef!: HTMLKritzelControlsElement;\r\n splitButtonRef!: HTMLKritzelSplitButtonElement;\r\n\r\n componentDidLoad() {\r\n this.registerCustomSvgIcons();\r\n this.listenForMobileKeyboard();\r\n this.setOsSpecificCssVariables();\r\n }\r\n\r\n async checkIsReady() {\r\n await customElements.whenDefined('kritzel-editor');\r\n await customElements.whenDefined('kritzel-workspace-manager');\r\n await customElements.whenDefined('kritzel-controls');\r\n await customElements.whenDefined('kritzel-engine');\r\n\r\n if (!this.isEngineReady || !this.isControlsReady || !this.isWorkspaceManagerReady) {\r\n return;\r\n }\r\n\r\n this.isReady.emit(this.host);\r\n }\r\n\r\n onEngineReady(event: CustomEvent<KritzelEngineState>) {\r\n this.isEngineReady = true;\r\n this.activeWorkspace = event.detail.activeWorkspace;\r\n this.workspaces = event.detail.workspaces;\r\n }\r\n\r\n private registerCustomSvgIcons() {\r\n for (const [name, svg] of Object.entries(this.customSvgIcons)) {\r\n KritzelIconRegistry.register(name, svg);\r\n }\r\n }\r\n\r\n private listenForMobileKeyboard() {\r\n KritzelKeyboardHelper.onKeyboardVisibleChanged(isOpen => {\r\n this.isVirtualKeyboardOpen = isOpen;\r\n });\r\n }\r\n\r\n private setOsSpecificCssVariables() {\r\n const os = KritzelDevicesHelper.detectOS();\r\n\r\n switch (os) {\r\n case 'iOS':\r\n // iOS specific adjustments\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-top', '14px');\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-left', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-bottom', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-transition', 'cubic-bezier(0.25, 0.1, 0.25, 1.0)');\r\n this.host.style.setProperty('--kritzel-editor-controls-transform', 'translateY(200%)');\r\n this.host.style.setProperty('--kritzel-editor-controls-transition-duration', '0.25s');\r\n break;\r\n\r\n case 'Android':\r\n // Android specific adjustments\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-top', '14px');\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-left', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-bottom', '24px');\r\n break;\r\n\r\n default:\r\n // Default for Windows/Linux\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-top', '14px');\r\n this.host.style.setProperty('--kritzel-editor-workspace-manager-left', '14px');\r\n this.host.style.setProperty('--kritzel-editor-controls-bottom', '14px');\r\n break;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <kritzel-workspace-manager\r\n workspaces={this.workspaces}\r\n activeWorkspace={this.activeWorkspace}\r\n onWorkspaceChange={event => (this.activeWorkspace = event.detail)}\r\n onIsWorkspaceManagerReady={() => (this.isWorkspaceManagerReady = true)}\r\n ></kritzel-workspace-manager>\r\n\r\n <kritzel-engine\r\n ref={el => (this.engineRef = el)}\r\n workspace={this.activeWorkspace}\r\n scaleMax={this.scaleMax}\r\n scaleMin={this.scaleMin}\r\n globalContextMenuItems={this.globalContextMenuItems}\r\n objectContextMenuItems={this.objectContextMenuItems}\r\n onIsEngineReady={event => this.onEngineReady(event)}\r\n onWorkspacesChange={event => (this.workspaces = event.detail)}\r\n ></kritzel-engine>\r\n\r\n <kritzel-controls\r\n class={{ 'keyboard-open': this.isVirtualKeyboardOpen }}\r\n style={{ display: this.isControlsVisible ? 'flex' : 'none' }}\r\n ref={el => (this.controlsRef = el)}\r\n controls={this.controls}\r\n isUtilityPanelVisible={this.isUtilityPanelVisible}\r\n onIsControlsReady={() => (this.isControlsReady = true)}\r\n ></kritzel-controls>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -129,6 +129,9 @@ export class KritzelEngine {
129
129
  }
130
130
  this.keyHandler.handleKeyUp(ev);
131
131
  }
132
+ preventDoubleTapZoomOnTouchDevices(ev) {
133
+ ev.preventDefault();
134
+ }
132
135
  async registerTool(toolName, toolClass, toolConfig) {
133
136
  if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {
134
137
  console.error(`Failed to register tool "${toolName}": Tool class must be a constructor function`);
@@ -311,7 +314,7 @@ export class KritzelEngine {
311
314
  const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
312
315
  const baseHandleSize = parseFloat(baseHandleSizePx);
313
316
  const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
314
- return (h(Host, { key: '54dce5fe3011a15e4cf77b1daecf578dd0402c67' }, h("div", { key: '569c4253054b6c6e84059175716f180a76fd8a04', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: 'ff87fd8f171e46d211d92709d3141ad884ce0253' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), h("div", { key: 'f43f53b4fc28ae9a7fe7e240635a3f410daaa72c' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), h("div", { key: 'e2c45f541e0626a6ea1d5a36047fb2144eabf612' }, "TranslateX: ", this.core.store.state?.translateX), h("div", { key: 'f7897dde7e2a0b3be1c73342523db9f0c361bdb9' }, "TranslateY: ", this.core.store.state?.translateY), h("div", { key: '8f6be6752c49f033eabfd63f1533666e4a4d3c15' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), h("div", { key: '26b96ecc0d184d9d224cfb14426503415a00a9ef' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), h("div", { key: '7275251e13cb83b670b944d6ce22015525247b83' }, "Scale: ", this.core.store.state?.scale), h("div", { key: 'f1f071ce637abd91639c0e6d0809d0493ff649e9' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), h("div", { key: 'fbc6e5cc3fad57cbd54b821f9aa1b68b213447a0' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: 'ced900e880436a03d5490d818b10f079df3e2ed6' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: 'ffb1c5e0310d246f04e747df85dcfde58c81d83f' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), h("div", { key: '5ad7bc9e7957f071400cc997613ec080b6484b8e' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), h("div", { key: '42d93051cb0ea2e24ef549abbffcc720dd62efa8' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '78a54f7df911c0721fed70be15ccbefae5d99b33' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: 'e4c4ca2b3f5429a5f9378122a5bfc380eea82cc6' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '1947034670be8512d3654e104c7ea62bf70f207f' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: 'ecca8afceda81c4817db3e91f5bc4837056c4de0' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), h("div", { key: '1ca1d5cac7421442851f35574bd7765d850399f9' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), h("div", { key: '1e388d4dd59026dff761a598838b5bd10843d177' }, "PointerX: ", this.core.store.state?.pointerX), h("div", { key: '2c2b28eb4a9d293dd8d5d98a072f4bbeb7d0349c' }, "PointerY: ", this.core.store.state?.pointerY), h("div", { key: 'e41abf270f34643902a0a8d049dad405ead68321' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0)), h("div", { key: 'e2ed793fac7f3f289daa962042e05e4fd8f44d3b', id: "origin", class: "origin", style: {
317
+ return (h(Host, { key: 'b65542448b46000bfb0f467b503b2c9d9e603eaa' }, h("div", { key: '8197e8fe5e768f89d5861cc04d4343d5753b8f88', class: "debug-panel", style: { display: this.core.store.state.debugInfo.showViewportInfo ? 'block' : 'none' } }, h("div", { key: '97b720f029fb8034453f28df04779011d641105e' }, "ActiveWorkspaceId: ", this.core.store.state?.activeWorkspace?.id), h("div", { key: 'e4601378a7d3dc92e66edcd5b7ff0022f890c1e3' }, "ActiveWorkspaceName: ", this.core.store.state?.activeWorkspace?.name), h("div", { key: '2506d664411df86fd4d59ee703dc1487c7394f15' }, "TranslateX: ", this.core.store.state?.translateX), h("div", { key: 'cada25c03ba66f54433cd09b83d9826f79c94c43' }, "TranslateY: ", this.core.store.state?.translateY), h("div", { key: '91853038c5c83116e9ffc296e9acc3b525bbed21' }, "ViewportWidth: ", this.core.store.state?.viewportWidth), h("div", { key: '0d3f9d47a5c5f9adab73a44436b214b537f5dd57' }, "ViewportHeight: ", this.core.store.state?.viewportHeight), h("div", { key: '079f2314aed15ea9b95ace2be564ff8e0f60acaa' }, "Scale: ", this.core.store.state?.scale), h("div", { key: '7d83d8ef32077e9b8d3bd1ddf23e5e1bcb187d0c' }, "ActiveTool: ", this.core.store.state?.activeTool?.name), h("div", { key: 'a63d135300e0a24b20e4ea4b631e123a0c492947' }, "HasViewportChanged: ", this.core.store.state?.hasViewportChanged ? 'true' : 'false'), h("div", { key: '258d3b009ea75024fc0d2d06000c7c4228312640' }, "IsEnabled: ", this.core.store.state?.isEnabled ? 'true' : 'false'), h("div", { key: 'c4dcff04abf12c675d995bad82407d0f5047ebd7' }, "IsScaling: ", this.core.store.state?.isScaling ? 'true' : 'false'), h("div", { key: 'fcd7bc6d221d0d3eb294ec7f6526a604ccc539d2' }, "IsPanning: ", this.core.store.state?.isPanning ? 'true' : 'false'), h("div", { key: '416ac549246b7a43bf644c536acbff1fb292eb52' }, "IsSelecting: ", this.isSelecting ? 'true' : 'false'), h("div", { key: '7d061a0515e33ce836bb550250330c4e2819bc14' }, "IsSelectionActive: ", this.isSelectionActive ? 'true' : 'false'), h("div", { key: '1debb3ee3e6a8297d427d09f61c8df8827bcfa37' }, "IsResizeHandleSelected: ", this.core.store.state.isResizeHandleSelected ? 'true' : 'false'), h("div", { key: '7d0fbcbc3e4c40ba21d144afd7d7b56b14227ddc' }, "IsRotationHandleSelected: ", this.core.store.state.isRotationHandleSelected ? 'true' : 'false'), h("div", { key: '90f5c8d1cf60eb90bb5d136d3457a97d831e361c' }, "IsDrawing: ", this.core.store.state.isDrawing ? 'true' : 'false'), h("div", { key: '122a2ad39d27d6f242a286bb2a8298687ab8cbb2' }, "IsWriting: ", this.core.store.state.isWriting ? 'true' : 'false'), h("div", { key: 'f5515be35f5037ec256198f2f916c61b78ab4ec2' }, "PointerX: ", this.core.store.state?.pointerX), h("div", { key: '2c16ecb22f4063450ef7d17be93ec1a0434a5abd' }, "PointerY: ", this.core.store.state?.pointerY), h("div", { key: '69b531a94a9b7430d70ce80ef3247211c67a516e' }, "SelectedObjects: ", this.core.store.state.selectionGroup?.objects.length || 0)), h("div", { key: '52b6e44b6fb2b59743f3c48fb1cc2616b19308c7', id: "origin", class: "origin", style: {
315
318
  transform: `matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`,
316
319
  } }, this.core.store.state.objectsMap.allObjects()?.map(object => {
317
320
  return (h("div", { key: object.id, style: {
@@ -430,7 +433,7 @@ export class KritzelEngine {
430
433
  transform: this.core.store.state.currentPath?.transformationMatrix,
431
434
  transformOrigin: 'top left',
432
435
  overflow: 'visible',
433
- }, viewBox: this.core.store.state.currentPath?.viewBox }, 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 && (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: {
436
+ }, viewBox: this.core.store.state.currentPath?.viewBox }, h("path", { key: '2fa37f509acc3573049fc01f22e41fdda6e4acd9', 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: 'a17f9ff108cf509f3d6e20fc434cffb7a4d72530', class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: this.core.store.state.selectionGroup?.objects || [], style: {
434
437
  position: 'fixed',
435
438
  left: `${this.core.store.state.contextMenuX}px`,
436
439
  top: `${this.core.store.state.contextMenuY}px`,
@@ -441,7 +444,7 @@ export class KritzelEngine {
441
444
  y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,
442
445
  }, this.core.store.state.selectionGroup?.objects);
443
446
  this.hideContextMenu();
444
- }, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: '11612f7439e34cf20843f5ab63b19d5ef07847d7', core: this.core })));
447
+ }, onClose: () => this.hideContextMenu() })), this.core.store.state?.activeTool instanceof KritzelEraserTool && !this.core.store.state.isScaling && h("kritzel-cursor-trail", { key: 'a22fa1dba0442fa77a7660ca230d4bb0236e10ea', core: this.core })));
445
448
  }
446
449
  static get is() { return "kritzel-engine"; }
447
450
  static get encapsulation() { return "shadow"; }
@@ -1478,6 +1481,12 @@ export class KritzelEngine {
1478
1481
  "target": "window",
1479
1482
  "capture": false,
1480
1483
  "passive": false
1484
+ }, {
1485
+ "name": "dblclick",
1486
+ "method": "preventDoubleTapZoomOnTouchDevices",
1487
+ "target": "document",
1488
+ "capture": false,
1489
+ "passive": false
1481
1490
  }];
1482
1491
  }
1483
1492
  }