kritzel-stencil 0.0.104 → 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 (50) hide show
  1. package/dist/cjs/index-D62tBCuq.js.map +1 -1
  2. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +22 -2050
  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.js +4 -4
  18. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  19. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +1 -1
  20. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +1 -1
  21. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +1 -1
  22. package/dist/collection/helpers/object.helper.js +2 -15
  23. package/dist/collection/helpers/object.helper.js.map +1 -1
  24. package/dist/components/kritzel-controls.js +1 -1
  25. package/dist/components/kritzel-editor.js +3 -3
  26. package/dist/components/kritzel-engine.js +1 -1
  27. package/dist/components/{p-DMSOfO6k.js → p-C3vo4rx8.js} +23 -22
  28. package/dist/components/p-C3vo4rx8.js.map +1 -0
  29. package/dist/components/{p-DJUnTtGg.js → p-D31-QJwi.js} +3 -3
  30. package/dist/components/{p-DJUnTtGg.js.map → p-D31-QJwi.js.map} +1 -1
  31. package/dist/components/p-DC8SDK2U.js.map +1 -1
  32. package/dist/components/p-DT8_Rz-o.js +785 -0
  33. package/dist/components/p-DT8_Rz-o.js.map +1 -0
  34. package/dist/esm/index-BOJOOWaP.js.map +1 -1
  35. package/dist/esm/kritzel-brush-style_18.entry.js +22 -2050
  36. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  37. package/dist/esm/stencil.js.map +1 -1
  38. package/dist/stencil/p-BOJOOWaP.js.map +1 -1
  39. package/dist/stencil/p-d0394bb5.entry.js +2 -0
  40. package/dist/stencil/p-d0394bb5.entry.js.map +1 -0
  41. package/dist/stencil/stencil.esm.js +1 -1
  42. package/dist/stencil/stencil.esm.js.map +1 -1
  43. package/dist/types/classes/objects/image.class.d.ts +2 -2
  44. package/dist/types/helpers/object.helper.d.ts +0 -1
  45. package/package.json +3 -5
  46. package/dist/components/p-CFkDfXW4.js +0 -2814
  47. package/dist/components/p-CFkDfXW4.js.map +0 -1
  48. package/dist/components/p-DMSOfO6k.js.map +0 -1
  49. package/dist/stencil/p-f059fbff.entry.js +0 -2
  50. package/dist/stencil/p-f059fbff.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"stencil.cjs.js","sources":["../../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.35.1 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":["promiseResolve","globalScripts","bootstrapLazy"],"mappings":";;;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,gQAAe;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAOA,oBAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAMC,mBAAa,EAAE;AACvB,EAAE,OAAOC,mBAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"stencil.cjs.js","sources":["../../node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.35.1 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":["promiseResolve","globalScripts","bootstrapLazy"],"mappings":";;;;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,gQAAe;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAOA,oBAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAMC,mBAAa,EAAE;AACvB,EAAE,OAAOC,mBAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC;;;;","x_google_ignoreList":[0]}
@@ -77,6 +77,7 @@ export class KritzelRotationHandler extends KritzelBaseHandler {
77
77
  const currentRotation = Math.atan2(groupCenterY - cursorY, groupCenterX - cursorX);
78
78
  this.rotation = currentRotation - this.initialRotation;
79
79
  this._store.state.selectionGroup.rotate(this.rotation);
80
+ this._store.rerender();
80
81
  clearTimeout(this._store.state.longTouchTimeout);
81
82
  }
82
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rotation.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/rotation.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelStore } from '../store.class';\r\nimport { RotateSelectionGroupCommand } from '../commands/rotate-selection-group.command';\r\nimport { KritzelBaseHandler } from './base.handler';\r\n\r\nexport class KritzelRotationHandler extends KritzelBaseHandler {\r\n initialRotation: number = 0;\r\n\r\n rotation: number = 0;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n }\r\n\r\n handleMouseDown(event: MouseEvent): void {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n if (this._store.state.selectionGroup && this._store.state.isRotationHandleSelected) {\r\n const clientX = event.clientX - this._store.offsetX;\r\n const clientY = event.clientY - this._store.offsetY;\r\n\r\n this._store.state.isRotating = true;\r\n\r\n const centerX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const centerY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n this.initialRotation = Math.atan2(centerY - cursorY, centerX - cursorX) - this._store.state.selectionGroup.rotation;\r\n }\r\n }\r\n }\r\n\r\n handleMouseMove(event: MouseEvent): void {\r\n if (this._store.state.isRotating && this._store.state.selectionGroup) {\r\n const clientX = event.clientX - this._store.offsetX;\r\n const clientY = event.clientY - this._store.offsetY;\r\n\r\n const groupCenterX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const groupCenterY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n const currentRotation = Math.atan2(groupCenterY - cursorY, groupCenterX - cursorX);\r\n\r\n this.rotation = currentRotation - this.initialRotation;\r\n\r\n this._store.state.selectionGroup.rotate(this.rotation);\r\n\r\n this._store.rerender();\r\n }\r\n }\r\n\r\n handleMouseUp(_event: MouseEvent): void {\r\n if (this._store.state.isRotating) {\r\n this._store.history.executeCommand(new RotateSelectionGroupCommand(this._store, this, this.rotation));\r\n\r\n this._store.state.isRotating = false;\r\n\r\n this.initialRotation = 0;\r\n this.rotation = 0;\r\n }\r\n }\r\n\r\n handleTouchStart(event: TouchEvent): void {\r\n const firstTouch = event.touches[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n if (this._store.state.touchCount === 1) {\r\n if (this._store.state.selectionGroup && this._store.state.isRotationHandleSelected) {\r\n const clientX = Math.round(firstTouch.clientX - this._store.offsetX);\r\n const clientY = Math.round(firstTouch.clientY - this._store.offsetY);\r\n\r\n this._store.state.isRotating = true;\r\n\r\n const centerX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const centerY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n this.initialRotation = Math.atan2(centerY - cursorY, centerX - cursorX) - this._store.state.selectionGroup.rotation;\r\n\r\n clearTimeout(this._store.state.longTouchTimeout);\r\n }\r\n }\r\n }\r\n\r\n handleTouchMove(event: TouchEvent): void {\r\n const firstTouch = event.touches[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n if (this._store.state.isRotating && this._store.state.selectionGroup) {\r\n const clientX = Math.round(firstTouch.clientX - this._store.offsetX);\r\n const clientY = Math.round(firstTouch.clientY - this._store.offsetY);\r\n\r\n const groupCenterX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const groupCenterY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n const currentRotation = Math.atan2(groupCenterY - cursorY, groupCenterX - cursorX);\r\n\r\n this.rotation = currentRotation - this.initialRotation;\r\n\r\n this._store.state.selectionGroup.rotate(this.rotation);\r\n\r\n clearTimeout(this._store.state.longTouchTimeout);\r\n }\r\n }\r\n\r\n handleTouchEnd(_event: TouchEvent): void {\r\n if (this._store.state.isRotating) {\r\n this._store.history.executeCommand(new RotateSelectionGroupCommand(this._store, this, this.rotation));\r\n\r\n this._store.state.isRotating = false;\r\n\r\n this.initialRotation = 0;\r\n this.rotation = 0;\r\n\r\n clearTimeout(this._store.state.longTouchTimeout);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"rotation.handler.js","sourceRoot":"","sources":["../../../src/classes/handlers/rotation.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelStore } from '../store.class';\r\nimport { RotateSelectionGroupCommand } from '../commands/rotate-selection-group.command';\r\nimport { KritzelBaseHandler } from './base.handler';\r\n\r\nexport class KritzelRotationHandler extends KritzelBaseHandler {\r\n initialRotation: number = 0;\r\n\r\n rotation: number = 0;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n }\r\n\r\n handleMouseDown(event: MouseEvent): void {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n if (this._store.state.selectionGroup && this._store.state.isRotationHandleSelected) {\r\n const clientX = event.clientX - this._store.offsetX;\r\n const clientY = event.clientY - this._store.offsetY;\r\n\r\n this._store.state.isRotating = true;\r\n\r\n const centerX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const centerY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n this.initialRotation = Math.atan2(centerY - cursorY, centerX - cursorX) - this._store.state.selectionGroup.rotation;\r\n }\r\n }\r\n }\r\n\r\n handleMouseMove(event: MouseEvent): void {\r\n if (this._store.state.isRotating && this._store.state.selectionGroup) {\r\n const clientX = event.clientX - this._store.offsetX;\r\n const clientY = event.clientY - this._store.offsetY;\r\n\r\n\r\n const groupCenterX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const groupCenterY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n const currentRotation = Math.atan2(groupCenterY - cursorY, groupCenterX - cursorX);\r\n\r\n this.rotation = currentRotation - this.initialRotation;\r\n\r\n this._store.state.selectionGroup.rotate(this.rotation);\r\n\r\n this._store.rerender();\r\n }\r\n }\r\n\r\n handleMouseUp(_event: MouseEvent): void {\r\n if (this._store.state.isRotating) {\r\n this._store.history.executeCommand(new RotateSelectionGroupCommand(this._store, this, this.rotation));\r\n\r\n this._store.state.isRotating = false;\r\n\r\n this.initialRotation = 0;\r\n this.rotation = 0;\r\n }\r\n }\r\n\r\n handleTouchStart(event: TouchEvent): void {\r\n const firstTouch = event.touches[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n if (this._store.state.touchCount === 1) {\r\n if (this._store.state.selectionGroup && this._store.state.isRotationHandleSelected) {\r\n const clientX = Math.round(firstTouch.clientX - this._store.offsetX);\r\n const clientY = Math.round(firstTouch.clientY - this._store.offsetY);\r\n\r\n this._store.state.isRotating = true;\r\n\r\n const centerX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const centerY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n this.initialRotation = Math.atan2(centerY - cursorY, centerX - cursorX) - this._store.state.selectionGroup.rotation;\r\n\r\n clearTimeout(this._store.state.longTouchTimeout);\r\n }\r\n }\r\n }\r\n\r\n handleTouchMove(event: TouchEvent): void {\r\n const firstTouch = event.touches[0];\r\n\r\n if (!firstTouch) {\r\n return;\r\n }\r\n\r\n if (this._store.state.isRotating && this._store.state.selectionGroup) {\r\n const clientX = Math.round(firstTouch.clientX - this._store.offsetX);\r\n const clientY = Math.round(firstTouch.clientY - this._store.offsetY);\r\n\r\n const groupCenterX = this._store.state.selectionGroup.translateX + this._store.state.selectionGroup.width / 2 / this._store.state.scale;\r\n const groupCenterY = this._store.state.selectionGroup.translateY + this._store.state.selectionGroup.height / 2 / this._store.state.scale;\r\n\r\n const cursorX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n const cursorY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n\r\n \r\n const currentRotation = Math.atan2(groupCenterY - cursorY, groupCenterX - cursorX);\r\n \r\n this.rotation = currentRotation - this.initialRotation;\r\n \r\n this._store.state.selectionGroup.rotate(this.rotation);\r\n\r\n this._store.rerender();\r\n\r\n clearTimeout(this._store.state.longTouchTimeout);\r\n }\r\n }\r\n\r\n handleTouchEnd(_event: TouchEvent): void {\r\n if (this._store.state.isRotating) {\r\n this._store.history.executeCommand(new RotateSelectionGroupCommand(this._store, this, this.rotation));\r\n\r\n this._store.state.isRotating = false;\r\n\r\n this.initialRotation = 0;\r\n this.rotation = 0;\r\n\r\n clearTimeout(this._store.state.longTouchTimeout);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,16 +1,14 @@
1
1
  import { KritzelBaseObject } from "./base-object.class";
2
2
  export class KritzelImage extends KritzelBaseObject {
3
- constructor(store, img) {
3
+ constructor(store) {
4
4
  super(store);
5
5
  this.__class__ = 'KritzelImage';
6
+ this.src = '';
6
7
  this.debugInfoVisible = true;
7
- this.img = img;
8
8
  this.x = 0;
9
9
  this.y = 0;
10
10
  this.translateX = 0;
11
11
  this.translateY = 0;
12
- this.width = img.width;
13
- this.height = img.height;
14
12
  this.scale = this._store.state.scale;
15
13
  }
16
14
  resize(x, y, width, height) {
@@ -1 +1 @@
1
- {"version":3,"file":"image.class.js","sourceRoot":"","sources":["../../../src/classes/objects/image.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,YAAa,SAAQ,iBAAmC;IAOnE,YAAY,KAAmB,EAAE,GAAsB;QACrD,KAAK,CAAC,KAAK,CAAC,CAAC;QAPN,cAAS,GAAW,cAAc,CAAC;QAInC,qBAAgB,GAAY,IAAI,CAAC;QAIxC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IACvC,CAAC;IAEQ,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QACjE,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { KritzelStore } from '../store.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\n\r\nexport class KritzelImage extends KritzelBaseObject<HTMLImageElement> {\r\n override __class__: string = 'KritzelImage';\r\n\r\n img: HTMLImageElement;\r\n\r\n override debugInfoVisible: boolean = true;\r\n\r\n constructor(store: KritzelStore, img?: HTMLImageElement) {\r\n super(store);\r\n this.img = img;\r\n this.x = 0;\r\n this.y = 0;\r\n this.translateX = 0;\r\n this.translateY = 0;\r\n this.width = img.width;\r\n this.height = img.height;\r\n this.scale = this._store.state.scale;\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const scaleFactor = height / this.height;\r\n\r\n this.width = this.width * scaleFactor;\r\n this.height = this.height * scaleFactor;\r\n this.translateX = x;\r\n this.translateY = y;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"image.class.js","sourceRoot":"","sources":["../../../src/classes/objects/image.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,YAAa,SAAQ,iBAAmC;IAOnE,YAAY,KAAmB;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;QAPN,cAAS,GAAW,cAAc,CAAC;QAE5C,QAAG,GAAW,EAAE,CAAC;QAER,qBAAgB,GAAY,IAAI,CAAC;QAIxC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IACvC,CAAC;IAEQ,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QACjE,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { KritzelStore } from '../store.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\n\r\nexport class KritzelImage extends KritzelBaseObject<HTMLImageElement> {\r\n override __class__: string = 'KritzelImage';\r\n\r\n src: string = '';\r\n\r\n override debugInfoVisible: boolean = true;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n this.x = 0;\r\n this.y = 0;\r\n this.translateX = 0;\r\n this.translateY = 0;\r\n this.scale = this._store.state.scale;\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const scaleFactor = height / this.height;\r\n\r\n this.width = this.width * scaleFactor;\r\n this.height = this.height * scaleFactor;\r\n this.translateX = x;\r\n this.translateY = y;\r\n }\r\n}\r\n"]}
@@ -66,13 +66,13 @@ export class KritzelSelectionGroup extends KritzelBaseObject {
66
66
  const heightScaleFactor = height / this.height;
67
67
  const deltaX = x - this.translateX;
68
68
  const deltaY = y - this.translateY;
69
- this.objects.forEach(obj => {
70
- const updatedWidth = obj.width * widthScaleFactor;
71
- const updatedHeight = obj.height * heightScaleFactor;
72
- const updatedX = obj.translateX + deltaX + (obj.translateX - this.translateX) * (widthScaleFactor - 1);
73
- const updatedY = obj.translateY + deltaY + (obj.translateY - this.translateY) * (heightScaleFactor - 1);
74
- obj.resize(updatedX, updatedY, updatedWidth, updatedHeight);
75
- this._store.state.objectsOctree.update(obj);
69
+ this.objects.forEach(child => {
70
+ const updatedWidth = child.width * widthScaleFactor;
71
+ const updatedHeight = child.height * heightScaleFactor;
72
+ const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);
73
+ const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);
74
+ child.resize(updatedX, updatedY, updatedWidth, updatedHeight);
75
+ this._store.state.objectsOctree.update(child);
76
76
  });
77
77
  this.refreshObjectDimensions();
78
78
  this.unchangedObjects = ObjectHelper.clone(this.objects);
@@ -93,6 +93,7 @@ export class KritzelSelectionGroup extends KritzelBaseObject {
93
93
  child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
94
94
  child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
95
95
  child.rotation = this.objects.length === 1 ? value : value + unchangedChild.rotation;
96
+ this._store.state.objectsOctree.update(child);
96
97
  });
97
98
  }
98
99
  copy() {
@@ -1 +1 @@
1
- {"version":3,"file":"selection-group.class.js","sourceRoot":"","sources":["../../../src/classes/objects/selection-group.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { ObjectHelper } from '../../helpers/object.helper';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelReviver } from '../reviver.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nexport class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement> {\r\n override __class__: string = 'KritzelSelectionGroup';\r\n\r\n objects: KritzelBaseObject<any>[] = [];\r\n unchangedObjects: KritzelBaseObject<any>[] = [];\r\n\r\n minX: number;\r\n maxX: number;\r\n\r\n minY: number;\r\n maxY: number;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n this.scale = this._store.state.scale;\r\n this.zIndex = 99999;\r\n }\r\n\r\n get length(): number {\r\n return this.objects.length;\r\n }\r\n\r\n addOrRemove(object: KritzelBaseObject<any>) {\r\n const index = this.objects.findIndex(obj => obj.id === object.id);\r\n if (index === -1) {\r\n this.objects.push(object);\r\n } else {\r\n this.objects.splice(index, 1);\r\n }\r\n\r\n this.unchangedObjects = ObjectHelper.clone(this.objects);\r\n this.refreshObjectDimensions();\r\n }\r\n\r\n deselectAllChildren() {\r\n this.objects.forEach(obj => (obj.selected = false));\r\n }\r\n\r\n updatePosition(x: number, y: number) {\r\n this.objects.forEach(obj => {\r\n const deltaX = obj.translateX - this.translateX;\r\n const deltaY = obj.translateY - this.translateY;\r\n obj.translateX = x + deltaX;\r\n obj.translateY = y + deltaY;\r\n this._store.state.objectsOctree.update(obj);\r\n });\r\n\r\n this.unchangedObjects.forEach(obj => {\r\n const deltaX = obj.translateX - this.translateX;\r\n const deltaY = obj.translateY - this.translateY;\r\n obj.translateX = x + deltaX;\r\n obj.translateY = y + deltaY;\r\n });\r\n\r\n this.translateX = x;\r\n this.translateY = y;\r\n\r\n this._store.state.objectsOctree.update(this);\r\n }\r\n\r\n override move(startX: number, startY: number, endX: number, endY: number): void {\r\n const deltaX = (startX - endX) / this._store.state.scale;\r\n const deltaY = (startY - endY) / this._store.state.scale;\r\n\r\n this.translateX += deltaX;\r\n this.translateY += deltaY;\r\n this._store.state.objectsOctree.update(this);\r\n\r\n this.objects.forEach(obj => {\r\n obj.translateX += deltaX;\r\n obj.translateY += deltaY;\r\n this._store.state.objectsOctree.update(obj);\r\n });\r\n\r\n this.unchangedObjects.forEach(obj => {\r\n obj.translateX += deltaX;\r\n obj.translateY += deltaY;\r\n });\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n const widthScaleFactor = width / this.width;\r\n const heightScaleFactor = height / this.height;\r\n\r\n const deltaX = x - this.translateX;\r\n const deltaY = y - this.translateY;\r\n\r\n this.objects.forEach(obj => {\r\n const updatedWidth = obj.width * widthScaleFactor;\r\n const updatedHeight = obj.height * heightScaleFactor;\r\n\r\n const updatedX = obj.translateX + deltaX + (obj.translateX - this.translateX) * (widthScaleFactor - 1);\r\n const updatedY = obj.translateY + deltaY + (obj.translateY - this.translateY) * (heightScaleFactor - 1);\r\n\r\n obj.resize(updatedX, updatedY, updatedWidth, updatedHeight);\r\n\r\n this._store.state.objectsOctree.update(obj);\r\n });\r\n\r\n this.refreshObjectDimensions();\r\n this.unchangedObjects = ObjectHelper.clone(this.objects);\r\n }\r\n\r\n override rotate(value: number): void {\r\n this.rotation = value;\r\n\r\n const centerX = this.translateX + this.totalWidth / 2 / this.scale;\r\n const centerY = this.translateY + this.totalHeight / 2 / this.scale;\r\n\r\n const angle = value;\r\n const cos = Math.cos(angle);\r\n const sin = Math.sin(angle);\r\n\r\n this.objects.forEach(child => {\r\n const unchangedChild = this.getUnchangedObject(child.id);\r\n\r\n const offsetX = this.getOffsetXToCenter(unchangedChild);\r\n const offsetY = this.getOffsetYToCenter(unchangedChild);\r\n\r\n const rotatedX = cos * offsetX - sin * offsetY;\r\n const rotatedY = sin * offsetX + cos * offsetY;\r\n\r\n child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;\r\n child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;\r\n child.rotation = this.objects.length === 1 ? value : value + unchangedChild.rotation;\r\n });\r\n }\r\n\r\n override copy(): KritzelBaseObject<HTMLElement> {\r\n const selectionGroup = new KritzelSelectionGroup(this._store);\r\n\r\n let currentZIndex = this._store.currentZIndex;\r\n\r\n this.objects.forEach(obj => {\r\n const copiedObject = obj.copy() as KritzelBaseObject<any>;\r\n copiedObject.zIndex = currentZIndex;\r\n selectionGroup.addOrRemove(copiedObject);\r\n currentZIndex++;\r\n });\r\n\r\n selectionGroup.unchangedObjects = ObjectHelper.clone(selectionGroup.objects);\r\n\r\n if (this.objects.length === 1) {\r\n selectionGroup.rotation = this.objects[0].rotation;\r\n }\r\n\r\n return selectionGroup;\r\n }\r\n\r\n refreshObjectDimensions() {\r\n if (this.objects.length === 1) {\r\n const obj = this.objects[0];\r\n this.minX = obj.boundingBox.x / this.scale;\r\n this.maxX = obj.boundingBox.x / this.scale + obj.boundingBox.width;\r\n this.minY = obj.boundingBox.y / this.scale;\r\n this.maxY = obj.boundingBox.y / this.scale + obj.boundingBox.height;\r\n\r\n this.translateX = (this.minX - this.padding) * this.scale;\r\n this.translateY = (this.minY - this.padding) * this.scale;\r\n\r\n this.width = (this.maxX - this.minX - this.padding) * this.scale;\r\n this.height = (this.maxY - this.minY - this.padding) * this.scale;\r\n } else {\r\n this.minX = Math.min(...this.objects.map(obj => obj.minXRotated));\r\n this.maxX = Math.max(...this.objects.map(obj => obj.maxXRotated));\r\n\r\n this.minY = Math.min(...this.objects.map(obj => obj.minYRotated));\r\n this.maxY = Math.max(...this.objects.map(obj => obj.maxYRotated));\r\n\r\n this.translateX = this.minX - this.padding;\r\n this.translateY = this.minY - this.padding;\r\n\r\n this.width = (this.maxX - this.minX - this.padding) * this.scale;\r\n this.height = (this.maxY - this.minY - this.padding) * this.scale;\r\n }\r\n\r\n this._store.state.objectsOctree.update(this);\r\n }\r\n\r\n private getOffsetXToCenter(obj: KritzelBaseObject<any>): number {\r\n const objCenterX = obj.translateX + obj.totalWidth / obj.scale / 2;\r\n const groupCenterX = this.translateX + this.totalWidth / this.scale / 2;\r\n return objCenterX - groupCenterX;\r\n }\r\n\r\n private getOffsetYToCenter(obj: KritzelBaseObject<any>): number {\r\n const objCenterY = obj.translateY + obj.totalHeight / obj.scale / 2;\r\n const groupCenterY = this.translateY + this.totalHeight / this.scale / 2;\r\n return objCenterY - groupCenterY;\r\n }\r\n\r\n private getUnchangedObject(objectId: string): KritzelBaseObject<any> {\r\n const obj = this.unchangedObjects.find(obj => obj.id === objectId);\r\n const reviver = new KritzelReviver(this._store);\r\n return reviver.revive(obj);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"selection-group.class.js","sourceRoot":"","sources":["../../../src/classes/objects/selection-group.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { ObjectHelper } from '../../helpers/object.helper';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelReviver } from '../reviver.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nexport class KritzelSelectionGroup extends KritzelBaseObject<HTMLElement> {\r\n override __class__: string = 'KritzelSelectionGroup';\r\n\r\n objects: KritzelBaseObject<any>[] = [];\r\n unchangedObjects: KritzelBaseObject<any>[] = [];\r\n\r\n minX: number;\r\n maxX: number;\r\n\r\n minY: number;\r\n maxY: number;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n this.scale = this._store.state.scale;\r\n this.zIndex = 99999;\r\n }\r\n\r\n get length(): number {\r\n return this.objects.length;\r\n }\r\n\r\n addOrRemove(object: KritzelBaseObject<any>) {\r\n const index = this.objects.findIndex(obj => obj.id === object.id);\r\n if (index === -1) {\r\n this.objects.push(object);\r\n } else {\r\n this.objects.splice(index, 1);\r\n }\r\n\r\n this.unchangedObjects = ObjectHelper.clone(this.objects);\r\n this.refreshObjectDimensions();\r\n }\r\n\r\n deselectAllChildren() {\r\n this.objects.forEach(obj => (obj.selected = false));\r\n }\r\n\r\n updatePosition(x: number, y: number) {\r\n this.objects.forEach(obj => {\r\n const deltaX = obj.translateX - this.translateX;\r\n const deltaY = obj.translateY - this.translateY;\r\n obj.translateX = x + deltaX;\r\n obj.translateY = y + deltaY;\r\n this._store.state.objectsOctree.update(obj);\r\n });\r\n\r\n this.unchangedObjects.forEach(obj => {\r\n const deltaX = obj.translateX - this.translateX;\r\n const deltaY = obj.translateY - this.translateY;\r\n obj.translateX = x + deltaX;\r\n obj.translateY = y + deltaY;\r\n });\r\n\r\n this.translateX = x;\r\n this.translateY = y;\r\n\r\n this._store.state.objectsOctree.update(this);\r\n }\r\n\r\n override move(startX: number, startY: number, endX: number, endY: number): void {\r\n const deltaX = (startX - endX) / this._store.state.scale;\r\n const deltaY = (startY - endY) / this._store.state.scale;\r\n\r\n this.translateX += deltaX;\r\n this.translateY += deltaY;\r\n this._store.state.objectsOctree.update(this);\r\n\r\n this.objects.forEach(obj => {\r\n obj.translateX += deltaX;\r\n obj.translateY += deltaY;\r\n this._store.state.objectsOctree.update(obj);\r\n });\r\n\r\n this.unchangedObjects.forEach(obj => {\r\n obj.translateX += deltaX;\r\n obj.translateY += deltaY;\r\n });\r\n }\r\n\r\n override resize(x: number, y: number, width: number, height: number): void {\r\n const widthScaleFactor = width / this.width;\r\n const heightScaleFactor = height / this.height;\r\n\r\n const deltaX = x - this.translateX;\r\n const deltaY = y - this.translateY;\r\n\r\n this.objects.forEach(child => {\r\n const updatedWidth = child.width * widthScaleFactor;\r\n const updatedHeight = child.height * heightScaleFactor;\r\n\r\n const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);\r\n const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);\r\n\r\n child.resize(updatedX, updatedY, updatedWidth, updatedHeight);\r\n\r\n this._store.state.objectsOctree.update(child);\r\n });\r\n\r\n this.refreshObjectDimensions();\r\n this.unchangedObjects = ObjectHelper.clone(this.objects);\r\n }\r\n\r\n override rotate(value: number): void {\r\n this.rotation = value;\r\n\r\n const centerX = this.translateX + this.totalWidth / 2 / this.scale;\r\n const centerY = this.translateY + this.totalHeight / 2 / this.scale;\r\n\r\n const angle = value;\r\n const cos = Math.cos(angle);\r\n const sin = Math.sin(angle);\r\n\r\n this.objects.forEach(child => {\r\n const unchangedChild = this.getUnchangedObject(child.id);\r\n\r\n const offsetX = this.getOffsetXToCenter(unchangedChild);\r\n const offsetY = this.getOffsetYToCenter(unchangedChild);\r\n\r\n const rotatedX = cos * offsetX - sin * offsetY;\r\n const rotatedY = sin * offsetX + cos * offsetY;\r\n\r\n child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;\r\n child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;\r\n\r\n child.rotation = this.objects.length === 1 ? value : value + unchangedChild.rotation;\r\n\r\n this._store.state.objectsOctree.update(child);\r\n });\r\n }\r\n\r\n override copy(): KritzelBaseObject<HTMLElement> {\r\n const selectionGroup = new KritzelSelectionGroup(this._store);\r\n\r\n let currentZIndex = this._store.currentZIndex;\r\n\r\n this.objects.forEach(obj => {\r\n const copiedObject = obj.copy() as KritzelBaseObject<any>;\r\n copiedObject.zIndex = currentZIndex;\r\n selectionGroup.addOrRemove(copiedObject);\r\n currentZIndex++;\r\n });\r\n\r\n selectionGroup.unchangedObjects = ObjectHelper.clone(selectionGroup.objects);\r\n\r\n if (this.objects.length === 1) {\r\n selectionGroup.rotation = this.objects[0].rotation;\r\n }\r\n\r\n return selectionGroup;\r\n }\r\n\r\n refreshObjectDimensions() {\r\n if (this.objects.length === 1) {\r\n const obj = this.objects[0];\r\n this.minX = obj.boundingBox.x / this.scale;\r\n this.maxX = obj.boundingBox.x / this.scale + obj.boundingBox.width;\r\n this.minY = obj.boundingBox.y / this.scale;\r\n this.maxY = obj.boundingBox.y / this.scale + obj.boundingBox.height;\r\n\r\n this.translateX = (this.minX - this.padding) * this.scale;\r\n this.translateY = (this.minY - this.padding) * this.scale;\r\n\r\n this.width = (this.maxX - this.minX - this.padding) * this.scale;\r\n this.height = (this.maxY - this.minY - this.padding) * this.scale;\r\n } else {\r\n this.minX = Math.min(...this.objects.map(obj => obj.minXRotated));\r\n this.maxX = Math.max(...this.objects.map(obj => obj.maxXRotated));\r\n\r\n this.minY = Math.min(...this.objects.map(obj => obj.minYRotated));\r\n this.maxY = Math.max(...this.objects.map(obj => obj.maxYRotated));\r\n\r\n this.translateX = this.minX - this.padding;\r\n this.translateY = this.minY - this.padding;\r\n\r\n this.width = (this.maxX - this.minX - this.padding) * this.scale;\r\n this.height = (this.maxY - this.minY - this.padding) * this.scale;\r\n }\r\n\r\n this._store.state.objectsOctree.update(this);\r\n }\r\n\r\n private getOffsetXToCenter(obj: KritzelBaseObject<any>): number {\r\n const objCenterX = obj.translateX + obj.totalWidth / obj.scale / 2;\r\n const groupCenterX = this.translateX + this.totalWidth / this.scale / 2;\r\n return objCenterX - groupCenterX;\r\n }\r\n\r\n private getOffsetYToCenter(obj: KritzelBaseObject<any>): number {\r\n const objCenterY = obj.translateY + obj.totalHeight / obj.scale / 2;\r\n const groupCenterY = this.translateY + this.totalHeight / this.scale / 2;\r\n return objCenterY - groupCenterY;\r\n }\r\n\r\n private getUnchangedObject(objectId: string): KritzelBaseObject<any> {\r\n const obj = this.unchangedObjects.find(obj => obj.id === objectId);\r\n const reviver = new KritzelReviver(this._store);\r\n return reviver.revive(obj);\r\n }\r\n}\r\n"]}
@@ -23,7 +23,7 @@ export class KritzelReviver {
23
23
  revivedObj = new KritzelText(this._store, obj.fontSize, obj.fontFamily).revive(obj);
24
24
  break;
25
25
  case 'KritzelImage':
26
- revivedObj = new KritzelImage(this._store, obj.img).revive(obj);
26
+ revivedObj = new KritzelImage(this._store).revive(obj);
27
27
  break;
28
28
  case 'KritzelSelectionGroup':
29
29
  revivedObj = new KritzelSelectionGroup(this._store).revive(obj);
@@ -1 +1 @@
1
- {"version":3,"file":"reviver.class.js","sourceRoot":"","sources":["../../src/classes/reviver.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelStore } from \"./store.class\";\r\nimport { KritzelImage } from \"./objects/image.class\";\r\nimport { KritzelPath } from \"./objects/path.class\";\r\nimport { KritzelSelectionGroup } from \"./objects/selection-group.class\";\r\nimport { KritzelText } from \"./objects/text.class\";\r\nimport { KritzelBrushTool } from \"./tools/brush-tool.class\";\r\nimport { KritzelEraserTool } from \"./tools/eraser-tool.class\";\r\nimport { KritzelImageTool } from \"./tools/image-tool.class\";\r\nimport { KritzelSelectionTool } from \"./tools/selection-tool.class\";\r\nimport { KritzelTextTool } from \"./tools/text-tool.class\";\r\n\r\nexport class KritzelReviver {\r\n\r\n private readonly _store: KritzelStore;\r\n\r\n constructor(store: KritzelStore) {\r\n this._store = store;\r\n }\r\n \r\n revive<T>(obj: any): T {\r\n if (obj && typeof obj === 'object') {\r\n if (obj.__class__) {\r\n let revivedObj;\r\n switch (obj.__class__) {\r\n case 'KritzelPath':\r\n revivedObj = new KritzelPath(this._store).revive(obj);\r\n break;\r\n case 'KritzelText':\r\n revivedObj = new KritzelText(this._store, obj.fontSize, obj.fontFamily).revive(obj);\r\n break;\r\n case 'KritzelImage':\r\n revivedObj = new KritzelImage(this._store, obj.img).revive(obj);\r\n break;\r\n case 'KritzelSelectionGroup':\r\n revivedObj = new KritzelSelectionGroup(this._store).revive(obj);\r\n break;\r\n case 'KritzelBrushTool':\r\n revivedObj = new KritzelBrushTool(this._store);\r\n break;\r\n case 'KritzelEraserTool':\r\n revivedObj = new KritzelEraserTool(this._store);\r\n break;\r\n case 'KritzelImageTool':\r\n revivedObj = new KritzelImageTool(this._store);\r\n break;\r\n case 'KritzelSelectionTool':\r\n revivedObj = new KritzelSelectionTool(this._store);\r\n break;\r\n case 'KritzelTextTool':\r\n revivedObj = new KritzelTextTool(this._store);\r\n break;\r\n\r\n default:\r\n revivedObj = obj;\r\n }\r\n return revivedObj;\r\n }\r\n\r\n const newObj = Array.isArray(obj) ? [] : {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n newObj[key] = this.revive(obj[key]);\r\n }\r\n }\r\n return newObj as T;\r\n }\r\n return obj;\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"reviver.class.js","sourceRoot":"","sources":["../../src/classes/reviver.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelStore } from \"./store.class\";\r\nimport { KritzelImage } from \"./objects/image.class\";\r\nimport { KritzelPath } from \"./objects/path.class\";\r\nimport { KritzelSelectionGroup } from \"./objects/selection-group.class\";\r\nimport { KritzelText } from \"./objects/text.class\";\r\nimport { KritzelBrushTool } from \"./tools/brush-tool.class\";\r\nimport { KritzelEraserTool } from \"./tools/eraser-tool.class\";\r\nimport { KritzelImageTool } from \"./tools/image-tool.class\";\r\nimport { KritzelSelectionTool } from \"./tools/selection-tool.class\";\r\nimport { KritzelTextTool } from \"./tools/text-tool.class\";\r\n\r\nexport class KritzelReviver {\r\n\r\n private readonly _store: KritzelStore;\r\n\r\n constructor(store: KritzelStore) {\r\n this._store = store;\r\n }\r\n \r\n revive<T>(obj: any): T {\r\n if (obj && typeof obj === 'object') {\r\n if (obj.__class__) {\r\n let revivedObj;\r\n switch (obj.__class__) {\r\n case 'KritzelPath':\r\n revivedObj = new KritzelPath(this._store).revive(obj);\r\n break;\r\n case 'KritzelText':\r\n revivedObj = new KritzelText(this._store, obj.fontSize, obj.fontFamily).revive(obj);\r\n break;\r\n case 'KritzelImage':\r\n revivedObj = new KritzelImage(this._store).revive(obj);\r\n break;\r\n case 'KritzelSelectionGroup':\r\n revivedObj = new KritzelSelectionGroup(this._store).revive(obj);\r\n break;\r\n case 'KritzelBrushTool':\r\n revivedObj = new KritzelBrushTool(this._store);\r\n break;\r\n case 'KritzelEraserTool':\r\n revivedObj = new KritzelEraserTool(this._store);\r\n break;\r\n case 'KritzelImageTool':\r\n revivedObj = new KritzelImageTool(this._store);\r\n break;\r\n case 'KritzelSelectionTool':\r\n revivedObj = new KritzelSelectionTool(this._store);\r\n break;\r\n case 'KritzelTextTool':\r\n revivedObj = new KritzelTextTool(this._store);\r\n break;\r\n\r\n default:\r\n revivedObj = obj;\r\n }\r\n return revivedObj;\r\n }\r\n\r\n const newObj = Array.isArray(obj) ? [] : {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n newObj[key] = this.revive(obj[key]);\r\n }\r\n }\r\n return newObj as T;\r\n }\r\n return obj;\r\n }\r\n\r\n}"]}
@@ -101,11 +101,11 @@ export class KritzelOctree {
101
101
  ];
102
102
  }
103
103
  intersects(a, b) {
104
- return !((a.x >= b.x + b.width || // a is completely to the right of b
104
+ return !(a.x >= b.x + b.width || // a is completely to the right of b
105
105
  a.x + a.width <= b.x || // a is completely to the left of b
106
106
  a.y >= b.y + b.height || // a is completely below b
107
107
  a.y + a.height <= b.y // a is completely above b
108
- ));
108
+ );
109
109
  }
110
110
  }
111
111
  //# sourceMappingURL=octree.structure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"octree.structure.js","sourceRoot":"","sources":["../../../src/classes/structures/octree.structure.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelBoundingBox } from '../../interfaces/bounding-box.interface';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\n\r\nexport class KritzelOctree<T extends KritzelBaseObject<any>> {\r\n private bounds: KritzelBoundingBox;\r\n private capacity: number;\r\n private objects: T[] = [];\r\n private children: KritzelOctree<T>[] | null = null;\r\n\r\n constructor(bounds: KritzelBoundingBox, capacity: number = 8) {\r\n this.bounds = bounds;\r\n this.capacity = capacity;\r\n }\r\n\r\n insert(object: T ): boolean {\r\n if (!this.intersects(object.rotatedBoundingBox, this.bounds)) {\r\n return false;\r\n }\r\n\r\n if (this.objects.length < this.capacity && this.children === null) {\r\n this.objects.push(object);\r\n return true;\r\n }\r\n\r\n if (this.children === null) {\r\n this.subdivide();\r\n }\r\n\r\n for (const child of this.children!) {\r\n if (child.insert(object)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n update(object: T ): boolean {\r\n const index = this.objects.findIndex(o => o.id === object.id);\r\n\r\n if (index !== -1) {\r\n this.objects[index] = object;\r\n return true;\r\n }\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n if (child.update(object)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n remove(predicate: (object: T) => boolean): void {\r\n const index = this.objects.findIndex(o => predicate(o));\r\n if (index !== -1) {\r\n this.objects.splice(index, 1);\r\n }\r\n\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n child.remove(predicate);\r\n }\r\n }\r\n }\r\n\r\n query(range: KritzelBoundingBox): T[] {\r\n const results: T[] = [];\r\n\r\n if (!this.intersects(range, this.bounds)) {\r\n return results;\r\n }\r\n\r\n for (const object of this.objects) {\r\n if (this.intersects(object.rotatedBoundingBox, range)) {\r\n results.push(object);\r\n }\r\n }\r\n\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n results.push(...child.query(range));\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n filter(predicate: (object: T) => boolean): T[] {\r\n const results: T[] = this.objects.filter(o => predicate(o));\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n results.push(...child.filter(predicate));\r\n }\r\n }\r\n return results;\r\n }\r\n\r\n allObjects(): T[] {\r\n const results: T[] = [...this.objects];\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n results.push(...child.allObjects());\r\n }\r\n }\r\n return results;\r\n }\r\n\r\n private subdivide(): void {\r\n const { x, y, z, width, height, depth } = this.bounds;\r\n const halfWidth = width / 2;\r\n const halfHeight = height / 2;\r\n const halfDepth = depth / 2;\r\n\r\n this.children = [\r\n new KritzelOctree<T>({ x, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n ];\r\n }\r\n\r\n private intersects(a: KritzelBoundingBox, b: KritzelBoundingBox): boolean {\r\n return !(\r\n (\r\n a.x >= b.x + b.width || // a is completely to the right of b\r\n a.x + a.width <= b.x || // a is completely to the left of b\r\n a.y >= b.y + b.height || // a is completely below b\r\n a.y + a.height <= b.y // a is completely above b\r\n ) \r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"octree.structure.js","sourceRoot":"","sources":["../../../src/classes/structures/octree.structure.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelBoundingBox } from '../../interfaces/bounding-box.interface';\r\nimport { KritzelBaseObject } from '../objects/base-object.class';\r\n\r\nexport class KritzelOctree<T extends KritzelBaseObject<any>> {\r\n private bounds: KritzelBoundingBox;\r\n private capacity: number;\r\n private objects: T[] = [];\r\n private children: KritzelOctree<T>[] | null = null;\r\n\r\n constructor(bounds: KritzelBoundingBox, capacity: number = 8) {\r\n this.bounds = bounds;\r\n this.capacity = capacity;\r\n }\r\n\r\n insert(object: T): boolean {\r\n if (!this.intersects(object.rotatedBoundingBox, this.bounds)) {\r\n return false;\r\n }\r\n\r\n if (this.objects.length < this.capacity && this.children === null) {\r\n this.objects.push(object);\r\n return true;\r\n }\r\n\r\n if (this.children === null) {\r\n this.subdivide();\r\n }\r\n\r\n for (const child of this.children!) {\r\n if (child.insert(object)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n update(object: T): boolean {\r\n const index = this.objects.findIndex(o => o.id === object.id);\r\n\r\n if (index !== -1) {\r\n this.objects[index] = object;\r\n return true;\r\n }\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n if (child.update(object)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n remove(predicate: (object: T) => boolean): void {\r\n const index = this.objects.findIndex(o => predicate(o));\r\n if (index !== -1) {\r\n this.objects.splice(index, 1);\r\n }\r\n\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n child.remove(predicate);\r\n }\r\n }\r\n }\r\n\r\n query(range: KritzelBoundingBox): T[] {\r\n const results: T[] = [];\r\n\r\n if (!this.intersects(range, this.bounds)) {\r\n return results;\r\n }\r\n\r\n for (const object of this.objects) {\r\n if (this.intersects(object.rotatedBoundingBox, range)) {\r\n results.push(object);\r\n }\r\n }\r\n\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n results.push(...child.query(range));\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n filter(predicate: (object: T) => boolean): T[] {\r\n const results: T[] = this.objects.filter(o => predicate(o));\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n results.push(...child.filter(predicate));\r\n }\r\n }\r\n return results;\r\n }\r\n\r\n allObjects(): T[] {\r\n const results: T[] = [...this.objects];\r\n if (this.children !== null) {\r\n for (const child of this.children) {\r\n results.push(...child.allObjects());\r\n }\r\n }\r\n return results;\r\n }\r\n\r\n private subdivide(): void {\r\n const { x, y, z, width, height, depth } = this.bounds;\r\n const halfWidth = width / 2;\r\n const halfHeight = height / 2;\r\n const halfDepth = depth / 2;\r\n\r\n this.children = [\r\n new KritzelOctree<T>({ x, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y: y + halfHeight, z, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n new KritzelOctree<T>({ x: x + halfWidth, y: y + halfHeight, z: z + halfDepth, width: halfWidth, height: halfHeight, depth: halfDepth }, this.capacity),\r\n ];\r\n }\r\n\r\n private intersects(a: KritzelBoundingBox, b: KritzelBoundingBox): boolean {\r\n return !(\r\n a.x >= b.x + b.width || // a is completely to the right of b\r\n a.x + a.width <= b.x || // a is completely to the left of b\r\n a.y >= b.y + b.height || // a is completely below b\r\n a.y + a.height <= b.y // a is completely above b\r\n );\r\n }\r\n}\r\n"]}
@@ -81,7 +81,8 @@ export class KritzelImageTool extends KritzelBaseTool {
81
81
  return { scaledWidth, scaledHeight };
82
82
  }
83
83
  createKritzelImage(img, width, height) {
84
- const image = new KritzelImage(this._store, img);
84
+ const image = new KritzelImage(this._store);
85
+ image.src = img.src;
85
86
  image.width = width;
86
87
  image.height = height;
87
88
  image.zIndex = this._store.currentZIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"image-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/image-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelImage } from '../objects/image.class';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { AddObjectCommand } from '../commands/add-object.command';\r\nimport { BatchCommand } from '../commands/batch.command';\r\nimport { AddSelectionGroupCommand } from '../commands/add-selection-group.command';\r\nimport imageCompression from 'browser-image-compression';\r\nimport { KritzelToolRegistry } from '../tool.registry';\r\n\r\nexport class KritzelImageTool extends KritzelBaseTool {\r\n fileInput: HTMLInputElement | null = null;\r\n\r\n maxWidth: number = 300;\r\n maxHeight: number = 300;\r\n\r\n maxCompressionSize: number = 300;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n this.setupFileInput();\r\n }\r\n\r\n override onActivate(): void {\r\n this.openFilePicker();\r\n }\r\n\r\n private openFilePicker(): void {\r\n this.fileInput.click();\r\n }\r\n\r\n private setupFileInput(): void {\r\n this.fileInput = document.createElement('input');\r\n this.fileInput.type = 'file';\r\n this.fileInput.accept = 'image/*';\r\n this.fileInput.style.display = 'none';\r\n\r\n this.fileInput.addEventListener('change', this.handleFileSelect.bind(this));\r\n this.fileInput.addEventListener('cancel', this.handleCancel.bind(this));\r\n document.body.appendChild(this.fileInput);\r\n }\r\n\r\n private handleFileSelect(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files && input.files[0]) {\r\n const file = input.files[0];\r\n imageCompression(file, {\r\n maxWidthOrHeight: this.maxCompressionSize,\r\n })\r\n .then(compressedFile => {\r\n this.readFile(compressedFile);\r\n })\r\n .catch(error => {\r\n console.error('Error during image compression or processing:', error);\r\n this.handleCancel();\r\n });\r\n } else {\r\n console.info('File selection cancelled by user.');\r\n this.handleCancel();\r\n }\r\n\r\n if (input) {\r\n input.value = '';\r\n }\r\n }\r\n\r\n private readFile(file: File): void {\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n const img = new Image();\r\n img.src = e.target?.result as string;\r\n img.onload = () => this.processImage(img);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n private processImage(img: HTMLImageElement): void {\r\n const { scaledWidth, scaledHeight } = this.calculateScaledDimensions(img);\r\n const image = this.createKritzelImage(img, scaledWidth, scaledHeight);\r\n this.addImageToStore(image);\r\n }\r\n\r\n private calculateScaledDimensions(img: HTMLImageElement): { scaledWidth: number; scaledHeight: number } {\r\n let scaledWidth = img.width;\r\n let scaledHeight = img.height;\r\n\r\n if (img.width > this.maxWidth || img.height > this.maxHeight) {\r\n const widthRatio = this.maxWidth / img.width;\r\n const heightRatio = this.maxHeight / img.height;\r\n const scaleRatio = Math.min(widthRatio, heightRatio);\r\n\r\n scaledWidth = img.width * scaleRatio;\r\n scaledHeight = img.height * scaleRatio;\r\n }\r\n\r\n return { scaledWidth, scaledHeight };\r\n }\r\n\r\n private createKritzelImage(img: HTMLImageElement, width: number, height: number): KritzelImage {\r\n const image = new KritzelImage(this._store, img);\r\n image.width = width;\r\n image.height = height;\r\n image.zIndex = this._store.currentZIndex;\r\n image.centerInViewport();\r\n return image;\r\n }\r\n\r\n private addImageToStore(image: KritzelImage): void {\r\n const selectionGroup = new KritzelSelectionGroup(this._store);\r\n selectionGroup.addOrRemove(image);\r\n selectionGroup.selected = true;\r\n\r\n const addImageCommand = new AddObjectCommand(this._store, this, image);\r\n const addSelectionGroupCommand = new AddSelectionGroupCommand(this._store, this, selectionGroup);\r\n\r\n this._store.history.executeCommand(new BatchCommand(this._store, this, [addImageCommand, addSelectionGroupCommand]));\r\n\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n\r\n private handleCancel(): void {\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"image-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/image-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelImage } from '../objects/image.class';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { AddObjectCommand } from '../commands/add-object.command';\r\nimport { BatchCommand } from '../commands/batch.command';\r\nimport { AddSelectionGroupCommand } from '../commands/add-selection-group.command';\r\nimport imageCompression from 'browser-image-compression';\r\nimport { KritzelToolRegistry } from '../tool.registry';\r\n\r\nexport class KritzelImageTool extends KritzelBaseTool {\r\n fileInput: HTMLInputElement | null = null;\r\n\r\n maxWidth: number = 300;\r\n maxHeight: number = 300;\r\n\r\n maxCompressionSize: number = 300;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n this.setupFileInput();\r\n }\r\n\r\n override onActivate(): void {\r\n this.openFilePicker();\r\n }\r\n\r\n private openFilePicker(): void {\r\n this.fileInput.click();\r\n }\r\n\r\n private setupFileInput(): void {\r\n this.fileInput = document.createElement('input');\r\n this.fileInput.type = 'file';\r\n this.fileInput.accept = 'image/*';\r\n this.fileInput.style.display = 'none';\r\n\r\n this.fileInput.addEventListener('change', this.handleFileSelect.bind(this));\r\n this.fileInput.addEventListener('cancel', this.handleCancel.bind(this));\r\n document.body.appendChild(this.fileInput);\r\n }\r\n\r\n private handleFileSelect(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files && input.files[0]) {\r\n const file = input.files[0];\r\n imageCompression(file, {\r\n maxWidthOrHeight: this.maxCompressionSize,\r\n })\r\n .then(compressedFile => {\r\n this.readFile(compressedFile);\r\n })\r\n .catch(error => {\r\n console.error('Error during image compression or processing:', error);\r\n this.handleCancel();\r\n });\r\n } else {\r\n console.info('File selection cancelled by user.');\r\n this.handleCancel();\r\n }\r\n\r\n if (input) {\r\n input.value = '';\r\n }\r\n }\r\n\r\n private readFile(file: File): void {\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n const img = new Image();\r\n img.src = e.target?.result as string;\r\n img.onload = () => this.processImage(img);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n private processImage(img: HTMLImageElement): void {\r\n const { scaledWidth, scaledHeight } = this.calculateScaledDimensions(img);\r\n const image = this.createKritzelImage(img, scaledWidth, scaledHeight);\r\n this.addImageToStore(image);\r\n }\r\n\r\n private calculateScaledDimensions(img: HTMLImageElement): { scaledWidth: number; scaledHeight: number } {\r\n let scaledWidth = img.width;\r\n let scaledHeight = img.height;\r\n\r\n if (img.width > this.maxWidth || img.height > this.maxHeight) {\r\n const widthRatio = this.maxWidth / img.width;\r\n const heightRatio = this.maxHeight / img.height;\r\n const scaleRatio = Math.min(widthRatio, heightRatio);\r\n\r\n scaledWidth = img.width * scaleRatio;\r\n scaledHeight = img.height * scaleRatio;\r\n }\r\n\r\n return { scaledWidth, scaledHeight };\r\n }\r\n\r\n private createKritzelImage(img: HTMLImageElement, width: number, height: number): KritzelImage {\r\n const image = new KritzelImage(this._store);\r\n image.src = img.src;\r\n image.width = width;\r\n image.height = height;\r\n image.zIndex = this._store.currentZIndex;\r\n image.centerInViewport();\r\n return image;\r\n }\r\n\r\n private addImageToStore(image: KritzelImage): void {\r\n const selectionGroup = new KritzelSelectionGroup(this._store);\r\n selectionGroup.addOrRemove(image);\r\n selectionGroup.selected = true;\r\n\r\n const addImageCommand = new AddObjectCommand(this._store, this, image);\r\n const addSelectionGroupCommand = new AddSelectionGroupCommand(this._store, this, selectionGroup);\r\n\r\n this._store.history.executeCommand(new BatchCommand(this._store, this, [addImageCommand, addSelectionGroupCommand]));\r\n\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n\r\n private handleCancel(): void {\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n }\r\n}\r\n"]}
@@ -302,7 +302,7 @@ export class KritzelEngine {
302
302
  width: object === null || object === void 0 ? void 0 : object.width.toString(),
303
303
  position: 'absolute',
304
304
  overflow: 'visible',
305
- }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox }, h("path", { d: object === null || object === void 0 ? void 0 : object.d, fill: object.fill, stroke: object === null || object === void 0 ? void 0 : object.stroke }))), object instanceof KritzelImage && (h("img", { ref: el => object.mount(el), src: object.img.src, style: {
305
+ }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox }, h("path", { d: object === null || object === void 0 ? void 0 : object.d, fill: object.fill, stroke: object === null || object === void 0 ? void 0 : object.stroke }))), object instanceof KritzelImage && (h("img", { ref: el => object.mount(el), src: object.src, style: {
306
306
  width: '100%',
307
307
  height: '100%',
308
308
  userSelect: 'none',
@@ -369,7 +369,7 @@ export class KritzelEngine {
369
369
  fill: 'transparent',
370
370
  cursor: 'grab',
371
371
  }, visibility: object.selected && !this.isSelecting ? 'visible' : 'hidden' }), h("g", { style: { display: this.store.state.debugInfo.showObjectInfo ? 'block' : 'none', pointerEvents: 'none' } }, h("foreignObject", { x: object.totalWidth.toString(), y: "0", width: "400px", height: "160px", style: { minHeight: '0', minWidth: '0', display: object.debugInfoVisible ? 'block' : 'none' } }, h("div", { style: { width: '100%', height: '100%' } }, h("div", { style: { whiteSpace: 'nowrap' } }, "zIndex: ", object.zIndex), h("div", { style: { whiteSpace: 'nowrap' } }, "translateX: ", object.translateX), h("div", { style: { whiteSpace: 'nowrap' } }, "translateY: ", object.translateY), h("div", { style: { whiteSpace: 'nowrap' } }, "width: ", object.width), h("div", { style: { whiteSpace: 'nowrap' } }, "height: ", object.height), h("div", { style: { whiteSpace: 'nowrap' } }, "scale: ", object.scale), h("div", { style: { whiteSpace: 'nowrap' } }, "rotation: ", object.rotation)))))));
372
- }), h("svg", { key: '76788f88c63996a85778fac600f568e651f2604f', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
372
+ }), h("svg", { key: '9f862215ce2de4cc0745942bc946897f5f5e24b7', class: "object", xmlns: "http://www.w3.org/2000/svg", style: {
373
373
  height: (_u = this.store.state.currentPath) === null || _u === void 0 ? void 0 : _u.height.toString(),
374
374
  width: (_v = this.store.state.currentPath) === null || _v === void 0 ? void 0 : _v.width.toString(),
375
375
  left: '0',
@@ -379,12 +379,12 @@ export class KritzelEngine {
379
379
  transform: (_x = this.store.state.currentPath) === null || _x === void 0 ? void 0 : _x.transformationMatrix,
380
380
  transformOrigin: 'top left',
381
381
  overflow: 'visible',
382
- }, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, h("path", { key: 'e0356205729f20a61f5bbac14393d4d607a7c865', d: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.d, fill: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.fill, stroke: (_1 = this.store.state.currentPath) === null || _1 === void 0 ? void 0 : _1.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '23ab721c25518e6c6a6e6e163fa0753e054cb5e7', ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, style: {
382
+ }, viewBox: (_y = this.store.state.currentPath) === null || _y === void 0 ? void 0 : _y.viewBox }, h("path", { key: 'e1f0ea5ee56c8fb753438c978750151c688e9330', d: (_z = this.store.state.currentPath) === null || _z === void 0 ? void 0 : _z.d, fill: (_0 = this.store.state.currentPath) === null || _0 === void 0 ? void 0 : _0.fill, stroke: (_1 = this.store.state.currentPath) === null || _1 === void 0 ? void 0 : _1.stroke }))), this.store.state.isContextMenuVisible && (h("kritzel-context-menu", { key: '89184b62326fcfde61ee4922ec5d640b16a191a7', ref: el => (this.contextMenuElement = el), items: this.store.state.contextMenuItems, style: {
383
383
  position: 'fixed',
384
384
  left: `${this.store.state.contextMenuX}px`,
385
385
  top: `${this.store.state.contextMenuY}px`,
386
386
  zIndex: '10000',
387
- }, onActionSelected: event => this.handleContextMenuAction(event) })), ((_2 = this.store.state) === null || _2 === void 0 ? void 0 : _2.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '01f90ff856d6a3b0812ce47796fd59dbbf0cd52d' })));
387
+ }, onActionSelected: event => this.handleContextMenuAction(event) })), ((_2 = this.store.state) === null || _2 === void 0 ? void 0 : _2.activeTool) instanceof KritzelEraserTool && !this.store.state.isScaling && h("kritzel-cursor-trail", { key: '8797da3afce7d97e0f94ec9f90522b9ad35bb71b' })));
388
388
  }
389
389
  static get is() { return "kritzel-engine"; }
390
390
  static get encapsulation() { return "shadow"; }