kritzel-react 0.1.30 → 0.1.32

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 (209) hide show
  1. package/dist/kritzel-react/lib/components/stencil-generated/components.js +122 -0
  2. package/dist/kritzel-react/lib/index.js +2 -0
  3. package/dist/kritzel-stencil/src/classes/core/core.class.js +797 -0
  4. package/dist/kritzel-stencil/src/classes/core/reviver.class.js +97 -0
  5. package/dist/kritzel-stencil/src/classes/core/store.class.js +153 -0
  6. package/dist/kritzel-stencil/src/classes/core/viewport.class.js +311 -0
  7. package/dist/kritzel-stencil/src/classes/core/workspace.class.js +34 -0
  8. package/dist/kritzel-stencil/src/classes/handlers/base.handler.js +6 -0
  9. package/dist/kritzel-stencil/src/classes/handlers/context-menu.handler.js +63 -0
  10. package/dist/kritzel-stencil/src/classes/handlers/hover.handler.js +18 -0
  11. package/dist/kritzel-stencil/src/classes/handlers/key.handler.js +76 -0
  12. package/dist/kritzel-stencil/src/classes/handlers/line-handle.handler.js +382 -0
  13. package/dist/kritzel-stencil/src/classes/handlers/move.handler.js +213 -0
  14. package/dist/kritzel-stencil/src/classes/handlers/resize.handler.js +205 -0
  15. package/dist/kritzel-stencil/src/classes/handlers/rotation.handler.js +117 -0
  16. package/dist/kritzel-stencil/src/classes/handlers/selection.handler.js +313 -0
  17. package/dist/kritzel-stencil/src/classes/managers/anchor.manager.js +1056 -0
  18. package/dist/kritzel-stencil/src/classes/managers/cursor.manager.js +117 -0
  19. package/dist/kritzel-stencil/src/classes/managers/theme.manager.js +103 -0
  20. package/dist/kritzel-stencil/src/classes/objects/base-object.class.js +249 -0
  21. package/dist/kritzel-stencil/src/classes/objects/custom-element.class.js +60 -0
  22. package/dist/kritzel-stencil/src/classes/objects/group.class.js +407 -0
  23. package/dist/kritzel-stencil/src/classes/objects/image.class.js +55 -0
  24. package/dist/kritzel-stencil/src/classes/objects/line.class.js +608 -0
  25. package/dist/kritzel-stencil/src/classes/objects/path.class.js +401 -0
  26. package/dist/kritzel-stencil/src/classes/objects/selection-box.class.js +21 -0
  27. package/dist/kritzel-stencil/src/classes/objects/selection-group.class.js +409 -0
  28. package/dist/kritzel-stencil/src/classes/objects/shape.class.js +412 -0
  29. package/dist/kritzel-stencil/src/classes/objects/text.class.js +292 -0
  30. package/dist/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.js +101 -0
  31. package/dist/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.js +241 -0
  32. package/dist/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.js +43 -0
  33. package/dist/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.js +98 -0
  34. package/dist/kritzel-stencil/src/classes/registries/icon-registry.class.js +66 -0
  35. package/dist/kritzel-stencil/src/classes/registries/tool.registry.js +21 -0
  36. package/dist/kritzel-stencil/src/classes/structures/app-state-map.structure.js +212 -0
  37. package/dist/kritzel-stencil/src/classes/structures/object-map.structure.js +414 -0
  38. package/dist/kritzel-stencil/src/classes/structures/quadtree.structure.js +151 -0
  39. package/dist/kritzel-stencil/src/classes/tools/base-tool.class.js +36 -0
  40. package/dist/kritzel-stencil/src/classes/tools/brush-tool.class.js +161 -0
  41. package/dist/kritzel-stencil/src/classes/tools/eraser-tool.class.js +85 -0
  42. package/dist/kritzel-stencil/src/classes/tools/image-tool.class.js +83 -0
  43. package/dist/kritzel-stencil/src/classes/tools/line-tool.class.js +187 -0
  44. package/dist/kritzel-stencil/src/classes/tools/selection-tool.class.js +429 -0
  45. package/dist/kritzel-stencil/src/classes/tools/shape-tool.class.js +196 -0
  46. package/dist/kritzel-stencil/src/classes/tools/text-tool.class.js +100 -0
  47. package/dist/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.js +1343 -0
  48. package/dist/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.js +46 -0
  49. package/dist/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.js +312 -0
  50. package/dist/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.js +60 -0
  51. package/dist/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.js +105 -0
  52. package/dist/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +53 -0
  53. package/dist/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.js +137 -0
  54. package/dist/kritzel-stencil/src/configs/default-brush-tool.config.js +9 -0
  55. package/dist/kritzel-stencil/src/configs/default-engine-config.js +63 -0
  56. package/dist/kritzel-stencil/src/configs/default-line-tool.config.js +9 -0
  57. package/dist/kritzel-stencil/src/configs/default-sync.config.js +9 -0
  58. package/dist/kritzel-stencil/src/configs/default-text-tool.config.js +7 -0
  59. package/dist/kritzel-stencil/src/constants/color-palette.constants.js +37 -0
  60. package/dist/kritzel-stencil/src/constants/engine.constants.js +2 -0
  61. package/dist/kritzel-stencil/src/enums/event-button.enum.js +6 -0
  62. package/dist/kritzel-stencil/src/enums/handle-type.enum.js +7 -0
  63. package/dist/kritzel-stencil/src/enums/shape-type.enum.js +6 -0
  64. package/dist/kritzel-stencil/src/helpers/class.helper.js +5 -0
  65. package/dist/kritzel-stencil/src/helpers/color.helper.js +106 -0
  66. package/dist/kritzel-stencil/src/helpers/cursor.helper.js +57 -0
  67. package/dist/kritzel-stencil/src/helpers/devices.helper.js +28 -0
  68. package/dist/kritzel-stencil/src/helpers/event.helper.js +58 -0
  69. package/dist/kritzel-stencil/src/helpers/geometry.helper.js +149 -0
  70. package/dist/kritzel-stencil/src/helpers/keyboard.helper.js +51 -0
  71. package/dist/kritzel-stencil/src/helpers/math.helper.js +5 -0
  72. package/dist/kritzel-stencil/src/helpers/object.helper.js +11 -0
  73. package/dist/kritzel-stencil/src/helpers/theme.helper.js +69 -0
  74. package/dist/kritzel-stencil/src/index.js +41 -0
  75. package/dist/kritzel-stencil/src/interfaces/anchor.interface.js +1 -0
  76. package/dist/kritzel-stencil/src/interfaces/arrow-head.interface.js +1 -0
  77. package/dist/kritzel-stencil/src/interfaces/bounding-box.interface.js +1 -0
  78. package/dist/kritzel-stencil/src/interfaces/clonable.interface.js +1 -0
  79. package/dist/kritzel-stencil/src/interfaces/context-menu-item.interface.js +1 -0
  80. package/dist/kritzel-stencil/src/interfaces/debug-info.interface.js +1 -0
  81. package/dist/kritzel-stencil/src/interfaces/dialog.interface.js +1 -0
  82. package/dist/kritzel-stencil/src/interfaces/displayable-shortcut.interface.js +1 -0
  83. package/dist/kritzel-stencil/src/interfaces/engine-state.interface.js +1 -0
  84. package/dist/kritzel-stencil/src/interfaces/line-options.interface.js +1 -0
  85. package/dist/kritzel-stencil/src/interfaces/master-detail.interface.js +1 -0
  86. package/dist/kritzel-stencil/src/interfaces/menu-item.interface.js +1 -0
  87. package/dist/kritzel-stencil/src/interfaces/object.interface.js +1 -0
  88. package/dist/kritzel-stencil/src/interfaces/path-options.interface.js +1 -0
  89. package/dist/kritzel-stencil/src/interfaces/point.interface.js +1 -0
  90. package/dist/kritzel-stencil/src/interfaces/polygon.interface.js +1 -0
  91. package/dist/kritzel-stencil/src/interfaces/serializable.interface.js +1 -0
  92. package/dist/kritzel-stencil/src/interfaces/settings.interface.js +1 -0
  93. package/dist/kritzel-stencil/src/interfaces/shortcut.interface.js +1 -0
  94. package/dist/kritzel-stencil/src/interfaces/sync-config.interface.js +1 -0
  95. package/dist/kritzel-stencil/src/interfaces/sync-provider.interface.js +1 -0
  96. package/dist/kritzel-stencil/src/interfaces/theme.interface.js +1 -0
  97. package/dist/kritzel-stencil/src/interfaces/tool-config.interface.js +1 -0
  98. package/dist/kritzel-stencil/src/interfaces/tool.interface.js +1 -0
  99. package/dist/kritzel-stencil/src/interfaces/toolbar-control.interface.js +1 -0
  100. package/dist/kritzel-stencil/src/interfaces/undo-state.interface.js +1 -0
  101. package/dist/kritzel-stencil/src/themes/dark-theme.js +198 -0
  102. package/dist/kritzel-stencil/src/themes/light-theme.js +199 -0
  103. package/dist/kritzel-stencil/src/types/shortcut.type.js +1 -0
  104. package/dist/kritzel-stencil/src/types/state.types.js +1 -0
  105. package/dist/types/kritzel-react/lib/components/stencil-generated/components.d.ts +74 -0
  106. package/dist/types/kritzel-react/lib/index.d.ts +2 -0
  107. package/dist/types/kritzel-stencil/src/classes/core/core.class.d.ts +101 -0
  108. package/dist/types/kritzel-stencil/src/classes/core/reviver.class.d.ts +6 -0
  109. package/dist/types/kritzel-stencil/src/classes/core/store.class.d.ts +53 -0
  110. package/dist/types/kritzel-stencil/src/classes/core/viewport.class.d.ts +48 -0
  111. package/dist/types/kritzel-stencil/src/classes/core/workspace.class.d.ts +24 -0
  112. package/dist/types/kritzel-stencil/src/classes/handlers/base.handler.d.ts +5 -0
  113. package/dist/types/kritzel-stencil/src/classes/handlers/context-menu.handler.d.ts +8 -0
  114. package/dist/types/kritzel-stencil/src/classes/handlers/hover.handler.d.ts +6 -0
  115. package/dist/types/kritzel-stencil/src/classes/handlers/key.handler.d.ts +11 -0
  116. package/dist/types/kritzel-stencil/src/classes/handlers/line-handle.handler.d.ts +34 -0
  117. package/dist/types/kritzel-stencil/src/classes/handlers/move.handler.d.ts +29 -0
  118. package/dist/types/kritzel-stencil/src/classes/handlers/resize.handler.d.ts +24 -0
  119. package/dist/types/kritzel-stencil/src/classes/handlers/rotation.handler.d.ts +12 -0
  120. package/dist/types/kritzel-stencil/src/classes/handlers/selection.handler.d.ts +27 -0
  121. package/dist/types/kritzel-stencil/src/classes/managers/anchor.manager.d.ts +180 -0
  122. package/dist/types/kritzel-stencil/src/classes/managers/cursor.manager.d.ts +43 -0
  123. package/dist/types/kritzel-stencil/src/classes/managers/theme.manager.d.ts +56 -0
  124. package/dist/types/kritzel-stencil/src/classes/objects/base-object.class.d.ts +76 -0
  125. package/dist/types/kritzel-stencil/src/classes/objects/custom-element.class.d.ts +26 -0
  126. package/dist/types/kritzel-stencil/src/classes/objects/group.class.d.ts +97 -0
  127. package/dist/types/kritzel-stencil/src/classes/objects/image.class.d.ts +17 -0
  128. package/dist/types/kritzel-stencil/src/classes/objects/line.class.d.ts +101 -0
  129. package/dist/types/kritzel-stencil/src/classes/objects/path.class.d.ts +62 -0
  130. package/dist/types/kritzel-stencil/src/classes/objects/selection-box.class.d.ts +6 -0
  131. package/dist/types/kritzel-stencil/src/classes/objects/selection-group.class.d.ts +67 -0
  132. package/dist/types/kritzel-stencil/src/classes/objects/shape.class.d.ts +124 -0
  133. package/dist/types/kritzel-stencil/src/classes/objects/text.class.d.ts +56 -0
  134. package/dist/types/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.d.ts +18 -0
  135. package/dist/types/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.d.ts +120 -0
  136. package/dist/types/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.d.ts +22 -0
  137. package/dist/types/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.d.ts +52 -0
  138. package/dist/types/kritzel-stencil/src/classes/registries/icon-registry.class.d.ts +9 -0
  139. package/dist/types/kritzel-stencil/src/classes/registries/tool.registry.d.ts +8 -0
  140. package/dist/types/kritzel-stencil/src/classes/structures/app-state-map.structure.d.ts +31 -0
  141. package/dist/types/kritzel-stencil/src/classes/structures/object-map.structure.d.ts +63 -0
  142. package/dist/types/kritzel-stencil/src/classes/structures/quadtree.structure.d.ts +36 -0
  143. package/dist/types/kritzel-stencil/src/classes/tools/base-tool.class.d.ts +20 -0
  144. package/dist/types/kritzel-stencil/src/classes/tools/brush-tool.class.d.ts +14 -0
  145. package/dist/types/kritzel-stencil/src/classes/tools/eraser-tool.class.d.ts +9 -0
  146. package/dist/types/kritzel-stencil/src/classes/tools/image-tool.class.d.ts +15 -0
  147. package/dist/types/kritzel-stencil/src/classes/tools/line-tool.class.d.ts +19 -0
  148. package/dist/types/kritzel-stencil/src/classes/tools/selection-tool.class.d.ts +54 -0
  149. package/dist/types/kritzel-stencil/src/classes/tools/shape-tool.class.d.ts +39 -0
  150. package/dist/types/kritzel-stencil/src/classes/tools/text-tool.class.d.ts +13 -0
  151. package/dist/types/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.d.ts +111 -0
  152. package/dist/types/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.d.ts +11 -0
  153. package/dist/types/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +46 -0
  154. package/dist/types/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.d.ts +13 -0
  155. package/dist/types/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.d.ts +21 -0
  156. package/dist/types/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.d.ts +10 -0
  157. package/dist/types/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +21 -0
  158. package/dist/types/kritzel-stencil/src/configs/default-brush-tool.config.d.ts +2 -0
  159. package/dist/types/kritzel-stencil/src/configs/default-engine-config.d.ts +2 -0
  160. package/dist/types/kritzel-stencil/src/configs/default-line-tool.config.d.ts +2 -0
  161. package/dist/types/kritzel-stencil/src/configs/default-sync.config.d.ts +5 -0
  162. package/dist/types/kritzel-stencil/src/configs/default-text-tool.config.d.ts +2 -0
  163. package/dist/types/kritzel-stencil/src/constants/color-palette.constants.d.ts +29 -0
  164. package/dist/types/kritzel-stencil/src/constants/engine.constants.d.ts +2 -0
  165. package/dist/types/kritzel-stencil/src/enums/event-button.enum.d.ts +5 -0
  166. package/dist/types/kritzel-stencil/src/enums/handle-type.enum.d.ts +6 -0
  167. package/dist/types/kritzel-stencil/src/enums/shape-type.enum.d.ts +5 -0
  168. package/dist/types/kritzel-stencil/src/helpers/class.helper.d.ts +3 -0
  169. package/dist/types/kritzel-stencil/src/helpers/color.helper.d.ts +33 -0
  170. package/dist/types/kritzel-stencil/src/helpers/cursor.helper.d.ts +22 -0
  171. package/dist/types/kritzel-stencil/src/helpers/devices.helper.d.ts +8 -0
  172. package/dist/types/kritzel-stencil/src/helpers/event.helper.d.ts +6 -0
  173. package/dist/types/kritzel-stencil/src/helpers/geometry.helper.d.ts +38 -0
  174. package/dist/types/kritzel-stencil/src/helpers/keyboard.helper.d.ts +6 -0
  175. package/dist/types/kritzel-stencil/src/helpers/math.helper.d.ts +3 -0
  176. package/dist/types/kritzel-stencil/src/helpers/object.helper.d.ts +4 -0
  177. package/dist/types/kritzel-stencil/src/helpers/theme.helper.d.ts +41 -0
  178. package/dist/types/kritzel-stencil/src/index.d.ts +42 -0
  179. package/dist/types/kritzel-stencil/src/interfaces/anchor.interface.d.ts +137 -0
  180. package/dist/types/kritzel-stencil/src/interfaces/arrow-head.interface.d.ts +27 -0
  181. package/dist/types/kritzel-stencil/src/interfaces/bounding-box.interface.d.ts +8 -0
  182. package/dist/types/kritzel-stencil/src/interfaces/clonable.interface.d.ts +3 -0
  183. package/dist/types/kritzel-stencil/src/interfaces/context-menu-item.interface.d.ts +17 -0
  184. package/dist/types/kritzel-stencil/src/interfaces/debug-info.interface.d.ts +4 -0
  185. package/dist/types/kritzel-stencil/src/interfaces/dialog.interface.d.ts +4 -0
  186. package/dist/types/kritzel-stencil/src/interfaces/displayable-shortcut.interface.d.ts +5 -0
  187. package/dist/types/kritzel-stencil/src/interfaces/engine-state.interface.d.ts +73 -0
  188. package/dist/types/kritzel-stencil/src/interfaces/line-options.interface.d.ts +23 -0
  189. package/dist/types/kritzel-stencil/src/interfaces/master-detail.interface.d.ts +14 -0
  190. package/dist/types/kritzel-stencil/src/interfaces/menu-item.interface.d.ts +24 -0
  191. package/dist/types/kritzel-stencil/src/interfaces/object.interface.d.ts +53 -0
  192. package/dist/types/kritzel-stencil/src/interfaces/path-options.interface.d.ts +11 -0
  193. package/dist/types/kritzel-stencil/src/interfaces/point.interface.d.ts +4 -0
  194. package/dist/types/kritzel-stencil/src/interfaces/polygon.interface.d.ts +7 -0
  195. package/dist/types/kritzel-stencil/src/interfaces/serializable.interface.d.ts +5 -0
  196. package/dist/types/kritzel-stencil/src/interfaces/settings.interface.d.ts +11 -0
  197. package/dist/types/kritzel-stencil/src/interfaces/shortcut.interface.d.ts +10 -0
  198. package/dist/types/kritzel-stencil/src/interfaces/sync-config.interface.d.ts +22 -0
  199. package/dist/types/kritzel-stencil/src/interfaces/sync-provider.interface.d.ts +29 -0
  200. package/dist/types/kritzel-stencil/src/interfaces/theme.interface.d.ts +330 -0
  201. package/dist/types/kritzel-stencil/src/interfaces/tool-config.interface.d.ts +26 -0
  202. package/dist/types/kritzel-stencil/src/interfaces/tool.interface.d.ts +7 -0
  203. package/dist/types/kritzel-stencil/src/interfaces/toolbar-control.interface.d.ts +58 -0
  204. package/dist/types/kritzel-stencil/src/interfaces/undo-state.interface.d.ts +6 -0
  205. package/dist/types/kritzel-stencil/src/themes/dark-theme.d.ts +5 -0
  206. package/dist/types/kritzel-stencil/src/themes/light-theme.d.ts +5 -0
  207. package/dist/types/kritzel-stencil/src/types/shortcut.type.d.ts +1 -0
  208. package/dist/types/kritzel-stencil/src/types/state.types.d.ts +3 -0
  209. package/package.json +2 -2
