kritzel-react 0.1.32 → 0.1.34

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 (210) hide show
  1. package/dist/types/components/stencil-generated/components.d.ts +1 -1
  2. package/package.json +2 -2
  3. package/dist/kritzel-react/lib/components/stencil-generated/components.js +0 -122
  4. package/dist/kritzel-react/lib/index.js +0 -2
  5. package/dist/kritzel-stencil/src/classes/core/core.class.js +0 -797
  6. package/dist/kritzel-stencil/src/classes/core/reviver.class.js +0 -97
  7. package/dist/kritzel-stencil/src/classes/core/store.class.js +0 -153
  8. package/dist/kritzel-stencil/src/classes/core/viewport.class.js +0 -311
  9. package/dist/kritzel-stencil/src/classes/core/workspace.class.js +0 -34
  10. package/dist/kritzel-stencil/src/classes/handlers/base.handler.js +0 -6
  11. package/dist/kritzel-stencil/src/classes/handlers/context-menu.handler.js +0 -63
  12. package/dist/kritzel-stencil/src/classes/handlers/hover.handler.js +0 -18
  13. package/dist/kritzel-stencil/src/classes/handlers/key.handler.js +0 -76
  14. package/dist/kritzel-stencil/src/classes/handlers/line-handle.handler.js +0 -382
  15. package/dist/kritzel-stencil/src/classes/handlers/move.handler.js +0 -213
  16. package/dist/kritzel-stencil/src/classes/handlers/resize.handler.js +0 -205
  17. package/dist/kritzel-stencil/src/classes/handlers/rotation.handler.js +0 -117
  18. package/dist/kritzel-stencil/src/classes/handlers/selection.handler.js +0 -313
  19. package/dist/kritzel-stencil/src/classes/managers/anchor.manager.js +0 -1056
  20. package/dist/kritzel-stencil/src/classes/managers/cursor.manager.js +0 -117
  21. package/dist/kritzel-stencil/src/classes/managers/theme.manager.js +0 -103
  22. package/dist/kritzel-stencil/src/classes/objects/base-object.class.js +0 -249
  23. package/dist/kritzel-stencil/src/classes/objects/custom-element.class.js +0 -60
  24. package/dist/kritzel-stencil/src/classes/objects/group.class.js +0 -407
  25. package/dist/kritzel-stencil/src/classes/objects/image.class.js +0 -55
  26. package/dist/kritzel-stencil/src/classes/objects/line.class.js +0 -608
  27. package/dist/kritzel-stencil/src/classes/objects/path.class.js +0 -401
  28. package/dist/kritzel-stencil/src/classes/objects/selection-box.class.js +0 -21
  29. package/dist/kritzel-stencil/src/classes/objects/selection-group.class.js +0 -409
  30. package/dist/kritzel-stencil/src/classes/objects/shape.class.js +0 -412
  31. package/dist/kritzel-stencil/src/classes/objects/text.class.js +0 -292
  32. package/dist/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.js +0 -101
  33. package/dist/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.js +0 -241
  34. package/dist/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.js +0 -43
  35. package/dist/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.js +0 -98
  36. package/dist/kritzel-stencil/src/classes/registries/icon-registry.class.js +0 -66
  37. package/dist/kritzel-stencil/src/classes/registries/tool.registry.js +0 -21
  38. package/dist/kritzel-stencil/src/classes/structures/app-state-map.structure.js +0 -212
  39. package/dist/kritzel-stencil/src/classes/structures/object-map.structure.js +0 -414
  40. package/dist/kritzel-stencil/src/classes/structures/quadtree.structure.js +0 -151
  41. package/dist/kritzel-stencil/src/classes/tools/base-tool.class.js +0 -36
  42. package/dist/kritzel-stencil/src/classes/tools/brush-tool.class.js +0 -161
  43. package/dist/kritzel-stencil/src/classes/tools/eraser-tool.class.js +0 -85
  44. package/dist/kritzel-stencil/src/classes/tools/image-tool.class.js +0 -83
  45. package/dist/kritzel-stencil/src/classes/tools/line-tool.class.js +0 -187
  46. package/dist/kritzel-stencil/src/classes/tools/selection-tool.class.js +0 -429
  47. package/dist/kritzel-stencil/src/classes/tools/shape-tool.class.js +0 -196
  48. package/dist/kritzel-stencil/src/classes/tools/text-tool.class.js +0 -100
  49. package/dist/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.js +0 -1343
  50. package/dist/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.js +0 -46
  51. package/dist/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.js +0 -312
  52. package/dist/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.js +0 -60
  53. package/dist/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.js +0 -105
  54. package/dist/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +0 -53
  55. package/dist/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.js +0 -137
  56. package/dist/kritzel-stencil/src/configs/default-brush-tool.config.js +0 -9
  57. package/dist/kritzel-stencil/src/configs/default-engine-config.js +0 -63
  58. package/dist/kritzel-stencil/src/configs/default-line-tool.config.js +0 -9
  59. package/dist/kritzel-stencil/src/configs/default-sync.config.js +0 -9
  60. package/dist/kritzel-stencil/src/configs/default-text-tool.config.js +0 -7
  61. package/dist/kritzel-stencil/src/constants/color-palette.constants.js +0 -37
  62. package/dist/kritzel-stencil/src/constants/engine.constants.js +0 -2
  63. package/dist/kritzel-stencil/src/enums/event-button.enum.js +0 -6
  64. package/dist/kritzel-stencil/src/enums/handle-type.enum.js +0 -7
  65. package/dist/kritzel-stencil/src/enums/shape-type.enum.js +0 -6
  66. package/dist/kritzel-stencil/src/helpers/class.helper.js +0 -5
  67. package/dist/kritzel-stencil/src/helpers/color.helper.js +0 -106
  68. package/dist/kritzel-stencil/src/helpers/cursor.helper.js +0 -57
  69. package/dist/kritzel-stencil/src/helpers/devices.helper.js +0 -28
  70. package/dist/kritzel-stencil/src/helpers/event.helper.js +0 -58
  71. package/dist/kritzel-stencil/src/helpers/geometry.helper.js +0 -149
  72. package/dist/kritzel-stencil/src/helpers/keyboard.helper.js +0 -51
  73. package/dist/kritzel-stencil/src/helpers/math.helper.js +0 -5
  74. package/dist/kritzel-stencil/src/helpers/object.helper.js +0 -11
  75. package/dist/kritzel-stencil/src/helpers/theme.helper.js +0 -69
  76. package/dist/kritzel-stencil/src/index.js +0 -41
  77. package/dist/kritzel-stencil/src/interfaces/anchor.interface.js +0 -1
  78. package/dist/kritzel-stencil/src/interfaces/arrow-head.interface.js +0 -1
  79. package/dist/kritzel-stencil/src/interfaces/bounding-box.interface.js +0 -1
  80. package/dist/kritzel-stencil/src/interfaces/clonable.interface.js +0 -1
  81. package/dist/kritzel-stencil/src/interfaces/context-menu-item.interface.js +0 -1
  82. package/dist/kritzel-stencil/src/interfaces/debug-info.interface.js +0 -1
  83. package/dist/kritzel-stencil/src/interfaces/dialog.interface.js +0 -1
  84. package/dist/kritzel-stencil/src/interfaces/displayable-shortcut.interface.js +0 -1
  85. package/dist/kritzel-stencil/src/interfaces/engine-state.interface.js +0 -1
  86. package/dist/kritzel-stencil/src/interfaces/line-options.interface.js +0 -1
  87. package/dist/kritzel-stencil/src/interfaces/master-detail.interface.js +0 -1
  88. package/dist/kritzel-stencil/src/interfaces/menu-item.interface.js +0 -1
  89. package/dist/kritzel-stencil/src/interfaces/object.interface.js +0 -1
  90. package/dist/kritzel-stencil/src/interfaces/path-options.interface.js +0 -1
  91. package/dist/kritzel-stencil/src/interfaces/point.interface.js +0 -1
  92. package/dist/kritzel-stencil/src/interfaces/polygon.interface.js +0 -1
  93. package/dist/kritzel-stencil/src/interfaces/serializable.interface.js +0 -1
  94. package/dist/kritzel-stencil/src/interfaces/settings.interface.js +0 -1
  95. package/dist/kritzel-stencil/src/interfaces/shortcut.interface.js +0 -1
  96. package/dist/kritzel-stencil/src/interfaces/sync-config.interface.js +0 -1
  97. package/dist/kritzel-stencil/src/interfaces/sync-provider.interface.js +0 -1
  98. package/dist/kritzel-stencil/src/interfaces/theme.interface.js +0 -1
  99. package/dist/kritzel-stencil/src/interfaces/tool-config.interface.js +0 -1
  100. package/dist/kritzel-stencil/src/interfaces/tool.interface.js +0 -1
  101. package/dist/kritzel-stencil/src/interfaces/toolbar-control.interface.js +0 -1
  102. package/dist/kritzel-stencil/src/interfaces/undo-state.interface.js +0 -1
  103. package/dist/kritzel-stencil/src/themes/dark-theme.js +0 -198
  104. package/dist/kritzel-stencil/src/themes/light-theme.js +0 -199
  105. package/dist/kritzel-stencil/src/types/shortcut.type.js +0 -1
  106. package/dist/kritzel-stencil/src/types/state.types.js +0 -1
  107. package/dist/types/kritzel-react/lib/components/stencil-generated/components.d.ts +0 -74
  108. package/dist/types/kritzel-react/lib/index.d.ts +0 -2
  109. package/dist/types/kritzel-stencil/src/classes/core/core.class.d.ts +0 -101
  110. package/dist/types/kritzel-stencil/src/classes/core/reviver.class.d.ts +0 -6
  111. package/dist/types/kritzel-stencil/src/classes/core/store.class.d.ts +0 -53
  112. package/dist/types/kritzel-stencil/src/classes/core/viewport.class.d.ts +0 -48
  113. package/dist/types/kritzel-stencil/src/classes/core/workspace.class.d.ts +0 -24
  114. package/dist/types/kritzel-stencil/src/classes/handlers/base.handler.d.ts +0 -5
  115. package/dist/types/kritzel-stencil/src/classes/handlers/context-menu.handler.d.ts +0 -8
  116. package/dist/types/kritzel-stencil/src/classes/handlers/hover.handler.d.ts +0 -6
  117. package/dist/types/kritzel-stencil/src/classes/handlers/key.handler.d.ts +0 -11
  118. package/dist/types/kritzel-stencil/src/classes/handlers/line-handle.handler.d.ts +0 -34
  119. package/dist/types/kritzel-stencil/src/classes/handlers/move.handler.d.ts +0 -29
  120. package/dist/types/kritzel-stencil/src/classes/handlers/resize.handler.d.ts +0 -24
  121. package/dist/types/kritzel-stencil/src/classes/handlers/rotation.handler.d.ts +0 -12
  122. package/dist/types/kritzel-stencil/src/classes/handlers/selection.handler.d.ts +0 -27
  123. package/dist/types/kritzel-stencil/src/classes/managers/anchor.manager.d.ts +0 -180
  124. package/dist/types/kritzel-stencil/src/classes/managers/cursor.manager.d.ts +0 -43
  125. package/dist/types/kritzel-stencil/src/classes/managers/theme.manager.d.ts +0 -56
  126. package/dist/types/kritzel-stencil/src/classes/objects/base-object.class.d.ts +0 -76
  127. package/dist/types/kritzel-stencil/src/classes/objects/custom-element.class.d.ts +0 -26
  128. package/dist/types/kritzel-stencil/src/classes/objects/group.class.d.ts +0 -97
  129. package/dist/types/kritzel-stencil/src/classes/objects/image.class.d.ts +0 -17
  130. package/dist/types/kritzel-stencil/src/classes/objects/line.class.d.ts +0 -101
  131. package/dist/types/kritzel-stencil/src/classes/objects/path.class.d.ts +0 -62
  132. package/dist/types/kritzel-stencil/src/classes/objects/selection-box.class.d.ts +0 -6
  133. package/dist/types/kritzel-stencil/src/classes/objects/selection-group.class.d.ts +0 -67
  134. package/dist/types/kritzel-stencil/src/classes/objects/shape.class.d.ts +0 -124
  135. package/dist/types/kritzel-stencil/src/classes/objects/text.class.d.ts +0 -56
  136. package/dist/types/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.d.ts +0 -18
  137. package/dist/types/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.d.ts +0 -120
  138. package/dist/types/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.d.ts +0 -22
  139. package/dist/types/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.d.ts +0 -52
  140. package/dist/types/kritzel-stencil/src/classes/registries/icon-registry.class.d.ts +0 -9
  141. package/dist/types/kritzel-stencil/src/classes/registries/tool.registry.d.ts +0 -8
  142. package/dist/types/kritzel-stencil/src/classes/structures/app-state-map.structure.d.ts +0 -31
  143. package/dist/types/kritzel-stencil/src/classes/structures/object-map.structure.d.ts +0 -63
  144. package/dist/types/kritzel-stencil/src/classes/structures/quadtree.structure.d.ts +0 -36
  145. package/dist/types/kritzel-stencil/src/classes/tools/base-tool.class.d.ts +0 -20
  146. package/dist/types/kritzel-stencil/src/classes/tools/brush-tool.class.d.ts +0 -14
  147. package/dist/types/kritzel-stencil/src/classes/tools/eraser-tool.class.d.ts +0 -9
  148. package/dist/types/kritzel-stencil/src/classes/tools/image-tool.class.d.ts +0 -15
  149. package/dist/types/kritzel-stencil/src/classes/tools/line-tool.class.d.ts +0 -19
  150. package/dist/types/kritzel-stencil/src/classes/tools/selection-tool.class.d.ts +0 -54
  151. package/dist/types/kritzel-stencil/src/classes/tools/shape-tool.class.d.ts +0 -39
  152. package/dist/types/kritzel-stencil/src/classes/tools/text-tool.class.d.ts +0 -13
  153. package/dist/types/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.d.ts +0 -111
  154. package/dist/types/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.d.ts +0 -11
  155. package/dist/types/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +0 -46
  156. package/dist/types/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.d.ts +0 -13
  157. package/dist/types/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.d.ts +0 -21
  158. package/dist/types/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.d.ts +0 -10
  159. package/dist/types/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +0 -21
  160. package/dist/types/kritzel-stencil/src/configs/default-brush-tool.config.d.ts +0 -2
  161. package/dist/types/kritzel-stencil/src/configs/default-engine-config.d.ts +0 -2
  162. package/dist/types/kritzel-stencil/src/configs/default-line-tool.config.d.ts +0 -2
  163. package/dist/types/kritzel-stencil/src/configs/default-sync.config.d.ts +0 -5
  164. package/dist/types/kritzel-stencil/src/configs/default-text-tool.config.d.ts +0 -2
  165. package/dist/types/kritzel-stencil/src/constants/color-palette.constants.d.ts +0 -29
  166. package/dist/types/kritzel-stencil/src/constants/engine.constants.d.ts +0 -2
  167. package/dist/types/kritzel-stencil/src/enums/event-button.enum.d.ts +0 -5
  168. package/dist/types/kritzel-stencil/src/enums/handle-type.enum.d.ts +0 -6
  169. package/dist/types/kritzel-stencil/src/enums/shape-type.enum.d.ts +0 -5
  170. package/dist/types/kritzel-stencil/src/helpers/class.helper.d.ts +0 -3
  171. package/dist/types/kritzel-stencil/src/helpers/color.helper.d.ts +0 -33
  172. package/dist/types/kritzel-stencil/src/helpers/cursor.helper.d.ts +0 -22
  173. package/dist/types/kritzel-stencil/src/helpers/devices.helper.d.ts +0 -8
  174. package/dist/types/kritzel-stencil/src/helpers/event.helper.d.ts +0 -6
  175. package/dist/types/kritzel-stencil/src/helpers/geometry.helper.d.ts +0 -38
  176. package/dist/types/kritzel-stencil/src/helpers/keyboard.helper.d.ts +0 -6
  177. package/dist/types/kritzel-stencil/src/helpers/math.helper.d.ts +0 -3
  178. package/dist/types/kritzel-stencil/src/helpers/object.helper.d.ts +0 -4
  179. package/dist/types/kritzel-stencil/src/helpers/theme.helper.d.ts +0 -41
  180. package/dist/types/kritzel-stencil/src/index.d.ts +0 -42
  181. package/dist/types/kritzel-stencil/src/interfaces/anchor.interface.d.ts +0 -137
  182. package/dist/types/kritzel-stencil/src/interfaces/arrow-head.interface.d.ts +0 -27
  183. package/dist/types/kritzel-stencil/src/interfaces/bounding-box.interface.d.ts +0 -8
  184. package/dist/types/kritzel-stencil/src/interfaces/clonable.interface.d.ts +0 -3
  185. package/dist/types/kritzel-stencil/src/interfaces/context-menu-item.interface.d.ts +0 -17
  186. package/dist/types/kritzel-stencil/src/interfaces/debug-info.interface.d.ts +0 -4
  187. package/dist/types/kritzel-stencil/src/interfaces/dialog.interface.d.ts +0 -4
  188. package/dist/types/kritzel-stencil/src/interfaces/displayable-shortcut.interface.d.ts +0 -5
  189. package/dist/types/kritzel-stencil/src/interfaces/engine-state.interface.d.ts +0 -73
  190. package/dist/types/kritzel-stencil/src/interfaces/line-options.interface.d.ts +0 -23
  191. package/dist/types/kritzel-stencil/src/interfaces/master-detail.interface.d.ts +0 -14
  192. package/dist/types/kritzel-stencil/src/interfaces/menu-item.interface.d.ts +0 -24
  193. package/dist/types/kritzel-stencil/src/interfaces/object.interface.d.ts +0 -53
  194. package/dist/types/kritzel-stencil/src/interfaces/path-options.interface.d.ts +0 -11
  195. package/dist/types/kritzel-stencil/src/interfaces/point.interface.d.ts +0 -4
  196. package/dist/types/kritzel-stencil/src/interfaces/polygon.interface.d.ts +0 -7
  197. package/dist/types/kritzel-stencil/src/interfaces/serializable.interface.d.ts +0 -5
  198. package/dist/types/kritzel-stencil/src/interfaces/settings.interface.d.ts +0 -11
  199. package/dist/types/kritzel-stencil/src/interfaces/shortcut.interface.d.ts +0 -10
  200. package/dist/types/kritzel-stencil/src/interfaces/sync-config.interface.d.ts +0 -22
  201. package/dist/types/kritzel-stencil/src/interfaces/sync-provider.interface.d.ts +0 -29
  202. package/dist/types/kritzel-stencil/src/interfaces/theme.interface.d.ts +0 -330
  203. package/dist/types/kritzel-stencil/src/interfaces/tool-config.interface.d.ts +0 -26
  204. package/dist/types/kritzel-stencil/src/interfaces/tool.interface.d.ts +0 -7
  205. package/dist/types/kritzel-stencil/src/interfaces/toolbar-control.interface.d.ts +0 -58
  206. package/dist/types/kritzel-stencil/src/interfaces/undo-state.interface.d.ts +0 -6
  207. package/dist/types/kritzel-stencil/src/themes/dark-theme.d.ts +0 -5
  208. package/dist/types/kritzel-stencil/src/themes/light-theme.d.ts +0 -5
  209. package/dist/types/kritzel-stencil/src/types/shortcut.type.d.ts +0 -1
  210. package/dist/types/kritzel-stencil/src/types/state.types.d.ts +0 -3
