kritzel-stencil 0.0.125 → 0.0.126

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 (377) hide show
  1. package/dist/{components/p-BJOf0PsO.js → stencil/brush-tool.class-D1U3x9_Y.js} +51 -7
  2. package/dist/stencil/brush-tool.class-D1U3x9_Y.js.map +1 -0
  3. package/dist/{collection/configs/default-brush-tool.config.js → stencil/default-text-tool.config-DvOZmpuR.js} +38 -2
  4. package/dist/stencil/default-text-tool.config-DvOZmpuR.js.map +1 -0
  5. package/dist/stencil/engine.constants-DsjjAmnl.js +7 -0
  6. package/dist/stencil/engine.constants-DsjjAmnl.js.map +1 -0
  7. package/dist/{components/p-D8W6LE-c.js → stencil/event-button.enum-D8W6LE-c.js} +2 -2
  8. package/dist/stencil/event-button.enum-D8W6LE-c.js.map +1 -0
  9. package/dist/{collection/classes/registries/icon-registry.class.js → stencil/icon-registry.class-Bw5YkOTi.js} +6 -2
  10. package/dist/stencil/icon-registry.class-Bw5YkOTi.js.map +1 -0
  11. package/dist/stencil/image-tool.class-uKAmXFSl.js +1341 -0
  12. package/dist/stencil/image-tool.class-uKAmXFSl.js.map +1 -0
  13. package/dist/stencil/index-Df69oUcb.js +4334 -0
  14. package/dist/stencil/index-Df69oUcb.js.map +1 -0
  15. package/dist/stencil/index.esm.js +16 -1
  16. package/dist/stencil/index.esm.js.map +1 -1
  17. package/dist/stencil/kritzel-brush-style.entry.esm.js.map +1 -0
  18. package/dist/stencil/kritzel-brush-style.entry.js +31 -0
  19. package/dist/stencil/kritzel-brush-style.entry.js.map +1 -0
  20. package/dist/stencil/kritzel-color-palette.entry.esm.js.map +1 -0
  21. package/dist/{components/p-Bn5P7YQn.js → stencil/kritzel-color-palette.entry.js} +11 -37
  22. package/dist/stencil/kritzel-color-palette.entry.js.map +1 -0
  23. package/dist/stencil/kritzel-color.entry.esm.js.map +1 -0
  24. package/dist/{components/p-D0sLslUq.js → stencil/kritzel-color.entry.js} +11 -29
  25. package/dist/stencil/kritzel-color.entry.js.map +1 -0
  26. package/dist/{components/p-BY8BWGge.js → stencil/kritzel-context-menu-B2p1_Ffh.js} +12 -40
  27. package/dist/stencil/kritzel-context-menu-B2p1_Ffh.js.map +1 -0
  28. package/dist/stencil/kritzel-context-menu-DPHV6MRm.js +91 -0
  29. package/dist/stencil/kritzel-context-menu-DPHV6MRm.js.map +1 -0
  30. package/dist/stencil/kritzel-context-menu.entry.esm.js.map +1 -0
  31. package/dist/stencil/kritzel-context-menu.entry.js +5 -0
  32. package/dist/stencil/kritzel-context-menu.entry.js.map +1 -0
  33. package/dist/stencil/kritzel-control-brush-config.entry.esm.js.map +1 -0
  34. package/dist/stencil/kritzel-control-brush-config.entry.js +54 -0
  35. package/dist/stencil/kritzel-control-brush-config.entry.js.map +1 -0
  36. package/dist/stencil/kritzel-control-text-config.entry.esm.js.map +1 -0
  37. package/dist/stencil/kritzel-control-text-config.entry.js +42 -0
  38. package/dist/stencil/kritzel-control-text-config.entry.js.map +1 -0
  39. package/dist/stencil/kritzel-controls.entry.esm.js.map +1 -0
  40. package/dist/{components/p-CBCFr_x3.js → stencil/kritzel-controls.entry.js} +16 -116
  41. package/dist/stencil/kritzel-controls.entry.js.map +1 -0
  42. package/dist/stencil/kritzel-cursor-trail.entry.esm.js.map +1 -0
  43. package/dist/{components/p-Cw2ATHMj.js → stencil/kritzel-cursor-trail.entry.js} +11 -30
  44. package/dist/stencil/kritzel-cursor-trail.entry.js.map +1 -0
  45. package/dist/stencil/kritzel-dropdown.entry.esm.js.map +1 -0
  46. package/dist/{components/p-NZJPrwJV.js → stencil/kritzel-dropdown.entry.js} +11 -37
  47. package/dist/stencil/kritzel-dropdown.entry.js.map +1 -0
  48. package/dist/stencil/kritzel-editor.entry.esm.js.map +1 -0
  49. package/dist/stencil/kritzel-editor.entry.js +180 -0
  50. package/dist/stencil/kritzel-editor.entry.js.map +1 -0
  51. package/dist/stencil/kritzel-engine.entry.esm.js.map +1 -0
  52. package/dist/stencil/kritzel-engine.entry.js +1318 -0
  53. package/dist/stencil/kritzel-engine.entry.js.map +1 -0
  54. package/dist/stencil/kritzel-font-family.entry.esm.js.map +1 -0
  55. package/dist/{components/p-CF8ziFc4.js → stencil/kritzel-font-family.entry.js} +11 -35
  56. package/dist/stencil/kritzel-font-family.entry.js.map +1 -0
  57. package/dist/stencil/kritzel-font-size.entry.esm.js.map +1 -0
  58. package/dist/stencil/kritzel-font-size.entry.js +29 -0
  59. package/dist/stencil/kritzel-font-size.entry.js.map +1 -0
  60. package/dist/stencil/kritzel-font.entry.esm.js.map +1 -0
  61. package/dist/stencil/kritzel-font.entry.js +25 -0
  62. package/dist/stencil/kritzel-font.entry.js.map +1 -0
  63. package/dist/stencil/kritzel-icon.entry.esm.js.map +1 -0
  64. package/dist/stencil/kritzel-icon.entry.js +29 -0
  65. package/dist/stencil/kritzel-icon.entry.js.map +1 -0
  66. package/dist/stencil/kritzel-stroke-size.entry.esm.js.map +1 -0
  67. package/dist/stencil/kritzel-stroke-size.entry.js +28 -0
  68. package/dist/stencil/kritzel-stroke-size.entry.js.map +1 -0
  69. package/dist/stencil/kritzel-tooltip.entry.esm.js.map +1 -0
  70. package/dist/{components/p-DpiklJU9.js → stencil/kritzel-tooltip.entry.js} +14 -37
  71. package/dist/stencil/kritzel-tooltip.entry.js.map +1 -0
  72. package/dist/stencil/kritzel-utility-panel.entry.esm.js.map +1 -0
  73. package/dist/stencil/kritzel-utility-panel.entry.js +33 -0
  74. package/dist/stencil/kritzel-utility-panel.entry.js.map +1 -0
  75. package/dist/stencil/loader.esm.js.map +1 -1
  76. package/dist/stencil/stencil.esm.js +49 -1
  77. package/dist/stencil/stencil.esm.js.map +1 -1
  78. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +2 -2
  79. package/dist/types/components.d.ts +4 -4
  80. package/package.json +1 -1
  81. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
  82. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  83. package/dist/cjs/index-C05uAr89.js +0 -1591
  84. package/dist/cjs/index-C05uAr89.js.map +0 -1
  85. package/dist/cjs/index-CgSgPOBv.js +0 -2546
  86. package/dist/cjs/index-CgSgPOBv.js.map +0 -1
  87. package/dist/cjs/index.cjs.js +0 -19
  88. package/dist/cjs/index.cjs.js.map +0 -1
  89. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +0 -2365
  90. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +0 -1
  91. package/dist/cjs/loader.cjs.js +0 -16
  92. package/dist/cjs/loader.cjs.js.map +0 -1
  93. package/dist/cjs/stencil.cjs.js +0 -28
  94. package/dist/cjs/stencil.cjs.js.map +0 -1
  95. package/dist/collection/classes/commands/add-object.command.js +0 -14
  96. package/dist/collection/classes/commands/add-object.command.js.map +0 -1
  97. package/dist/collection/classes/commands/add-selection-group.command.js +0 -20
  98. package/dist/collection/classes/commands/add-selection-group.command.js.map +0 -1
  99. package/dist/collection/classes/commands/base.command.js +0 -15
  100. package/dist/collection/classes/commands/base.command.js.map +0 -1
  101. package/dist/collection/classes/commands/batch.command.js +0 -14
  102. package/dist/collection/classes/commands/batch.command.js.map +0 -1
  103. package/dist/collection/classes/commands/move-selection-group.command.js +0 -25
  104. package/dist/collection/classes/commands/move-selection-group.command.js.map +0 -1
  105. package/dist/collection/classes/commands/remove-object.command.js +0 -17
  106. package/dist/collection/classes/commands/remove-object.command.js.map +0 -1
  107. package/dist/collection/classes/commands/remove-selection-group.command.js +0 -18
  108. package/dist/collection/classes/commands/remove-selection-group.command.js.map +0 -1
  109. package/dist/collection/classes/commands/resize-selection-group.command.js +0 -18
  110. package/dist/collection/classes/commands/resize-selection-group.command.js.map +0 -1
  111. package/dist/collection/classes/commands/rotate-selection-group.command.js +0 -24
  112. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +0 -1
  113. package/dist/collection/classes/commands/update-object.command.js +0 -29
  114. package/dist/collection/classes/commands/update-object.command.js.map +0 -1
  115. package/dist/collection/classes/commands/update-viewport.command.js +0 -23
  116. package/dist/collection/classes/commands/update-viewport.command.js.map +0 -1
  117. package/dist/collection/classes/handlers/base.handler.js +0 -7
  118. package/dist/collection/classes/handlers/base.handler.js.map +0 -1
  119. package/dist/collection/classes/handlers/context-menu.handler.js +0 -47
  120. package/dist/collection/classes/handlers/context-menu.handler.js.map +0 -1
  121. package/dist/collection/classes/handlers/hover.handler.js +0 -19
  122. package/dist/collection/classes/handlers/hover.handler.js.map +0 -1
  123. package/dist/collection/classes/handlers/key.handler.js +0 -81
  124. package/dist/collection/classes/handlers/key.handler.js.map +0 -1
  125. package/dist/collection/classes/handlers/move.handler.js +0 -84
  126. package/dist/collection/classes/handlers/move.handler.js.map +0 -1
  127. package/dist/collection/classes/handlers/resize.handler.js +0 -150
  128. package/dist/collection/classes/handlers/resize.handler.js.map +0 -1
  129. package/dist/collection/classes/handlers/rotation.handler.js +0 -102
  130. package/dist/collection/classes/handlers/rotation.handler.js.map +0 -1
  131. package/dist/collection/classes/handlers/selection.handler.js +0 -200
  132. package/dist/collection/classes/handlers/selection.handler.js.map +0 -1
  133. package/dist/collection/classes/history.class.js +0 -71
  134. package/dist/collection/classes/history.class.js.map +0 -1
  135. package/dist/collection/classes/objects/base-object.class.js +0 -199
  136. package/dist/collection/classes/objects/base-object.class.js.map +0 -1
  137. package/dist/collection/classes/objects/custom-element.class.js +0 -52
  138. package/dist/collection/classes/objects/custom-element.class.js.map +0 -1
  139. package/dist/collection/classes/objects/image.class.js +0 -53
  140. package/dist/collection/classes/objects/image.class.js.map +0 -1
  141. package/dist/collection/classes/objects/path.class.js +0 -262
  142. package/dist/collection/classes/objects/path.class.js.map +0 -1
  143. package/dist/collection/classes/objects/selection-box.class.js +0 -22
  144. package/dist/collection/classes/objects/selection-box.class.js.map +0 -1
  145. package/dist/collection/classes/objects/selection-group.class.js +0 -159
  146. package/dist/collection/classes/objects/selection-group.class.js.map +0 -1
  147. package/dist/collection/classes/objects/text.class.js +0 -141
  148. package/dist/collection/classes/objects/text.class.js.map +0 -1
  149. package/dist/collection/classes/registries/icon-registry.class.js.map +0 -1
  150. package/dist/collection/classes/registries/tool.registry.js +0 -18
  151. package/dist/collection/classes/registries/tool.registry.js.map +0 -1
  152. package/dist/collection/classes/reviver.class.js +0 -66
  153. package/dist/collection/classes/reviver.class.js.map +0 -1
  154. package/dist/collection/classes/store.class.js +0 -287
  155. package/dist/collection/classes/store.class.js.map +0 -1
  156. package/dist/collection/classes/structures/circular-buffer.structure.js +0 -46
  157. package/dist/collection/classes/structures/circular-buffer.structure.js.map +0 -1
  158. package/dist/collection/classes/structures/octree.structure.js +0 -111
  159. package/dist/collection/classes/structures/octree.structure.js.map +0 -1
  160. package/dist/collection/classes/tools/base-tool.class.js +0 -31
  161. package/dist/collection/classes/tools/base-tool.class.js.map +0 -1
  162. package/dist/collection/classes/tools/brush-tool.class.js +0 -116
  163. package/dist/collection/classes/tools/brush-tool.class.js.map +0 -1
  164. package/dist/collection/classes/tools/eraser-tool.class.js +0 -86
  165. package/dist/collection/classes/tools/eraser-tool.class.js.map +0 -1
  166. package/dist/collection/classes/tools/image-tool.class.js +0 -88
  167. package/dist/collection/classes/tools/image-tool.class.js.map +0 -1
  168. package/dist/collection/classes/tools/selection-tool.class.js +0 -156
  169. package/dist/collection/classes/tools/selection-tool.class.js.map +0 -1
  170. package/dist/collection/classes/tools/text-tool.class.js +0 -116
  171. package/dist/collection/classes/tools/text-tool.class.js.map +0 -1
  172. package/dist/collection/classes/viewport.class.js +0 -148
  173. package/dist/collection/classes/viewport.class.js.map +0 -1
  174. package/dist/collection/collection-manifest.json +0 -29
  175. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +0 -10
  176. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +0 -154
  177. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +0 -1
  178. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +0 -24
  179. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +0 -672
  180. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +0 -1
  181. package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +0 -60
  182. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +0 -1287
  183. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +0 -1
  184. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +0 -44
  185. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +0 -100
  186. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +0 -1
  187. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +0 -21
  188. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +0 -108
  189. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +0 -1
  190. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +0 -46
  191. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +0 -147
  192. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js.map +0 -1
  193. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +0 -53
  194. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +0 -215
  195. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +0 -1
  196. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +0 -10
  197. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +0 -92
  198. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +0 -1
  199. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +0 -48
  200. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +0 -115
  201. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +0 -1
  202. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +0 -30
  203. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +0 -112
  204. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +0 -1
  205. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +0 -17
  206. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js +0 -94
  207. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.js.map +0 -1
  208. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +0 -28
  209. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +0 -91
  210. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js.map +0 -1
  211. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +0 -17
  212. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +0 -181
  213. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +0 -1
  214. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.css +0 -55
  215. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +0 -178
  216. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +0 -1
  217. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +0 -19
  218. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -136
  219. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +0 -1
  220. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +0 -19
  221. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +0 -116
  222. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js.map +0 -1
  223. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +0 -124
  224. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +0 -268
  225. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js.map +0 -1
  226. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.css +0 -33
  227. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +0 -79
  228. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js.map +0 -1
  229. package/dist/collection/configs/default-brush-tool.config.js.map +0 -1
  230. package/dist/collection/configs/default-engine-state.js +0 -58
  231. package/dist/collection/configs/default-engine-state.js.map +0 -1
  232. package/dist/collection/configs/default-text-tool.config.js +0 -32
  233. package/dist/collection/configs/default-text-tool.config.js.map +0 -1
  234. package/dist/collection/constants/engine.constants.js +0 -3
  235. package/dist/collection/constants/engine.constants.js.map +0 -1
  236. package/dist/collection/enums/event-button.enum.js +0 -7
  237. package/dist/collection/enums/event-button.enum.js.map +0 -1
  238. package/dist/collection/enums/handle-type.enum.js +0 -8
  239. package/dist/collection/enums/handle-type.enum.js.map +0 -1
  240. package/dist/collection/helpers/class.helper.js +0 -6
  241. package/dist/collection/helpers/class.helper.js.map +0 -1
  242. package/dist/collection/helpers/devices.helper.js +0 -6
  243. package/dist/collection/helpers/devices.helper.js.map +0 -1
  244. package/dist/collection/helpers/event.helper.js +0 -58
  245. package/dist/collection/helpers/event.helper.js.map +0 -1
  246. package/dist/collection/helpers/geometry.helper.js +0 -53
  247. package/dist/collection/helpers/geometry.helper.js.map +0 -1
  248. package/dist/collection/helpers/html.helper.js +0 -7
  249. package/dist/collection/helpers/html.helper.js.map +0 -1
  250. package/dist/collection/helpers/keyboard.helper.js +0 -31
  251. package/dist/collection/helpers/keyboard.helper.js.map +0 -1
  252. package/dist/collection/helpers/math.helper.js +0 -6
  253. package/dist/collection/helpers/math.helper.js.map +0 -1
  254. package/dist/collection/helpers/object.helper.js +0 -38
  255. package/dist/collection/helpers/object.helper.js.map +0 -1
  256. package/dist/collection/index.js +0 -21
  257. package/dist/collection/index.js.map +0 -1
  258. package/dist/collection/interfaces/bounding-box.interface.js +0 -2
  259. package/dist/collection/interfaces/bounding-box.interface.js.map +0 -1
  260. package/dist/collection/interfaces/command.interface.js +0 -2
  261. package/dist/collection/interfaces/command.interface.js.map +0 -1
  262. package/dist/collection/interfaces/context-menu-item.interface.js +0 -2
  263. package/dist/collection/interfaces/context-menu-item.interface.js.map +0 -1
  264. package/dist/collection/interfaces/debug-info.interface.js +0 -2
  265. package/dist/collection/interfaces/debug-info.interface.js.map +0 -1
  266. package/dist/collection/interfaces/engine-state.interface.js +0 -2
  267. package/dist/collection/interfaces/engine-state.interface.js.map +0 -1
  268. package/dist/collection/interfaces/object.interface.js +0 -2
  269. package/dist/collection/interfaces/object.interface.js.map +0 -1
  270. package/dist/collection/interfaces/path-options.interface.js +0 -2
  271. package/dist/collection/interfaces/path-options.interface.js.map +0 -1
  272. package/dist/collection/interfaces/point.interface.js +0 -2
  273. package/dist/collection/interfaces/point.interface.js.map +0 -1
  274. package/dist/collection/interfaces/polygon.interface.js +0 -2
  275. package/dist/collection/interfaces/polygon.interface.js.map +0 -1
  276. package/dist/collection/interfaces/selection-state.interface.js +0 -2
  277. package/dist/collection/interfaces/selection-state.interface.js.map +0 -1
  278. package/dist/collection/interfaces/serializable.interface.js +0 -2
  279. package/dist/collection/interfaces/serializable.interface.js.map +0 -1
  280. package/dist/collection/interfaces/tool.interface.js +0 -2
  281. package/dist/collection/interfaces/tool.interface.js.map +0 -1
  282. package/dist/collection/interfaces/toolbar-control.interface.js +0 -2
  283. package/dist/collection/interfaces/toolbar-control.interface.js.map +0 -1
  284. package/dist/collection/types/state.types.js +0 -2
  285. package/dist/collection/types/state.types.js.map +0 -1
  286. package/dist/components/index.js +0 -24
  287. package/dist/components/index.js.map +0 -1
  288. package/dist/components/kritzel-brush-style.js +0 -9
  289. package/dist/components/kritzel-brush-style.js.map +0 -1
  290. package/dist/components/kritzel-color-palette.js +0 -9
  291. package/dist/components/kritzel-color-palette.js.map +0 -1
  292. package/dist/components/kritzel-color.js +0 -9
  293. package/dist/components/kritzel-color.js.map +0 -1
  294. package/dist/components/kritzel-context-menu.js +0 -9
  295. package/dist/components/kritzel-context-menu.js.map +0 -1
  296. package/dist/components/kritzel-control-brush-config.js +0 -9
  297. package/dist/components/kritzel-control-brush-config.js.map +0 -1
  298. package/dist/components/kritzel-control-text-config.js +0 -9
  299. package/dist/components/kritzel-control-text-config.js.map +0 -1
  300. package/dist/components/kritzel-controls.js +0 -9
  301. package/dist/components/kritzel-controls.js.map +0 -1
  302. package/dist/components/kritzel-cursor-trail.js +0 -9
  303. package/dist/components/kritzel-cursor-trail.js.map +0 -1
  304. package/dist/components/kritzel-dropdown.js +0 -9
  305. package/dist/components/kritzel-dropdown.js.map +0 -1
  306. package/dist/components/kritzel-editor.js +0 -409
  307. package/dist/components/kritzel-editor.js.map +0 -1
  308. package/dist/components/kritzel-engine.js +0 -9
  309. package/dist/components/kritzel-engine.js.map +0 -1
  310. package/dist/components/kritzel-font-family.js +0 -9
  311. package/dist/components/kritzel-font-family.js.map +0 -1
  312. package/dist/components/kritzel-font-size.js +0 -9
  313. package/dist/components/kritzel-font-size.js.map +0 -1
  314. package/dist/components/kritzel-font.js +0 -9
  315. package/dist/components/kritzel-font.js.map +0 -1
  316. package/dist/components/kritzel-icon.js +0 -9
  317. package/dist/components/kritzel-icon.js.map +0 -1
  318. package/dist/components/kritzel-stroke-size.js +0 -9
  319. package/dist/components/kritzel-stroke-size.js.map +0 -1
  320. package/dist/components/kritzel-tooltip.js +0 -9
  321. package/dist/components/kritzel-tooltip.js.map +0 -1
  322. package/dist/components/kritzel-utility-panel.js +0 -9
  323. package/dist/components/kritzel-utility-panel.js.map +0 -1
  324. package/dist/components/p-BJOf0PsO.js.map +0 -1
  325. package/dist/components/p-BOj_wqdw.js +0 -54
  326. package/dist/components/p-BOj_wqdw.js.map +0 -1
  327. package/dist/components/p-BY8BWGge.js.map +0 -1
  328. package/dist/components/p-BjG1zRRI.js +0 -2718
  329. package/dist/components/p-BjG1zRRI.js.map +0 -1
  330. package/dist/components/p-Bn5P7YQn.js.map +0 -1
  331. package/dist/components/p-C9usqwb5.js +0 -61
  332. package/dist/components/p-C9usqwb5.js.map +0 -1
  333. package/dist/components/p-CBCFr_x3.js.map +0 -1
  334. package/dist/components/p-CF8ziFc4.js.map +0 -1
  335. package/dist/components/p-CiT5gBDh.js +0 -44
  336. package/dist/components/p-CiT5gBDh.js.map +0 -1
  337. package/dist/components/p-Cn_kantt.js +0 -54
  338. package/dist/components/p-Cn_kantt.js.map +0 -1
  339. package/dist/components/p-CtiROna-.js +0 -90
  340. package/dist/components/p-CtiROna-.js.map +0 -1
  341. package/dist/components/p-Cw2ATHMj.js.map +0 -1
  342. package/dist/components/p-D0sLslUq.js.map +0 -1
  343. package/dist/components/p-D8W6LE-c.js.map +0 -1
  344. package/dist/components/p-DJN0U8pI.js +0 -1327
  345. package/dist/components/p-DJN0U8pI.js.map +0 -1
  346. package/dist/components/p-DMAzUKo6.js +0 -102
  347. package/dist/components/p-DMAzUKo6.js.map +0 -1
  348. package/dist/components/p-DSLY0tr5.js +0 -52
  349. package/dist/components/p-DSLY0tr5.js.map +0 -1
  350. package/dist/components/p-DpiklJU9.js.map +0 -1
  351. package/dist/components/p-NZJPrwJV.js.map +0 -1
  352. package/dist/components/p-ubNAWsY_.js +0 -111
  353. package/dist/components/p-ubNAWsY_.js.map +0 -1
  354. package/dist/esm/app-globals-DQuL1Twl.js +0 -6
  355. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  356. package/dist/esm/index-BGl8znzE.js +0 -1564
  357. package/dist/esm/index-BGl8znzE.js.map +0 -1
  358. package/dist/esm/index-B_0CRlFw.js +0 -2522
  359. package/dist/esm/index-B_0CRlFw.js.map +0 -1
  360. package/dist/esm/index.js +0 -4
  361. package/dist/esm/index.js.map +0 -1
  362. package/dist/esm/kritzel-brush-style_18.entry.js +0 -2346
  363. package/dist/esm/kritzel-brush-style_18.entry.js.map +0 -1
  364. package/dist/esm/loader.js +0 -14
  365. package/dist/esm/loader.js.map +0 -1
  366. package/dist/esm/stencil.js +0 -24
  367. package/dist/esm/stencil.js.map +0 -1
  368. package/dist/index.cjs.js +0 -1
  369. package/dist/index.js +0 -1
  370. package/dist/stencil/p-3a2f1d19.entry.js +0 -2
  371. package/dist/stencil/p-3a2f1d19.entry.js.map +0 -1
  372. package/dist/stencil/p-BGl8znzE.js +0 -3
  373. package/dist/stencil/p-BGl8znzE.js.map +0 -1
  374. package/dist/stencil/p-B_0CRlFw.js +0 -2
  375. package/dist/stencil/p-B_0CRlFw.js.map +0 -1
  376. package/dist/stencil/p-DQuL1Twl.js +0 -2
  377. package/dist/stencil/p-DQuL1Twl.js.map +0 -1