@@ -0,0 +1,1343 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ import { Component, Host, Listen, Element, Prop, Method, State, Event, Watch } from '@stencil/core';
17
+ import { KritzelViewport } from '../../../classes/core/viewport.class';
18
+ import { KritzelSelectionTool } from '../../../classes/tools/selection-tool.class';
19
+ import { KritzelSelectionBox } from '../../../classes/objects/selection-box.class';
20
+ import { KritzelKeyHandler } from '../../../classes/handlers/key.handler';
21
+ import { KritzelBaseTool } from '../../../classes/tools/base-tool.class';
22
+ import { KritzelEraserTool } from '../../../classes/tools/eraser-tool.class';
23
+ import { KritzelKeyboardHelper } from '../../../helpers/keyboard.helper';
24
+ import { KritzelContextMenuHandler } from '../../../classes/handlers/context-menu.handler';
25
+ import { KritzelToolRegistry } from '../../../classes/registries/tool.registry';
26
+ import { KritzelEventHelper } from '../../../helpers/event.helper';
27
+ import { KritzelClassHelper } from '../../../helpers/class.helper';
28
+ import { ABSOLUTE_SCALE_MAX, ABSOLUTE_SCALE_MIN } from '../../../constants/engine.constants';
29
+ import { KritzelCore } from '../../../classes/core/core.class';
30
+ import { KritzelDevicesHelper } from '../../../helpers/devices.helper';
31
+ import { throttle } from 'lodash';
32
+ import { KritzelColorHelper } from '../../../helpers/color.helper';
33
+ import { toPng, toSvg } from 'html-to-image';
34
+ import { KritzelThemeManager } from '../../../classes/managers/theme.manager';
35
+ let KritzelEngine = class KritzelEngine {
36
+ onWorkspaceChange(newWorkspace) {
37
+ var _a;
38
+ const currentWorkspaceId = (_a = this.core.store.state.activeWorkspace) === null || _a === void 0 ? void 0 : _a.id;
39
+ const newWorkspaceId = newWorkspace === null || newWorkspace === void 0 ? void 0 : newWorkspace.id;
40
+ if (currentWorkspaceId !== newWorkspaceId) {
41
+ this.core.beforeWorkspaceChange();
42
+ this.core.initializeWorkspace(newWorkspace);
43
+ }
44
+ }
45
+ validateScaleMax(newValue) {
46
+ if (newValue > ABSOLUTE_SCALE_MAX) {
47
+ console.warn(`scaleMax cannot be greater than ${ABSOLUTE_SCALE_MAX}.`);
48
+ this.scaleMax = ABSOLUTE_SCALE_MAX;
49
+ this.core.store.state.scaleMax = this.scaleMax;
50
+ }
51
+ else {
52
+ this.core.store.state.scaleMax = newValue;
53
+ }
54
+ }
55
+ validateScaleMin(newValue) {
56
+ if (newValue < ABSOLUTE_SCALE_MIN) {
57
+ console.warn(`scaleMin cannot be less than ${ABSOLUTE_SCALE_MIN}.`);
58
+ this.scaleMin = ABSOLUTE_SCALE_MIN;
59
+ this.core.store.state.scaleMin = this.scaleMin;
60
+ }
61
+ else {
62
+ this.core.store.state.scaleMin = newValue;
63
+ }
64
+ }
65
+ onCursorTargetChange(newValue) {
66
+ this.core.cursorManager.setTargetElement(newValue || document.body);
67
+ }
68
+ onLockDrawingScaleChange(newValue) {
69
+ this.core.store.state.lockDrawingScale = newValue;
70
+ }
71
+ onThemeChange(newValue) {
72
+ this.core.themeManager.setTheme(newValue);
73
+ }
74
+ triggerSelectionChange() {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ this.objectsSelectionChange.emit();
77
+ });
78
+ }
79
+ handleWheel(ev) {
80
+ var _a, _b;
81
+ if (this.core.store.isDisabled) {
82
+ return;
83
+ }
84
+ if (this.core.store.state.isContextMenuVisible) {
85
+ this.hideContextMenu();
86
+ }
87
+ this.viewport.handleWheel(ev);
88
+ (_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handleWheel(ev);
89
+ }
90
+ handlePointerDown(ev) {
91
+ var _a, _b;
92
+ if (this.core.store.isDisabled) {
93
+ return;
94
+ }
95
+ if (KritzelDevicesHelper.isTouchDevice()) {
96
+ KritzelEventHelper.onLongPress(ev, (event) => this.longpress.emit(event));
97
+ }
98
+ this.host.setPointerCapture(ev.pointerId);
99
+ this.core.store.state.pointers.set(ev.pointerId, ev);
100
+ this.viewport.handlePointerDown(ev);
101
+ (_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerDown(ev);
102
+ }
103
+ handlePointerMove(ev) {
104
+ var _a, _b;
105
+ if (this.core.store.isDisabled) {
106
+ return;
107
+ }
108
+ if (this.core.store.state.pointers.has(ev.pointerId)) {
109
+ this.core.store.state.pointers.set(ev.pointerId, ev);
110
+ }
111
+ if (this.core.store.state.pointers.size > 1) {
112
+ this.throttledPointerMoveMulti(ev);
113
+ }
114
+ // Update cursor for handle hover states using elementsFromPoint
115
+ this.core.cursorManager.updateHoverState(ev);
116
+ this.viewport.handlePointerMove(ev);
117
+ (_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerMove(ev);
118
+ }
119
+ handlePointerUp(ev) {
120
+ var _a, _b;
121
+ if (this.core.store.isDisabled) {
122
+ return;
123
+ }
124
+ this.core.store.state.pointers.delete(ev.pointerId);
125
+ if (this.host.hasPointerCapture(ev.pointerId)) {
126
+ this.host.releasePointerCapture(ev.pointerId);
127
+ }
128
+ // Reset cursor to default when all pointers are released
129
+ if (this.core.store.state.pointers.size === 0) {
130
+ this.core.cursorManager.resetToDefault();
131
+ }
132
+ this.viewport.handlePointerUp(ev);
133
+ (_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerUp(ev);
134
+ }
135
+ handlePointerCancel(ev) {
136
+ var _a, _b;
137
+ if (this.core.store.isDisabled) {
138
+ return;
139
+ }
140
+ if (this.host.hasPointerCapture(ev.pointerId)) {
141
+ this.host.releasePointerCapture(ev.pointerId);
142
+ }
143
+ this.core.store.state.pointers.delete(ev.pointerId);
144
+ // Reset cursor to default when all pointers are released
145
+ if (this.core.store.state.pointers.size === 0) {
146
+ this.core.cursorManager.resetToDefault();
147
+ }
148
+ this.viewport.handlePointerUp(ev);
149
+ (_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerUp(ev);
150
+ }
151
+ handleLongPress(ev) {
152
+ this.contextMenuHandler.handleContextMenu(ev.detail);
153
+ }
154
+ handleContextMenu(ev) {
155
+ ev.preventDefault();
156
+ if (this.core.store.isDisabled) {
157
+ return;
158
+ }
159
+ if (ev.pointerType === 'touch' || ev.pointerType === 'pen') {
160
+ return;
161
+ }
162
+ this.contextMenuHandler.handleContextMenu(ev);
163
+ }
164
+ handleResize() {
165
+ this.viewport.handleResize();
166
+ }
167
+ handleKeyDown(ev) {
168
+ if (this.core.store.isDisabled) {
169
+ return;
170
+ }
171
+ this.keyHandler.handleKeyDown(ev);
172
+ }
173
+ handleKeyUp(ev) {
174
+ if (this.core.store.isDisabled) {
175
+ return;
176
+ }
177
+ this.keyHandler.handleKeyUp(ev);
178
+ }
179
+ preventDoubleTapZoomOnTouchDevices(ev) {
180
+ ev.preventDefault();
181
+ }
182
+ registerTool(toolName, toolClass, toolConfig) {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ if (typeof toolClass !== 'function' || !(toolClass.prototype instanceof KritzelBaseTool)) {
185
+ console.error(`Failed to register tool "${toolName}": Tool class must be a constructor function`);
186
+ return null;
187
+ }
188
+ const registeredTool = KritzelToolRegistry.registerTool(toolName, toolClass, this.core);
189
+ if (toolConfig) {
190
+ Object.entries(toolConfig).forEach(([key, value]) => {
191
+ registeredTool[key] = value;
192
+ });
193
+ }
194
+ return Promise.resolve(registeredTool);
195
+ });
196
+ }
197
+ changeActiveTool(tool) {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ var _a;
200
+ if (this.core.store.state.activeTool === tool) {
201
+ return;
202
+ }
203
+ (_a = this.core.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
204
+ this.core.store.setState('activeTool', tool);
205
+ this.core.deselectAllObjects();
206
+ tool === null || tool === void 0 ? void 0 : tool.onActivate();
207
+ });
208
+ }
209
+ disable() {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ this.core.store.state.isEnabled = false;
212
+ this.core.rerender();
213
+ });
214
+ }
215
+ enable() {
216
+ return __awaiter(this, void 0, void 0, function* () {
217
+ this.core.store.state.isEnabled = true;
218
+ this.core.rerender();
219
+ });
220
+ }
221
+ delete() {
222
+ return __awaiter(this, void 0, void 0, function* () {
223
+ this.core.delete();
224
+ });
225
+ }
226
+ copy() {
227
+ return __awaiter(this, void 0, void 0, function* () {
228
+ this.core.copy();
229
+ });
230
+ }
231
+ paste(x, y) {
232
+ return __awaiter(this, void 0, void 0, function* () {
233
+ this.core.paste(x, y);
234
+ });
235
+ }
236
+ bringForward(object) {
237
+ return __awaiter(this, void 0, void 0, function* () {
238
+ this.core.bringForward(object);
239
+ });
240
+ }
241
+ sendBackward(object) {
242
+ return __awaiter(this, void 0, void 0, function* () {
243
+ this.core.sendBackward(object);
244
+ });
245
+ }
246
+ bringToFront(object) {
247
+ return __awaiter(this, void 0, void 0, function* () {
248
+ this.core.bringToFront(object);
249
+ });
250
+ }
251
+ sendToBack(object) {
252
+ return __awaiter(this, void 0, void 0, function* () {
253
+ this.core.sendToBack(object);
254
+ });
255
+ }
256
+ group() {
257
+ return __awaiter(this, void 0, void 0, function* () {
258
+ this.core.group();
259
+ });
260
+ }
261
+ ungroup() {
262
+ return __awaiter(this, void 0, void 0, function* () {
263
+ this.core.ungroup();
264
+ });
265
+ }
266
+ undo() {
267
+ return __awaiter(this, void 0, void 0, function* () {
268
+ this.core.undo();
269
+ });
270
+ }
271
+ redo() {
272
+ return __awaiter(this, void 0, void 0, function* () {
273
+ this.core.redo();
274
+ });
275
+ }
276
+ hideContextMenu() {
277
+ return __awaiter(this, void 0, void 0, function* () {
278
+ this.core.store.state.pointers.clear();
279
+ this.core.store.state.isContextMenuVisible = false;
280
+ this.core.store.state.objects.remove(o => o instanceof KritzelSelectionBox);
281
+ this.core.store.setSelectionBox(null);
282
+ this.core.store.state.isSelecting = false;
283
+ this.core.store.state.isEnabled = true;
284
+ this.core.rerender();
285
+ });
286
+ }
287
+ getObjectById(id) {
288
+ return __awaiter(this, void 0, void 0, function* () {
289
+ const object = this.core.store.allObjects.find(obj => obj.id === id);
290
+ return object || null;
291
+ });
292
+ }
293
+ addObject(object) {
294
+ return __awaiter(this, void 0, void 0, function* () {
295
+ this.core.deselectAllObjects();
296
+ object.id = object.generateId();
297
+ object._core = this.core;
298
+ object.scale = object.scale ? object.scale : this.core.store.state.scale;
299
+ object.zIndex = this.core.store.currentZIndex;
300
+ this.core.addObject(object);
301
+ this.core.rerender();
302
+ return object;
303
+ });
304
+ }
305
+ updateObject(object, updatedProperties) {
306
+ return __awaiter(this, void 0, void 0, function* () {
307
+ this.core.deselectAllObjects();
308
+ this.core.updateObject(object, updatedProperties);
309
+ this.core.rerender();
310
+ return object;
311
+ });
312
+ }
313
+ removeObject(object) {
314
+ return __awaiter(this, void 0, void 0, function* () {
315
+ this.core.deselectAllObjects();
316
+ this.core.store.state.objects.remove(o => o.id === object.id);
317
+ this.core.rerender();
318
+ return object;
319
+ });
320
+ }
321
+ getSelectedObjects() {
322
+ return __awaiter(this, void 0, void 0, function* () {
323
+ const selectionGroup = this.core.store.selectionGroup;
324
+ return selectionGroup ? selectionGroup.objects : [];
325
+ });
326
+ }
327
+ getDisplayableShortcuts() {
328
+ return __awaiter(this, void 0, void 0, function* () {
329
+ return this.keyHandler.getDisplayableShortcuts();
330
+ });
331
+ }
332
+ selectObjects(objects) {
333
+ return __awaiter(this, void 0, void 0, function* () {
334
+ var _a;
335
+ (_a = this.core.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
336
+ this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
337
+ this.core.deselectAllObjects();
338
+ this.core.selectObjects(objects);
339
+ });
340
+ }
341
+ selectAllObjectsInViewport() {
342
+ return __awaiter(this, void 0, void 0, function* () {
343
+ var _a;
344
+ (_a = this.core.store.state.activeTool) === null || _a === void 0 ? void 0 : _a.onDeactivate();
345
+ this.core.store.setState('activeTool', KritzelToolRegistry.getTool('selection'));
346
+ this.core.deselectAllObjects();
347
+ this.core.selectAllObjectsInViewport();
348
+ });
349
+ }
350
+ clearSelection() {
351
+ return __awaiter(this, void 0, void 0, function* () {
352
+ this.core.clearSelection();
353
+ });
354
+ }
355
+ centerObjectInViewport(object) {
356
+ return __awaiter(this, void 0, void 0, function* () {
357
+ object.centerInViewport();
358
+ this.core.updateObject(object, object);
359
+ this.core.rerender();
360
+ return object;
361
+ });
362
+ }
363
+ backToContent() {
364
+ return __awaiter(this, void 0, void 0, function* () {
365
+ return this.viewport.centerFitNearestContent(20);
366
+ });
367
+ }
368
+ getCopiedObjects() {
369
+ return __awaiter(this, void 0, void 0, function* () {
370
+ return this.core.store.state.copiedObjects || [];
371
+ });
372
+ }
373
+ getScreenshot() {
374
+ return __awaiter(this, arguments, void 0, function* (format = 'png') {
375
+ if (!this.host)
376
+ return null;
377
+ // Save critical state before screenshot to restore after
378
+ const savedState = {
379
+ objects: this.core.store.state.objects,
380
+ activeWorkspace: this.core.store.state.activeWorkspace,
381
+ workspaces: this.core.store.state.workspaces,
382
+ activeTool: this.core.store.state.activeTool,
383
+ isReady: this.core.store.state.isReady,
384
+ translateX: this.core.store.state.translateX,
385
+ translateY: this.core.store.state.translateY,
386
+ scale: this.core.store.state.scale,
387
+ };
388
+ const options = {
389
+ filter: (node) => {
390
+ // Exclude the context menu and debug panel from the screenshot
391
+ if (node.tagName === 'KRITZEL-CONTEXT-MENU') {
392
+ return false;
393
+ }
394
+ if (node.classList && node.classList.contains('debug-panel')) {
395
+ return false;
396
+ }
397
+ return true;
398
+ },
399
+ };
400
+ let result;
401
+ try {
402
+ if (format === 'svg') {
403
+ result = yield toSvg(this.host, options);
404
+ }
405
+ else {
406
+ result = yield toPng(this.host, options);
407
+ }
408
+ }
409
+ finally {
410
+ // Restore state after screenshot in case cloning caused any side effects
411
+ this.core.store.state.objects = savedState.objects;
412
+ this.core.store.state.activeWorkspace = savedState.activeWorkspace;
413
+ this.core.store.state.workspaces = savedState.workspaces;
414
+ this.core.store.state.activeTool = savedState.activeTool;
415
+ this.core.store.state.isReady = savedState.isReady;
416
+ this.core.store.state.translateX = savedState.translateX;
417
+ this.core.store.state.translateY = savedState.translateY;
418
+ this.core.store.state.scale = savedState.scale;
419
+ this.core.rerender();
420
+ }
421
+ return result;
422
+ });
423
+ }
424
+ exportViewportAsPng() {
425
+ return __awaiter(this, void 0, void 0, function* () {
426
+ var _a, _b;
427
+ try {
428
+ const activeWorkspaceName = ((_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeWorkspace) === null || _b === void 0 ? void 0 : _b.name) || 'workspace';
429
+ // timestamp format: YYYY-MM-DDTHH-mm-ss-sssZ, clearing colons/dots for safe filename
430
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
431
+ const filename = `${activeWorkspaceName}-${timestamp}.png`;
432
+ const dataUrl = yield this.getScreenshot('png');
433
+ const link = document.createElement('a');
434
+ link.download = filename;
435
+ link.href = dataUrl;
436
+ link.click();
437
+ }
438
+ catch (error) {
439
+ console.error('Failed to export viewport as PNG:', error);
440
+ }
441
+ });
442
+ }
443
+ exportViewportAsSvg() {
444
+ return __awaiter(this, void 0, void 0, function* () {
445
+ var _a, _b;
446
+ try {
447
+ const activeWorkspaceName = ((_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeWorkspace) === null || _b === void 0 ? void 0 : _b.name) || 'workspace';
448
+ // timestamp format: YYYY-MM-DDTHH-mm-ss-sssZ, clearing colons/dots for safe filename
449
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
450
+ const filename = `${activeWorkspaceName}-${timestamp}.svg`;
451
+ const dataUrl = yield this.getScreenshot('svg');
452
+ const link = document.createElement('a');
453
+ link.download = filename;
454
+ link.href = dataUrl;
455
+ link.click();
456
+ }
457
+ catch (error) {
458
+ console.error('Failed to export viewport as SVG:', error);
459
+ }
460
+ });
461
+ }
462
+ createWorkspace(workspace) {
463
+ return __awaiter(this, void 0, void 0, function* () {
464
+ yield this.core.createWorkspace(workspace);
465
+ this.workspacesChange.emit(this.core.store.state.workspaces);
466
+ return workspace;
467
+ });
468
+ }
469
+ updateWorkspace(workspace) {
470
+ return __awaiter(this, void 0, void 0, function* () {
471
+ yield this.core.updateWorkspace(workspace);
472
+ this.workspacesChange.emit(this.core.store.state.workspaces);
473
+ });
474
+ }
475
+ deleteWorkspace(workspace) {
476
+ return __awaiter(this, void 0, void 0, function* () {
477
+ yield this.core.deleteWorkspace(workspace);
478
+ this.workspacesChange.emit(this.core.store.state.workspaces);
479
+ });
480
+ }
481
+ getWorkspaces() {
482
+ return __awaiter(this, void 0, void 0, function* () {
483
+ return yield this.core.getWorkspaces();
484
+ });
485
+ }
486
+ getActiveWorkspace() {
487
+ return __awaiter(this, void 0, void 0, function* () {
488
+ return this.core.store.state.activeWorkspace;
489
+ });
490
+ }
491
+ get isSelecting() {
492
+ return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.state.isSelecting;
493
+ }
494
+ get isSelectionActive() {
495
+ return this.core.store.state.activeTool instanceof KritzelSelectionTool && this.core.store.selectionGroup !== null;
496
+ }
497
+ constructor() {
498
+ this.scaleMax = ABSOLUTE_SCALE_MAX;
499
+ this.scaleMin = ABSOLUTE_SCALE_MIN;
500
+ /** When true, objects are drawn at a fixed visual size regardless of zoom level */
501
+ this.lockDrawingScale = true;
502
+ /** The current theme to apply to the editor */
503
+ this.theme = 'light';
504
+ this.forceUpdate = 0;
505
+ this.throttledPointerMoveMulti = throttle((ev) => {
506
+ var _a, _b;
507
+ this.viewport.handlePointerMove(ev);
508
+ (_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeTool) === null || _b === void 0 ? void 0 : _b.handlePointerMove(ev);
509
+ }, 16);
510
+ this.contextMenuElement = null;
511
+ this._lastHadSelectionGroup = false;
512
+ this.core = new KritzelCore(this);
513
+ }
514
+ disconnectedCallback() {
515
+ this.throttledPointerMoveMulti.cancel();
516
+ // Clean up current workspace's ObjectMap
517
+ if (this.core.store.state.objects) {
518
+ this.core.store.state.objects.destroy();
519
+ }
520
+ // Clean up AppStateMap (workspaces Y.Doc)
521
+ this.core.appStateMap.destroy();
522
+ // Clean up managers
523
+ this.core.cursorManager.cleanup();
524
+ this.core.themeManager.cleanup();
525
+ }
526
+ componentWillLoad() {
527
+ this.validateScaleMax(this.scaleMax);
528
+ this.validateScaleMin(this.scaleMin);
529
+ this.core.store.state.lockDrawingScale = this.lockDrawingScale;
530
+ }
531
+ componentDidLoad() {
532
+ return __awaiter(this, void 0, void 0, function* () {
533
+ this.contextMenuHandler = new KritzelContextMenuHandler(this.core, this.globalContextMenuItems, this.objectContextMenuItems);
534
+ this.keyHandler = new KritzelKeyHandler(this.core);
535
+ this.viewport = new KritzelViewport(this.core, this.host);
536
+ // Initialize cursor manager with target element and shadow root
537
+ this.core.cursorManager.setTargetElement(this.cursorTarget || document.body);
538
+ this.core.cursorManager.setShadowRoot(this.host.shadowRoot);
539
+ // Initialize theme manager with kritzel-editor as target element
540
+ const editorElement = this.host.closest('kritzel-editor');
541
+ this.core.themeManager.setTargetElement(editorElement || this.host);
542
+ // Set sync configuration if provided
543
+ if (this.syncConfig) {
544
+ this.core.setSyncConfig(this.syncConfig);
545
+ }
546
+ // Initialize Yjs document and persistence layer
547
+ yield this.core.initializeYjs();
548
+ // Initialize workspace (will load from Yjs if available)
549
+ yield this.core.initializeWorkspace(this.workspace);
550
+ // Register callback for remote workspace changes
551
+ this.core.appStateMap.onRemoteChange(() => {
552
+ this.workspacesChange.emit(this.core.store.state.workspaces);
553
+ });
554
+ this._registerStateChangeListeners();
555
+ if (this.core.store.state.isReady === false) {
556
+ this.core.store.state.isReady = true;
557
+ this.isEngineReady.emit(this.core.store.state);
558
+ }
559
+ });
560
+ }
561
+ emitObjectsChange() {
562
+ const objects = this.core.store.allObjects;
563
+ const undoState = this.core.store.state.objects.undoState;
564
+ const hasSelectionGroup = this.core.store.selectionGroup !== null;
565
+ this.objectsChange.emit(objects);
566
+ this.undoStateChange.emit(undoState);
567
+ if (this._lastHadSelectionGroup !== hasSelectionGroup) {
568
+ this._lastHadSelectionGroup = hasSelectionGroup;
569
+ this.objectsSelectionChange.emit();
570
+ }
571
+ }
572
+ _registerStateChangeListeners() {
573
+ this.core.store.onStateChange('activeTool', this._handleActiveToolChange.bind(this));
574
+ }
575
+ _handleActiveToolChange(activeTool) {
576
+ if (!(activeTool instanceof KritzelSelectionTool)) {
577
+ this.core.clearSelection();
578
+ this.core.store.state.objects.remove(o => o instanceof KritzelSelectionBox);
579
+ this.core.store.setSelectionBox(null);
580
+ this.core.store.state.isSelecting = false;
581
+ this.core.store.state.isResizeHandleSelected = false;
582
+ this.core.store.state.isRotationHandleSelected = false;
583
+ }
584
+ this.core.store.state.skipContextMenu = false;
585
+ this.core.store.state.copiedObjects = null;
586
+ this.activeToolChange.emit(activeTool);
587
+ KritzelKeyboardHelper.forceHideKeyboard();
588
+ this.core.rerender();
589
+ }
590
+ render() {
591
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
592
+ const currentTheme = KritzelThemeManager.getStoredTheme();
593
+ const computedStyle = window.getComputedStyle(this.host);
594
+ const baseHandleSizePx = computedStyle.getPropertyValue('--kritzel-selection-handle-size').trim() || '6px';
595
+ const baseHandleSize = parseFloat(baseHandleSizePx);
596
+ const baseHandleTouchSize = baseHandleSize * 2 < 14 ? 14 : baseHandleSize;
597
+ const viewportCenterX = this.core.store.state.viewportWidth / 2 + this.core.store.state.translateX;
598
+ const viewportCenterY = this.core.store.state.viewportHeight / 2 + this.core.store.state.translateY;
599
+ const visibleObjects = this.core.store.objectsToRender;
600
+ this.core.cursorManager.applyCursor();
601
+ if (this.core.store.totalObjectCount > 0 && this.core.store.state.hasViewportChanged) {
602
+ this.objectsInViewportChange.emit(visibleObjects);
603
+ this.core.store.state.hasViewportChanged = false;
604
+ }
605
+ return (React.createElement(Host, null,
606
+ this.core.store.state.debugInfo.showViewportInfo && (React.createElement("div", { class: "debug-panel" },
607
+ React.createElement("div", null,
608
+ "ActiveWorkspaceId: ", (_b = (_a = this.core.store.state) === null || _a === void 0 ? void 0 : _a.activeWorkspace) === null || _b === void 0 ? void 0 :
609
+ _b.id),
610
+ React.createElement("div", null,
611
+ "ActiveWorkspaceName: ", (_d = (_c = this.core.store.state) === null || _c === void 0 ? void 0 : _c.activeWorkspace) === null || _d === void 0 ? void 0 :
612
+ _d.name),
613
+ React.createElement("div", null,
614
+ "TranslateX: ", (_e = this.core.store.state) === null || _e === void 0 ? void 0 :
615
+ _e.translateX),
616
+ React.createElement("div", null,
617
+ "TranslateY: ", (_f = this.core.store.state) === null || _f === void 0 ? void 0 :
618
+ _f.translateY),
619
+ React.createElement("div", null,
620
+ "ViewportWidth: ", (_g = this.core.store.state) === null || _g === void 0 ? void 0 :
621
+ _g.viewportWidth),
622
+ React.createElement("div", null,
623
+ "ViewportHeight: ", (_h = this.core.store.state) === null || _h === void 0 ? void 0 :
624
+ _h.viewportHeight),
625
+ React.createElement("div", null,
626
+ "PointerCount: ",
627
+ this.core.store.state.pointers.size),
628
+ React.createElement("div", null,
629
+ "Scale: ", (_j = this.core.store.state) === null || _j === void 0 ? void 0 :
630
+ _j.scale),
631
+ React.createElement("div", null,
632
+ "ActiveTool: ", (_l = (_k = this.core.store.state) === null || _k === void 0 ? void 0 : _k.activeTool) === null || _l === void 0 ? void 0 :
633
+ _l.name),
634
+ React.createElement("div", null,
635
+ "HasViewportChanged: ",
636
+ ((_m = this.core.store.state) === null || _m === void 0 ? void 0 : _m.hasViewportChanged) ? 'true' : 'false'),
637
+ React.createElement("div", null,
638
+ "IsEnabled: ",
639
+ ((_o = this.core.store.state) === null || _o === void 0 ? void 0 : _o.isEnabled) ? 'true' : 'false'),
640
+ React.createElement("div", null,
641
+ "IsScaling: ",
642
+ ((_p = this.core.store.state) === null || _p === void 0 ? void 0 : _p.isScaling) ? 'true' : 'false'),
643
+ React.createElement("div", null,
644
+ "IsPanning: ",
645
+ ((_q = this.core.store.state) === null || _q === void 0 ? void 0 : _q.isPanning) ? 'true' : 'false'),
646
+ React.createElement("div", null,
647
+ "IsSelecting: ",
648
+ this.isSelecting ? 'true' : 'false'),
649
+ React.createElement("div", null,
650
+ "IsSelectionActive: ",
651
+ this.isSelectionActive ? 'true' : 'false'),
652
+ React.createElement("div", null,
653
+ "IsResizeHandleSelected: ",
654
+ this.core.store.state.isResizeHandleSelected ? 'true' : 'false'),
655
+ React.createElement("div", null,
656
+ "IsRotationHandleSelected: ",
657
+ this.core.store.state.isRotationHandleSelected ? 'true' : 'false'),
658
+ React.createElement("div", null,
659
+ "IsRotationHandleHovered: ",
660
+ this.core.store.state.isRotationHandleHovered ? 'true' : 'false'),
661
+ React.createElement("div", null,
662
+ "IsDrawing: ",
663
+ this.core.store.state.isDrawing ? 'true' : 'false'),
664
+ React.createElement("div", null,
665
+ "IsWriting: ",
666
+ this.core.store.state.isWriting ? 'true' : 'false'),
667
+ React.createElement("div", null,
668
+ "IsPointerDown: ",
669
+ this.core.store.isPointerDown ? 'true' : 'false'),
670
+ React.createElement("div", null,
671
+ "PointerX: ", (_r = this.core.store.state) === null || _r === void 0 ? void 0 :
672
+ _r.pointerX),
673
+ React.createElement("div", null,
674
+ "PointerY: ", (_s = this.core.store.state) === null || _s === void 0 ? void 0 :
675
+ _s.pointerY),
676
+ React.createElement("div", null,
677
+ "SelectedObjects: ",
678
+ ((_t = this.core.store.selectionGroup) === null || _t === void 0 ? void 0 : _t.objects.length) || 0),
679
+ React.createElement("div", null,
680
+ "ViewportCenter: (",
681
+ viewportCenterX.toFixed(2),
682
+ ", ",
683
+ viewportCenterY.toFixed(2),
684
+ ")"))),
685
+ React.createElement("div", { id: "origin", class: "origin", style: {
686
+ transform: `matrix(${(_u = this.core.store.state) === null || _u === void 0 ? void 0 : _u.scale}, 0, 0, ${(_v = this.core.store.state) === null || _v === void 0 ? void 0 : _v.scale}, ${(_w = this.core.store.state) === null || _w === void 0 ? void 0 : _w.translateX}, ${(_x = this.core.store.state) === null || _x === void 0 ? void 0 : _x.translateY})`,
687
+ } }, visibleObjects === null || visibleObjects === void 0 ? void 0 :
688
+ visibleObjects.map(object => {
689
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36;
690
+ return (React.createElement("div", { key: object.id, id: object.id, class: "object", style: {
691
+ transform: object === null || object === void 0 ? void 0 : object.transformationMatrix,
692
+ transformOrigin: 'top left',
693
+ position: 'absolute',
694
+ zIndex: object.zIndex.toString(),
695
+ pointerEvents: this.core.store.state.isScaling ? 'none' : 'auto',
696
+ } },
697
+ KritzelClassHelper.isInstanceOf(object, 'KritzelPath') && (React.createElement("svg", { ref: el => object.mount(el), xmlns: "http://www.w3.org/2000/svg", style: {
698
+ height: (object === null || object === void 0 ? void 0 : object.totalHeight) + 'px',
699
+ width: (object === null || object === void 0 ? void 0 : object.totalWidth) + 'px',
700
+ left: '0',
701
+ top: '0',
702
+ position: 'absolute',
703
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
704
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
705
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
706
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
707
+ overflow: 'visible',
708
+ }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox },
709
+ React.createElement("path", { d: object === null || object === void 0 ? void 0 : object.d, fill: KritzelColorHelper.resolveThemeColor(object.fill, currentTheme), stroke: KritzelColorHelper.resolveThemeColor(object === null || object === void 0 ? void 0 : object.stroke, currentTheme), "shape-rendering": object.isLowRes() ? 'optimizeSpeed' : 'auto' }))),
710
+ KritzelClassHelper.isInstanceOf(object, 'KritzelLine') && (React.createElement("svg", { ref: el => object.mount(el), xmlns: "http://www.w3.org/2000/svg", style: {
711
+ height: (object === null || object === void 0 ? void 0 : object.totalHeight) + 'px',
712
+ width: (object === null || object === void 0 ? void 0 : object.totalWidth) + 'px',
713
+ left: '0',
714
+ top: '0',
715
+ position: 'absolute',
716
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
717
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
718
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
719
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
720
+ overflow: 'visible',
721
+ }, viewBox: object === null || object === void 0 ? void 0 : object.viewBox },
722
+ (object.hasStartArrow || object.hasEndArrow) && (React.createElement("defs", null,
723
+ object.hasStartArrow && (React.createElement("marker", { id: object.startMarkerId, markerWidth: object.getArrowSize('start'), markerHeight: object.getArrowSize('start'), refX: 0, refY: object.getArrowSize('start') / 2, orient: "auto-start-reverse", markerUnits: "userSpaceOnUse" },
724
+ React.createElement("path", { d: object.getArrowPath((_b = (_a = object.arrows) === null || _a === void 0 ? void 0 : _a.start) === null || _b === void 0 ? void 0 : _b.style), fill: object.getArrowFill('start'), transform: `scale(${object.getArrowSize('start') / 10})` }))),
725
+ object.hasEndArrow && (React.createElement("marker", { id: object.endMarkerId, markerWidth: object.getArrowSize('end'), markerHeight: object.getArrowSize('end'), refX: 0, refY: object.getArrowSize('end') / 2, orient: "auto", markerUnits: "userSpaceOnUse" },
726
+ React.createElement("path", { d: object.getArrowPath((_d = (_c = object.arrows) === null || _c === void 0 ? void 0 : _c.end) === null || _d === void 0 ? void 0 : _d.style), fill: object.getArrowFill('end'), transform: `scale(${object.getArrowSize('end') / 10})` }))))),
727
+ React.createElement("path", { d: this.core.anchorManager.computeClippedLinePath(object), fill: "none", stroke: "transparent", "stroke-width": Math.max((object === null || object === void 0 ? void 0 : object.strokeWidth) || 0, 10), "stroke-linecap": "round" }),
728
+ React.createElement("path", { d: this.core.anchorManager.computeClippedLinePath(object), fill: "none", stroke: KritzelColorHelper.resolveThemeColor(object === null || object === void 0 ? void 0 : object.stroke, currentTheme), "stroke-width": object === null || object === void 0 ? void 0 : object.strokeWidth, "stroke-linecap": "round", "marker-start": object.hasStartArrow ? `url(#${object.startMarkerId})` : undefined, "marker-end": object.hasEndArrow ? `url(#${object.endMarkerId})` : undefined }))),
729
+ KritzelClassHelper.isInstanceOf(object, 'KritzelImage') && (React.createElement("img", { ref: el => object.mount(el), src: object.src, style: {
730
+ position: 'absolute',
731
+ left: '0',
732
+ top: '0',
733
+ width: object.totalWidth + 'px',
734
+ height: object.totalHeight + 'px',
735
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
736
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
737
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
738
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
739
+ backgroundColor: KritzelColorHelper.resolveThemeColor(object.backgroundColor, currentTheme),
740
+ borderColor: KritzelColorHelper.resolveThemeColor(object.borderColor, currentTheme),
741
+ borderWidth: object.borderWidth + 'px',
742
+ borderStyle: 'solid',
743
+ padding: object.padding + 'px',
744
+ overflow: 'visible',
745
+ userSelect: 'none',
746
+ imageRendering: this.core.store.state.isScaling || this.core.store.state.isPanning ? 'pixelated' : 'auto',
747
+ }, draggable: false, onDragStart: e => e.preventDefault() })),
748
+ KritzelClassHelper.isInstanceOf(object, 'KritzelCustomElement') && (React.createElement("div", { ref: el => object.mount(el), style: {
749
+ position: 'absolute',
750
+ left: '0',
751
+ top: '0',
752
+ width: object.totalWidth + 'px',
753
+ height: object.totalHeight + 'px',
754
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
755
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
756
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
757
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
758
+ backgroundColor: KritzelColorHelper.resolveThemeColor(object.backgroundColor, currentTheme),
759
+ borderColor: KritzelColorHelper.resolveThemeColor(object.borderColor, currentTheme),
760
+ borderWidth: object.borderWidth + 'px',
761
+ borderStyle: 'solid',
762
+ padding: object.padding + 'px',
763
+ overflow: 'hidden',
764
+ display: 'block',
765
+ } })),
766
+ KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionGroup') && !this.core.displaySelectionLineUI(object) && (React.createElement("div", { ref: el => object.mount(el), style: {
767
+ position: 'absolute',
768
+ left: '0',
769
+ top: '0',
770
+ width: object.totalWidth + 'px',
771
+ height: object.totalHeight + 'px',
772
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
773
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
774
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
775
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
776
+ } })),
777
+ KritzelClassHelper.isInstanceOf(object, 'KritzelSelectionBox') && (React.createElement("div", { ref: el => object.mount(el), style: {
778
+ position: 'absolute',
779
+ left: '0',
780
+ top: '0',
781
+ width: object.totalWidth + 'px',
782
+ height: object.totalHeight + 'px',
783
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
784
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
785
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
786
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
787
+ backgroundColor: KritzelColorHelper.resolveThemeColor(object.backgroundColor, currentTheme),
788
+ borderColor: KritzelColorHelper.resolveThemeColor(object.borderColor, currentTheme),
789
+ borderWidth: object.borderWidth + 'px',
790
+ borderStyle: 'solid',
791
+ } })),
792
+ KritzelClassHelper.isInstanceOf(object, 'KritzelText') && (React.createElement("div", { style: {
793
+ position: 'absolute',
794
+ left: '0',
795
+ top: '0',
796
+ width: object.totalWidth + 'px',
797
+ height: object.totalHeight + 'px',
798
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
799
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
800
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
801
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
802
+ } },
803
+ React.createElement("div", { id: "text-object", ref: el => object.mount(el), onPointerDown: e => object.handlePointerDown(e), onPointerMove: e => object.handlePointerMove(e), onPointerUp: e => object.handlePointerUp(e), style: {
804
+ minWidth: object.initialWidth + 'px',
805
+ minHeight: object.initialHeight + 'px',
806
+ maxWidth: '500px',
807
+ height: 'auto',
808
+ width: 'max-content',
809
+ transformOrigin: 'top left',
810
+ transform: `scale(${object.scaleFactor})`,
811
+ backgroundColor: KritzelColorHelper.resolveThemeColor(object.backgroundColor, currentTheme),
812
+ overflow: 'visible',
813
+ } }))),
814
+ KritzelClassHelper.isInstanceOf(object, 'KritzelShape') && (React.createElement("div", { ref: el => object.mount(el), onPointerDown: e => object.handlePointerDown(e), onPointerMove: e => object.handlePointerMove(e), onPointerUp: e => object.handlePointerUp(e), style: {
815
+ position: 'absolute',
816
+ left: '0',
817
+ top: '0',
818
+ width: object.totalWidth + 'px',
819
+ height: object.totalHeight + 'px',
820
+ transform: object.rotationDegrees !== 0 ? `rotate(${object.rotationDegrees}deg)` : undefined,
821
+ transformOrigin: object.rotationDegrees !== 0 ? `${object.totalWidth / 2}px ${object.totalHeight / 2}px` : undefined,
822
+ opacity: object.markedForRemoval ? '0.5' : object.opacity.toString(),
823
+ pointerEvents: object.markedForRemoval ? 'none' : 'auto',
824
+ overflow: 'visible',
825
+ } },
826
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", style: {
827
+ position: 'absolute',
828
+ top: '0',
829
+ left: '0',
830
+ width: '100%',
831
+ height: '100%',
832
+ overflow: 'visible',
833
+ pointerEvents: 'none',
834
+ }, viewBox: object.viewBox, preserveAspectRatio: "none" },
835
+ React.createElement("path", { d: object.getSvgPath(), fill: KritzelColorHelper.resolveThemeColor(object.fillColor, currentTheme), stroke: KritzelColorHelper.resolveThemeColor(object.strokeColor, currentTheme), "stroke-width": object.strokeWidth })),
836
+ React.createElement("div", { ref: el => object.mountTextEditor(el), style: {
837
+ position: 'absolute',
838
+ top: '0',
839
+ left: '0',
840
+ width: '100%',
841
+ height: '100%',
842
+ display: 'flex',
843
+ alignItems: 'center',
844
+ justifyContent: 'center',
845
+ textAlign: 'center',
846
+ overflow: 'hidden',
847
+ pointerEvents: object.isEditing ? 'auto' : 'none',
848
+ } }))),
849
+ this.core.store.state.debugInfo.showObjectInfo && object.isDebugInfoVisible && (React.createElement("div", { style: {
850
+ pointerEvents: 'none',
851
+ position: 'absolute',
852
+ left: `${object.totalWidth}px`,
853
+ top: '0',
854
+ zIndex: (object.zIndex + 2).toString(),
855
+ } },
856
+ React.createElement("div", { style: { whiteSpace: 'nowrap', fontSize: '10px' } },
857
+ "Id: ",
858
+ object.id),
859
+ React.createElement("div", { style: { whiteSpace: 'nowrap', fontSize: '10px' } },
860
+ "width: ",
861
+ object.width),
862
+ React.createElement("div", { style: { whiteSpace: 'nowrap', fontSize: '10px' } },
863
+ "height: ",
864
+ object.height),
865
+ React.createElement("div", { style: { whiteSpace: 'nowrap', fontSize: '10px' } },
866
+ "translateX: ",
867
+ object.translateX),
868
+ React.createElement("div", { style: { whiteSpace: 'nowrap', fontSize: '10px' } },
869
+ "translateY: ",
870
+ object.translateY),
871
+ React.createElement("div", { style: { whiteSpace: 'nowrap', fontSize: '10px' } },
872
+ "rotationDegrees: ",
873
+ object.rotationDegrees),
874
+ React.createElement("div", { style: { whiteSpace: 'nowrap', fontSize: '10px' } },
875
+ "zIndex: ",
876
+ object.zIndex))),
877
+ (this.core.displaySelectionGroupUI(object) || this.core.displaySelectionLineUI(object)) && (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", style: {
878
+ zIndex: (object.zIndex + 1).toString(),
879
+ height: object === null || object === void 0 ? void 0 : object.totalHeight.toString(),
880
+ width: object === null || object === void 0 ? void 0 : object.totalWidth.toString(),
881
+ left: '0',
882
+ top: '0',
883
+ position: 'absolute',
884
+ transform: `rotate(${object.rotationDegrees}deg)`,
885
+ transformOrigin: `${object.totalWidth / 2}px ${object.totalHeight / 2}px`,
886
+ overflow: 'visible',
887
+ pointerEvents: 'none',
888
+ } },
889
+ this.core.displaySelectionGroupUI(object) && (React.createElement("g", { class: "selection-group-ui", style: { pointerEvents: 'none' } },
890
+ React.createElement("g", { class: "selection-group-borders" },
891
+ React.createElement("line", { x1: "0", y1: "0", x2: object.totalWidth, y2: "0", style: {
892
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
893
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_e = this.core.store.state) === null || _e === void 0 ? void 0 : _e.scale})`,
894
+ strokeLinecap: 'square',
895
+ } }),
896
+ React.createElement("line", { x1: "0", y1: "0", x2: "0", y2: object.totalHeight, style: {
897
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
898
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_f = this.core.store.state) === null || _f === void 0 ? void 0 : _f.scale})`,
899
+ strokeLinecap: 'square',
900
+ } }),
901
+ React.createElement("line", { x1: "0", y1: object.totalHeight, x2: object.totalWidth, y2: object.totalHeight, style: {
902
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
903
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_g = this.core.store.state) === null || _g === void 0 ? void 0 : _g.scale})`,
904
+ strokeLinecap: 'square',
905
+ } }),
906
+ React.createElement("line", { x1: object.totalWidth, y1: "0", x2: object.totalWidth, y2: object.totalHeight, style: {
907
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
908
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_h = this.core.store.state) === null || _h === void 0 ? void 0 : _h.scale})`,
909
+ strokeLinecap: 'square',
910
+ } })),
911
+ !this.isSelecting && (React.createElement("g", { class: "selection-group-handles", style: { pointerEvents: 'auto' } },
912
+ React.createElement("rect", { class: "resize-handle top-left", x: `${(-(baseHandleSize - 1) * object.scale) / ((_j = this.core.store.state) === null || _j === void 0 ? void 0 : _j.scale)}`, y: `${(-(baseHandleSize - 1) * object.scale) / ((_k = this.core.store.state) === null || _k === void 0 ? void 0 : _k.scale)}`, width: `${((baseHandleSize - 1) * 2 * object.scale) / ((_l = this.core.store.state) === null || _l === void 0 ? void 0 : _l.scale)}`, height: `${((baseHandleSize - 1) * 2 * object.scale) / ((_m = this.core.store.state) === null || _m === void 0 ? void 0 : _m.scale)}`, style: {
913
+ fill: 'var(--kritzel-selection-handle-color, #ffffff)',
914
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
915
+ strokeWidth: `calc(2px * ${object.scale} / ${(_o = this.core.store.state) === null || _o === void 0 ? void 0 : _o.scale})`,
916
+ paintOrder: 'fill',
917
+ } }),
918
+ React.createElement("rect", { class: "resize-handle-overlay top-left", x: `${(-baseHandleTouchSize * object.scale) / ((_p = this.core.store.state) === null || _p === void 0 ? void 0 : _p.scale)}`, y: `${(-baseHandleTouchSize * object.scale) / ((_q = this.core.store.state) === null || _q === void 0 ? void 0 : _q.scale)}`, width: `${(baseHandleTouchSize * 2 * object.scale) / ((_r = this.core.store.state) === null || _r === void 0 ? void 0 : _r.scale)}`, height: `${(baseHandleTouchSize * 2 * object.scale) / ((_s = this.core.store.state) === null || _s === void 0 ? void 0 : _s.scale)}`, style: {
919
+ fill: 'transparent',
920
+ paintOrder: 'fill',
921
+ } }),
922
+ React.createElement("rect", { class: "resize-handle top-right", x: `${object.totalWidth - ((baseHandleSize - 1) * object.scale) / ((_t = this.core.store.state) === null || _t === void 0 ? void 0 : _t.scale)}`, y: `${(-(baseHandleSize - 1) * object.scale) / ((_u = this.core.store.state) === null || _u === void 0 ? void 0 : _u.scale)}`, width: `${((baseHandleSize - 1) * 2 * object.scale) / ((_v = this.core.store.state) === null || _v === void 0 ? void 0 : _v.scale)}`, height: `${((baseHandleSize - 1) * 2 * object.scale) / ((_w = this.core.store.state) === null || _w === void 0 ? void 0 : _w.scale)}`, style: {
923
+ fill: 'var(--kritzel-selection-handle-color, #ffffff)',
924
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
925
+ strokeWidth: `calc(2px * ${object.scale} / ${(_x = this.core.store.state) === null || _x === void 0 ? void 0 : _x.scale})`,
926
+ paintOrder: 'fill',
927
+ } }),
928
+ React.createElement("rect", { class: "resize-handle-overlay top-right", x: `${object.totalWidth - (baseHandleTouchSize * object.scale) / ((_y = this.core.store.state) === null || _y === void 0 ? void 0 : _y.scale)}`, y: `${(-baseHandleTouchSize * object.scale) / ((_z = this.core.store.state) === null || _z === void 0 ? void 0 : _z.scale)}`, width: `${(baseHandleTouchSize * 2 * object.scale) / ((_0 = this.core.store.state) === null || _0 === void 0 ? void 0 : _0.scale)}`, height: `${(baseHandleTouchSize * 2 * object.scale) / ((_1 = this.core.store.state) === null || _1 === void 0 ? void 0 : _1.scale)}`, style: {
929
+ fill: 'transparent',
930
+ paintOrder: 'fill',
931
+ } }),
932
+ React.createElement("rect", { class: "resize-handle bottom-left", x: `${(-(baseHandleSize - 1) * object.scale) / ((_2 = this.core.store.state) === null || _2 === void 0 ? void 0 : _2.scale)}`, y: `${object.totalHeight - ((baseHandleSize - 1) * object.scale) / ((_3 = this.core.store.state) === null || _3 === void 0 ? void 0 : _3.scale)}`, width: `${((baseHandleSize - 1) * 2 * object.scale) / ((_4 = this.core.store.state) === null || _4 === void 0 ? void 0 : _4.scale)}`, height: `${((baseHandleSize - 1) * 2 * object.scale) / ((_5 = this.core.store.state) === null || _5 === void 0 ? void 0 : _5.scale)}`, style: {
933
+ fill: 'var(--kritzel-selection-handle-color, #ffffff)',
934
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
935
+ strokeWidth: `calc(2px * ${object.scale} / ${(_6 = this.core.store.state) === null || _6 === void 0 ? void 0 : _6.scale})`,
936
+ paintOrder: 'fill',
937
+ } }),
938
+ React.createElement("rect", { class: "resize-handle-overlay bottom-left", x: `${(-baseHandleTouchSize * object.scale) / ((_7 = this.core.store.state) === null || _7 === void 0 ? void 0 : _7.scale)}`, y: `${object.totalHeight - (baseHandleTouchSize * object.scale) / ((_8 = this.core.store.state) === null || _8 === void 0 ? void 0 : _8.scale)}`, width: `${(baseHandleTouchSize * 2 * object.scale) / ((_9 = this.core.store.state) === null || _9 === void 0 ? void 0 : _9.scale)}`, height: `${(baseHandleTouchSize * 2 * object.scale) / ((_10 = this.core.store.state) === null || _10 === void 0 ? void 0 : _10.scale)}`, style: {
939
+ fill: 'transparent',
940
+ paintOrder: 'fill',
941
+ } }),
942
+ React.createElement("rect", { class: "resize-handle bottom-right", x: `${object.totalWidth - ((baseHandleSize - 1) * object.scale) / ((_11 = this.core.store.state) === null || _11 === void 0 ? void 0 : _11.scale)}`, y: `${object.totalHeight - ((baseHandleSize - 1) * object.scale) / ((_12 = this.core.store.state) === null || _12 === void 0 ? void 0 : _12.scale)}`, width: `${((baseHandleSize - 1) * 2 * object.scale) / ((_13 = this.core.store.state) === null || _13 === void 0 ? void 0 : _13.scale)}`, height: `${((baseHandleSize - 1) * 2 * object.scale) / ((_14 = this.core.store.state) === null || _14 === void 0 ? void 0 : _14.scale)}`, style: {
943
+ fill: 'var(--kritzel-selection-handle-color, #ffffff)',
944
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
945
+ strokeWidth: `calc(2px * ${object.scale} / ${(_15 = this.core.store.state) === null || _15 === void 0 ? void 0 : _15.scale})`,
946
+ paintOrder: 'fill',
947
+ } }),
948
+ React.createElement("rect", { class: "resize-handle-overlay bottom-right", x: `${object.totalWidth - (baseHandleTouchSize * object.scale) / ((_16 = this.core.store.state) === null || _16 === void 0 ? void 0 : _16.scale)}`, y: `${object.totalHeight - (baseHandleTouchSize * object.scale) / ((_17 = this.core.store.state) === null || _17 === void 0 ? void 0 : _17.scale)}`, width: `${(baseHandleTouchSize * 2 * object.scale) / ((_18 = this.core.store.state) === null || _18 === void 0 ? void 0 : _18.scale)}`, height: `${(baseHandleTouchSize * 2 * object.scale) / ((_19 = this.core.store.state) === null || _19 === void 0 ? void 0 : _19.scale)}`, style: {
949
+ fill: 'transparent',
950
+ paintOrder: 'fill',
951
+ } }),
952
+ React.createElement("line", { x1: object.totalWidth / 2, y1: "0", x2: object.totalWidth / 2, y2: -((15 * object.scale) / ((_20 = this.core.store.state) === null || _20 === void 0 ? void 0 : _20.scale)), style: {
953
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
954
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_21 = this.core.store.state) === null || _21 === void 0 ? void 0 : _21.scale})`,
955
+ } }),
956
+ React.createElement("circle", { class: "rotation-handle", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_22 = this.core.store.state) === null || _22 === void 0 ? void 0 : _22.scale)), r: `${((baseHandleSize - 1) * object.scale) / ((_23 = this.core.store.state) === null || _23 === void 0 ? void 0 : _23.scale)}`, style: {
957
+ fill: 'var(--kritzel-selection-handle-color, #ffffff)',
958
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
959
+ strokeWidth: `calc(2px * ${object.scale} / ${(_24 = this.core.store.state) === null || _24 === void 0 ? void 0 : _24.scale})`,
960
+ paintOrder: 'fill',
961
+ } }),
962
+ React.createElement("circle", { class: "rotation-handle-overlay", cx: object.totalWidth / 2, cy: -((15 * object.scale) / ((_25 = this.core.store.state) === null || _25 === void 0 ? void 0 : _25.scale)), r: `${(baseHandleTouchSize * object.scale) / ((_26 = this.core.store.state) === null || _26 === void 0 ? void 0 : _26.scale)}`, style: {
963
+ fill: 'transparent',
964
+ paintOrder: 'fill',
965
+ } }))))),
966
+ this.core.displaySelectionLineUI(object) && KritzelClassHelper.isInstanceOf(object, 'KritzelLine') && (React.createElement("g", { class: "selection-line-ui", style: { pointerEvents: 'none' } },
967
+ React.createElement("g", { class: "selection-line-borders" },
968
+ React.createElement("path", { class: "selection-line-border", d: this.core.anchorManager.computeClippedLinePath(object, true), style: {
969
+ stroke: 'var(--kritzel-selection-border-color, #007AFF)',
970
+ strokeWidth: `calc(var(--kritzel-selection-border-width, 2px) * ${object.scale} / ${(_27 = this.core.store.state) === null || _27 === void 0 ? void 0 : _27.scale})`,
971
+ strokeLinecap: 'round',
972
+ fill: 'none',
973
+ } })),
974
+ !this.isSelecting && (React.createElement("g", { class: "selection-line-handles", style: { pointerEvents: 'auto' } },
975
+ React.createElement("circle", { class: "selection-line-handle start", cx: object.startX - object.x, cy: object.startY - object.y, r: `${((baseHandleSize - 1) * object.scale) / ((_28 = this.core.store.state) === null || _28 === void 0 ? void 0 : _28.scale)}`, style: {
976
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
977
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
978
+ strokeWidth: `calc(2px * ${object.scale} / ${(_29 = this.core.store.state) === null || _29 === void 0 ? void 0 : _29.scale})`,
979
+ paintOrder: 'fill',
980
+ } }),
981
+ React.createElement("circle", { class: "selection-line-handle-overlay start", cx: object.startX - object.x, cy: object.startY - object.y, r: `${(baseHandleTouchSize * object.scale) / ((_30 = this.core.store.state) === null || _30 === void 0 ? void 0 : _30.scale)}`, style: {
982
+ fill: 'transparent',
983
+ paintOrder: 'fill',
984
+ } }),
985
+ React.createElement("circle", { class: "selection-line-handle center", cx: object.controlX !== undefined
986
+ ? (object.startX + 2 * object.controlX + object.endX) / 4 - object.x
987
+ : (object.startX - object.x + object.endX - object.x) / 2, cy: object.controlY !== undefined
988
+ ? (object.startY + 2 * object.controlY + object.endY) / 4 - object.y
989
+ : (object.startY - object.y + object.endY - object.y) / 2, r: `${((baseHandleSize - 1) * object.scale) / ((_31 = this.core.store.state) === null || _31 === void 0 ? void 0 : _31.scale)}`, style: {
990
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
991
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
992
+ strokeWidth: `calc(2px * ${object.scale} / ${(_32 = this.core.store.state) === null || _32 === void 0 ? void 0 : _32.scale})`,
993
+ paintOrder: 'fill',
994
+ } }),
995
+ React.createElement("circle", { class: "selection-line-handle-overlay center", cx: object.controlX !== undefined
996
+ ? (object.startX + 2 * object.controlX + object.endX) / 4 - object.x
997
+ : (object.startX - object.x + object.endX - object.x) / 2, cy: object.controlY !== undefined
998
+ ? (object.startY + 2 * object.controlY + object.endY) / 4 - object.y
999
+ : (object.startY - object.y + object.endY - object.y) / 2, r: `${(baseHandleTouchSize * object.scale) / ((_33 = this.core.store.state) === null || _33 === void 0 ? void 0 : _33.scale)}`, style: {
1000
+ fill: 'transparent',
1001
+ paintOrder: 'fill',
1002
+ } }),
1003
+ React.createElement("circle", { class: "selection-line-handle end", cx: object.endX - object.x, cy: object.endY - object.y, r: `${((baseHandleSize - 1) * object.scale) / ((_34 = this.core.store.state) === null || _34 === void 0 ? void 0 : _34.scale)}`, style: {
1004
+ fill: 'var(--kritzel-selection-handle-color, #000000)',
1005
+ stroke: 'var(--kritzel-selection-handle-stroke-color, #007AFF)',
1006
+ strokeWidth: `calc(2px * ${object.scale} / ${(_35 = this.core.store.state) === null || _35 === void 0 ? void 0 : _35.scale})`,
1007
+ paintOrder: 'fill',
1008
+ } }),
1009
+ React.createElement("circle", { class: "selection-line-handle-overlay end", cx: object.endX - object.x, cy: object.endY - object.y, r: `${(baseHandleTouchSize * object.scale) / ((_36 = this.core.store.state) === null || _36 === void 0 ? void 0 : _36.scale)}`, style: {
1010
+ fill: 'transparent',
1011
+ paintOrder: 'fill',
1012
+ } })))))))));
1013
+ }),
1014
+ (() => {
1015
+ const data = this.core.anchorManager.getAnchorLinesRenderData();
1016
+ if (!data)
1017
+ return null;
1018
+ return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", class: "anchor-lines", style: {
1019
+ position: 'absolute',
1020
+ left: '0',
1021
+ top: '0',
1022
+ width: '1px',
1023
+ height: '1px',
1024
+ pointerEvents: 'none',
1025
+ zIndex: '9998',
1026
+ overflow: 'visible',
1027
+ } },
1028
+ data.startAnchorViz && (React.createElement("g", { class: "anchor-line-start" },
1029
+ data.startAnchorViz.pathD ? (React.createElement("path", { d: data.startAnchorViz.pathD, style: {
1030
+ stroke: 'var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.3))',
1031
+ strokeWidth: `${data.lineStrokeWidth}`,
1032
+ strokeDasharray: data.dashArray,
1033
+ strokeLinecap: 'round',
1034
+ fill: 'none',
1035
+ } })) : (React.createElement("line", { x1: data.startAnchorViz.edgeX, y1: data.startAnchorViz.edgeY, x2: data.startAnchorViz.centerX, y2: data.startAnchorViz.centerY, style: {
1036
+ stroke: 'var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.3))',
1037
+ strokeWidth: `${data.lineStrokeWidth}`,
1038
+ strokeDasharray: data.dashArray,
1039
+ strokeLinecap: 'round',
1040
+ } })),
1041
+ React.createElement("circle", { cx: data.startAnchorViz.centerX, cy: data.startAnchorViz.centerY, r: data.indicatorRadius, style: {
1042
+ fill: 'var(--kritzel-snap-indicator-fill, rgba(0, 0, 0))',
1043
+ stroke: 'var(--kritzel-snap-indicator-stroke, #007bff)',
1044
+ strokeWidth: data.indicatorStrokeWidth,
1045
+ } }))),
1046
+ data.endAnchorViz && (React.createElement("g", { class: "anchor-line-end" },
1047
+ data.endAnchorViz.pathD ? (React.createElement("path", { d: data.endAnchorViz.pathD, style: {
1048
+ stroke: 'var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))',
1049
+ strokeWidth: `${data.lineStrokeWidth}`,
1050
+ strokeDasharray: data.dashArray,
1051
+ strokeLinecap: 'round',
1052
+ fill: 'none',
1053
+ } })) : (React.createElement("line", { x1: data.endAnchorViz.edgeX, y1: data.endAnchorViz.edgeY, x2: data.endAnchorViz.centerX, y2: data.endAnchorViz.centerY, style: {
1054
+ stroke: 'var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))',
1055
+ strokeWidth: `${data.lineStrokeWidth}`,
1056
+ strokeDasharray: data.dashArray,
1057
+ strokeLinecap: 'round',
1058
+ } })),
1059
+ React.createElement("circle", { cx: data.endAnchorViz.centerX, cy: data.endAnchorViz.centerY, r: data.indicatorRadius, style: {
1060
+ fill: 'var(--kritzel-snap-indicator-fill, rgba(59, 130, 246, 0.3))',
1061
+ stroke: 'var(--kritzel-snap-indicator-stroke, #007bff)',
1062
+ strokeWidth: data.indicatorStrokeWidth,
1063
+ } })))));
1064
+ })(),
1065
+ (() => {
1066
+ const data = this.core.anchorManager.getSnapIndicatorRenderData();
1067
+ if (!data)
1068
+ return null;
1069
+ return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", class: "snap-indicator", style: {
1070
+ position: 'absolute',
1071
+ left: '0',
1072
+ top: '0',
1073
+ width: '1px',
1074
+ height: '1px',
1075
+ pointerEvents: 'none',
1076
+ zIndex: '9999',
1077
+ overflow: 'visible',
1078
+ } },
1079
+ React.createElement("g", null,
1080
+ data.snapLinePath ? (React.createElement("path", { d: data.snapLinePath, fill: "none", style: {
1081
+ stroke: 'var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))',
1082
+ strokeWidth: data.lineStrokeWidth,
1083
+ strokeDasharray: data.dashArray,
1084
+ strokeLinecap: 'round',
1085
+ } })) : (data.edgeX !== undefined &&
1086
+ data.edgeY !== undefined && (React.createElement("line", { x1: data.edgeX, y1: data.edgeY, x2: data.centerX, y2: data.centerY, style: {
1087
+ stroke: 'var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))',
1088
+ strokeWidth: data.lineStrokeWidth,
1089
+ strokeDasharray: data.dashArray,
1090
+ strokeLinecap: 'round',
1091
+ } }))),
1092
+ React.createElement("circle", { cx: data.centerX, cy: data.centerY, r: data.indicatorRadius, style: {
1093
+ fill: 'var(--kritzel-snap-indicator-fill, rgba(59, 130, 246, 0.3))',
1094
+ stroke: 'var(--kritzel-snap-indicator-stroke, #007bff)',
1095
+ strokeWidth: data.indicatorStrokeWidth,
1096
+ } }))));
1097
+ })()),
1098
+ this.core.store.state.isContextMenuVisible && (React.createElement("kritzel-context-menu", { class: "context-menu", ref: el => (this.contextMenuElement = el), items: this.core.store.state.contextMenuItems, objects: ((_y = this.core.store.selectionGroup) === null || _y === void 0 ? void 0 : _y.objects) || [], style: {
1099
+ position: 'fixed',
1100
+ left: `${this.core.store.state.contextMenuX}px`,
1101
+ top: `${this.core.store.state.contextMenuY}px`,
1102
+ zIndex: '10002',
1103
+ }, onActionSelected: event => {
1104
+ var _a;
1105
+ event.detail.action({
1106
+ x: (-this.core.store.state.translateX + this.core.store.state.contextMenuX) / this.core.store.state.scale,
1107
+ y: (-this.core.store.state.translateY + this.core.store.state.contextMenuY) / this.core.store.state.scale,
1108
+ }, (_a = this.core.store.selectionGroup) === null || _a === void 0 ? void 0 : _a.objects);
1109
+ this.hideContextMenu();
1110
+ }, onClose: () => this.hideContextMenu() })),
1111
+ ((_z = this.core.store.state) === null || _z === void 0 ? void 0 : _z.activeTool) instanceof KritzelEraserTool && !this.core.store.state.isScaling && React.createElement("kritzel-cursor-trail", { core: this.core })));
1112
+ }
1113
+ };
1114
+ __decorate([
1115
+ Element()
1116
+ ], KritzelEngine.prototype, "host", void 0);
1117
+ __decorate([
1118
+ Prop()
1119
+ ], KritzelEngine.prototype, "workspace", void 0);
1120
+ __decorate([
1121
+ Prop()
1122
+ ], KritzelEngine.prototype, "syncConfig", void 0);
1123
+ __decorate([
1124
+ Watch('workspace')
1125
+ ], KritzelEngine.prototype, "onWorkspaceChange", null);
1126
+ __decorate([
1127
+ Prop()
1128
+ ], KritzelEngine.prototype, "activeTool", void 0);
1129
+ __decorate([
1130
+ Prop()
1131
+ ], KritzelEngine.prototype, "globalContextMenuItems", void 0);
1132
+ __decorate([
1133
+ Prop()
1134
+ ], KritzelEngine.prototype, "objectContextMenuItems", void 0);
1135
+ __decorate([
1136
+ Prop({ mutable: true })
1137
+ ], KritzelEngine.prototype, "scaleMax", void 0);
1138
+ __decorate([
1139
+ Watch('scaleMax')
1140
+ ], KritzelEngine.prototype, "validateScaleMax", null);
1141
+ __decorate([
1142
+ Prop({ mutable: true })
1143
+ ], KritzelEngine.prototype, "scaleMin", void 0);
1144
+ __decorate([
1145
+ Watch('scaleMin')
1146
+ ], KritzelEngine.prototype, "validateScaleMin", null);
1147
+ __decorate([
1148
+ Prop()
1149
+ ], KritzelEngine.prototype, "cursorTarget", void 0);
1150
+ __decorate([
1151
+ Watch('cursorTarget')
1152
+ ], KritzelEngine.prototype, "onCursorTargetChange", null);
1153
+ __decorate([
1154
+ Prop()
1155
+ ], KritzelEngine.prototype, "lockDrawingScale", void 0);
1156
+ __decorate([
1157
+ Watch('lockDrawingScale')
1158
+ ], KritzelEngine.prototype, "onLockDrawingScaleChange", null);
1159
+ __decorate([
1160
+ Prop()
1161
+ ], KritzelEngine.prototype, "theme", void 0);
1162
+ __decorate([
1163
+ Watch('theme')
1164
+ ], KritzelEngine.prototype, "onThemeChange", null);
1165
+ __decorate([
1166
+ Event()
1167
+ ], KritzelEngine.prototype, "isEngineReady", void 0);
1168
+ __decorate([
1169
+ Event()
1170
+ ], KritzelEngine.prototype, "activeToolChange", void 0);
1171
+ __decorate([
1172
+ Event()
1173
+ ], KritzelEngine.prototype, "objectsSelectionChange", void 0);
1174
+ __decorate([
1175
+ Event()
1176
+ ], KritzelEngine.prototype, "workspacesChange", void 0);
1177
+ __decorate([
1178
+ Event()
1179
+ ], KritzelEngine.prototype, "longpress", void 0);
1180
+ __decorate([
1181
+ Event()
1182
+ ], KritzelEngine.prototype, "objectsChange", void 0);
1183
+ __decorate([
1184
+ Event()
1185
+ ], KritzelEngine.prototype, "undoStateChange", void 0);
1186
+ __decorate([
1187
+ Event()
1188
+ ], KritzelEngine.prototype, "objectsInViewportChange", void 0);
1189
+ __decorate([
1190
+ State()
1191
+ ], KritzelEngine.prototype, "forceUpdate", void 0);
1192
+ __decorate([
1193
+ Method()
1194
+ ], KritzelEngine.prototype, "triggerSelectionChange", null);
1195
+ __decorate([
1196
+ Listen('wheel', { passive: true })
1197
+ ], KritzelEngine.prototype, "handleWheel", null);
1198
+ __decorate([
1199
+ Listen('pointerdown', { passive: false })
1200
+ ], KritzelEngine.prototype, "handlePointerDown", null);
1201
+ __decorate([
1202
+ Listen('pointermove', { passive: false })
1203
+ ], KritzelEngine.prototype, "handlePointerMove", null);
1204
+ __decorate([
1205
+ Listen('pointerup', { passive: false })
1206
+ ], KritzelEngine.prototype, "handlePointerUp", null);
1207
+ __decorate([
1208
+ Listen('pointercancel', { passive: false })
1209
+ ], KritzelEngine.prototype, "handlePointerCancel", null);
1210
+ __decorate([
1211
+ Listen('longpress', { passive: true })
1212
+ ], KritzelEngine.prototype, "handleLongPress", null);
1213
+ __decorate([
1214
+ Listen('contextmenu', { capture: false })
1215
+ ], KritzelEngine.prototype, "handleContextMenu", null);
1216
+ __decorate([
1217
+ Listen('resize', { target: 'window' })
1218
+ ], KritzelEngine.prototype, "handleResize", null);
1219
+ __decorate([
1220
+ Listen('keydown', { target: 'window' })
1221
+ ], KritzelEngine.prototype, "handleKeyDown", null);
1222
+ __decorate([
1223
+ Listen('keyup', { target: 'window' })
1224
+ ], KritzelEngine.prototype, "handleKeyUp", null);
1225
+ __decorate([
1226
+ Listen('dblclick', { target: 'document' })
1227
+ ], KritzelEngine.prototype, "preventDoubleTapZoomOnTouchDevices", null);
1228
+ __decorate([
1229
+ Method()
1230
+ ], KritzelEngine.prototype, "registerTool", null);
1231
+ __decorate([
1232
+ Method()
1233
+ ], KritzelEngine.prototype, "changeActiveTool", null);
1234
+ __decorate([
1235
+ Method()
1236
+ ], KritzelEngine.prototype, "disable", null);
1237
+ __decorate([
1238
+ Method()
1239
+ ], KritzelEngine.prototype, "enable", null);
1240
+ __decorate([
1241
+ Method()
1242
+ ], KritzelEngine.prototype, "delete", null);
1243
+ __decorate([
1244
+ Method()
1245
+ ], KritzelEngine.prototype, "copy", null);
1246
+ __decorate([
1247
+ Method()
1248
+ ], KritzelEngine.prototype, "paste", null);
1249
+ __decorate([
1250
+ Method()
1251
+ ], KritzelEngine.prototype, "bringForward", null);
1252
+ __decorate([
1253
+ Method()
1254
+ ], KritzelEngine.prototype, "sendBackward", null);
1255
+ __decorate([
1256
+ Method()
1257
+ ], KritzelEngine.prototype, "bringToFront", null);
1258
+ __decorate([
1259
+ Method()
1260
+ ], KritzelEngine.prototype, "sendToBack", null);
1261
+ __decorate([
1262
+ Method()
1263
+ ], KritzelEngine.prototype, "group", null);
1264
+ __decorate([
1265
+ Method()
1266
+ ], KritzelEngine.prototype, "ungroup", null);
1267
+ __decorate([
1268
+ Method()
1269
+ ], KritzelEngine.prototype, "undo", null);
1270
+ __decorate([
1271
+ Method()
1272
+ ], KritzelEngine.prototype, "redo", null);
1273
+ __decorate([
1274
+ Method()
1275
+ ], KritzelEngine.prototype, "hideContextMenu", null);
1276
+ __decorate([
1277
+ Method()
1278
+ ], KritzelEngine.prototype, "getObjectById", null);
1279
+ __decorate([
1280
+ Method()
1281
+ ], KritzelEngine.prototype, "addObject", null);
1282
+ __decorate([
1283
+ Method()
1284
+ ], KritzelEngine.prototype, "updateObject", null);
1285
+ __decorate([
1286
+ Method()
1287
+ ], KritzelEngine.prototype, "removeObject", null);
1288
+ __decorate([
1289
+ Method()
1290
+ ], KritzelEngine.prototype, "getSelectedObjects", null);
1291
+ __decorate([
1292
+ Method()
1293
+ ], KritzelEngine.prototype, "getDisplayableShortcuts", null);
1294
+ __decorate([
1295
+ Method()
1296
+ ], KritzelEngine.prototype, "selectObjects", null);
1297
+ __decorate([
1298
+ Method()
1299
+ ], KritzelEngine.prototype, "selectAllObjectsInViewport", null);
1300
+ __decorate([
1301
+ Method()
1302
+ ], KritzelEngine.prototype, "clearSelection", null);
1303
+ __decorate([
1304
+ Method()
1305
+ ], KritzelEngine.prototype, "centerObjectInViewport", null);
1306
+ __decorate([
1307
+ Method()
1308
+ ], KritzelEngine.prototype, "backToContent", null);
1309
+ __decorate([
1310
+ Method()
1311
+ ], KritzelEngine.prototype, "getCopiedObjects", null);
1312
+ __decorate([
1313
+ Method()
1314
+ ], KritzelEngine.prototype, "getScreenshot", null);
1315
+ __decorate([
1316
+ Method()
1317
+ ], KritzelEngine.prototype, "exportViewportAsPng", null);
1318
+ __decorate([
1319
+ Method()
1320
+ ], KritzelEngine.prototype, "exportViewportAsSvg", null);
1321
+ __decorate([
1322
+ Method()
1323
+ ], KritzelEngine.prototype, "createWorkspace", null);
1324
+ __decorate([
1325
+ Method()
1326
+ ], KritzelEngine.prototype, "updateWorkspace", null);
1327
+ __decorate([
1328
+ Method()
1329
+ ], KritzelEngine.prototype, "deleteWorkspace", null);
1330
+ __decorate([
1331
+ Method()
1332
+ ], KritzelEngine.prototype, "getWorkspaces", null);
1333
+ __decorate([
1334
+ Method()
1335
+ ], KritzelEngine.prototype, "getActiveWorkspace", null);
1336
+ KritzelEngine = __decorate([
1337
+ Component({
1338
+ tag: 'kritzel-engine',
1339
+ styleUrl: 'kritzel-engine.css',
1340
+ shadow: true,
1341
+ })
1342
+ ], KritzelEngine);
1343
+ export { KritzelEngine };