kritzel-stencil 0.0.124 → 0.0.125

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 (44) hide show
  1. package/dist/cjs/{index-UcX3pzju.js → index-CgSgPOBv.js} +8 -11
  2. package/dist/cjs/index-CgSgPOBv.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +13 -14
  5. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
  6. package/dist/collection/classes/handlers/hover.handler.js +0 -3
  7. package/dist/collection/classes/handlers/hover.handler.js.map +1 -1
  8. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  9. package/dist/collection/classes/objects/path.class.js +6 -4
  10. package/dist/collection/classes/objects/path.class.js.map +1 -1
  11. package/dist/collection/classes/objects/selection-group.class.js +0 -2
  12. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  13. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +12 -13
  14. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  15. package/dist/components/index.js +2 -2
  16. package/dist/components/kritzel-controls.js +1 -1
  17. package/dist/components/kritzel-editor.js +3 -3
  18. package/dist/components/kritzel-engine.js +1 -1
  19. package/dist/components/{p-Cnc43o9b.js → p-BJOf0PsO.js} +8 -6
  20. package/dist/components/p-BJOf0PsO.js.map +1 -0
  21. package/dist/components/{p-DJaVT2yR.js → p-BjG1zRRI.js} +15 -21
  22. package/dist/components/p-BjG1zRRI.js.map +1 -0
  23. package/dist/components/{p-CneTqrgt.js → p-CBCFr_x3.js} +3 -3
  24. package/dist/components/{p-CneTqrgt.js.map → p-CBCFr_x3.js.map} +1 -1
  25. package/dist/esm/{index-DO2IiM_o.js → index-B_0CRlFw.js} +8 -11
  26. package/dist/esm/index-B_0CRlFw.js.map +1 -0
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/kritzel-brush-style_18.entry.js +13 -14
  29. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  30. package/dist/stencil/index.esm.js +1 -1
  31. package/dist/stencil/{p-c64f6589.entry.js → p-3a2f1d19.entry.js} +2 -2
  32. package/dist/stencil/p-3a2f1d19.entry.js.map +1 -0
  33. package/dist/stencil/p-B_0CRlFw.js +2 -0
  34. package/dist/stencil/p-B_0CRlFw.js.map +1 -0
  35. package/dist/stencil/stencil.esm.js +1 -1
  36. package/dist/types/classes/objects/path.class.d.ts +1 -1
  37. package/package.json +62 -57
  38. package/dist/cjs/index-UcX3pzju.js.map +0 -1
  39. package/dist/components/p-Cnc43o9b.js.map +0 -1
  40. package/dist/components/p-DJaVT2yR.js.map +0 -1
  41. package/dist/esm/index-DO2IiM_o.js.map +0 -1
  42. package/dist/stencil/p-DO2IiM_o.js +0 -2
  43. package/dist/stencil/p-DO2IiM_o.js.map +0 -1
  44. package/dist/stencil/p-c64f6589.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-engine.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-engine/kritzel-engine.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Listen, Element, Prop, Method, State, Event, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelTool } from '../../../interfaces/tool.interface';\r\nimport { KritzelViewport } from '../../../classes/viewport.class';\r\nimport { KritzelPath } from '../../../classes/objects/path.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelImage } from '../../../classes/objects/image.class';\r\nimport { KritzelText } from '../../../classes/objects/text.class';\r\nimport { KritzelSelectionGroup } from '../../../classes/objects/selection-group.class';\r\nimport { KrtizelSelectionBox } from '../../../classes/objects/selection-box.class';\r\nimport { KritzelStore } from '../../../classes/store.class';\r\nimport { KritzelKeyHandler } from '../../../classes/handlers/key.handler';\r\nimport { KritzelBaseTool } from '../../../classes/tools/base-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelBrushToolConfig, KritzelTextToolConfig } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\nimport { KritzelContextMenuHandler } from '../../../classes/handlers/context-menu.handler';\r\nimport { AddObjectCommand } from '../../../classes/commands/add-object.command';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { UpdateObjectCommand } from '../../../classes/commands/update-object.command';\r\nimport { RemoveObjectCommand } from '../../../classes/commands/remove-object.command';\r\nimport { KritzelToolRegistry } from '../../../classes/registries/tool.registry';\r\nimport { KritzelEventHelper } from '../../../helpers/event.helper';\r\nimport { KritzelClassHelper } from '../../../helpers/class.helper';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelCustomElement } from '../../../classes/objects/custom-element.class';\r\n\r\n@Component({\r\n tag: 'kritzel-engine',\r\n styleUrl: 'kritzel-engine.css',\r\n shadow: true,\r\n})\r\nexport class KritzelEngine {\r\n @Prop()\r\n activeTool: KritzelTool;\r\n\r\n @Prop()\r\n globalContextMenuItems: ContextMenuItem[];\r\n\r\n @Prop()\r\n objectContextMenuItems: ContextMenuItem[];\r\n\r\n @Prop({ mutable: true })\r\n scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n\r\n @Prop({ mutable: true })\r\n scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n\r\n @Event()\r\n isEngineReady: EventEmitter<void>;\r\n\r\n @Event()\r\n activeToolChange: EventEmitter<KritzelBaseTool>;\r\n\r\n @Element()\r\n host: HTMLElement;\r\n\r\n @State()\r\n forceUpdate: number = 0;\r\n\r\n @Watch('scaleMax')\r\n validateScaleMax(newValue: number) {\r\n if (newValue > ABSOLUTE_SCALE_MAX) {\r\n console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);\r\n this.scaleMax = ABSOLUTE_SCALE_MAX;\r\n this.store.state.scaleMax = this.scaleMax;\r\n } else {\r\n this.store.state.scaleMax = newValue;\r\n }\r\n }\r\n\r\n @Watch('scaleMin')\r\n validateScaleMin(newValue: number) {\r\n if (newValue < ABSOLUTE_SCALE_MIN) {\r\n console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);\r\n this.scaleMin = ABSOLUTE_SCALE_MIN;\r\n this.store.state.scaleMin = this.scaleMin;\r\n } else {\r\n this.store.state.scaleMin = newValue;\r\n }\r\n }\r\n\r\n store: KritzelStore;\r\n\r\n viewport: KritzelViewport;\r\n\r\n contextMenuHandler: KritzelContextMenuHandler;\r\n\r\n keyHandler: KritzelKeyHandler;\r\n\r\n contextMenuElement: HTMLKritzelContextMenuElement | null = null;\r\n\r\n get isSelecting() {\r\n return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.isSelecting;\r\n }\r\n\r\n get isSelectionActive() {\r\n return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.selectionGroup !== null;\r\n }\r\n\r\n constructor() {\r\n this.store = new KritzelStore(this);\r\n }\r\n\r\n componentWillLoad() {\r\n this.validateScaleMax(this.scaleMax);\r\n this.validateScaleMin(this.scaleMin);\r\n }\r\n\r\n componentDidLoad() {\r\n this.contextMenuHandler = new KritzelContextMenuHandler(this.store, this.globalContextMenuItems, this.objectContextMenuItems);\r\n this.keyHandler = new KritzelKeyHandler(this.store);\r\n this.viewport = new KritzelViewport(this.store, this.host);\r\n\r\n this._registerStateChangeListeners();\r\n\r\n if (this.store.state.isReady === false) {\r\n this.store.state.isReady = true;\r\n this.isEngineReady.emit();\r\n }\r\n }\r\n\r\n @Listen('wheel', { passive: false })\r\n handleWheel(ev) {\r\n if (this.store.state.isContextMenuVisible) {\r\n this.hideContextMenu();\r\n }\r\n\r\n this.viewport.handleWheel(ev);\r\n this.store.state?.activeTool?.handleWheel(ev);\r\n }\r\n\r\n @Listen('pointerdown', { passive: false })\r\n handlePointerDown(ev: PointerEvent) {\r\n if (KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {\r\n this.hideContextMenu();\r\n return;\r\n }\r\n\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n KritzelEventHelper.onLongTouchPress(ev, (event: PointerEvent) => {\r\n if (!(this.store.state.activeTool instanceof KritzelSelectionTool)) {\r\n return;\r\n }\r\n this.contextMenuHandler.handleContextMenu(event);\r\n });\r\n\r\n this.host.setPointerCapture(ev.pointerId);\r\n this.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerDown(ev);\r\n this.store.state?.activeTool?.handlePointerDown(ev);\r\n }\r\n\r\n @Listen('pointermove', { passive: false })\r\n handlePointerMove(ev: PointerEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerMove(ev);\r\n this.store.state?.activeTool?.handlePointerMove(ev);\r\n }\r\n\r\n @Listen('pointerup', { passive: false })\r\n handlePointerUp(ev: PointerEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.store.state.pointers.delete(ev.pointerId);\r\n this.host.releasePointerCapture(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('pointercancel', { passive: false })\r\n handlePointerCancel(ev: PointerEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.host.releasePointerCapture(ev.pointerId);\r\n this.store.state.pointers.delete(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('contextmenu', { capture: false })\r\n handleContextMenu(ev: PointerEvent) {\r\n ev.preventDefault();\r\n\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (ev.pointerType === 'touch') {\r\n return;\r\n }\r\n\r\n this.contextMenuHandler.handleContextMenu(ev);\r\n }\r\n\r\n @Listen('resize', { target: 'window' })\r\n handleResize() {\r\n this.viewport.handleResize();\r\n }\r\n\r\n @Listen('keydown', { target: 'window' })\r\n handleKeyDown(ev) {\r\n this.keyHandler.handleKeyDown(ev);\r\n }\r\n\r\n @Listen('keyup', { target: 'window' })\r\n handleKeyUp(ev) {\r\n this.keyHandler.handleKeyUp(ev);\r\n }\r\n\r\n @Listen('mousedown', { target: 'window', passive: true })\r\n updateFocus(ev) {\r\n const rect = this.store.state.host.getBoundingClientRect();\r\n const isInside = ev.clientX >= rect.left && ev.clientX <= rect.right && ev.clientY >= rect.top && ev.clientY <= rect.bottom;\r\n\r\n const path = ev.composedPath();\r\n const kritzelEngineElement = this.host.closest('kritzel-engine');\r\n const isInKritzelEngine = path.includes(kritzelEngineElement || this.host);\r\n\r\n this.store.setState('isFocused', isInside && isInKritzelEngine);\r\n }\r\n\r\n @Method()\r\n async registerTool(toolName: string, toolClass: any, toolConfig?: KritzelTextToolConfig | KritzelBrushToolConfig): Promise<KritzelBaseTool> {\r\n if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {\r\n console.error(`Failed to register tool \"${toolName}\": Tool class must be a constructor function`);\r\n return null;\r\n }\r\n\r\n const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.store);\r\n\r\n if (toolConfig) {\r\n Object.entries(toolConfig).forEach(([key, value]) => {\r\n registeredTool[key] = value;\r\n });\r\n }\r\n\r\n return Promise.resolve(registeredTool);\r\n }\r\n\r\n @Method()\r\n async changeActiveTool(tool: KritzelBaseTool) {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', tool);\r\n this.store.deselectAllObjects();\r\n tool?.onActivate();\r\n }\r\n\r\n @Method()\r\n async setFocus() {\r\n this.host.focus();\r\n this.store.state.isFocused = true;\r\n }\r\n\r\n @Method()\r\n async disable() {\r\n this.store.state.isEnabled = false;\r\n this.forceUpdate++;\r\n }\r\n\r\n @Method()\r\n async enable() {\r\n this.store.state.isEnabled = true;\r\n this.forceUpdate++;\r\n }\r\n\r\n @Method()\r\n async delete() {\r\n this.store.delete();\r\n }\r\n\r\n @Method()\r\n async copy() {\r\n this.store.copy();\r\n }\r\n\r\n @Method()\r\n async paste(x: number, y: number) {\r\n this.store.paste(x, y);\r\n }\r\n\r\n @Method()\r\n async bringForward(object?: KritzelBaseObject<any>) {\r\n this.store.bringForward(object);\r\n }\r\n\r\n @Method()\r\n async sendBackward(object?: KritzelBaseObject<any>) {\r\n this.store.sendBackward(object);\r\n }\r\n\r\n @Method()\r\n async moveToTop(object?: KritzelBaseObject<any>) {\r\n this.store.bringToFront(object);\r\n }\r\n\r\n @Method()\r\n async moveToBottom(object?: KritzelBaseObject<any>) {\r\n this.store.sendToBack(object);\r\n }\r\n\r\n @Method()\r\n async undo() {\r\n this.store.history.undo();\r\n }\r\n\r\n @Method()\r\n async redo() {\r\n this.store.history.redo();\r\n }\r\n\r\n @Method()\r\n async hideContextMenu() {\r\n this.store.state.pointers.clear();\r\n this.store.state.isContextMenuVisible = false;\r\n this.store.state.selectionBox = null;\r\n this.store.state.isSelecting = false;\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n const object = this.store.objects.find(obj => obj.id === id) as T | undefined;\r\n return object || null;\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.store.deselectAllObjects();\r\n\r\n object.id = object.generateId();\r\n object._store = this.store;\r\n object.scale = object.scale ? object.scale : this.store.state.scale;\r\n object.zIndex = this.store.currentZIndex;\r\n\r\n const command = new AddObjectCommand(this.store, this, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return 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 this.store.deselectAllObjects();\r\n\r\n const command = new UpdateObjectCommand(this.store, this, object, updatedProperties);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.store.deselectAllObjects();\r\n\r\n const command = new RemoveObjectCommand(this.store, this, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject<any>[]> {\r\n return this.store.state.selectionGroup ? this.store.state.selectionGroup.objects : [];\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.store.deselectAllObjects();\r\n this.store.selectObjects(objects);\r\n console.log('Selected objects:', objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.store.deselectAllObjects();\r\n this.store.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.store.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n object.centerInViewport();\r\n\r\n const command = new UpdateObjectCommand(this.store, this, object, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getCopiedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.store.state.copiedObjects?.objects || [];\r\n }\r\n\r\n private _registerStateChangeListeners() {\r\n this.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));\r\n this.store.onStateChange('isFocused', this._handleIsFocusedChange.bind(this));\r\n }\r\n\r\n private _handleActiveToolChange(activeTool: KritzelBaseTool) {\r\n if (!(activeTool instanceof KritzelSelectionTool)) {\r\n this.store.clearSelection();\r\n }\r\n\r\n this.store.state.skipContextMenu = false;\r\n this.activeToolChange.emit(activeTool);\r\n KritzelKeyboardHelper.forceHideKeyboard();\r\n }\r\n\r\n private _handleIsFocusedChange(isFocused: boolean) {\r\n if (!isFocused) {\r\n this.store.resetActiveText();\r\n }\r\n }\r\n\r\n render() {\r\n const computedStyle = window.getComputedStyle(this.host);\r\n const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';\r\n const baseHandleSize = parseFloat(baseHandleSizePx);\r\n const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;\r\n\r\n return (\r\n <Host>\r\n <div class=\"debug-panel\" style={{ display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' }}>\r\n <div>TranslateX: {this.store.state?.translateX}</div>\r\n <div>TranslateY: {this.store.state?.translateY}</div>\r\n <div>ViewportWidth: {this.store.state?.viewportWidth}</div>\r\n <div>ViewportHeight: {this.store.state?.viewportHeight}</div>\r\n <div>ObjectsInViewport. {this.store.objects.length}</div>\r\n <div>Scale: {this.store.state?.scale}</div>\r\n <div>ActiveTool: {this.store.state?.activeTool?.name}</div>\r\n <div>HasViewportChanged: {this.store.state?.hasViewportChanged ? 'true' : 'false'}</div>\r\n <div>IsEnabled: {this.store.state?.isEnabled ? 'true' : 'false'}</div>\r\n <div>IsScaling: {this.store.state?.isScaling ? 'true' : 'false'}</div>\r\n <div>IsPanning: {this.store.state?.isPanning ? 'true' : 'false'}</div>\r\n <div>IsFocused: {this.store.state.isFocused ? 'true' : 'false'}</div>\r\n <div>IsSelecting: {this.isSelecting ? 'true' : 'false'}</div>\r\n <div>IsSelectionActive: {this.isSelectionActive ? 'true' : 'false'}</div>\r\n <div>IsResizeHandleSelected: {this.store.state.isResizeHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsRotationHandleSelected: {this.store.state.isRotationHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsDrawing: {this.store.state.isDrawing ? 'true' : 'false'}</div>\r\n <div>IsWriting: {this.store.state.isWriting ? 'true' : 'false'}</div>\r\n <div>PointerX: {this.store.state?.pointerX}</div>\r\n <div>PointerY: {this.store.state?.pointerY}</div>\r\n </div>\r\n\r\n <div\r\n id=\"origin\"\r\n class=\"origin\"\r\n style={{\r\n transform: `matrix(${this.store.state?.scale}, 0, 0, ${this.store.state?.scale}, ${this.store.state?.translateX}, ${this.store.state?.translateY})`,\r\n }}\r\n >\r\n {this.store.objects?.map(object => {\r\n return (\r\n <div style={{ transform: object?.transformationMatrix, transformOrigin: 'top left', zIndex: object.zIndex.toString(), position: 'absolute' }}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n key={object.id}\r\n id={object.id}\r\n class=\"object\"\r\n style={{\r\n height: object?.totalHeight.toString(),\r\n width: object?.totalWidth.toString(),\r\n left: '0',\r\n top: '0',\r\n position: 'absolute',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),\r\n pointerEvents: object.markedForRemoval ? 'none' : 'auto',\r\n }}\r\n >\r\n <foreignObject\r\n x=\"0\"\r\n y=\"0\"\r\n width={object.totalWidth.toString()}\r\n height={object.totalHeight.toString()}\r\n style={{\r\n minHeight: '0',\r\n minWidth: '0',\r\n backgroundColor: object.backgroundColor,\r\n borderColor: object.borderColor,\r\n borderWidth: object.borderWidth + 'px',\r\n borderStyle: 'solid',\r\n padding: object.padding + 'px',\r\n overflow: 'visible',\r\n }}\r\n >\r\n {KritzelClassHelper.isInstanceOf<KritzelPath>(object, 'KritzelPath') && (\r\n <svg\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n height: object?.height.toString(),\r\n width: object?.width.toString(),\r\n position: 'absolute',\r\n overflow: 'visible',\r\n }}\r\n viewBox={object?.viewBox}\r\n >\r\n <path d={object?.d} fill={object.fill} stroke={object?.stroke} />\r\n </svg>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelImage>(object, 'KritzelImage') && (\r\n <img\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n src={object.src}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n userSelect: 'none',\r\n pointerEvents: 'none',\r\n }}\r\n draggable={false}\r\n onDragStart={e => e.preventDefault()}\r\n />\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelText>(object, 'KritzelText') && (\r\n <textarea\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n value={object.value}\r\n onKeyDown={event => object.handleKeyDown(event)}\r\n onInput={event => object.handleInput(event)}\r\n rows={object.rows}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n color: object.fontColor,\r\n fontSize: object.fontSize?.toString() + 'px',\r\n fontFamily: object.fontFamily,\r\n border: 'none',\r\n outline: 'none',\r\n resize: 'none',\r\n overflow: 'hidden',\r\n display: 'block',\r\n padding: '1px',\r\n whiteSpace: 'nowrap',\r\n pointerEvents: object.isReadonly ? 'none' : 'auto',\r\n cursor: object.isReadonly ? 'default' : 'text',\r\n caretColor: object.isReadonly ? 'transparent' : 'auto',\r\n }}\r\n ></textarea>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelCustomElement>(object, 'KritzelCustomElement') && (\r\n <div\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n pointerEvents: 'auto',\r\n overflow: 'hidden',\r\n display: 'block',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelSelectionGroup>(object, 'KritzelSelectionGroup') && (\r\n <div\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KrtizelSelectionBox>(object, 'KrtizelSelectionBox') && (\r\n <div\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n </foreignObject>\r\n\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2=\"0\"\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2=\"0\"\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1={object.totalHeight}\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1={object.totalWidth}\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <line\r\n x1={object.totalWidth / 2}\r\n y1=\"0\"\r\n x2={object.totalWidth / 2}\r\n y2={-((15 * object.scale) / this.store.state?.scale)}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.store.state?.scale)}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle-overlay\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.store.state?.scale)}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n cursor: 'grab',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <g style={{ display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' }}>\r\n <foreignObject\r\n x={object.totalWidth.toString()}\r\n y=\"0\"\r\n width=\"400px\"\r\n height=\"160px\"\r\n style={{ minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' }}\r\n >\r\n <div style={{ width: '100%', height: '100%' }}>\r\n <div style={{ whiteSpace: 'nowrap' }}>zIndex: {object.zIndex}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateX: {object.translateX}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateY: {object.translateY}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>width: {object.width}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>height: {object.height}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>scale: {object.scale}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>rotation: {object.rotation}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>x: {object.x}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>y: {object.y}</div>\r\n </div>\r\n </foreignObject>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n })}\r\n\r\n <svg\r\n class=\"object\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n height: this.store.state.currentPath?.height.toString(),\r\n width: this.store.state.currentPath?.width.toString(),\r\n left: '0',\r\n top: '0',\r\n zIndex: this.store.state.currentPath?.zIndex.toString(),\r\n position: 'absolute',\r\n transform: this.store.state.currentPath?.transformationMatrix,\r\n transformOrigin: 'top left',\r\n overflow: 'visible',\r\n }}\r\n viewBox={this.store.state.currentPath?.viewBox}\r\n >\r\n <path d={this.store.state.currentPath?.d} fill={this.store.state.currentPath?.fill} stroke={this.store.state.currentPath?.stroke} />\r\n </svg>\r\n </div>\r\n\r\n {this.store.state.isContextMenuVisible && (\r\n <kritzel-context-menu\r\n class=\"context-menu\"\r\n ref={el => (this.contextMenuElement = el)}\r\n items={this.store.state.contextMenuItems}\r\n objects={this.store.state.selectionGroup?.objects || []}\r\n style={{\r\n position: 'fixed',\r\n left: `${this.store.state.contextMenuX}px`,\r\n top: `${this.store.state.contextMenuY}px`,\r\n zIndex: '10000',\r\n }}\r\n onActionSelected={event => {\r\n event.detail.action(\r\n {\r\n x: (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale,\r\n y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,\r\n },\r\n this.store.state.selectionGroup?.objects,\r\n );\r\n this.hideContextMenu();\r\n }}\r\n ></kritzel-context-menu>\r\n )}\r\n\r\n {this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && <kritzel-cursor-trail store={this.store}></kritzel-cursor-trail>}\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-engine.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-engine/kritzel-engine.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Listen, Element, Prop, Method, State, Event, EventEmitter, Watch } from '@stencil/core';\r\nimport { KritzelTool } from '../../../interfaces/tool.interface';\r\nimport { KritzelViewport } from '../../../classes/viewport.class';\r\nimport { KritzelPath } from '../../../classes/objects/path.class';\r\nimport { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';\r\nimport { KritzelImage } from '../../../classes/objects/image.class';\r\nimport { KritzelText } from '../../../classes/objects/text.class';\r\nimport { KritzelSelectionGroup } from '../../../classes/objects/selection-group.class';\r\nimport { KrtizelSelectionBox } from '../../../classes/objects/selection-box.class';\r\nimport { KritzelStore } from '../../../classes/store.class';\r\nimport { KritzelKeyHandler } from '../../../classes/handlers/key.handler';\r\nimport { KritzelBaseTool } from '../../../classes/tools/base-tool.class';\r\nimport { ContextMenuItem } from '../../../interfaces/context-menu-item.interface';\r\nimport { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';\r\nimport { KritzelBrushToolConfig, KritzelTextToolConfig } from '../../../interfaces/toolbar-control.interface';\r\nimport { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';\r\nimport { KritzelContextMenuHandler } from '../../../classes/handlers/context-menu.handler';\r\nimport { AddObjectCommand } from '../../../classes/commands/add-object.command';\r\nimport { KritzelBaseObject } from '../../../classes/objects/base-object.class';\r\nimport { UpdateObjectCommand } from '../../../classes/commands/update-object.command';\r\nimport { RemoveObjectCommand } from '../../../classes/commands/remove-object.command';\r\nimport { KritzelToolRegistry } from '../../../classes/registries/tool.registry';\r\nimport { KritzelEventHelper } from '../../../helpers/event.helper';\r\nimport { KritzelClassHelper } from '../../../helpers/class.helper';\r\nimport { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';\r\nimport { KritzelCustomElement } from '../../../classes/objects/custom-element.class';\r\n\r\n@Component({\r\n tag: 'kritzel-engine',\r\n styleUrl: 'kritzel-engine.css',\r\n shadow: true,\r\n})\r\nexport class KritzelEngine {\r\n @Prop()\r\n activeTool: KritzelTool;\r\n\r\n @Prop()\r\n globalContextMenuItems: ContextMenuItem[];\r\n\r\n @Prop()\r\n objectContextMenuItems: ContextMenuItem[];\r\n\r\n @Prop({ mutable: true })\r\n scaleMax: number = ABSOLUTE_SCALE_MAX;\r\n\r\n @Prop({ mutable: true })\r\n scaleMin: number = ABSOLUTE_SCALE_MIN;\r\n\r\n @Event()\r\n isEngineReady: EventEmitter<void>;\r\n\r\n @Event()\r\n activeToolChange: EventEmitter<KritzelBaseTool>;\r\n\r\n @Element()\r\n host: HTMLElement;\r\n\r\n @State()\r\n forceUpdate: number = 0;\r\n\r\n @Watch('scaleMax')\r\n validateScaleMax(newValue: number) {\r\n if (newValue > ABSOLUTE_SCALE_MAX) {\r\n console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);\r\n this.scaleMax = ABSOLUTE_SCALE_MAX;\r\n this.store.state.scaleMax = this.scaleMax;\r\n } else {\r\n this.store.state.scaleMax = newValue;\r\n }\r\n }\r\n\r\n @Watch('scaleMin')\r\n validateScaleMin(newValue: number) {\r\n if (newValue < ABSOLUTE_SCALE_MIN) {\r\n console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);\r\n this.scaleMin = ABSOLUTE_SCALE_MIN;\r\n this.store.state.scaleMin = this.scaleMin;\r\n } else {\r\n this.store.state.scaleMin = newValue;\r\n }\r\n }\r\n\r\n store: KritzelStore;\r\n\r\n viewport: KritzelViewport;\r\n\r\n contextMenuHandler: KritzelContextMenuHandler;\r\n\r\n keyHandler: KritzelKeyHandler;\r\n\r\n contextMenuElement: HTMLKritzelContextMenuElement | null = null;\r\n\r\n get isSelecting() {\r\n return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.isSelecting;\r\n }\r\n\r\n get isSelectionActive() {\r\n return this.store.state.activeTool instanceof KritzelSelectionTool && this.store.state.selectionGroup !== null;\r\n }\r\n\r\n constructor() {\r\n this.store = new KritzelStore(this);\r\n }\r\n\r\n componentWillLoad() {\r\n this.validateScaleMax(this.scaleMax);\r\n this.validateScaleMin(this.scaleMin);\r\n }\r\n\r\n componentDidLoad() {\r\n this.contextMenuHandler = new KritzelContextMenuHandler(this.store, this.globalContextMenuItems, this.objectContextMenuItems);\r\n this.keyHandler = new KritzelKeyHandler(this.store);\r\n this.viewport = new KritzelViewport(this.store, this.host);\r\n\r\n this._registerStateChangeListeners();\r\n\r\n if (this.store.state.isReady === false) {\r\n this.store.state.isReady = true;\r\n this.isEngineReady.emit();\r\n }\r\n }\r\n\r\n @Listen('wheel', { passive: false })\r\n handleWheel(ev) {\r\n if (this.store.state.isContextMenuVisible) {\r\n this.hideContextMenu();\r\n }\r\n\r\n this.viewport.handleWheel(ev);\r\n this.store.state?.activeTool?.handleWheel(ev);\r\n }\r\n\r\n @Listen('pointerdown', { passive: false })\r\n handlePointerDown(ev: PointerEvent) {\r\n if (KritzelEventHelper.isPointerEventOnContextMenu(ev) === false && this.store.state.isContextMenuVisible) {\r\n this.hideContextMenu();\r\n return;\r\n }\r\n\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n KritzelEventHelper.onLongTouchPress(ev, (event: PointerEvent) => {\r\n if (!(this.store.state.activeTool instanceof KritzelSelectionTool)) {\r\n return;\r\n }\r\n this.contextMenuHandler.handleContextMenu(event);\r\n });\r\n\r\n this.host.setPointerCapture(ev.pointerId);\r\n this.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerDown(ev);\r\n this.store.state?.activeTool?.handlePointerDown(ev);\r\n }\r\n\r\n @Listen('pointermove', { passive: false })\r\n handlePointerMove(ev: PointerEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.store.state.pointers.set(ev.pointerId, ev);\r\n\r\n this.viewport.handlePointerMove(ev);\r\n this.store.state?.activeTool?.handlePointerMove(ev);\r\n }\r\n\r\n @Listen('pointerup', { passive: false })\r\n handlePointerUp(ev: PointerEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.store.state.pointers.delete(ev.pointerId);\r\n this.host.releasePointerCapture(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('pointercancel', { passive: false })\r\n handlePointerCancel(ev: PointerEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.host.releasePointerCapture(ev.pointerId);\r\n this.store.state.pointers.delete(ev.pointerId);\r\n\r\n this.viewport.handlePointerUp(ev);\r\n this.store.state?.activeTool?.handlePointerUp(ev);\r\n }\r\n\r\n @Listen('contextmenu', { capture: false })\r\n handleContextMenu(ev: PointerEvent) {\r\n ev.preventDefault();\r\n\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (ev.pointerType === 'touch') {\r\n return;\r\n }\r\n\r\n this.contextMenuHandler.handleContextMenu(ev);\r\n }\r\n\r\n @Listen('resize', { target: 'window' })\r\n handleResize() {\r\n this.viewport.handleResize();\r\n }\r\n\r\n @Listen('keydown', { target: 'window' })\r\n handleKeyDown(ev) {\r\n this.keyHandler.handleKeyDown(ev);\r\n }\r\n\r\n @Listen('keyup', { target: 'window' })\r\n handleKeyUp(ev) {\r\n this.keyHandler.handleKeyUp(ev);\r\n }\r\n\r\n @Listen('mousedown', { target: 'window', passive: true })\r\n updateFocus(ev) {\r\n const rect = this.store.state.host.getBoundingClientRect();\r\n const isInside = ev.clientX >= rect.left && ev.clientX <= rect.right && ev.clientY >= rect.top && ev.clientY <= rect.bottom;\r\n\r\n const path = ev.composedPath();\r\n const kritzelEngineElement = this.host.closest('kritzel-engine');\r\n const isInKritzelEngine = path.includes(kritzelEngineElement || this.host);\r\n\r\n this.store.setState('isFocused', isInside && isInKritzelEngine);\r\n }\r\n\r\n @Method()\r\n async registerTool(toolName: string, toolClass: any, toolConfig?: KritzelTextToolConfig | KritzelBrushToolConfig): Promise<KritzelBaseTool> {\r\n if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {\r\n console.error(`Failed to register tool \"${toolName}\": Tool class must be a constructor function`);\r\n return null;\r\n }\r\n\r\n const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.store);\r\n\r\n if (toolConfig) {\r\n Object.entries(toolConfig).forEach(([key, value]) => {\r\n registeredTool[key] = value;\r\n });\r\n }\r\n\r\n return Promise.resolve(registeredTool);\r\n }\r\n\r\n @Method()\r\n async changeActiveTool(tool: KritzelBaseTool) {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', tool);\r\n this.store.deselectAllObjects();\r\n tool?.onActivate();\r\n }\r\n\r\n @Method()\r\n async setFocus() {\r\n this.host.focus();\r\n this.store.state.isFocused = true;\r\n }\r\n\r\n @Method()\r\n async disable() {\r\n this.store.state.isEnabled = false;\r\n this.forceUpdate++;\r\n }\r\n\r\n @Method()\r\n async enable() {\r\n this.store.state.isEnabled = true;\r\n this.forceUpdate++;\r\n }\r\n\r\n @Method()\r\n async delete() {\r\n this.store.delete();\r\n }\r\n\r\n @Method()\r\n async copy() {\r\n this.store.copy();\r\n }\r\n\r\n @Method()\r\n async paste(x: number, y: number) {\r\n this.store.paste(x, y);\r\n }\r\n\r\n @Method()\r\n async bringForward(object?: KritzelBaseObject<any>) {\r\n this.store.bringForward(object);\r\n }\r\n\r\n @Method()\r\n async sendBackward(object?: KritzelBaseObject<any>) {\r\n this.store.sendBackward(object);\r\n }\r\n\r\n @Method()\r\n async moveToTop(object?: KritzelBaseObject<any>) {\r\n this.store.bringToFront(object);\r\n }\r\n\r\n @Method()\r\n async moveToBottom(object?: KritzelBaseObject<any>) {\r\n this.store.sendToBack(object);\r\n }\r\n\r\n @Method()\r\n async undo() {\r\n this.store.history.undo();\r\n }\r\n\r\n @Method()\r\n async redo() {\r\n this.store.history.redo();\r\n }\r\n\r\n @Method()\r\n async hideContextMenu() {\r\n this.store.state.pointers.clear();\r\n this.store.state.isContextMenuVisible = false;\r\n this.store.state.selectionBox = null;\r\n this.store.state.isSelecting = false;\r\n }\r\n\r\n @Method()\r\n async getObjectById<T extends KritzelBaseObject>(id: string): Promise<T | null> {\r\n const object = this.store.objects.find(obj => obj.id === id) as T | undefined;\r\n return object || null;\r\n }\r\n\r\n @Method()\r\n async addObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.store.deselectAllObjects();\r\n\r\n object.id = object.generateId();\r\n object._store = this.store;\r\n object.scale = object.scale ? object.scale : this.store.state.scale;\r\n object.zIndex = this.store.currentZIndex;\r\n\r\n const command = new AddObjectCommand(this.store, this, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return 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 this.store.deselectAllObjects();\r\n\r\n const command = new UpdateObjectCommand(this.store, this, object, updatedProperties);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async removeObject<T extends KritzelBaseObject>(object: T): Promise<T | null> {\r\n this.store.deselectAllObjects();\r\n\r\n const command = new RemoveObjectCommand(this.store, this, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getSelectedObjects(): Promise<KritzelBaseObject<any>[]> {\r\n return this.store.state.selectionGroup ? this.store.state.selectionGroup.objects : [];\r\n }\r\n\r\n @Method()\r\n async selectObjects(objects: KritzelBaseObject[]) {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.store.deselectAllObjects();\r\n this.store.selectObjects(objects);\r\n }\r\n\r\n @Method()\r\n async selectAllObjectsInViewport() {\r\n this.store.state.activeTool?.onDeactivate();\r\n this.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n this.store.deselectAllObjects();\r\n this.store.selectAllObjectsInViewport();\r\n }\r\n\r\n @Method()\r\n async clearSelection() {\r\n this.store.clearSelection();\r\n }\r\n\r\n @Method()\r\n async centerObjectInViewport(object: KritzelBaseObject) {\r\n object.centerInViewport();\r\n\r\n const command = new UpdateObjectCommand(this.store, this, object, object);\r\n this.store.history.executeCommand(command);\r\n\r\n return object;\r\n }\r\n\r\n @Method()\r\n async getCopiedObjects(): Promise<KritzelBaseObject[]> {\r\n return this.store.state.copiedObjects?.objects || [];\r\n }\r\n\r\n private _registerStateChangeListeners() {\r\n this.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));\r\n this.store.onStateChange('isFocused', this._handleIsFocusedChange.bind(this));\r\n }\r\n\r\n private _handleActiveToolChange(activeTool: KritzelBaseTool) {\r\n if (!(activeTool instanceof KritzelSelectionTool)) {\r\n this.store.clearSelection();\r\n }\r\n\r\n this.store.state.skipContextMenu = false;\r\n this.activeToolChange.emit(activeTool);\r\n KritzelKeyboardHelper.forceHideKeyboard();\r\n }\r\n\r\n private _handleIsFocusedChange(isFocused: boolean) {\r\n if (!isFocused) {\r\n this.store.resetActiveText();\r\n }\r\n }\r\n\r\n render() {\r\n const computedStyle = window.getComputedStyle(this.host);\r\n const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';\r\n const baseHandleSize = parseFloat(baseHandleSizePx);\r\n const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;\r\n\r\n return (\r\n <Host>\r\n <div class=\"debug-panel\" style={{ display: this.store.state.debugInfo.showViewportInfo ? 'block' : 'none' }}>\r\n <div>TranslateX: {this.store.state?.translateX}</div>\r\n <div>TranslateY: {this.store.state?.translateY}</div>\r\n <div>ViewportWidth: {this.store.state?.viewportWidth}</div>\r\n <div>ViewportHeight: {this.store.state?.viewportHeight}</div>\r\n <div>ObjectsInViewport. {this.store.objects.length}</div>\r\n <div>Scale: {this.store.state?.scale}</div>\r\n <div>ActiveTool: {this.store.state?.activeTool?.name}</div>\r\n <div>HasViewportChanged: {this.store.state?.hasViewportChanged ? 'true' : 'false'}</div>\r\n <div>IsEnabled: {this.store.state?.isEnabled ? 'true' : 'false'}</div>\r\n <div>IsScaling: {this.store.state?.isScaling ? 'true' : 'false'}</div>\r\n <div>IsPanning: {this.store.state?.isPanning ? 'true' : 'false'}</div>\r\n <div>IsFocused: {this.store.state.isFocused ? 'true' : 'false'}</div>\r\n <div>IsSelecting: {this.isSelecting ? 'true' : 'false'}</div>\r\n <div>IsSelectionActive: {this.isSelectionActive ? 'true' : 'false'}</div>\r\n <div>IsResizeHandleSelected: {this.store.state.isResizeHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsRotationHandleSelected: {this.store.state.isRotationHandleSelected ? 'true' : 'false'}</div>\r\n <div>IsDrawing: {this.store.state.isDrawing ? 'true' : 'false'}</div>\r\n <div>IsWriting: {this.store.state.isWriting ? 'true' : 'false'}</div>\r\n <div>PointerX: {this.store.state?.pointerX}</div>\r\n <div>PointerY: {this.store.state?.pointerY}</div>\r\n </div>\r\n\r\n <div\r\n id=\"origin\"\r\n class=\"origin\"\r\n style={{\r\n transform: `matrix(${this.store.state?.scale}, 0, 0, ${this.store.state?.scale}, ${this.store.state?.translateX}, ${this.store.state?.translateY})`,\r\n }}\r\n >\r\n {this.store.objects?.map(object => {\r\n return (\r\n <div style={{ transform: object?.transformationMatrix, transformOrigin: 'top left', zIndex: object.zIndex.toString(), position: 'absolute' }}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n key={object.id}\r\n id={object.id}\r\n class=\"object\"\r\n style={{\r\n height: object?.totalHeight.toString(),\r\n width: object?.totalWidth.toString(),\r\n left: '0',\r\n top: '0',\r\n position: 'absolute',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),\r\n pointerEvents: object.markedForRemoval ? 'none' : 'auto',\r\n }}\r\n >\r\n <foreignObject\r\n x=\"0\"\r\n y=\"0\"\r\n width={object.totalWidth.toString()}\r\n height={object.totalHeight.toString()}\r\n style={{\r\n minHeight: '0',\r\n minWidth: '0',\r\n backgroundColor: object.backgroundColor,\r\n borderColor: object.borderColor,\r\n borderWidth: object.borderWidth + 'px',\r\n borderStyle: 'solid',\r\n padding: object.padding + 'px',\r\n overflow: 'visible',\r\n }}\r\n >\r\n {KritzelClassHelper.isInstanceOf<KritzelPath>(object, 'KritzelPath') && (\r\n <svg\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n height: object?.height.toString(),\r\n width: object?.width.toString(),\r\n position: 'absolute',\r\n overflow: 'visible',\r\n }}\r\n viewBox={object?.viewBox}\r\n >\r\n <path d={object?.d} fill={object.fill} stroke={object?.stroke} />\r\n </svg>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelImage>(object, 'KritzelImage') && (\r\n <img\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n src={object.src}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n userSelect: 'none',\r\n pointerEvents: 'none',\r\n }}\r\n draggable={false}\r\n onDragStart={e => e.preventDefault()}\r\n />\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelText>(object, 'KritzelText') && (\r\n <textarea\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n value={object.value}\r\n onKeyDown={event => object.handleKeyDown(event)}\r\n onInput={event => object.handleInput(event)}\r\n rows={object.rows}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n color: object.fontColor,\r\n fontSize: object.fontSize?.toString() + 'px',\r\n fontFamily: object.fontFamily,\r\n border: 'none',\r\n outline: 'none',\r\n resize: 'none',\r\n overflow: 'hidden',\r\n display: 'block',\r\n padding: '1px',\r\n whiteSpace: 'nowrap',\r\n pointerEvents: object.isReadonly ? 'none' : 'auto',\r\n cursor: object.isReadonly ? 'default' : 'text',\r\n caretColor: object.isReadonly ? 'transparent' : 'auto',\r\n }}\r\n ></textarea>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelCustomElement>(object, 'KritzelCustomElement') && (\r\n <div\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n pointerEvents: 'auto',\r\n overflow: 'hidden',\r\n display: 'block',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KritzelSelectionGroup>(object, 'KritzelSelectionGroup') && (\r\n <div\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {KritzelClassHelper.isInstanceOf<KrtizelSelectionBox>(object, 'KrtizelSelectionBox') && (\r\n <div\r\n ref={el => el ? object.mount(el) : object.unmount()}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n </foreignObject>\r\n\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2=\"0\"\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1=\"0\"\r\n x2=\"0\"\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1=\"0\"\r\n y1={object.totalHeight}\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n <line\r\n x1={object.totalWidth}\r\n y1=\"0\"\r\n x2={object.totalWidth}\r\n y2={object.totalHeight}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n }}\r\n visibility={object.isSelected ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-left\"\r\n cx=\"0\"\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay top-right\"\r\n cx={object.totalWidth}\r\n cy=\"0\"\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-left\"\r\n cx=\"0\"\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <circle\r\n class=\"resize-handle bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"resize-handle-overlay bottom-right\"\r\n cx={object.totalWidth}\r\n cy={object.totalHeight}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <line\r\n x1={object.totalWidth / 2}\r\n y1=\"0\"\r\n x2={object.totalWidth / 2}\r\n y2={-((15 * object.scale) / this.store.state?.scale)}\r\n style={{\r\n stroke: 'var(--kritzel-selection-border-color, #007AFF)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.store.state?.scale)}\r\n r={`${(baseHandleSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'var(--kritzel-selection-handle-color, #000000)',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n <circle\r\n class=\"rotation-handle-overlay\"\r\n cx={object.totalWidth / 2}\r\n cy={-((15 * object.scale) / this.store.state?.scale)}\r\n r={`${(baseHandleTouchSize * object.scale) / this.store.state?.scale}`}\r\n style={{\r\n fill: 'transparent',\r\n cursor: 'grab',\r\n }}\r\n visibility={object.isSelected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n\r\n <g style={{ display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' }}>\r\n <foreignObject\r\n x={object.totalWidth.toString()}\r\n y=\"0\"\r\n width=\"400px\"\r\n height=\"160px\"\r\n style={{ minHeight: '0', minWidth: '0', display: object.isDebugInfoVisible ? 'block' : 'none' }}\r\n >\r\n <div style={{ width: '100%', height: '100%' }}>\r\n <div style={{ whiteSpace: 'nowrap' }}>zIndex: {object.zIndex}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateX: {object.translateX}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>translateY: {object.translateY}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>width: {object.width}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>height: {object.height}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>scale: {object.scale}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>rotation: {object.rotation}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>x: {object.x}</div>\r\n <div style={{ whiteSpace: 'nowrap' }}>y: {object.y}</div>\r\n </div>\r\n </foreignObject>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n })}\r\n\r\n <svg\r\n class=\"object\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n height: this.store.state.currentPath?.height.toString(),\r\n width: this.store.state.currentPath?.width.toString(),\r\n left: '0',\r\n top: '0',\r\n zIndex: this.store.state.currentPath?.zIndex.toString(),\r\n position: 'absolute',\r\n transform: this.store.state.currentPath?.transformationMatrix,\r\n transformOrigin: 'top left',\r\n overflow: 'visible',\r\n }}\r\n viewBox={this.store.state.currentPath?.viewBox}\r\n >\r\n <path d={this.store.state.currentPath?.d} fill={this.store.state.currentPath?.fill} stroke={this.store.state.currentPath?.stroke} />\r\n </svg>\r\n </div>\r\n\r\n {this.store.state.isContextMenuVisible && (\r\n <kritzel-context-menu\r\n class=\"context-menu\"\r\n ref={el => (this.contextMenuElement = el)}\r\n items={this.store.state.contextMenuItems}\r\n objects={this.store.state.selectionGroup?.objects || []}\r\n style={{\r\n position: 'fixed',\r\n left: `${this.store.state.contextMenuX}px`,\r\n top: `${this.store.state.contextMenuY}px`,\r\n zIndex: '10000',\r\n }}\r\n onActionSelected={event => {\r\n event.detail.action(\r\n {\r\n x: (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale,\r\n y: (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale,\r\n },\r\n this.store.state.selectionGroup?.objects,\r\n );\r\n this.hideContextMenu();\r\n }}\r\n ></kritzel-context-menu>\r\n )}\r\n\r\n {this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && <kritzel-cursor-trail store={this.store}></kritzel-cursor-trail>}\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  export { g as getAssetPath, r as render, s as setAssetPath, a as setNonce, b as setPlatformOptions } from './p-DJN0U8pI.js';
2
- export { b as KritzelBrushTool, a as KritzelPath, K as KritzelText, c as KritzelTextTool } from './p-Cnc43o9b.js';
3
- export { a as KritzelEraserTool, K as KritzelImage, b as KritzelImageTool, c as KritzelSelectionTool } from './p-DJaVT2yR.js';
2
+ export { b as KritzelBrushTool, a as KritzelPath, K as KritzelText, c as KritzelTextTool } from './p-BJOf0PsO.js';
3
+ export { a as KritzelEraserTool, K as KritzelImage, b as KritzelImageTool, c as KritzelSelectionTool } from './p-BjG1zRRI.js';
4
4
  export { D as DEFAULT_BRUSH_CONFIG, a as DEFAULT_TEXT_CONFIG, KritzelEditor, defineCustomElement as defineCustomElementKritzelEditor } from './kritzel-editor.js';
5
5
  export { KritzelBrushStyle, defineCustomElement as defineCustomElementKritzelBrushStyle } from './kritzel-brush-style.js';
6
6
  export { KritzelColor, defineCustomElement as defineCustomElementKritzelColor } from './kritzel-color.js';
@@ -1,4 +1,4 @@
1
- import { K as KritzelControls$1, d as defineCustomElement$1 } from './p-CneTqrgt.js';
1
+ import { K as KritzelControls$1, d as defineCustomElement$1 } from './p-CBCFr_x3.js';
2
2
 
3
3
  const KritzelControls = KritzelControls$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,14 +1,14 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-DJN0U8pI.js';
2
2
  import { a as KritzelIconRegistry, d as defineCustomElement$5 } from './p-CtiROna-.js';
3
- import { A as ABSOLUTE_SCALE_MAX, f as ABSOLUTE_SCALE_MIN, c as KritzelSelectionTool, a as KritzelEraserTool, b as KritzelImageTool, e as defineCustomElement$9 } from './p-DJaVT2yR.js';
4
- import { b as KritzelBrushTool, c as KritzelTextTool } from './p-Cnc43o9b.js';
3
+ import { A as ABSOLUTE_SCALE_MAX, f as ABSOLUTE_SCALE_MIN, c as KritzelSelectionTool, a as KritzelEraserTool, b as KritzelImageTool, e as defineCustomElement$9 } from './p-BjG1zRRI.js';
4
+ import { b as KritzelBrushTool, c as KritzelTextTool } from './p-BJOf0PsO.js';
5
5
  import { d as defineCustomElement$i } from './p-C9usqwb5.js';
6
6
  import { d as defineCustomElement$h } from './p-D0sLslUq.js';
7
7
  import { d as defineCustomElement$g } from './p-Bn5P7YQn.js';
8
8
  import { d as defineCustomElement$f } from './p-BY8BWGge.js';
9
9
  import { d as defineCustomElement$e } from './p-ubNAWsY_.js';
10
10
  import { d as defineCustomElement$d } from './p-DMAzUKo6.js';
11
- import { d as defineCustomElement$c } from './p-CneTqrgt.js';
11
+ import { d as defineCustomElement$c } from './p-CBCFr_x3.js';
12
12
  import { d as defineCustomElement$b } from './p-Cw2ATHMj.js';
13
13
  import { d as defineCustomElement$a } from './p-NZJPrwJV.js';
14
14
  import { d as defineCustomElement$8 } from './p-CiT5gBDh.js';
@@ -1,4 +1,4 @@
1
- import { d as KritzelEngine$1, e as defineCustomElement$1 } from './p-DJaVT2yR.js';
1
+ import { d as KritzelEngine$1, e as defineCustomElement$1 } from './p-BjG1zRRI.js';
2
2
 
3
3
  const KritzelEngine = KritzelEngine$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -784,7 +784,11 @@ class KritzelPath extends KritzelBaseObject {
784
784
  this.rotation = value;
785
785
  this._adjustedPoints = null;
786
786
  }
787
- move(_startX, _startY, _endX, _endY) {
787
+ move(startX, startY, endX, endY) {
788
+ const deltaX = (startX - endX) / this._store.state.scale;
789
+ const deltaY = (startY - endY) / this._store.state.scale;
790
+ this.translateX += deltaX;
791
+ this.translateY += deltaY;
788
792
  this._adjustedPoints = null;
789
793
  }
790
794
  hitTest(x, y) {
@@ -877,9 +881,7 @@ class KritzelPath extends KritzelBaseObject {
877
881
  const dy = y - cy;
878
882
  return [cx + dx * cos - dy * sin, cy + dx * sin + dy * cos];
879
883
  });
880
- const deltaX = this.x - this.translateX;
881
- const deltaY = this.y - this.translateY;
882
- return rotatedPoints.map(([px, py]) => [(px + this.options.translateX - deltaX) / this.scale, (py + this.options.translateY - deltaY) / this.scale]);
884
+ return rotatedPoints.map(([px, py]) => [((Math.abs(px - this.x) / this.scale + this.translateX)), ((Math.abs(py - this.y) / this.scale + this.translateY))]);
883
885
  }
884
886
  pointToLineSegmentDistance(x, y, x1, y1, x2, y2) {
885
887
  const A = x - x1;
@@ -1086,6 +1088,6 @@ class KritzelBrushTool extends KritzelBaseTool {
1086
1088
  }
1087
1089
 
1088
1090
  export { AddObjectCommand as A, KritzelText as K, ObjectHelper as O, KritzelPath as a, KritzelBrushTool as b, KritzelTextTool as c, KritzelBaseObject as d, KritzelBaseCommand as e, KritzelBaseTool as f, KritzelEventHelper as g, KritzelToolRegistry as h, KritzelKeyboardHelper as i };
1089
- //# sourceMappingURL=p-Cnc43o9b.js.map
1091
+ //# sourceMappingURL=p-BJOf0PsO.js.map
1090
1092
 
1091
- //# sourceMappingURL=p-Cnc43o9b.js.map
1093
+ //# sourceMappingURL=p-BJOf0PsO.js.map