@@ -1,262 +0,0 @@
1
- import { getStroke } from "perfect-freehand";
2
- import { KritzelMathHelper } from "../../helpers/math.helper";
3
- import { KritzelBaseObject } from "./base-object.class";
4
- import { KritzelGeometryHelper } from "../../helpers/geometry.helper";
5
- export class KritzelPath extends KritzelBaseObject {
6
- get viewBox() {
7
- return `${this.x} ${this.y} ${this.width} ${this.height}`;
8
- }
9
- constructor(config) {
10
- var _a, _b, _c, _d, _e, _f;
11
- super();
12
- this.__class__ = 'KritzelPath';
13
- this.stroke = 'none';
14
- this.lineSlack = 0.5;
15
- this.x = 0;
16
- this.y = 0;
17
- this.height = 0;
18
- this.width = 0;
19
- this.scale = 1;
20
- this.isVisible = true;
21
- this.isDebugInfoVisible = true;
22
- this._adjustedPoints = null;
23
- this.options = config;
24
- this.points = (_a = config === null || config === void 0 ? void 0 : config.points) !== null && _a !== void 0 ? _a : [];
25
- this.translateX = (_b = config === null || config === void 0 ? void 0 : config.translateX) !== null && _b !== void 0 ? _b : 0;
26
- this.translateY = (_c = config === null || config === void 0 ? void 0 : config.translateY) !== null && _c !== void 0 ? _c : 0;
27
- this.scale = (_d = config === null || config === void 0 ? void 0 : config.scale) !== null && _d !== void 0 ? _d : 1;
28
- this.strokeWidth = (_e = config === null || config === void 0 ? void 0 : config.strokeWidth) !== null && _e !== void 0 ? _e : 8;
29
- this.fill = (_f = config === null || config === void 0 ? void 0 : config.fill) !== null && _f !== void 0 ? _f : '#000000';
30
- this.d = this.generateSvgPath();
31
- this.updateDimensions();
32
- }
33
- static create(store, options) {
34
- var _a, _b, _c, _d, _e, _f;
35
- const object = new KritzelPath();
36
- object._store = store;
37
- object.id = object.generateId();
38
- object.options = options;
39
- object.points = (_a = options === null || options === void 0 ? void 0 : options.points) !== null && _a !== void 0 ? _a : [];
40
- object.translateX = (_b = options === null || options === void 0 ? void 0 : options.translateX) !== null && _b !== void 0 ? _b : 0;
41
- object.translateY = (_c = options === null || options === void 0 ? void 0 : options.translateY) !== null && _c !== void 0 ? _c : 0;
42
- object.scale = (_d = options === null || options === void 0 ? void 0 : options.scale) !== null && _d !== void 0 ? _d : 1;
43
- object.strokeWidth = (_e = options === null || options === void 0 ? void 0 : options.strokeWidth) !== null && _e !== void 0 ? _e : 8;
44
- object.fill = (_f = options === null || options === void 0 ? void 0 : options.fill) !== null && _f !== void 0 ? _f : '#000000';
45
- object.zIndex = store.currentZIndex;
46
- object.d = object.generateSvgPath();
47
- object.updateDimensions();
48
- return object;
49
- }
50
- resize(x, y, width, height) {
51
- if (width <= 1 || height <= 1) {
52
- return;
53
- }
54
- const scaleX = width / this.width;
55
- const scaleY = height / this.height;
56
- this.width = width;
57
- this.height = height;
58
- this.points = this.points.map(([x, y]) => [x * scaleX, y * scaleY]);
59
- this.d = this.generateSvgPath();
60
- this.width = Math.max(...this.points.map(p => p[0])) - Math.min(...this.points.map(p => p[0])) + this.strokeWidth;
61
- this.height = Math.max(...this.points.map(p => p[1])) - Math.min(...this.points.map(p => p[1])) + this.strokeWidth;
62
- this.x = Math.min(...this.points.map(p => p[0])) - this.strokeWidth / 2;
63
- this.y = Math.min(...this.points.map(p => p[1])) - this.strokeWidth / 2;
64
- this.translateX = x;
65
- this.translateY = y;
66
- this._adjustedPoints = null;
67
- }
68
- rotate(value) {
69
- this.rotation = value;
70
- this._adjustedPoints = null;
71
- }
72
- move(startX, startY, endX, endY) {
73
- const deltaX = (startX - endX) / this._store.state.scale;
74
- const deltaY = (startY - endY) / this._store.state.scale;
75
- this.translateX += deltaX;
76
- this.translateY += deltaY;
77
- this._adjustedPoints = null;
78
- }
79
- hitTest(x, y) {
80
- const halfStroke = this.strokeWidth / this.scale / 2;
81
- if (this._adjustedPoints === null) {
82
- this._adjustedPoints = this.computeAdjustedPoints();
83
- }
84
- if (this._adjustedPoints.length === 1) {
85
- const p1 = this._adjustedPoints[0];
86
- const distance = this.pointToLineSegmentDistance(x, y, p1[0], p1[1], p1[0], p1[1]);
87
- return distance <= halfStroke;
88
- }
89
- for (let i = 0; i < this._adjustedPoints.length - 1; i++) {
90
- const p1 = this._adjustedPoints[i];
91
- const p2 = this._adjustedPoints[i + 1];
92
- const distance = this.pointToLineSegmentDistance(x, y, p1[0], p1[1], p2[0], p2[1]);
93
- if (distance <= halfStroke) {
94
- return true;
95
- }
96
- }
97
- return false;
98
- }
99
- hitTestPolygon(polygon) {
100
- const halfStroke = this.strokeWidth / this.scale / 2;
101
- if (this._adjustedPoints === null) {
102
- this._adjustedPoints = this.computeAdjustedPoints();
103
- }
104
- const polyPoints = [
105
- { x: polygon.bottomLeft.x, y: polygon.bottomLeft.y },
106
- { x: polygon.bottomRight.x, y: polygon.bottomRight.y },
107
- { x: polygon.topRight.x, y: polygon.topRight.y },
108
- { x: polygon.topLeft.x, y: polygon.topLeft.y },
109
- ];
110
- for (const [px, py] of this._adjustedPoints) {
111
- if (KritzelGeometryHelper.isPointInPolygon({ x: px, y: py }, polyPoints)) {
112
- return true;
113
- }
114
- }
115
- for (const pt of polyPoints) {
116
- if (this.hitTest(pt.x, pt.y)) {
117
- return true;
118
- }
119
- }
120
- for (let i = 0; i < this._adjustedPoints.length - 1; i++) {
121
- const p1 = { x: this._adjustedPoints[i][0], y: this._adjustedPoints[i][1] };
122
- const p2 = { x: this._adjustedPoints[i + 1][0], y: this._adjustedPoints[i + 1][1] };
123
- for (let j = 0; j < polyPoints.length; j++) {
124
- const q1 = polyPoints[j];
125
- const q2 = polyPoints[(j + 1) % polyPoints.length];
126
- if (KritzelGeometryHelper.intersectLines(p1, p2, q1, q2)) {
127
- return true;
128
- }
129
- }
130
- }
131
- for (let i = 0; i < this._adjustedPoints.length - 1; i++) {
132
- const p1 = this._adjustedPoints[i];
133
- const p2 = this._adjustedPoints[i + 1];
134
- for (let j = 0; j < polyPoints.length; j++) {
135
- const q1 = polyPoints[j];
136
- const q2 = polyPoints[(j + 1) % polyPoints.length];
137
- const d1 = this.pointToLineSegmentDistance(q1.x, q1.y, p1[0], p1[1], p2[0], p2[1]);
138
- const d2 = this.pointToLineSegmentDistance(q2.x, q2.y, p1[0], p1[1], p2[0], p2[1]);
139
- const d3 = this.pointToLineSegmentDistance(p1[0], p1[1], q1.x, q1.y, q2.x, q2.y);
140
- const d4 = this.pointToLineSegmentDistance(p2[0], p2[1], q1.x, q1.y, q2.x, q2.y);
141
- const minD = Math.min(d1, d2, d3, d4);
142
- if (minD <= halfStroke) {
143
- return true;
144
- }
145
- }
146
- }
147
- return false;
148
- }
149
- computeAdjustedPoints() {
150
- var _a;
151
- if (!((_a = this.points) === null || _a === void 0 ? void 0 : _a.length)) {
152
- return [];
153
- }
154
- const angle = this.rotation;
155
- const cos = Math.cos(angle);
156
- const sin = Math.sin(angle);
157
- const xs = this.points.map(p => p[0]);
158
- const ys = this.points.map(p => p[1]);
159
- const pivot = {
160
- x: (Math.min(...xs) + Math.max(...xs)) / 2,
161
- y: (Math.min(...ys) + Math.max(...ys)) / 2,
162
- };
163
- const { x: cx, y: cy } = pivot;
164
- const rotatedPoints = this.points.map(([x, y]) => {
165
- const dx = x - cx;
166
- const dy = y - cy;
167
- return [cx + dx * cos - dy * sin, cy + dx * sin + dy * cos];
168
- });
169
- return rotatedPoints.map(([px, py]) => [((Math.abs(px - this.x) / this.scale + this.translateX)), ((Math.abs(py - this.y) / this.scale + this.translateY))]);
170
- }
171
- pointToLineSegmentDistance(x, y, x1, y1, x2, y2) {
172
- const A = x - x1;
173
- const B = y - y1;
174
- const C = x2 - x1;
175
- const D = y2 - y1;
176
- const dot = A * C + B * D;
177
- const len_sq = C * C + D * D;
178
- let param = -1;
179
- if (len_sq !== 0) {
180
- // in case of 0 length line
181
- param = dot / len_sq;
182
- }
183
- let xx, yy;
184
- if (param < 0) {
185
- xx = x1;
186
- yy = y1;
187
- }
188
- else if (param > 1) {
189
- xx = x2;
190
- yy = y2;
191
- }
192
- else {
193
- xx = x1 + param * C;
194
- yy = y1 + param * D;
195
- }
196
- const dx = x - xx;
197
- const dy = y - yy;
198
- return Math.sqrt(dx * dx + dy * dy);
199
- }
200
- updateDimensions() {
201
- const rotatedPoints = this.points.map(([x, y]) => {
202
- const rotatedX = x * Math.cos(this.rotation) - y * Math.sin(this.rotation);
203
- const rotatedY = x * Math.sin(this.rotation) + y * Math.cos(this.rotation);
204
- return [rotatedX, rotatedY];
205
- });
206
- const minX = Math.min(...rotatedPoints.map(p => p[0] - this.strokeWidth / 2));
207
- const minY = Math.min(...rotatedPoints.map(p => p[1] - this.strokeWidth / 2));
208
- const maxX = Math.max(...rotatedPoints.map(p => p[0] + this.strokeWidth / 2));
209
- const maxY = Math.max(...rotatedPoints.map(p => p[1] + this.strokeWidth / 2));
210
- this.width = maxX - minX + this.lineSlack;
211
- this.height = maxY - minY + this.lineSlack;
212
- this.x = minX;
213
- this.y = minY;
214
- this.translateX = (this.x + this.translateX) / this.scale;
215
- this.translateY = (this.y + this.translateY) / this.scale;
216
- }
217
- generateSvgPath() {
218
- const stroke = this.getStrokeFromPoints(this.points, this.strokeWidth);
219
- return this.getSvgPathFromStroke(stroke);
220
- }
221
- getStrokeFromPoints(points, strokeWidth) {
222
- return getStroke(points, {
223
- size: strokeWidth,
224
- thinning: 0.5,
225
- smoothing: 0.5,
226
- streamline: 0.5,
227
- easing: t => t,
228
- simulatePressure: true,
229
- last: true,
230
- start: {
231
- cap: true,
232
- taper: 0,
233
- easing: t => t,
234
- },
235
- end: {
236
- cap: true,
237
- taper: 0,
238
- easing: t => t,
239
- },
240
- });
241
- }
242
- getSvgPathFromStroke(points, closed = true) {
243
- const len = points.length;
244
- if (len < 4) {
245
- return ``;
246
- }
247
- let a = points[0];
248
- let b = points[1];
249
- const c = points[2];
250
- let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${KritzelMathHelper.average(b[0], c[0]).toFixed(2)},${KritzelMathHelper.average(b[1], c[1]).toFixed(2)} T`;
251
- for (let i = 2, max = len - 1; i < max; i++) {
252
- a = points[i];
253
- b = points[i + 1];
254
- result += `${KritzelMathHelper.average(a[0], b[0]).toFixed(2)},${KritzelMathHelper.average(a[1], b[1]).toFixed(2)} `;
255
- }
256
- if (closed) {
257
- result += 'Z';
258
- }
259
- return result;
260
- }
261
- }
262
- //# sourceMappingURL=path.class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path.class.js","sourceRoot":"","sources":["../../../src/classes/objects/path.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { getStroke } from 'perfect-freehand';\r\nimport { KritzelMathHelper } from '../../helpers/math.helper';\r\nimport { KritzelPathOptions } from '../../interfaces/path-options.interface';\r\nimport { KritzelBaseObject } from './base-object.class';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelPolygon } from '../../interfaces/polygon.interface';\r\nimport { KritzelGeometryHelper } from '../../helpers/geometry.helper';\r\nimport { KritzelPoint } from '../../interfaces/point.interface';\r\n\r\nexport class KritzelPath extends KritzelBaseObject<SVGElement> {\r\n override __class__: string = 'KritzelPath';\r\n\r\n points: number[][];\r\n d: string;\r\n stroke: string = 'none';\r\n strokeWidth: number;\r\n lineSlack: number = 0.5;\r\n fill: string;\r\n x: number = 0;\r\n y: number = 0;\r\n translateX: number;\r\n translateY: number;\r\n height: number = 0;\r\n width: number = 0;\r\n scale: number = 1;\r\n options: KritzelPathOptions | undefined;\r\n\r\n isVisible: boolean = true;\r\n isDebugInfoVisible: boolean = true;\r\n\r\n private _adjustedPoints?: number[][] = null;\r\n\r\n get viewBox(): string {\r\n return `${this.x} ${this.y} ${this.width} ${this.height}`;\r\n }\r\n\r\n constructor(config?: { points: number[][]; translateX?: number; translateY?: number; scale?: number; strokeWidth?: number; fill?: string; lineSlack?: number }) {\r\n super();\r\n this.options = config;\r\n this.points = config?.points ?? [];\r\n this.translateX = config?.translateX ?? 0;\r\n this.translateY = config?.translateY ?? 0;\r\n this.scale = config?.scale ?? 1;\r\n this.strokeWidth = config?.strokeWidth ?? 8;\r\n this.fill = config?.fill ?? '#000000';\r\n this.d = this.generateSvgPath();\r\n this.updateDimensions();\r\n }\r\n\r\n static override create(store: KritzelStore, options?: KritzelPathOptions): KritzelPath {\r\n const object = new KritzelPath();\r\n\r\n object._store = store;\r\n object.id = object.generateId();\r\n object.options = options;\r\n object.points = options?.points ?? [];\r\n object.translateX = options?.translateX ?? 0;\r\n object.translateY = options?.translateY ?? 0;\r\n object.scale = options?.scale ?? 1;\r\n object.strokeWidth = options?.strokeWidth ?? 8;\r\n object.fill = options?.fill ?? '#000000';\r\n object.zIndex = store.currentZIndex;\r\n object.d = object.generateSvgPath();\r\n object.updateDimensions();\r\n\r\n return object;\r\n }\r\n\r\n override resize(x: number | null, y: number | null, width: number, height: number): void {\r\n if (width <= 1 || height <= 1) {\r\n return;\r\n }\r\n\r\n const scaleX = width / this.width;\r\n const scaleY = height / this.height;\r\n\r\n this.width = width;\r\n this.height = height;\r\n\r\n this.points = this.points.map(([x, y]) => [x * scaleX, y * scaleY]);\r\n this.d = this.generateSvgPath();\r\n\r\n this.width = Math.max(...this.points.map(p => p[0])) - Math.min(...this.points.map(p => p[0])) + this.strokeWidth;\r\n this.height = Math.max(...this.points.map(p => p[1])) - Math.min(...this.points.map(p => p[1])) + this.strokeWidth;\r\n\r\n this.x = Math.min(...this.points.map(p => p[0])) - this.strokeWidth / 2;\r\n this.y = Math.min(...this.points.map(p => p[1])) - this.strokeWidth / 2;\r\n\r\n this.translateX = x;\r\n this.translateY = y;\r\n\r\n this._adjustedPoints = null;\r\n }\r\n\r\n override rotate(value: number): void {\r\n this.rotation = value;\r\n this._adjustedPoints = null;\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\r\n this._adjustedPoints = null;\r\n }\r\n\r\n override hitTest(x: number, y: number): boolean {\r\n const halfStroke = this.strokeWidth / this.scale / 2;\r\n\r\n if (this._adjustedPoints === null) {\r\n this._adjustedPoints = this.computeAdjustedPoints();\r\n }\r\n\r\n if (this._adjustedPoints.length === 1) {\r\n const p1 = this._adjustedPoints[0];\r\n const distance = this.pointToLineSegmentDistance(x, y, p1[0], p1[1], p1[0], p1[1]);\r\n return distance <= halfStroke;\r\n }\r\n\r\n for (let i = 0; i < this._adjustedPoints.length - 1; i++) {\r\n const p1 = this._adjustedPoints[i];\r\n const p2 = this._adjustedPoints[i + 1];\r\n\r\n const distance = this.pointToLineSegmentDistance(x, y, p1[0], p1[1], p2[0], p2[1]);\r\n\r\n if (distance <= halfStroke) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n override hitTestPolygon(polygon: KritzelPolygon): boolean {\r\n const halfStroke = this.strokeWidth / this.scale / 2;\r\n\r\n if (this._adjustedPoints === null) {\r\n this._adjustedPoints = this.computeAdjustedPoints();\r\n }\r\n\r\n const polyPoints: KritzelPoint[] = [\r\n { x: polygon.bottomLeft.x, y: polygon.bottomLeft.y },\r\n { x: polygon.bottomRight.x, y: polygon.bottomRight.y },\r\n { x: polygon.topRight.x, y: polygon.topRight.y },\r\n { x: polygon.topLeft.x, y: polygon.topLeft.y },\r\n ];\r\n\r\n for (const [px, py] of this._adjustedPoints) {\r\n if (KritzelGeometryHelper.isPointInPolygon({ x: px, y: py }, polyPoints)) {\r\n return true;\r\n }\r\n }\r\n\r\n for (const pt of polyPoints) {\r\n if (this.hitTest(pt.x, pt.y)) {\r\n return true;\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._adjustedPoints.length - 1; i++) {\r\n const p1 = { x: this._adjustedPoints[i][0], y: this._adjustedPoints[i][1] };\r\n const p2 = { x: this._adjustedPoints[i + 1][0], y: this._adjustedPoints[i + 1][1] };\r\n\r\n for (let j = 0; j < polyPoints.length; j++) {\r\n const q1 = polyPoints[j];\r\n const q2 = polyPoints[(j + 1) % polyPoints.length];\r\n\r\n if (KritzelGeometryHelper.intersectLines(p1, p2, q1, q2)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < this._adjustedPoints.length - 1; i++) {\r\n const p1 = this._adjustedPoints[i];\r\n const p2 = this._adjustedPoints[i + 1];\r\n\r\n for (let j = 0; j < polyPoints.length; j++) {\r\n const q1 = polyPoints[j];\r\n const q2 = polyPoints[(j + 1) % polyPoints.length];\r\n\r\n const d1 = this.pointToLineSegmentDistance(q1.x, q1.y, p1[0], p1[1], p2[0], p2[1]);\r\n const d2 = this.pointToLineSegmentDistance(q2.x, q2.y, p1[0], p1[1], p2[0], p2[1]);\r\n const d3 = this.pointToLineSegmentDistance(p1[0], p1[1], q1.x, q1.y, q2.x, q2.y);\r\n const d4 = this.pointToLineSegmentDistance(p2[0], p2[1], q1.x, q1.y, q2.x, q2.y);\r\n\r\n const minD = Math.min(d1, d2, d3, d4);\r\n if (minD <= halfStroke) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private computeAdjustedPoints(): number[][] {\r\n if (!this.points?.length) {\r\n return [];\r\n }\r\n\r\n const angle = this.rotation;\r\n const cos = Math.cos(angle);\r\n const sin = Math.sin(angle);\r\n\r\n const xs = this.points.map(p => p[0]);\r\n const ys = this.points.map(p => p[1]);\r\n const pivot = {\r\n x: (Math.min(...xs) + Math.max(...xs)) / 2,\r\n y: (Math.min(...ys) + Math.max(...ys)) / 2,\r\n };\r\n\r\n const { x: cx, y: cy } = pivot;\r\n\r\n const rotatedPoints = this.points.map(([x, y]) => {\r\n const dx = x - cx;\r\n const dy = y - cy;\r\n return [cx + dx * cos - dy * sin, cy + dx * sin + dy * cos];\r\n });\r\n\r\n return rotatedPoints.map(([px, py]) => [((Math.abs(px - this.x) / this.scale + this.translateX)), ((Math.abs(py - this.y) / this.scale + this.translateY))]);\r\n }\r\n\r\n private pointToLineSegmentDistance(x: number, y: number, x1: number, y1: number, x2: number, y2: number): number {\r\n const A = x - x1;\r\n const B = y - y1;\r\n const C = x2 - x1;\r\n const D = y2 - y1;\r\n\r\n const dot = A * C + B * D;\r\n const len_sq = C * C + D * D;\r\n let param = -1;\r\n if (len_sq !== 0) {\r\n // in case of 0 length line\r\n param = dot / len_sq;\r\n }\r\n\r\n let xx, yy;\r\n\r\n if (param < 0) {\r\n xx = x1;\r\n yy = y1;\r\n } else if (param > 1) {\r\n xx = x2;\r\n yy = y2;\r\n } else {\r\n xx = x1 + param * C;\r\n yy = y1 + param * D;\r\n }\r\n\r\n const dx = x - xx;\r\n const dy = y - yy;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n }\r\n\r\n private updateDimensions(): void {\r\n const rotatedPoints = this.points.map(([x, y]) => {\r\n const rotatedX = x * Math.cos(this.rotation) - y * Math.sin(this.rotation);\r\n const rotatedY = x * Math.sin(this.rotation) + y * Math.cos(this.rotation);\r\n return [rotatedX, rotatedY];\r\n });\r\n\r\n const minX = Math.min(...rotatedPoints.map(p => p[0] - this.strokeWidth / 2));\r\n const minY = Math.min(...rotatedPoints.map(p => p[1] - this.strokeWidth / 2));\r\n\r\n const maxX = Math.max(...rotatedPoints.map(p => p[0] + this.strokeWidth / 2));\r\n const maxY = Math.max(...rotatedPoints.map(p => p[1] + this.strokeWidth / 2));\r\n\r\n this.width = maxX - minX + this.lineSlack;\r\n this.height = maxY - minY + this.lineSlack;\r\n\r\n this.x = minX;\r\n this.y = minY;\r\n\r\n this.translateX = (this.x + this.translateX) / this.scale;\r\n this.translateY = (this.y + this.translateY) / this.scale;\r\n }\r\n\r\n private generateSvgPath(): string {\r\n const stroke = this.getStrokeFromPoints(this.points, this.strokeWidth);\r\n return this.getSvgPathFromStroke(stroke);\r\n }\r\n\r\n private getStrokeFromPoints(points: number[][], strokeWidth: number): number[][] {\r\n return getStroke(points, {\r\n size: strokeWidth,\r\n thinning: 0.5,\r\n smoothing: 0.5,\r\n streamline: 0.5,\r\n easing: t => t,\r\n simulatePressure: true,\r\n last: true,\r\n start: {\r\n cap: true,\r\n taper: 0,\r\n easing: t => t,\r\n },\r\n end: {\r\n cap: true,\r\n taper: 0,\r\n easing: t => t,\r\n },\r\n });\r\n }\r\n\r\n private getSvgPathFromStroke(points: number[][], closed = true) {\r\n const len = points.length;\r\n\r\n if (len < 4) {\r\n return ``;\r\n }\r\n\r\n let a = points[0];\r\n let b = points[1];\r\n const c = points[2];\r\n\r\n let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${KritzelMathHelper.average(b[0], c[0]).toFixed(\r\n 2,\r\n )},${KritzelMathHelper.average(b[1], c[1]).toFixed(2)} T`;\r\n\r\n for (let i = 2, max = len - 1; i < max; i++) {\r\n a = points[i];\r\n b = points[i + 1];\r\n result += `${KritzelMathHelper.average(a[0], b[0]).toFixed(2)},${KritzelMathHelper.average(a[1], b[1]).toFixed(2)} `;\r\n }\r\n\r\n if (closed) {\r\n result += 'Z';\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
@@ -1,22 +0,0 @@
1
- import { KritzelBaseObject } from "./base-object.class";
2
- export class KrtizelSelectionBox extends KritzelBaseObject {
3
- constructor() {
4
- super(...arguments);
5
- this.__class__ = 'KrtizelSelectionBox';
6
- this.objects = [];
7
- }
8
- static create(store) {
9
- const object = new KrtizelSelectionBox();
10
- object._store = store;
11
- object.id = object.generateId();
12
- object.scale = store.state.scale;
13
- object.zIndex = 99999;
14
- object.backgroundColor = 'var(--kritzel-selection-box-background-color, rgba(0, 122, 255, 0.2))';
15
- object.borderColor = 'var(--kritzel-selection-box-border-color, rgba(0, 122, 255, 0.5))';
16
- object.borderWidth = 2;
17
- object.height = 0;
18
- object.width = 0;
19
- return object;
20
- }
21
- }
22
- //# sourceMappingURL=selection-box.class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection-box.class.js","sourceRoot":"","sources":["../../../src/classes/objects/selection-box.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,mBAAoB,SAAQ,iBAA8B;IAAvE;;QACW,cAAS,GAAW,qBAAqB,CAAC;QAEnD,YAAO,GAA6B,EAAE,CAAC;IAiBzC,CAAC;IAfC,MAAM,CAAU,MAAM,CAAC,KAAmB;QACxC,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAEzC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,eAAe,GAAG,uEAAuE,CAAC;QACjG,MAAM,CAAC,WAAW,GAAG,mEAAmE,CAAC;QACzF,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAEjB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import { KritzelStore } from '../store.class';\r\nimport { KritzelBaseObject } from './base-object.class';\r\n\r\nexport class KrtizelSelectionBox extends KritzelBaseObject<HTMLElement> {\r\n override __class__: string = 'KrtizelSelectionBox';\r\n\r\n objects: KritzelBaseObject<any>[] = [];\r\n\r\n static override create(store: KritzelStore): KrtizelSelectionBox {\r\n const object = new KrtizelSelectionBox();\r\n\r\n object._store = store;\r\n object.id = object.generateId();\r\n object.scale = store.state.scale;\r\n object.zIndex = 99999;\r\n object.backgroundColor = 'var(--kritzel-selection-box-background-color, rgba(0, 122, 255, 0.2))';\r\n object.borderColor = 'var(--kritzel-selection-box-border-color, rgba(0, 122, 255, 0.5))';\r\n object.borderWidth = 2;\r\n object.height = 0;\r\n object.width = 0;\r\n\r\n return object;\r\n }\r\n}\r\n"]}
@@ -1,159 +0,0 @@
1
- import { ObjectHelper } from "../../helpers/object.helper";
2
- import { KritzelReviver } from "../reviver.class";
3
- import { KritzelBaseObject } from "./base-object.class";
4
- export class KritzelSelectionGroup extends KritzelBaseObject {
5
- constructor() {
6
- super(...arguments);
7
- this.__class__ = 'KritzelSelectionGroup';
8
- this.objects = [];
9
- this.unchangedObjects = [];
10
- }
11
- get length() {
12
- return this.objects.length;
13
- }
14
- static create(store) {
15
- const object = new KritzelSelectionGroup();
16
- object._store = store;
17
- object.id = object.generateId();
18
- object.scale = store.state.scale;
19
- object.zIndex = 99999;
20
- return object;
21
- }
22
- addOrRemove(object) {
23
- const index = this.objects.findIndex(obj => obj.id === object.id);
24
- if (index === -1) {
25
- this.objects.push(object);
26
- }
27
- else {
28
- this.objects.splice(index, 1);
29
- }
30
- this.unchangedObjects = ObjectHelper.clone(this.objects);
31
- this.refreshObjectDimensions();
32
- }
33
- deselectAllChildren() {
34
- this.objects.forEach(obj => (obj.isSelected = false));
35
- }
36
- updatePosition(x, y) {
37
- this.objects.forEach(obj => {
38
- const deltaX = obj.translateX - this.translateX;
39
- const deltaY = obj.translateY - this.translateY;
40
- obj.translateX = x + deltaX;
41
- obj.translateY = y + deltaY;
42
- this._store.state.objectsOctree.update(obj);
43
- });
44
- this.unchangedObjects.forEach(obj => {
45
- const deltaX = obj.translateX - this.translateX;
46
- const deltaY = obj.translateY - this.translateY;
47
- obj.translateX = x + deltaX;
48
- obj.translateY = y + deltaY;
49
- });
50
- this.translateX = x;
51
- this.translateY = y;
52
- this._store.state.objectsOctree.update(this);
53
- }
54
- move(startX, startY, endX, endY) {
55
- const deltaX = (startX - endX) / this._store.state.scale;
56
- const deltaY = (startY - endY) / this._store.state.scale;
57
- this.translateX += deltaX;
58
- this.translateY += deltaY;
59
- this._store.state.objectsOctree.update(this);
60
- this.objects.forEach(obj => {
61
- obj.move(startX, startY, endX, endY);
62
- this._store.state.objectsOctree.update(obj);
63
- });
64
- this.unchangedObjects.forEach(obj => {
65
- obj.translateX += deltaX;
66
- obj.translateY += deltaY;
67
- });
68
- }
69
- resize(x, y, width, height) {
70
- const widthScaleFactor = width / this.width;
71
- const heightScaleFactor = height / this.height;
72
- const deltaX = x - this.translateX;
73
- const deltaY = y - this.translateY;
74
- this.objects.forEach(child => {
75
- const updatedWidth = child.width * widthScaleFactor;
76
- const updatedHeight = child.height * heightScaleFactor;
77
- const updatedX = child.translateX + deltaX + (child.translateX - this.translateX) * (widthScaleFactor - 1);
78
- const updatedY = child.translateY + deltaY + (child.translateY - this.translateY) * (heightScaleFactor - 1);
79
- child.resize(updatedX, updatedY, updatedWidth, updatedHeight);
80
- this._store.state.objectsOctree.update(child);
81
- });
82
- this.refreshObjectDimensions();
83
- this.unchangedObjects = ObjectHelper.clone(this.objects);
84
- }
85
- rotate(value) {
86
- this.rotation = value;
87
- const centerX = this.translateX + this.totalWidth / 2 / this.scale;
88
- const centerY = this.translateY + this.totalHeight / 2 / this.scale;
89
- const angle = value;
90
- const cos = Math.cos(angle);
91
- const sin = Math.sin(angle);
92
- this.objects.forEach(child => {
93
- const unchangedChild = this.getUnchangedObject(child.id);
94
- const offsetX = this.getOffsetXToCenter(unchangedChild);
95
- const offsetY = this.getOffsetYToCenter(unchangedChild);
96
- const rotatedX = cos * offsetX - sin * offsetY;
97
- const rotatedY = sin * offsetX + cos * offsetY;
98
- child.translateX = centerX + rotatedX - child.totalWidth / 2 / child.scale;
99
- child.translateY = centerY + rotatedY - child.totalHeight / 2 / child.scale;
100
- child.rotate(this.objects.length === 1 ? value : value + unchangedChild.rotation);
101
- this._store.state.objectsOctree.update(child);
102
- });
103
- }
104
- copy() {
105
- const selectionGroup = KritzelSelectionGroup.create(this._store);
106
- let currentZIndex = this._store.currentZIndex;
107
- this.objects.forEach(obj => {
108
- const copiedObject = obj.copy();
109
- copiedObject.zIndex = currentZIndex;
110
- selectionGroup.addOrRemove(copiedObject);
111
- currentZIndex++;
112
- });
113
- selectionGroup.unchangedObjects = ObjectHelper.clone(selectionGroup.objects);
114
- if (this.objects.length === 1) {
115
- selectionGroup.rotation = this.objects[0].rotation;
116
- }
117
- return selectionGroup;
118
- }
119
- refreshObjectDimensions() {
120
- if (this.objects.length === 1) {
121
- const obj = this.objects[0];
122
- this.minX = obj.boundingBox.x / this.scale;
123
- this.maxX = obj.boundingBox.x / this.scale + obj.boundingBox.width;
124
- this.minY = obj.boundingBox.y / this.scale;
125
- this.maxY = obj.boundingBox.y / this.scale + obj.boundingBox.height;
126
- this.translateX = (this.minX - this.padding) * this.scale;
127
- this.translateY = (this.minY - this.padding) * this.scale;
128
- this.width = (this.maxX - this.minX - this.padding) * this.scale;
129
- this.height = (this.maxY - this.minY - this.padding) * this.scale;
130
- }
131
- else {
132
- this.minX = Math.min(...this.objects.map(obj => obj.minXRotated));
133
- this.maxX = Math.max(...this.objects.map(obj => obj.maxXRotated));
134
- this.minY = Math.min(...this.objects.map(obj => obj.minYRotated));
135
- this.maxY = Math.max(...this.objects.map(obj => obj.maxYRotated));
136
- this.translateX = this.minX - this.padding;
137
- this.translateY = this.minY - this.padding;
138
- this.width = (this.maxX - this.minX - this.padding) * this.scale;
139
- this.height = (this.maxY - this.minY - this.padding) * this.scale;
140
- }
141
- this._store.state.objectsOctree.update(this);
142
- }
143
- getOffsetXToCenter(obj) {
144
- const objCenterX = obj.translateX + obj.totalWidth / obj.scale / 2;
145
- const groupCenterX = this.translateX + this.totalWidth / this.scale / 2;
146
- return objCenterX - groupCenterX;
147
- }
148
- getOffsetYToCenter(obj) {
149
- const objCenterY = obj.translateY + obj.totalHeight / obj.scale / 2;
150
- const groupCenterY = this.translateY + this.totalHeight / this.scale / 2;
151
- return objCenterY - groupCenterY;
152
- }
153
- getUnchangedObject(objectId) {
154
- const obj = this.unchangedObjects.find(obj => obj.id === objectId);
155
- const reviver = new KritzelReviver(this._store);
156
- return reviver.revive(obj);
157
- }
158
- }
159
- //# sourceMappingURL=selection-group.class.js.map
@@ -1 +0,0 @@
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 get length(): number {\r\n return this.objects.length;\r\n }\r\n\r\n static override create(store: KritzelStore): KritzelSelectionGroup {\r\n const object = new KritzelSelectionGroup();\r\n\r\n object._store = store;\r\n object.id = object.generateId();\r\n object.scale = store.state.scale;\r\n object.zIndex = 99999;\r\n\r\n return object;\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.isSelected = 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.move(startX, startY, endX, endY);\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.rotate(this.objects.length === 1 ? value : value + unchangedChild.rotation);\r\n this._store.state.objectsOctree.update(child);\r\n });\r\n }\r\n\r\n override copy(): KritzelBaseObject<HTMLElement> {\r\n const selectionGroup = KritzelSelectionGroup.create(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"]}