kritzel-stencil 0.0.103 → 0.0.105

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 (51) hide show
  1. package/dist/cjs/index-D62tBCuq.js.map +1 -1
  2. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +29 -2087
  3. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
  4. package/dist/cjs/stencil.cjs.js.map +1 -1
  5. package/dist/collection/classes/handlers/rotation.handler.js +1 -0
  6. package/dist/collection/classes/handlers/rotation.handler.js.map +1 -1
  7. package/dist/collection/classes/objects/image.class.js +2 -4
  8. package/dist/collection/classes/objects/image.class.js.map +1 -1
  9. package/dist/collection/classes/objects/selection-group.class.js +8 -7
  10. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  11. package/dist/collection/classes/reviver.class.js +1 -1
  12. package/dist/collection/classes/reviver.class.js.map +1 -1
  13. package/dist/collection/classes/structures/octree.structure.js +2 -2
  14. package/dist/collection/classes/structures/octree.structure.js.map +1 -1
  15. package/dist/collection/classes/tools/image-tool.class.js +2 -1
  16. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  17. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +2 -3
  18. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +10 -40
  19. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  20. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -1
  21. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +1 -1
  22. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -1
  23. package/dist/collection/helpers/object.helper.js +2 -15
  24. package/dist/collection/helpers/object.helper.js.map +1 -1
  25. package/dist/components/kritzel-controls.js +1 -1
  26. package/dist/components/kritzel-editor.js +3 -3
  27. package/dist/components/kritzel-engine.js +1 -1
  28. package/dist/components/{p-Bu6ZrM9f.js → p-C3vo4rx8.js} +30 -59
  29. package/dist/components/p-C3vo4rx8.js.map +1 -0
  30. package/dist/components/{p-DJUnTtGg.js → p-D31-QJwi.js} +3 -3
  31. package/dist/components/{p-DJUnTtGg.js.map → p-D31-QJwi.js.map} +1 -1
  32. package/dist/components/p-DC8SDK2U.js.map +1 -1
  33. package/dist/components/p-DT8_Rz-o.js +785 -0
  34. package/dist/components/p-DT8_Rz-o.js.map +1 -0
  35. package/dist/esm/index-BOJOOWaP.js.map +1 -1
  36. package/dist/esm/kritzel-brush-style_18.entry.js +29 -2087
  37. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  38. package/dist/esm/stencil.js.map +1 -1
  39. package/dist/stencil/p-BOJOOWaP.js.map +1 -1
  40. package/dist/stencil/p-d0394bb5.entry.js +2 -0
  41. package/dist/stencil/p-d0394bb5.entry.js.map +1 -0
  42. package/dist/stencil/stencil.esm.js +1 -1
  43. package/dist/stencil/stencil.esm.js.map +1 -1
  44. package/dist/types/classes/objects/image.class.d.ts +2 -2
  45. package/dist/types/helpers/object.helper.d.ts +0 -1
  46. package/package.json +3 -5
  47. package/dist/components/p-Bu6ZrM9f.js.map +0 -1
  48. package/dist/components/p-CFkDfXW4.js +0 -2814
  49. package/dist/components/p-CFkDfXW4.js.map +0 -1
  50. package/dist/stencil/p-95c7a63e.entry.js +0 -2
  51. package/dist/stencil/p-95c7a63e.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 } 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 { KritzelToolRegistry } from '../../../classes/tool.registry';\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 { KritzelEventHelper } from '../../../helpers/event.helper';\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 @Element()\r\n host: HTMLElement;\r\n\r\n @Prop()\r\n activeTool: KritzelTool;\r\n\r\n @Prop()\r\n globalContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: () => this.store.state.copiedObjects === null,\r\n action: () => {\r\n const x = (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale;\r\n const y = (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale;\r\n this.paste(x, y);\r\n },\r\n },\r\n { label: 'Select All', icon: 'select-all', action: () => this.selectAllInViewport() },\r\n ];\r\n\r\n @Prop()\r\n objectContextMenuItems: ContextMenuItem[] = [\r\n { label: 'Copy', icon: 'copy', action: () => this.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: () => this.store.state.copiedObjects === null,\r\n action: () => {\r\n const x = (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale;\r\n const y = (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale;\r\n this.paste(x, y);\r\n },\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.moveToTop() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.moveToBottom() },\r\n ];\r\n\r\n @State()\r\n forceUpdate: number = 0;\r\n\r\n @Event()\r\n engineReady: EventEmitter<void>;\r\n\r\n @Event()\r\n activeToolChange: EventEmitter<KritzelBaseTool>;\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 this.contextMenuHandler = new KritzelContextMenuHandler(this.store, this.globalContextMenuItems, this.objectContextMenuItems);\r\n this.keyHandler = new KritzelKeyHandler(this.store);\r\n\r\n this.store.onStateChange('activeTool', (activeTool: KritzelBaseTool) => {\r\n if (!(activeTool instanceof KritzelSelectionTool)) {\r\n this.store.resetSelection();\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 this.store.onStateChange('isFocused', (isFocused: boolean) => {\r\n if (!isFocused) {\r\n this.store.resetActiveText();\r\n }\r\n });\r\n }\r\n\r\n componentDidLoad() {\r\n this.viewport = new KritzelViewport(this.store, this.host);\r\n this.engineReady.emit();\r\n }\r\n\r\n @Listen('contextmenu', { capture: false })\r\n handleContextMenu(ev: MouseEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.contextMenuHandler.handleContextMenu(ev);\r\n }\r\n\r\n @Listen('mousedown', { passive: true })\r\n handleMouseDown(ev: MouseEvent) {\r\n if (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 this.viewport.handleMouseDown(ev);\r\n this.store.state?.activeTool?.handleMouseDown(ev);\r\n }\r\n\r\n @Listen('mousemove', { passive: true })\r\n handleMouseMove(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.viewport.handleMouseMove(ev);\r\n this.store.state?.activeTool?.handleMouseMove(ev);\r\n }\r\n\r\n @Listen('mouseup', { passive: true })\r\n handleMouseUp(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.viewport.handleMouseUp(ev);\r\n this.store.state?.activeTool?.handleMouseUp(ev);\r\n }\r\n\r\n @Listen('dblclick')\r\n handleDoubleClick(ev: MouseEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.store.state?.activeTool?.handleDoubleClick(ev);\r\n }\r\n\r\n @Listen('doubletap')\r\n handleDoubleTap(ev: CustomEvent<TouchEvent> | TouchEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n const touchEvent = ev instanceof CustomEvent && ev.detail ? ev.detail : (ev as TouchEvent);\r\n\r\n this.store.state?.activeTool?.handleDoubleTap(touchEvent);\r\n }\r\n\r\n @Listen('touchstart', { passive: false })\r\n handleTouchStart(ev: TouchEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.detectDoubleTap()) {\r\n const doubleTapEvent = new CustomEvent('doubletap', { detail: event, bubbles: true, composed: true });\r\n this.host.dispatchEvent(doubleTapEvent);\r\n }\r\n\r\n if (ev.touches.length > 1) {\r\n clearTimeout(this.store.state.longTouchTimeout);\r\n }\r\n\r\n if (ev.cancelable) {\r\n ev.preventDefault();\r\n }\r\n\r\n this.store.state.longTouchTimeout = setTimeout(() => this.contextMenuHandler.handleContextMenuTouch(ev), this.store.state.longTouchDelay);\r\n\r\n this.viewport.handleTouchStart(ev);\r\n this.store.state?.activeTool?.handleTouchStart(ev);\r\n }\r\n\r\n @Listen('touchmove', { passive: false })\r\n handleTouchMove(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (ev.cancelable) {\r\n ev.preventDefault();\r\n }\r\n\r\n this.viewport.handleTouchMove(ev);\r\n this.store.state?.activeTool?.handleTouchMove(ev);\r\n }\r\n\r\n @Listen('touchend', { passive: false })\r\n handleTouchEnd(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (ev.cancelable) {\r\n ev.preventDefault();\r\n }\r\n\r\n clearTimeout(this.store.state.longTouchTimeout);\r\n\r\n this.viewport.handleTouchEnd(ev);\r\n this.store.state?.activeTool?.handleTouchEnd(ev);\r\n }\r\n\r\n @Listen('touchcancel', { passive: false })\r\n handleTouchCancel(_ev) {\r\n clearTimeout(this.store.state.longTouchTimeout);\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('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 handleContextMenuAction(event: CustomEvent<ContextMenuItem>) {\r\n event.detail.action();\r\n this.hideContextMenu();\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 moveToTop() {\r\n this.store.moveToTop();\r\n }\r\n\r\n @Method()\r\n async moveToBottom() {\r\n this.store.moveToBottom();\r\n }\r\n\r\n @Method()\r\n async selectAllInViewport() {\r\n this.store.selectAllInViewport();\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.isContextMenuVisible = false;\r\n this.store.state.selectionBox = null;\r\n this.store.state.isSelecting = false;\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>CursorX: {this.store.state?.cursorX}</div>\r\n <div>CursorY: {this.store.state?.cursorY}</div>\r\n </div>\r\n\r\n <div\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 <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: object?.transformationMatrix,\r\n opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),\r\n pointerEvents: object.markedForRemoval ? 'none' : 'auto',\r\n zIndex: object.zIndex.toString(),\r\n }}\r\n >\r\n <g>\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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\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 {object instanceof KritzelPath && (\r\n <svg\r\n ref={el => object.mount(el)}\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 {object instanceof KritzelImage && (\r\n <img\r\n ref={el => object.mount(el)}\r\n src={object.img.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 {object instanceof KritzelText && (\r\n <textarea\r\n ref={el => object.mount(el)}\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 cursor: object.isReadonly ? 'default' : 'text',\r\n caretColor: object.isReadonly ? 'transparent' : 'auto',\r\n }}\r\n ></textarea>\r\n )}\r\n\r\n {object instanceof KritzelSelectionGroup && (\r\n <div\r\n ref={el => object.mount(el)}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {object instanceof KrtizelSelectionBox && (\r\n <div\r\n ref={el => object.mount(el)}\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, #0e1111)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected ? '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, #0e1111)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected ? '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, #0e1111)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected ? '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, #0e1111)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n strokeLinecap: 'square',\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected ? '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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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, #0e1111)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center',\r\n }}\r\n visibility={object.selected && !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 transform: `rotate(${object.rotationDegrees}deg)`,\r\n transformOrigin: 'center'\r\n }}\r\n visibility={object.selected && !this.isSelecting ? 'visible' : 'hidden'}\r\n />\r\n </g>\r\n\r\n <g style={{ display: this.store.state.debugInfo.showObjectInfo ? 'block' : '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.debugInfoVisible ? '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>\r\n </foreignObject>\r\n </g>\r\n </svg>\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 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 ref={el => (this.contextMenuElement = el)}\r\n items={this.store.state.contextMenuItems}\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 => this.handleContextMenuAction(event)}\r\n ></kritzel-context-menu>\r\n )}\r\n\r\n {this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && <kritzel-cursor-trail></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 } 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 { KritzelToolRegistry } from '../../../classes/tool.registry';\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 { KritzelEventHelper } from '../../../helpers/event.helper';\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 @Element()\r\n host: HTMLElement;\r\n\r\n @Prop()\r\n activeTool: KritzelTool;\r\n\r\n @Prop()\r\n globalContextMenuItems: ContextMenuItem[] = [\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: () => this.store.state.copiedObjects === null,\r\n action: () => {\r\n const x = (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale;\r\n const y = (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale;\r\n this.paste(x, y);\r\n },\r\n },\r\n { label: 'Select All', icon: 'select-all', action: () => this.selectAllInViewport() },\r\n ];\r\n\r\n @Prop()\r\n objectContextMenuItems: ContextMenuItem[] = [\r\n { label: 'Copy', icon: 'copy', action: () => this.copy() },\r\n {\r\n label: 'Paste',\r\n icon: 'paste',\r\n disabled: () => this.store.state.copiedObjects === null,\r\n action: () => {\r\n const x = (-this.store.state.translateX + this.store.state.contextMenuX) / this.store.state.scale;\r\n const y = (-this.store.state.translateY + this.store.state.contextMenuY) / this.store.state.scale;\r\n this.paste(x, y);\r\n },\r\n },\r\n { label: 'Delete', icon: 'delete', action: () => this.delete() },\r\n { label: 'Bring to Front', icon: 'bring-to-front', action: () => this.moveToTop() },\r\n { label: 'Send to Back', icon: 'send-to-back', action: () => this.moveToBottom() },\r\n ];\r\n\r\n @State()\r\n forceUpdate: number = 0;\r\n\r\n @Event()\r\n engineReady: EventEmitter<void>;\r\n\r\n @Event()\r\n activeToolChange: EventEmitter<KritzelBaseTool>;\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 this.contextMenuHandler = new KritzelContextMenuHandler(this.store, this.globalContextMenuItems, this.objectContextMenuItems);\r\n this.keyHandler = new KritzelKeyHandler(this.store);\r\n\r\n this.store.onStateChange('activeTool', (activeTool: KritzelBaseTool) => {\r\n if (!(activeTool instanceof KritzelSelectionTool)) {\r\n this.store.resetSelection();\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 this.store.onStateChange('isFocused', (isFocused: boolean) => {\r\n if (!isFocused) {\r\n this.store.resetActiveText();\r\n }\r\n });\r\n }\r\n\r\n componentDidLoad() {\r\n this.viewport = new KritzelViewport(this.store, this.host);\r\n this.engineReady.emit();\r\n }\r\n\r\n @Listen('contextmenu', { capture: false })\r\n handleContextMenu(ev: MouseEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.contextMenuHandler.handleContextMenu(ev);\r\n }\r\n\r\n @Listen('mousedown', { passive: true })\r\n handleMouseDown(ev: MouseEvent) {\r\n if (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 this.viewport.handleMouseDown(ev);\r\n this.store.state?.activeTool?.handleMouseDown(ev);\r\n }\r\n\r\n @Listen('mousemove', { passive: true })\r\n handleMouseMove(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.viewport.handleMouseMove(ev);\r\n this.store.state?.activeTool?.handleMouseMove(ev);\r\n }\r\n\r\n @Listen('mouseup', { passive: true })\r\n handleMouseUp(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.viewport.handleMouseUp(ev);\r\n this.store.state?.activeTool?.handleMouseUp(ev);\r\n }\r\n\r\n @Listen('dblclick')\r\n handleDoubleClick(ev: MouseEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n this.store.state?.activeTool?.handleDoubleClick(ev);\r\n }\r\n\r\n @Listen('doubletap')\r\n handleDoubleTap(ev: CustomEvent<TouchEvent> | TouchEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n const touchEvent = ev instanceof CustomEvent && ev.detail ? ev.detail : (ev as TouchEvent);\r\n\r\n this.store.state?.activeTool?.handleDoubleTap(touchEvent);\r\n }\r\n\r\n @Listen('touchstart', { passive: false })\r\n handleTouchStart(ev: TouchEvent) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.detectDoubleTap()) {\r\n const doubleTapEvent = new CustomEvent('doubletap', { detail: event, bubbles: true, composed: true });\r\n this.host.dispatchEvent(doubleTapEvent);\r\n }\r\n\r\n if (ev.touches.length > 1) {\r\n clearTimeout(this.store.state.longTouchTimeout);\r\n }\r\n\r\n if (ev.cancelable) {\r\n ev.preventDefault();\r\n }\r\n\r\n this.store.state.longTouchTimeout = setTimeout(() => this.contextMenuHandler.handleContextMenuTouch(ev), this.store.state.longTouchDelay);\r\n\r\n this.viewport.handleTouchStart(ev);\r\n this.store.state?.activeTool?.handleTouchStart(ev);\r\n }\r\n\r\n @Listen('touchmove', { passive: false })\r\n handleTouchMove(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (ev.cancelable) {\r\n ev.preventDefault();\r\n }\r\n\r\n this.viewport.handleTouchMove(ev);\r\n this.store.state?.activeTool?.handleTouchMove(ev);\r\n }\r\n\r\n @Listen('touchend', { passive: false })\r\n handleTouchEnd(ev) {\r\n if (this.store.state.isEnabled === false) {\r\n return;\r\n }\r\n\r\n if (ev.cancelable) {\r\n ev.preventDefault();\r\n }\r\n\r\n clearTimeout(this.store.state.longTouchTimeout);\r\n\r\n this.viewport.handleTouchEnd(ev);\r\n this.store.state?.activeTool?.handleTouchEnd(ev);\r\n }\r\n\r\n @Listen('touchcancel', { passive: false })\r\n handleTouchCancel(_ev) {\r\n clearTimeout(this.store.state.longTouchTimeout);\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('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 handleContextMenuAction(event: CustomEvent<ContextMenuItem>) {\r\n event.detail.action();\r\n this.hideContextMenu();\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 moveToTop() {\r\n this.store.moveToTop();\r\n }\r\n\r\n @Method()\r\n async moveToBottom() {\r\n this.store.moveToBottom();\r\n }\r\n\r\n @Method()\r\n async selectAllInViewport() {\r\n this.store.selectAllInViewport();\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.isContextMenuVisible = false;\r\n this.store.state.selectionBox = null;\r\n this.store.state.isSelecting = false;\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>CursorX: {this.store.state?.cursorX}</div>\r\n <div>CursorY: {this.store.state?.cursorY}</div>\r\n </div>\r\n\r\n <div\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' }}>\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 zIndex: object.zIndex.toString(),\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 {object instanceof KritzelPath && (\r\n <svg\r\n ref={el => object.mount(el)}\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 {object instanceof KritzelImage && (\r\n <img\r\n ref={el => object.mount(el)}\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 {object instanceof KritzelText && (\r\n <textarea\r\n ref={el => object.mount(el)}\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 cursor: object.isReadonly ? 'default' : 'text',\r\n caretColor: object.isReadonly ? 'transparent' : 'auto',\r\n }}\r\n ></textarea>\r\n )}\r\n\r\n {object instanceof KritzelSelectionGroup && (\r\n <div\r\n ref={el => object.mount(el)}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n }}\r\n ></div>\r\n )}\r\n\r\n {object instanceof KrtizelSelectionBox && (\r\n <div\r\n ref={el => object.mount(el)}\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, #0e1111)',\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.selected ? '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, #0e1111)',\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.selected ? '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, #0e1111)',\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.selected ? '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, #0e1111)',\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.selected ? '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.selected && !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.selected && !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.selected && !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.selected && !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.selected && !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.selected && !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.selected && !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.selected && !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, #0e1111)',\r\n strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${this.store.state?.scale})`,\r\n }}\r\n visibility={object.selected && !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.selected && !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.selected && !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.debugInfoVisible ? '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>\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 ref={el => (this.contextMenuElement = el)}\r\n items={this.store.state.contextMenuItems}\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 => this.handleContextMenuAction(event)}\r\n ></kritzel-context-menu>\r\n )}\r\n\r\n {this.store.state?.activeTool instanceof KritzelEraserTool && !this.store.state.isScaling && <kritzel-cursor-trail></kritzel-cursor-trail>}\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -61,7 +61,7 @@ export class KritzelBrushStyle {
61
61
  "references": {
62
62
  "BrushStyleOption": {
63
63
  "location": "local",
64
- "path": "C:/Projects/kritzel/packages/libs/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.tsx",
64
+ "path": "C:/Projects/kritzel/libs/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.tsx",
65
65
  "id": "src/components/shared/kritzel-brush-style/kritzel-brush-style.tsx::BrushStyleOption"
66
66
  }
67
67
  }
@@ -102,7 +102,7 @@ export class KritzelDropdown {
102
102
  "references": {
103
103
  "DropdownOption": {
104
104
  "location": "local",
105
- "path": "C:/Projects/kritzel/packages/libs/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.tsx",
105
+ "path": "C:/Projects/kritzel/libs/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.tsx",
106
106
  "id": "src/components/shared/kritzel-dropdown/kritzel-dropdown.tsx::DropdownOption"
107
107
  }
108
108
  }
@@ -57,7 +57,7 @@ export class KritzelFontFamily {
57
57
  "references": {
58
58
  "FontOption": {
59
59
  "location": "local",
60
- "path": "C:/Projects/kritzel/packages/libs/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.tsx",
60
+ "path": "C:/Projects/kritzel/libs/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.tsx",
61
61
  "id": "src/components/shared/kritzel-font-family/kritzel-font-family.tsx::FontOption"
62
62
  }
63
63
  }
@@ -10,27 +10,14 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  }
11
11
  return t;
12
12
  };
13
- import { cloneDeep } from "lodash-es";
14
13
  export class ObjectHelper {
15
- static safeStringify(obj, indent = 2) {
16
- const seen = new WeakSet();
17
- return JSON.stringify(obj, (_key, value) => {
18
- if (typeof value === 'object' && value !== null) {
19
- if (seen.has(value)) {
20
- return undefined;
21
- }
22
- seen.add(value);
23
- }
24
- return value;
25
- }, indent);
26
- }
27
14
  static generateUUID() {
28
15
  return Math.random().toString(36).substr(2, 9);
29
16
  }
30
17
  static clone(objOrObjs) {
31
18
  const cloneObject = (obj) => {
32
- const { _store, _elementRef, totalWidth, totalHeight } = obj, rest = __rest(obj, ["_store", "_elementRef", "totalWidth", "totalHeight"]);
33
- return cloneDeep(rest);
19
+ const { _store, _elementRef, totalWidth, totalHeight } = obj, remainingProps = __rest(obj, ["_store", "_elementRef", "totalWidth", "totalHeight"]);
20
+ return structuredClone(remainingProps);
34
21
  };
35
22
  if (Array.isArray(objOrObjs)) {
36
23
  return objOrObjs.map(cloneObject);
@@ -1 +1 @@
1
- {"version":3,"file":"object.helper.js","sourceRoot":"","sources":["../../src/helpers/object.helper.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QAE3B,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,EACH,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAA4D;QACvE,MAAM,WAAW,GAAG,CAAC,GAA2B,EAAE,EAAE;YAClD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,KAAc,GAAG,EAAZ,IAAI,UAAK,GAAG,EAA/D,sDAAyD,CAAM,CAAC;YACtE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAQ;QACrB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,GAAG,EAAE,MAAM,MAAK,CAAC,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,MAAK,MAAM,CAAC;IACvE,CAAC;CAEF","sourcesContent":["import { KritzelBaseObject } from '../classes/objects/base-object.class';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\nexport class ObjectHelper {\r\n static safeStringify(obj, indent = 2) {\r\n const seen = new WeakSet();\r\n\r\n return JSON.stringify(\r\n obj,\r\n (_key, value) => {\r\n if (typeof value === 'object' && value !== null) {\r\n if (seen.has(value)) {\r\n return undefined;\r\n }\r\n seen.add(value);\r\n }\r\n return value;\r\n },\r\n indent,\r\n );\r\n }\r\n\r\n static generateUUID(): string {\r\n return Math.random().toString(36).substr(2, 9);\r\n }\r\n\r\n static clone(objOrObjs: KritzelBaseObject<any> | KritzelBaseObject<any>[]): any {\r\n const cloneObject = (obj: KritzelBaseObject<any>) => {\r\n const { _store, _elementRef, totalWidth, totalHeight, ...rest } = obj;\r\n return cloneDeep(rest);\r\n };\r\n\r\n if (Array.isArray(objOrObjs)) {\r\n return objOrObjs.map(cloneObject);\r\n }\r\n\r\n return cloneObject(objOrObjs);\r\n }\r\n\r\n static isEmpty(obj: any): boolean {\r\n if (obj === null || obj === undefined) {\r\n return true;\r\n }\r\n return Object?.keys(obj).length === 0 && obj?.constructor === Object;\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"object.helper.js","sourceRoot":"","sources":["../../src/helpers/object.helper.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,MAAM,OAAO,YAAY;IAEvB,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAA4D;QACvE,MAAM,WAAW,GAAG,CAAC,GAA2B,EAAE,EAAE;YAClD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,KAAwB,GAAG,EAAtB,cAAc,UAAK,GAAG,EAAzE,sDAAmE,CAAM,CAAC;YAChF,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAQ;QACrB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,GAAG,EAAE,MAAM,MAAK,CAAC,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,MAAK,MAAM,CAAC;IACvE,CAAC;CAEF","sourcesContent":["import { KritzelBaseObject } from '../classes/objects/base-object.class';\r\n\r\nexport class ObjectHelper {\r\n\r\n static generateUUID(): string {\r\n return Math.random().toString(36).substr(2, 9);\r\n }\r\n\r\n static clone(objOrObjs: KritzelBaseObject<any> | KritzelBaseObject<any>[]): any {\r\n const cloneObject = (obj: KritzelBaseObject<any>) => {\r\n const { _store, _elementRef, totalWidth, totalHeight, ...remainingProps } = obj;\r\n return structuredClone(remainingProps);\r\n };\r\n\r\n if (Array.isArray(objOrObjs)) {\r\n return objOrObjs.map(cloneObject);\r\n }\r\n\r\n return cloneObject(objOrObjs);\r\n }\r\n\r\n static isEmpty(obj: any): boolean {\r\n if (obj === null || obj === undefined) {\r\n return true;\r\n }\r\n return Object?.keys(obj).length === 0 && obj?.constructor === Object;\r\n }\r\n\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { K as KritzelControls$1, d as defineCustomElement$1 } from './p-DJUnTtGg.js';
1
+ import { K as KritzelControls$1, d as defineCustomElement$1 } from './p-D31-QJwi.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, h, d as Host } from './p-DC8SDK2U.js';
2
2
  import { a as KritzelIconRegistry, d as defineCustomElement$5 } from './p-CZkSABuJ.js';
3
- import { K as KritzelBrushTool, a as KritzelTextTool } from './p-CFkDfXW4.js';
4
- import { a as KritzelSelectionTool, b as KritzelEraserTool, c as KritzelImageTool, d as defineCustomElement$9 } from './p-Bu6ZrM9f.js';
3
+ import { K as KritzelBrushTool, a as KritzelTextTool } from './p-DT8_Rz-o.js';
4
+ import { a as KritzelSelectionTool, b as KritzelEraserTool, c as KritzelImageTool, d as defineCustomElement$9 } from './p-C3vo4rx8.js';
5
5
  import { d as defineCustomElement$i } from './p-DaeIjoQm.js';
6
6
  import { d as defineCustomElement$h } from './p-_wFpvzNp.js';
7
7
  import { d as defineCustomElement$g } from './p-BJ5xxphF.js';
8
8
  import { d as defineCustomElement$f } from './p-BYt7-mGK.js';
9
9
  import { d as defineCustomElement$e } from './p-BqUM5gV3.js';
10
10
  import { d as defineCustomElement$d } from './p-BjqfG-5H.js';
11
- import { d as defineCustomElement$c } from './p-DJUnTtGg.js';
11
+ import { d as defineCustomElement$c } from './p-D31-QJwi.js';
12
12
  import { d as defineCustomElement$b } from './p-CDhTT8u8.js';
13
13
  import { d as defineCustomElement$a } from './p-DQHNxDS7.js';
14
14
  import { d as defineCustomElement$8 } from './p-C8KDwUb7.js';
@@ -1,4 +1,4 @@
1
- import { K as KritzelEngine$1, d as defineCustomElement$1 } from './p-Bu6ZrM9f.js';
1
+ import { K as KritzelEngine$1, d as defineCustomElement$1 } from './p-C3vo4rx8.js';
2
2
 
3
3
  const KritzelEngine = KritzelEngine$1;
4
4
  const defineCustomElement = defineCustomElement$1;