@@ -1,161 +0,0 @@
1
- import { KritzelEventHelper } from '../../helpers/event.helper';
2
- import { KritzelPath } from '../objects/path.class';
3
- import { KritzelBaseTool } from './base-tool.class';
4
- import { DEFAULT_COLOR_PALETTE } from '../../constants/color-palette.constants';
5
- export class KritzelBrushTool extends KritzelBaseTool {
6
- constructor(core) {
7
- super(core);
8
- this.color = DEFAULT_COLOR_PALETTE[0];
9
- this.size = 6;
10
- this.opacity = 1;
11
- this.palette = [...DEFAULT_COLOR_PALETTE];
12
- this._currentPathId = null;
13
- }
14
- handlePointerDown(event) {
15
- if (event.cancelable) {
16
- event.preventDefault();
17
- }
18
- if (event.pointerType === 'mouse') {
19
- if (KritzelEventHelper.isLeftClick(event)) {
20
- this._core.store.state.isDrawing = true;
21
- const viewportScale = this._core.store.state.scale;
22
- const lockScale = this._core.store.state.lockDrawingScale;
23
- const divider = lockScale ? viewportScale : 1;
24
- const x = (event.clientX - this._core.store.offsetX) / divider;
25
- const y = (event.clientY - this._core.store.offsetY) / divider;
26
- const path = KritzelPath.create(this._core, {
27
- points: [[x, y]],
28
- translateX: -this._core.store.state.translateX / divider,
29
- translateY: -this._core.store.state.translateY / divider,
30
- scale: lockScale ? 1 : viewportScale,
31
- fill: this.color,
32
- strokeWidth: this.size,
33
- opacity: this.opacity,
34
- });
35
- path.isCompleted = false;
36
- this._currentPathId = path.id;
37
- this._core.store.state.objects.insert(path);
38
- }
39
- }
40
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
41
- const activePointers = Array.from(this._core.store.state.pointers.values());
42
- if (activePointers.length === 1) {
43
- const viewportScale = this._core.store.state.scale;
44
- const lockScale = this._core.store.state.lockDrawingScale;
45
- const divider = lockScale ? viewportScale : 1;
46
- const x = Math.round((activePointers[0].clientX - this._core.store.offsetX) / divider);
47
- const y = Math.round((activePointers[0].clientY - this._core.store.offsetY) / divider);
48
- this._core.store.state.isDrawing = true;
49
- const path = KritzelPath.create(this._core, {
50
- points: [[x, y]],
51
- translateX: -this._core.store.state.translateX / divider,
52
- translateY: -this._core.store.state.translateY / divider,
53
- scale: lockScale ? 1 : viewportScale,
54
- fill: this.color,
55
- strokeWidth: this.size,
56
- opacity: this.opacity,
57
- });
58
- path.isCompleted = false;
59
- this._currentPathId = path.id;
60
- this._core.store.state.objects.insert(path);
61
- }
62
- }
63
- }
64
- handlePointerMove(event) {
65
- if (event.cancelable) {
66
- event.preventDefault();
67
- }
68
- if (event.pointerType === 'mouse') {
69
- if (this._core.store.state.isDrawing && this._currentPathId) {
70
- const matchingObjects = this._core.store.state.objects.filter(o => o.id === this._currentPathId);
71
- const currentPath = matchingObjects.length > 0 ? matchingObjects[0] : null;
72
- if (currentPath) {
73
- const viewportScale = this._core.store.state.scale;
74
- const lockScale = this._core.store.state.lockDrawingScale;
75
- const divider = lockScale ? viewportScale : 1;
76
- const x = (event.clientX - this._core.store.offsetX) / divider;
77
- const y = (event.clientY - this._core.store.offsetY) / divider;
78
- const updatedPath = KritzelPath.create(this._core, {
79
- points: [...currentPath.points, [x, y]],
80
- translateX: -this._core.store.state.translateX / divider,
81
- translateY: -this._core.store.state.translateY / divider,
82
- scale: lockScale ? 1 : viewportScale,
83
- fill: this.color,
84
- strokeWidth: this.size,
85
- opacity: this.opacity,
86
- });
87
- updatedPath.id = currentPath.id;
88
- updatedPath.workspaceId = currentPath.workspaceId;
89
- updatedPath.zIndex = currentPath.zIndex;
90
- updatedPath.isCompleted = false;
91
- this._core.store.state.objects.update(updatedPath);
92
- }
93
- }
94
- }
95
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
96
- const activePointers = Array.from(this._core.store.state.pointers.values());
97
- if (activePointers.length === 1) {
98
- if (this._currentPathId) {
99
- const matchingObjects = this._core.store.state.objects.filter(o => o.id === this._currentPathId);
100
- const currentPath = matchingObjects.length > 0 ? matchingObjects[0] : null;
101
- if (currentPath) {
102
- const viewportScale = this._core.store.state.scale;
103
- const lockScale = this._core.store.state.lockDrawingScale;
104
- const divider = lockScale ? viewportScale : 1;
105
- const x = Math.round((activePointers[0].clientX - this._core.store.offsetX) / divider);
106
- const y = Math.round((activePointers[0].clientY - this._core.store.offsetY) / divider);
107
- const updatedPath = KritzelPath.create(this._core, {
108
- points: [...currentPath.points, [x, y]],
109
- translateX: -this._core.store.state.translateX / divider,
110
- translateY: -this._core.store.state.translateY / divider,
111
- scale: lockScale ? 1 : viewportScale,
112
- fill: this.color,
113
- strokeWidth: this.size,
114
- opacity: this.opacity,
115
- });
116
- updatedPath.id = currentPath.id;
117
- updatedPath.workspaceId = currentPath.workspaceId;
118
- updatedPath.zIndex = currentPath.zIndex;
119
- updatedPath.isCompleted = false;
120
- this._core.store.state.objects.update(updatedPath);
121
- }
122
- }
123
- }
124
- }
125
- }
126
- handlePointerUp(event) {
127
- if (event.cancelable) {
128
- event.preventDefault();
129
- }
130
- if (event.pointerType === 'mouse') {
131
- if (this._core.store.state.isDrawing) {
132
- this._core.store.state.isDrawing = false;
133
- if (this._currentPathId) {
134
- const matchingObjects = this._core.store.state.objects.filter(o => o.id === this._currentPathId);
135
- const currentPath = matchingObjects.length > 0 ? matchingObjects[0] : null;
136
- if (currentPath) {
137
- currentPath.isCompleted = true;
138
- this._core.store.state.objects.update(currentPath);
139
- this._core.engine.emitObjectsChange();
140
- }
141
- this._currentPathId = null;
142
- }
143
- }
144
- }
145
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
146
- if (this._core.store.state.isDrawing) {
147
- this._core.store.state.isDrawing = false;
148
- if (this._currentPathId) {
149
- const matchingObjects = this._core.store.state.objects.filter(o => o.id === this._currentPathId);
150
- const currentPath = matchingObjects.length > 0 ? matchingObjects[0] : null;
151
- if (currentPath) {
152
- currentPath.isCompleted = true;
153
- this._core.store.state.objects.update(currentPath);
154
- this._core.engine.emitObjectsChange();
155
- }
156
- this._currentPathId = null;
157
- }
158
- }
159
- }
160
- }
161
- }
@@ -1,85 +0,0 @@
1
- import { KritzelEventHelper } from '../../helpers/event.helper';
2
- import { KritzelBaseTool } from './base-tool.class';
3
- export class KritzelEraserTool extends KritzelBaseTool {
4
- constructor(core) {
5
- super(core);
6
- this.touchStartTimeout = null;
7
- }
8
- handlePointerDown(event) {
9
- if (event.pointerType === 'mouse') {
10
- if (KritzelEventHelper.isLeftClick(event)) {
11
- this._core.store.state.isErasing = true;
12
- }
13
- }
14
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
15
- this.touchStartTimeout = setTimeout(() => {
16
- if (this._core.store.state.pointers.size === 1 && !this._core.store.state.isScaling) {
17
- this._core.store.state.isErasing = true;
18
- }
19
- }, 80);
20
- }
21
- }
22
- handlePointerMove(event) {
23
- var _a;
24
- if (event.pointerType === 'mouse') {
25
- if (this._core.store.state.isErasing) {
26
- const selectedObjects = this._core.getObjectsFromPointerEvent(event, '.object');
27
- if (selectedObjects.length === 0)
28
- return;
29
- const x = this._core.store.state.pointerX;
30
- const y = this._core.store.state.pointerY;
31
- selectedObjects.forEach(selectedObject => {
32
- selectedObject.markedForRemoval = selectedObject.hitTest(x, y);
33
- });
34
- this._core.rerender();
35
- }
36
- }
37
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
38
- if (this._core.store.state.pointers.size === 1 && this._core.store.state.isErasing) {
39
- const shadowRoot = (_a = this._core.store.state.host) === null || _a === void 0 ? void 0 : _a.shadowRoot;
40
- if (!shadowRoot)
41
- return;
42
- const selectedObjects = this._core.getObjectsFromPointerEvent(event, '.object');
43
- if (selectedObjects.length === 0)
44
- return;
45
- const x = this._core.store.state.pointerX;
46
- const y = this._core.store.state.pointerY;
47
- selectedObjects.forEach(selectedObject => {
48
- selectedObject.markedForRemoval = selectedObject.hitTest(x, y);
49
- });
50
- this._core.rerender();
51
- }
52
- }
53
- }
54
- handlePointerUp(event) {
55
- if (event.pointerType === 'mouse') {
56
- if (this._core.store.state.isErasing) {
57
- const objectsToRemove = this._core.store.allObjects.filter(object => object.markedForRemoval);
58
- objectsToRemove.forEach(object => {
59
- object.markedForRemoval = false;
60
- this._core.removeObject(object);
61
- });
62
- if (objectsToRemove.length > 0) {
63
- this._core.rerender();
64
- }
65
- this._core.store.state.isErasing = false;
66
- this._core.engine.emitObjectsChange();
67
- }
68
- }
69
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
70
- clearTimeout(this.touchStartTimeout);
71
- if (this._core.store.state.isErasing) {
72
- const objectsToRemove = this._core.store.allObjects.filter(object => object.markedForRemoval);
73
- objectsToRemove.forEach(object => {
74
- object.markedForRemoval = false;
75
- this._core.removeObject(object);
76
- });
77
- if (objectsToRemove.length > 0) {
78
- this._core.rerender();
79
- }
80
- this._core.store.state.isErasing = false;
81
- this._core.engine.emitObjectsChange();
82
- }
83
- }
84
- }
85
- }
@@ -1,83 +0,0 @@
1
- import { KritzelImage } from '../objects/image.class';
2
- import { KritzelBaseTool } from './base-tool.class';
3
- import imageCompression from 'browser-image-compression';
4
- import { KritzelToolRegistry } from '../registries/tool.registry';
5
- export class KritzelImageTool extends KritzelBaseTool {
6
- constructor(core) {
7
- super(core);
8
- this.fileInput = null;
9
- this.maxCompressionSize = 300;
10
- this.setupFileInput();
11
- }
12
- onActivate() {
13
- this.openFilePicker();
14
- }
15
- openFilePicker() {
16
- if (this._core.store.isDisabled) {
17
- return;
18
- }
19
- this.fileInput.click();
20
- }
21
- setupFileInput() {
22
- this.fileInput = document.createElement('input');
23
- this.fileInput.type = 'file';
24
- this.fileInput.accept = 'image/*';
25
- this.fileInput.style.display = 'none';
26
- this.fileInput.addEventListener('change', this.handleFileSelect.bind(this));
27
- this.fileInput.addEventListener('cancel', this.handleCancel.bind(this));
28
- document.body.appendChild(this.fileInput);
29
- }
30
- handleFileSelect(event) {
31
- const input = event.target;
32
- if (input.files && input.files[0]) {
33
- const file = input.files[0];
34
- imageCompression(file, {
35
- maxWidthOrHeight: this.maxCompressionSize,
36
- })
37
- .then(compressedFile => {
38
- this.readFile(compressedFile);
39
- })
40
- .catch(error => {
41
- console.error('Error during image compression or processing:', error);
42
- this.handleCancel();
43
- });
44
- }
45
- else {
46
- console.info('File selection cancelled by user.');
47
- this.handleCancel();
48
- }
49
- if (input) {
50
- input.value = '';
51
- }
52
- }
53
- readFile(file) {
54
- const reader = new FileReader();
55
- reader.onload = e => {
56
- var _a;
57
- const img = new Image();
58
- img.src = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;
59
- img.onload = () => this.createKritzelImage(img);
60
- };
61
- reader.readAsDataURL(file);
62
- }
63
- createKritzelImage(img) {
64
- const image = KritzelImage.create(this._core);
65
- const { scaledWidth, scaledHeight } = image.calculateScaledDimensions(img);
66
- image.src = img.src;
67
- image.width = scaledWidth;
68
- image.height = scaledHeight;
69
- image.zIndex = this._core.store.currentZIndex;
70
- image.centerInViewport();
71
- this.addImageToStore(image);
72
- return image;
73
- }
74
- addImageToStore(image) {
75
- this._core.addObject(image);
76
- this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
77
- this._core.selectObjects([image]);
78
- this._core.engine.emitObjectsChange();
79
- }
80
- handleCancel() {
81
- this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
82
- }
83
- }
@@ -1,187 +0,0 @@
1
- import { KritzelEventHelper } from '../../helpers/event.helper';
2
- import { KritzelLine } from '../objects/line.class';
3
- import { KritzelBaseTool } from './base-tool.class';
4
- import { KritzelToolRegistry } from '../registries/tool.registry';
5
- import { KritzelSelectionGroup } from '../objects/selection-group.class';
6
- import { DEFAULT_COLOR_PALETTE } from '../../constants/color-palette.constants';
7
- export class KritzelLineTool extends KritzelBaseTool {
8
- constructor(core) {
9
- super(core);
10
- this.color = DEFAULT_COLOR_PALETTE[0];
11
- this.size = 4;
12
- this.opacity = 1;
13
- this.palette = [...DEFAULT_COLOR_PALETTE];
14
- this._startX = 0;
15
- this._startY = 0;
16
- }
17
- handlePointerDown(event) {
18
- if (event.cancelable) {
19
- event.preventDefault();
20
- }
21
- if (event.pointerType === 'mouse') {
22
- if (KritzelEventHelper.isLeftClick(event)) {
23
- this._core.store.state.isDrawing = true;
24
- const viewportScale = this._core.store.state.scale;
25
- const lockScale = this._core.store.state.lockDrawingScale;
26
- const divider = lockScale ? viewportScale : 1;
27
- const x = (event.clientX - this._core.store.offsetX) / divider;
28
- const y = (event.clientY - this._core.store.offsetY) / divider;
29
- this._startX = x;
30
- this._startY = y;
31
- const line = KritzelLine.create(this._core, {
32
- startX: x,
33
- startY: y,
34
- endX: x,
35
- endY: y,
36
- translateX: -this._core.store.state.translateX / divider,
37
- translateY: -this._core.store.state.translateY / divider,
38
- scale: lockScale ? 1 : viewportScale,
39
- stroke: this.color,
40
- strokeWidth: this.size,
41
- opacity: this.opacity,
42
- arrows: this.arrows,
43
- });
44
- line.isCompleted = false;
45
- this._core.store.state.objects.insert(line);
46
- }
47
- }
48
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
49
- const activePointers = Array.from(this._core.store.state.pointers.values());
50
- if (activePointers.length === 1) {
51
- const viewportScale = this._core.store.state.scale;
52
- const lockScale = this._core.store.state.lockDrawingScale;
53
- const divider = lockScale ? viewportScale : 1;
54
- const x = Math.round((activePointers[0].clientX - this._core.store.offsetX) / divider);
55
- const y = Math.round((activePointers[0].clientY - this._core.store.offsetY) / divider);
56
- this._core.store.state.isDrawing = true;
57
- this._startX = x;
58
- this._startY = y;
59
- const line = KritzelLine.create(this._core, {
60
- startX: x,
61
- startY: y,
62
- endX: x,
63
- endY: y,
64
- translateX: -this._core.store.state.translateX / divider,
65
- translateY: -this._core.store.state.translateY / divider,
66
- scale: lockScale ? 1 : viewportScale,
67
- stroke: this.color,
68
- strokeWidth: this.size,
69
- opacity: this.opacity,
70
- arrows: this.arrows,
71
- });
72
- line.isCompleted = false;
73
- this._core.store.state.objects.insert(line);
74
- }
75
- }
76
- }
77
- handlePointerMove(event) {
78
- if (event.cancelable) {
79
- event.preventDefault();
80
- }
81
- if (event.pointerType === 'mouse') {
82
- if (this._core.store.state.isDrawing) {
83
- const currentLine = this._core.store.currentLine;
84
- if (currentLine) {
85
- const viewportScale = this._core.store.state.scale;
86
- const lockScale = this._core.store.state.lockDrawingScale;
87
- const divider = lockScale ? viewportScale : 1;
88
- const x = (event.clientX - this._core.store.offsetX) / divider;
89
- const y = (event.clientY - this._core.store.offsetY) / divider;
90
- const updatedLine = KritzelLine.create(this._core, {
91
- startX: this._startX,
92
- startY: this._startY,
93
- endX: x,
94
- endY: y,
95
- translateX: -this._core.store.state.translateX / divider,
96
- translateY: -this._core.store.state.translateY / divider,
97
- scale: lockScale ? 1 : viewportScale,
98
- stroke: this.color,
99
- strokeWidth: this.size,
100
- opacity: this.opacity,
101
- arrows: this.arrows,
102
- });
103
- updatedLine.id = currentLine.id;
104
- updatedLine.workspaceId = currentLine.workspaceId;
105
- updatedLine.zIndex = currentLine.zIndex;
106
- updatedLine.isCompleted = false;
107
- this._core.store.state.objects.update(updatedLine);
108
- }
109
- }
110
- }
111
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
112
- const activePointers = Array.from(this._core.store.state.pointers.values());
113
- if (activePointers.length === 1) {
114
- const currentLine = this._core.store.currentLine;
115
- if (currentLine) {
116
- const viewportScale = this._core.store.state.scale;
117
- const lockScale = this._core.store.state.lockDrawingScale;
118
- const divider = lockScale ? viewportScale : 1;
119
- const x = Math.round((activePointers[0].clientX - this._core.store.offsetX) / divider);
120
- const y = Math.round((activePointers[0].clientY - this._core.store.offsetY) / divider);
121
- const updatedLine = KritzelLine.create(this._core, {
122
- startX: this._startX,
123
- startY: this._startY,
124
- endX: x,
125
- endY: y,
126
- translateX: -this._core.store.state.translateX / divider,
127
- translateY: -this._core.store.state.translateY / divider,
128
- scale: lockScale ? 1 : viewportScale,
129
- stroke: this.color,
130
- strokeWidth: this.size,
131
- opacity: this.opacity,
132
- arrows: this.arrows,
133
- });
134
- updatedLine.id = currentLine.id;
135
- updatedLine.workspaceId = currentLine.workspaceId;
136
- updatedLine.zIndex = currentLine.zIndex;
137
- updatedLine.isCompleted = false;
138
- this._core.store.state.objects.update(updatedLine);
139
- }
140
- }
141
- }
142
- }
143
- handlePointerUp(event) {
144
- if (event.cancelable) {
145
- event.preventDefault();
146
- }
147
- if (event.pointerType === 'mouse') {
148
- if (this._core.store.state.isDrawing) {
149
- this._core.store.state.isDrawing = false;
150
- const currentLine = this._core.store.currentLine;
151
- if (currentLine) {
152
- currentLine.isCompleted = true;
153
- this._core.store.state.objects.update(currentLine);
154
- this._core.engine.emitObjectsChange();
155
- // Switch to selection tool and select the drawn line
156
- this.selectLineAndSwitchTool(currentLine);
157
- }
158
- }
159
- }
160
- if (event.pointerType === 'touch' || event.pointerType === 'pen') {
161
- if (this._core.store.state.isDrawing) {
162
- this._core.store.state.isDrawing = false;
163
- const currentLine = this._core.store.currentLine;
164
- if (currentLine) {
165
- currentLine.isCompleted = true;
166
- this._core.store.state.objects.update(currentLine);
167
- this._core.engine.emitObjectsChange();
168
- // Switch to selection tool and select the drawn line
169
- this.selectLineAndSwitchTool(currentLine);
170
- }
171
- }
172
- }
173
- }
174
- selectLineAndSwitchTool(line) {
175
- // Create a selection group with the drawn line
176
- const selectionGroup = KritzelSelectionGroup.create(this._core);
177
- selectionGroup.addOrRemove(line);
178
- selectionGroup.isSelected = true;
179
- selectionGroup.rotation = line.rotation;
180
- // Add the selection group
181
- this._core.addSelectionGroup(selectionGroup);
182
- // Switch to selection tool
183
- this._core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
184
- // Rerender
185
- this._core.rerender();
186
- }
187
- }