kritzel-stencil 0.0.105 → 0.0.106

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 (157) hide show
  1. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js +265 -123
  2. package/dist/cjs/kritzel-brush-style_18.cjs.entry.js.map +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/stencil.cjs.js +1 -1
  5. package/dist/collection/classes/handlers/context-menu.handler.js +1 -1
  6. package/dist/collection/classes/handlers/context-menu.handler.js.map +1 -1
  7. package/dist/collection/classes/handlers/selection.handler.js +4 -4
  8. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  9. package/dist/collection/classes/objects/base-object.class.js +7 -2
  10. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  11. package/dist/collection/classes/objects/image.class.js +14 -7
  12. package/dist/collection/classes/objects/image.class.js.map +1 -1
  13. package/dist/collection/classes/objects/path.class.js +22 -16
  14. package/dist/collection/classes/objects/path.class.js.map +1 -1
  15. package/dist/collection/classes/objects/selection-box.class.js +15 -9
  16. package/dist/collection/classes/objects/selection-box.class.js.map +1 -1
  17. package/dist/collection/classes/objects/selection-group.class.js +11 -5
  18. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  19. package/dist/collection/classes/objects/text.class.js +29 -12
  20. package/dist/collection/classes/objects/text.class.js.map +1 -1
  21. package/dist/collection/classes/reviver.class.js +4 -4
  22. package/dist/collection/classes/reviver.class.js.map +1 -1
  23. package/dist/collection/classes/store.class.js +30 -14
  24. package/dist/collection/classes/store.class.js.map +1 -1
  25. package/dist/collection/classes/tools/brush-tool.class.js +4 -4
  26. package/dist/collection/classes/tools/brush-tool.class.js.map +1 -1
  27. package/dist/collection/classes/tools/image-tool.class.js +2 -2
  28. package/dist/collection/classes/tools/image-tool.class.js.map +1 -1
  29. package/dist/collection/classes/tools/selection-tool.class.js +1 -1
  30. package/dist/collection/classes/tools/selection-tool.class.js.map +1 -1
  31. package/dist/collection/classes/tools/text-tool.class.js +2 -2
  32. package/dist/collection/classes/tools/text-tool.class.js.map +1 -1
  33. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.css +10 -10
  34. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +1 -1
  35. package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js.map +1 -1
  36. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +42 -1
  37. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  38. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +235 -22
  39. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  40. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.css +43 -43
  41. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js +2 -2
  42. package/dist/collection/components/shared/kritzel-brush-style/kritzel-brush-style.js.map +1 -1
  43. package/dist/collection/components/shared/kritzel-color/kritzel-color.css +20 -20
  44. package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
  45. package/dist/collection/components/shared/kritzel-color/kritzel-color.js.map +1 -1
  46. package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +1 -1
  47. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.css +53 -53
  48. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js +1 -1
  49. package/dist/collection/components/shared/kritzel-dropdown/kritzel-dropdown.js.map +1 -1
  50. package/dist/collection/components/shared/kritzel-font/kritzel-font.css +10 -10
  51. package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
  52. package/dist/collection/components/shared/kritzel-font/kritzel-font.js.map +1 -1
  53. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +48 -48
  54. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js +2 -2
  55. package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.js.map +1 -1
  56. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +30 -30
  57. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
  58. package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js.map +1 -1
  59. package/dist/collection/components/shared/kritzel-icon/kritzel-icon.css +17 -17
  60. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  61. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +17 -17
  62. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +4 -4
  63. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js.map +1 -1
  64. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +1 -1
  65. package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js.map +1 -1
  66. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +18 -18
  67. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +2 -2
  68. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js.map +1 -1
  69. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
  70. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +2 -2
  71. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  72. package/dist/collection/interfaces/object.interface.js.map +1 -1
  73. package/dist/components/kritzel-brush-style.js +1 -1
  74. package/dist/components/kritzel-color-palette.js +1 -1
  75. package/dist/components/kritzel-color.js +1 -1
  76. package/dist/components/kritzel-context-menu.js +1 -1
  77. package/dist/components/kritzel-control-brush-config.js +1 -1
  78. package/dist/components/kritzel-control-text-config.js +1 -1
  79. package/dist/components/kritzel-controls.js +1 -1
  80. package/dist/components/kritzel-cursor-trail.js +1 -1
  81. package/dist/components/kritzel-dropdown.js +1 -1
  82. package/dist/components/kritzel-editor.js +58 -18
  83. package/dist/components/kritzel-editor.js.map +1 -1
  84. package/dist/components/kritzel-engine.js +1 -1
  85. package/dist/components/kritzel-font-family.js +1 -1
  86. package/dist/components/kritzel-font-size.js +1 -1
  87. package/dist/components/kritzel-font.js +1 -1
  88. package/dist/components/kritzel-stroke-size.js +1 -1
  89. package/dist/components/kritzel-tooltip.js +1 -1
  90. package/dist/components/kritzel-utility-panel.js +1 -1
  91. package/dist/components/{p-X3xYsp4r.js → p-9IX8ss5J.js} +6 -6
  92. package/dist/components/p-9IX8ss5J.js.map +1 -0
  93. package/dist/components/{p-Ddfewfv9.js → p-B1tJ3Woq.js} +3 -3
  94. package/dist/components/{p-Ddfewfv9.js.map → p-B1tJ3Woq.js.map} +1 -1
  95. package/dist/components/{p-D06w3u84.js → p-B7P9QBiE.js} +4 -4
  96. package/dist/components/p-B7P9QBiE.js.map +1 -0
  97. package/dist/components/{p-BjqfG-5H.js → p-BFlJumTk.js} +10 -10
  98. package/dist/components/{p-BjqfG-5H.js.map → p-BFlJumTk.js.map} +1 -1
  99. package/dist/components/{p-DT8_Rz-o.js → p-BcQCX1Z6.js} +67 -39
  100. package/dist/components/p-BcQCX1Z6.js.map +1 -0
  101. package/dist/components/{p-_wFpvzNp.js → p-Bhfk_puI.js} +4 -4
  102. package/dist/components/p-Bhfk_puI.js.map +1 -0
  103. package/dist/components/{p-BYH2jNAX.js → p-CF5pcRGS.js} +4 -4
  104. package/dist/components/{p-BYH2jNAX.js.map → p-CF5pcRGS.js.map} +1 -1
  105. package/dist/components/p-CZkSABuJ.js.map +1 -1
  106. package/dist/components/{p-BYt7-mGK.js → p-Cbu5RSmC.js} +3 -3
  107. package/dist/components/{p-BYt7-mGK.js.map → p-Cbu5RSmC.js.map} +1 -1
  108. package/dist/components/{p-DaeIjoQm.js → p-Ck2d5Wd1.js} +4 -4
  109. package/dist/components/p-Ck2d5Wd1.js.map +1 -0
  110. package/dist/components/{p-C3vo4rx8.js → p-CkPd1oL1.js} +151 -71
  111. package/dist/components/p-CkPd1oL1.js.map +1 -0
  112. package/dist/components/{p-C8KDwUb7.js → p-D9nf_Yw4.js} +3 -3
  113. package/dist/components/p-D9nf_Yw4.js.map +1 -0
  114. package/dist/components/{p-D31-QJwi.js → p-DIxwvThL.js} +17 -17
  115. package/dist/components/{p-D31-QJwi.js.map → p-DIxwvThL.js.map} +1 -1
  116. package/dist/components/{p-CDhTT8u8.js → p-Ds3FhuuO.js} +3 -3
  117. package/dist/components/p-Ds3FhuuO.js.map +1 -0
  118. package/dist/components/{p-BgUIonZF.js → p-I1jXruHK.js} +4 -4
  119. package/dist/components/p-I1jXruHK.js.map +1 -0
  120. package/dist/components/{p-BqUM5gV3.js → p-JvUh5Cky.js} +9 -9
  121. package/dist/components/p-JvUh5Cky.js.map +1 -0
  122. package/dist/components/{p-DQHNxDS7.js → p-c6tIpE_t.js} +3 -3
  123. package/dist/components/p-c6tIpE_t.js.map +1 -0
  124. package/dist/components/{p-BJ5xxphF.js → p-wUZba7Vi.js} +4 -4
  125. package/dist/components/{p-BJ5xxphF.js.map → p-wUZba7Vi.js.map} +1 -1
  126. package/dist/esm/kritzel-brush-style_18.entry.js +265 -123
  127. package/dist/esm/kritzel-brush-style_18.entry.js.map +1 -1
  128. package/dist/esm/loader.js +1 -1
  129. package/dist/esm/stencil.js +1 -1
  130. package/dist/stencil/p-7aaf3e49.entry.js +2 -0
  131. package/dist/stencil/p-7aaf3e49.entry.js.map +1 -0
  132. package/dist/stencil/stencil.esm.js +1 -1
  133. package/dist/types/classes/objects/base-object.class.d.ts +4 -3
  134. package/dist/types/classes/objects/image.class.d.ts +1 -1
  135. package/dist/types/classes/objects/path.class.d.ts +1 -1
  136. package/dist/types/classes/objects/selection-box.class.d.ts +1 -1
  137. package/dist/types/classes/objects/selection-group.class.d.ts +1 -1
  138. package/dist/types/classes/objects/text.class.d.ts +12 -1
  139. package/dist/types/classes/store.class.d.ts +3 -3
  140. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +7 -0
  141. package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +8 -1
  142. package/dist/types/components.d.ts +11 -3
  143. package/dist/types/interfaces/object.interface.d.ts +1 -1
  144. package/package.json +1 -1
  145. package/dist/components/p-BgUIonZF.js.map +0 -1
  146. package/dist/components/p-BqUM5gV3.js.map +0 -1
  147. package/dist/components/p-C3vo4rx8.js.map +0 -1
  148. package/dist/components/p-C8KDwUb7.js.map +0 -1
  149. package/dist/components/p-CDhTT8u8.js.map +0 -1
  150. package/dist/components/p-D06w3u84.js.map +0 -1
  151. package/dist/components/p-DQHNxDS7.js.map +0 -1
  152. package/dist/components/p-DT8_Rz-o.js.map +0 -1
  153. package/dist/components/p-DaeIjoQm.js.map +0 -1
  154. package/dist/components/p-X3xYsp4r.js.map +0 -1
  155. package/dist/components/p-_wFpvzNp.js.map +0 -1
  156. package/dist/stencil/p-d0394bb5.entry.js +0 -2
  157. package/dist/stencil/p-d0394bb5.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"selection-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/selection-tool.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAMvD,YAAY,KAAmB;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,eAAe,CAAC,KAAiB;QAC/B,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,iBAAiB,GAAG,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAE1I,IACE,CAAC,cAAc,KAAK,IAAI,IAAI,iBAAiB,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc;gBAChC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB;gBACzC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAC3C,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACrH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,eAAe,CAAC,KAAiB;QAC/B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,KAAiB;QAC7B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,iBAAiB,CAAC,KAAiB;;QACjC,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,0CAAE,OAAO,CAAC,MAAM,MAAK,CAAC,EAAE,CAAC;gBAC/F,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEnE,IAAI,cAAc,YAAY,WAAW,EAAE,CAAC;oBAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;oBACnH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC;oBAE9C,UAAU,CAAC,GAAG,EAAE;wBACd,cAAc,CAAC,KAAK,EAAE,CAAC;oBACzB,CAAC,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAe,CAAC,KAAiB;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEjD,IAAI,cAAc,YAAY,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC;YAE9C,UAAU,CAAC,GAAG,EAAE;gBACd,cAAc,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,KAAiB;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,iBAAiB,GAAG,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAE1I,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,cAAc,EAAE,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;YAC3C,CAAC;YAED,IACE,CAAC,cAAc,KAAK,IAAI,IAAI,iBAAiB,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc;gBAChC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB;gBACzC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAC3C,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACrH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,KAAiB;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,KAAiB;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,iBAAiB,CAAC,KAA8B;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAkB,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,YAAY,qBAAqB,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;YACrB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;YACrB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAA8B;;QAClD,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,0CAAE,UAAU,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,KAAK,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,wBAAwB,CAAuB,CAAC;QAEtF,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,CAAC,CAAsB,CAAC;IACnD,CAAC;IAEO,gBAAgB,CAAC,KAA8B;;QACrD,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,0CAAE,UAAU,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAE9B,MAAM,KAAK,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjF,OAAO,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IACrE,CAAC;IAEO,wBAAwB,CAAC,KAA8B;QAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAmB,CAAC;QAEnD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC5G,CAAC;CACF","sourcesContent":["import { KritzelHandleType } from '../../enums/handle-type.enum';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelStore } from '../store.class';\r\nimport { RemoveSelectionGroupCommand } from '../commands/remove-selection-group.command';\r\nimport { KritzelMoveHandler } from '../handlers/move.handler';\r\nimport { KritzelResizeHandler } from '../handlers/resize.handler';\r\nimport { KritzelRotationHandler } from '../handlers/rotation.handler';\r\nimport { KritzelSelectionHandler } from '../handlers/selection.handler';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelText } from '../objects/text.class';\r\nimport { KritzelToolRegistry } from '../tool.registry';\r\n\r\nexport class KritzelSelectionTool extends KritzelBaseTool {\r\n selectionHandler: KritzelSelectionHandler;\r\n moveHandler: KritzelMoveHandler;\r\n resizeHandler: KritzelResizeHandler;\r\n rotationHandler: KritzelRotationHandler;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n this.selectionHandler = new KritzelSelectionHandler(this._store);\r\n this.moveHandler = new KritzelMoveHandler(this._store);\r\n this.resizeHandler = new KritzelResizeHandler(this._store);\r\n this.rotationHandler = new KritzelRotationHandler(this._store);\r\n }\r\n\r\n handleMouseDown(event: MouseEvent): void {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n this._store.state.isResizeHandleSelected = this.isHandleSelected(event);\r\n this._store.state.isRotationHandleSelected = this.isRotationHandleSelected(event);\r\n this._store.state.resizeHandleType = this.getHandleType(event);\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._store.state.selectionGroup && selectedObject.id !== this._store.state.selectionGroup.id;\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._store.state.selectionGroup &&\r\n !this._store.state.isResizeHandleSelected &&\r\n !this._store.state.isRotationHandleSelected\r\n ) {\r\n this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));\r\n }\r\n }\r\n\r\n this.moveHandler.handleMouseDown(event);\r\n this.selectionHandler.handleMouseDown(event);\r\n this.resizeHandler.handleMouseDown(event);\r\n this.rotationHandler.handleMouseDown(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleMouseMove(event: MouseEvent): void {\r\n this.moveHandler.handleMouseMove(event);\r\n this.selectionHandler.handleMouseMove(event);\r\n this.resizeHandler.handleMouseMove(event);\r\n this.rotationHandler.handleMouseMove(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleMouseUp(event: MouseEvent): void {\r\n this.moveHandler.handleMouseUp(event);\r\n this.selectionHandler.handleMouseUp(event);\r\n this.resizeHandler.handleMouseUp(event);\r\n this.rotationHandler.handleMouseUp(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleDoubleClick(event: MouseEvent): void {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n if (this._store.state.selectionGroup && this._store.state.selectionGroup?.objects.length === 1) {\r\n const selectedObject = this._store.state.selectionGroup.objects[0];\r\n\r\n if (selectedObject instanceof KritzelText) {\r\n this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._store.state.activeText = selectedObject;\r\n\r\n setTimeout(() => {\r\n selectedObject.focus();\r\n }, 300);\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleDoubleTap(event: TouchEvent): void {\r\n const selectionGroup = this.getSelectedObject(event);\r\n \r\n if (!selectionGroup || selectionGroup.objects.length !== 1) {\r\n return;\r\n }\r\n\r\n const selectedObject = selectionGroup.objects[0];\r\n\r\n if (selectedObject instanceof KritzelText) {\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._store.state.activeText = selectedObject;\r\n\r\n setTimeout(() => {\r\n selectedObject.focus();\r\n }, 300);\r\n }\r\n }\r\n\r\n handleTouchStart(event: TouchEvent): void {\r\n if (this._store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n if (this._store.state.touchCount === 1) {\r\n this._store.state.isResizeHandleSelected = this.isHandleSelected(event);\r\n this._store.state.isRotationHandleSelected = this.isRotationHandleSelected(event);\r\n this._store.state.resizeHandleType = this.getHandleType(event);\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._store.state.selectionGroup && selectedObject.id !== this._store.state.selectionGroup.id;\r\n\r\n if (!this._store.state.selectionGroup && selectedObject) {\r\n this._store.state.skipContextMenu = true;\r\n }\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._store.state.selectionGroup &&\r\n !this._store.state.isResizeHandleSelected &&\r\n !this._store.state.isRotationHandleSelected\r\n ) {\r\n this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));\r\n }\r\n }\r\n\r\n this.rotationHandler.handleTouchStart(event);\r\n this.resizeHandler.handleTouchStart(event);\r\n this.moveHandler.handleTouchStart(event);\r\n this.selectionHandler.handleTouchStart(event);\r\n }\r\n\r\n handleTouchMove(event: TouchEvent): void {\r\n if (this._store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n this.rotationHandler.handleTouchMove(event);\r\n this.resizeHandler.handleTouchMove(event);\r\n this.moveHandler.handleTouchMove(event);\r\n this.selectionHandler.handleTouchMove(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleTouchEnd(event: TouchEvent): void {\r\n if (this._store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n this.rotationHandler.handleTouchEnd(event);\r\n this.resizeHandler.handleTouchEnd(event);\r\n this.moveHandler.handleTouchEnd(event);\r\n this.selectionHandler.handleTouchEnd(event);\r\n }\r\n\r\n private getSelectedObject(event: MouseEvent | TouchEvent): KritzelSelectionGroup | null {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._store.findObjectById(objectElement?.id);\r\n\r\n if (!object) {\r\n return null;\r\n }\r\n\r\n if (object instanceof KritzelSelectionGroup) {\r\n return object;\r\n } else {\r\n const group = new KritzelSelectionGroup(this._store);\r\n group.translateX = 0;\r\n group.translateY = 0;\r\n group.addOrRemove(object);\r\n return group;\r\n }\r\n }\r\n\r\n private getHandleType(event: MouseEvent | TouchEvent): KritzelHandleType {\r\n const shadowRoot = this._store.state.host?.shadowRoot;\r\n if (!shadowRoot) return;\r\n\r\n const point = event instanceof TouchEvent ? event.touches[0] : event;\r\n const elementAtPoint = shadowRoot.elementFromPoint(point.clientX, point.clientY);\r\n\r\n const handle = elementAtPoint.closest('.resize-handle-overlay') as HTMLElement | null;\r\n\r\n return handle?.classList[1] as KritzelHandleType;\r\n }\r\n\r\n private isHandleSelected(event: MouseEvent | TouchEvent): boolean {\r\n const shadowRoot = this._store.state.host?.shadowRoot;\r\n if (!shadowRoot) return false;\r\n\r\n const point = event instanceof TouchEvent ? event.touches[0] : event;\r\n const elementAtPoint = shadowRoot.elementFromPoint(point.clientX, point.clientY);\r\n\r\n return elementAtPoint?.classList.contains('resize-handle-overlay');\r\n }\r\n\r\n private isRotationHandleSelected(event: MouseEvent | TouchEvent): boolean {\r\n const path = event.composedPath() as HTMLElement[];\r\n\r\n return !!path.find(element => element.classList && element.classList.contains('rotation-handle-overlay'));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"selection-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/selection-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelHandleType } from '../../enums/handle-type.enum';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelStore } from '../store.class';\r\nimport { RemoveSelectionGroupCommand } from '../commands/remove-selection-group.command';\r\nimport { KritzelMoveHandler } from '../handlers/move.handler';\r\nimport { KritzelResizeHandler } from '../handlers/resize.handler';\r\nimport { KritzelRotationHandler } from '../handlers/rotation.handler';\r\nimport { KritzelSelectionHandler } from '../handlers/selection.handler';\r\nimport { KritzelSelectionGroup } from '../objects/selection-group.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { KritzelText } from '../objects/text.class';\r\nimport { KritzelToolRegistry } from '../tool.registry';\r\n\r\nexport class KritzelSelectionTool extends KritzelBaseTool {\r\n selectionHandler: KritzelSelectionHandler;\r\n moveHandler: KritzelMoveHandler;\r\n resizeHandler: KritzelResizeHandler;\r\n rotationHandler: KritzelRotationHandler;\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n this.selectionHandler = new KritzelSelectionHandler(this._store);\r\n this.moveHandler = new KritzelMoveHandler(this._store);\r\n this.resizeHandler = new KritzelResizeHandler(this._store);\r\n this.rotationHandler = new KritzelRotationHandler(this._store);\r\n }\r\n\r\n handleMouseDown(event: MouseEvent): void {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n this._store.state.isResizeHandleSelected = this.isHandleSelected(event);\r\n this._store.state.isRotationHandleSelected = this.isRotationHandleSelected(event);\r\n this._store.state.resizeHandleType = this.getHandleType(event);\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._store.state.selectionGroup && selectedObject.id !== this._store.state.selectionGroup.id;\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._store.state.selectionGroup &&\r\n !this._store.state.isResizeHandleSelected &&\r\n !this._store.state.isRotationHandleSelected\r\n ) {\r\n this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));\r\n }\r\n }\r\n\r\n this.moveHandler.handleMouseDown(event);\r\n this.selectionHandler.handleMouseDown(event);\r\n this.resizeHandler.handleMouseDown(event);\r\n this.rotationHandler.handleMouseDown(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleMouseMove(event: MouseEvent): void {\r\n this.moveHandler.handleMouseMove(event);\r\n this.selectionHandler.handleMouseMove(event);\r\n this.resizeHandler.handleMouseMove(event);\r\n this.rotationHandler.handleMouseMove(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleMouseUp(event: MouseEvent): void {\r\n this.moveHandler.handleMouseUp(event);\r\n this.selectionHandler.handleMouseUp(event);\r\n this.resizeHandler.handleMouseUp(event);\r\n this.rotationHandler.handleMouseUp(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleDoubleClick(event: MouseEvent): void {\r\n if (KritzelEventHelper.isLeftClick(event)) {\r\n if (this._store.state.selectionGroup && this._store.state.selectionGroup?.objects.length === 1) {\r\n const selectedObject = this._store.state.selectionGroup.objects[0];\r\n\r\n if (selectedObject instanceof KritzelText) {\r\n this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._store.state.activeText = selectedObject;\r\n\r\n setTimeout(() => {\r\n selectedObject.focus();\r\n }, 300);\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleDoubleTap(event: TouchEvent): void {\r\n const selectionGroup = this.getSelectedObject(event);\r\n \r\n if (!selectionGroup || selectionGroup.objects.length !== 1) {\r\n return;\r\n }\r\n\r\n const selectedObject = selectionGroup.objects[0];\r\n\r\n if (selectedObject instanceof KritzelText) {\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('text'));\r\n this._store.state.activeText = selectedObject;\r\n\r\n setTimeout(() => {\r\n selectedObject.focus();\r\n }, 300);\r\n }\r\n }\r\n\r\n handleTouchStart(event: TouchEvent): void {\r\n if (this._store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n if (this._store.state.touchCount === 1) {\r\n this._store.state.isResizeHandleSelected = this.isHandleSelected(event);\r\n this._store.state.isRotationHandleSelected = this.isRotationHandleSelected(event);\r\n this._store.state.resizeHandleType = this.getHandleType(event);\r\n\r\n const selectedObject = this.getSelectedObject(event);\r\n const isDifferentObject = selectedObject && this._store.state.selectionGroup && selectedObject.id !== this._store.state.selectionGroup.id;\r\n\r\n if (!this._store.state.selectionGroup && selectedObject) {\r\n this._store.state.skipContextMenu = true;\r\n }\r\n\r\n if (\r\n (selectedObject === null || isDifferentObject) &&\r\n this._store.state.selectionGroup &&\r\n !this._store.state.isResizeHandleSelected &&\r\n !this._store.state.isRotationHandleSelected\r\n ) {\r\n this._store.history.executeCommand(new RemoveSelectionGroupCommand(this._store, this._store.state.selectionGroup));\r\n }\r\n }\r\n\r\n this.rotationHandler.handleTouchStart(event);\r\n this.resizeHandler.handleTouchStart(event);\r\n this.moveHandler.handleTouchStart(event);\r\n this.selectionHandler.handleTouchStart(event);\r\n }\r\n\r\n handleTouchMove(event: TouchEvent): void {\r\n if (this._store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n this.rotationHandler.handleTouchMove(event);\r\n this.resizeHandler.handleTouchMove(event);\r\n this.moveHandler.handleTouchMove(event);\r\n this.selectionHandler.handleTouchMove(event);\r\n\r\n this._store.rerender();\r\n }\r\n\r\n handleTouchEnd(event: TouchEvent): void {\r\n if (this._store.state.isScaling === true) {\r\n return;\r\n }\r\n\r\n this.rotationHandler.handleTouchEnd(event);\r\n this.resizeHandler.handleTouchEnd(event);\r\n this.moveHandler.handleTouchEnd(event);\r\n this.selectionHandler.handleTouchEnd(event);\r\n }\r\n\r\n private getSelectedObject(event: MouseEvent | TouchEvent): KritzelSelectionGroup | null {\r\n \r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._store.findObjectById(objectElement?.id);\r\n\r\n if (!object) {\r\n return null;\r\n }\r\n\r\n if (object instanceof KritzelSelectionGroup) {\r\n return object;\r\n } else {\r\n const group = KritzelSelectionGroup.create(this._store);\r\n group.translateX = 0;\r\n group.translateY = 0;\r\n group.addOrRemove(object);\r\n return group;\r\n }\r\n }\r\n\r\n private getHandleType(event: MouseEvent | TouchEvent): KritzelHandleType {\r\n const shadowRoot = this._store.state.host?.shadowRoot;\r\n if (!shadowRoot) return;\r\n\r\n const point = event instanceof TouchEvent ? event.touches[0] : event;\r\n const elementAtPoint = shadowRoot.elementFromPoint(point.clientX, point.clientY);\r\n\r\n const handle = elementAtPoint.closest('.resize-handle-overlay') as HTMLElement | null;\r\n\r\n return handle?.classList[1] as KritzelHandleType;\r\n }\r\n\r\n private isHandleSelected(event: MouseEvent | TouchEvent): boolean {\r\n const shadowRoot = this._store.state.host?.shadowRoot;\r\n if (!shadowRoot) return false;\r\n\r\n const point = event instanceof TouchEvent ? event.touches[0] : event;\r\n const elementAtPoint = shadowRoot.elementFromPoint(point.clientX, point.clientY);\r\n\r\n return elementAtPoint?.classList.contains('resize-handle-overlay');\r\n }\r\n\r\n private isRotationHandleSelected(event: MouseEvent | TouchEvent): boolean {\r\n const path = event.composedPath() as HTMLElement[];\r\n\r\n return !!path.find(element => element.classList && element.classList.contains('rotation-handle-overlay'));\r\n }\r\n}\r\n"]}
@@ -50,7 +50,7 @@ export class KritzelTextTool extends KritzelBaseTool {
50
50
  }
51
51
  const clientX = event.clientX - this._store.offsetX;
52
52
  const clientY = event.clientY - this._store.offsetY;
53
- const text = new KritzelText(this._store, this.fontSize, this.fontFamily);
53
+ const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);
54
54
  text.fontColor = this.fontColor;
55
55
  text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;
56
56
  text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;
@@ -87,7 +87,7 @@ export class KritzelTextTool extends KritzelBaseTool {
87
87
  }
88
88
  const clientX = Math.round(event.touches[0].clientX - this._store.offsetX);
89
89
  const clientY = Math.round(event.touches[0].clientY - this._store.offsetY);
90
- const text = new KritzelText(this._store, this.fontSize, this.fontFamily);
90
+ const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);
91
91
  text.fontColor = this.fontColor;
92
92
  text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;
93
93
  text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;
@@ -1 +1 @@
1
- {"version":3,"file":"text-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/text-tool.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,OAAO,eAAgB,SAAQ,eAAe;IAuBlD,YAAY,KAAmB;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;QAvBf,eAAU,GAAW,OAAO,CAAC;QAC7B,aAAQ,GAAW,EAAE,CAAC;QACtB,cAAS,GAAW,SAAS,CAAC;QAE9B,YAAO,GAAa;YAClB,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;SACV,CAAC;IAIF,CAAC;IAED,eAAe,CAAC,KAAiB;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAkB,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAC,CAAC;QAE7D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YACtC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YAC3E,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACrF,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACrF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAExC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,aAAa,CAAC,MAAkB;;QAC9B,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,0CAAE,KAAK,EAAE,CAAC;QACtC,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,0CAAE,kBAAkB,EAAE,CAAC;IACrD,CAAC;IAED,gBAAgB,CAAC,KAAiB;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAkB,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAC,CAAC;QAE7D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YACtC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YAC3E,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACrF,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACrF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;IAGD,cAAc,CAAC,MAAkB;;QAC/B,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,0CAAE,KAAK,EAAE,CAAC;QACtC,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,0CAAE,kBAAkB,EAAE,CAAC;IACrD,CAAC;CACF","sourcesContent":["import { KritzelText } from '../objects/text.class';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { AddObjectCommand } from '../commands/add-object.command';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelToolRegistry } from '../tool.registry';\r\n\r\nexport class KritzelTextTool extends KritzelBaseTool {\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 16;\r\n fontColor: string = '#000000';\r\n\r\n palette: string[] = [\r\n '#000000',\r\n '#FFFFFF',\r\n '#FF0000',\r\n '#00FF00',\r\n '#0000FF',\r\n '#FFFF00',\r\n '#FF00FF',\r\n '#00FFFF',\r\n '#808080',\r\n '#C0C0C0',\r\n '#800000',\r\n '#008000',\r\n '#000080',\r\n '#808000',\r\n '#800080',\r\n ];\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n }\r\n\r\n handleMouseDown(event: MouseEvent): void {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._store.findObjectById(objectElement?.id);\r\n\r\n if (this._store.state.activeText === null && object && object instanceof KritzelText) {\r\n this._store.state.activeText = object;\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null && object instanceof KritzelText) {\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null) {\r\n this._store.resetActiveText();\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.isLeftClick(event) === false) {\r\n return;\r\n }\r\n\r\n const clientX = event.clientX - this._store.offsetX;\r\n const clientY = event.clientY - this._store.offsetY;\r\n const text = new KritzelText(this._store, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n text.zIndex = this._store.currentZIndex;\r\n\r\n text.adjustTextareaSize();\r\n\r\n this._store.state.activeText = text;\r\n\r\n this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));\r\n }\r\n\r\n handleMouseUp(_event: MouseEvent): void {\r\n this._store.state.activeText?.focus();\r\n this._store.state.activeText?.adjustTextareaSize();\r\n }\r\n\r\n handleTouchStart(event: TouchEvent): void {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._store.findObjectById(objectElement?.id);\r\n\r\n if (this._store.state.activeText === null && object && object instanceof KritzelText) {\r\n this._store.state.activeText = object;\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null && object instanceof KritzelText) {\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null) {\r\n this._store.resetActiveText();\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (this._store.state.touchCount > 1) {\r\n return;\r\n }\r\n\r\n const clientX = Math.round(event.touches[0].clientX - this._store.offsetX);\r\n const clientY = Math.round(event.touches[0].clientY - this._store.offsetY);\r\n const text = new KritzelText(this._store, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n text.zIndex = this._store.currentZIndex;\r\n\r\n this._store.state.activeText = text;\r\n\r\n this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));\r\n }\r\n\r\n\r\n handleTouchEnd(_event: TouchEvent): void {\r\n this._store.state.activeText?.focus();\r\n this._store.state.activeText?.adjustTextareaSize();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"text-tool.class.js","sourceRoot":"","sources":["../../../src/classes/tools/text-tool.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { KritzelText } from '../objects/text.class';\r\nimport { KritzelStore } from '../store.class';\r\nimport { KritzelBaseTool } from './base-tool.class';\r\nimport { AddObjectCommand } from '../commands/add-object.command';\r\nimport { KritzelEventHelper } from '../../helpers/event.helper';\r\nimport { KritzelToolRegistry } from '../tool.registry';\r\n\r\nexport class KritzelTextTool extends KritzelBaseTool {\r\n fontFamily: string = 'Arial';\r\n fontSize: number = 16;\r\n fontColor: string = '#000000';\r\n\r\n palette: string[] = [\r\n '#000000',\r\n '#FFFFFF',\r\n '#FF0000',\r\n '#00FF00',\r\n '#0000FF',\r\n '#FFFF00',\r\n '#FF00FF',\r\n '#00FFFF',\r\n '#808080',\r\n '#C0C0C0',\r\n '#800000',\r\n '#008000',\r\n '#000080',\r\n '#808000',\r\n '#800080',\r\n ];\r\n\r\n constructor(store: KritzelStore) {\r\n super(store);\r\n }\r\n\r\n handleMouseDown(event: MouseEvent): void {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._store.findObjectById(objectElement?.id);\r\n\r\n if (this._store.state.activeText === null && object && object instanceof KritzelText) {\r\n this._store.state.activeText = object;\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null && object instanceof KritzelText) {\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null) {\r\n this._store.resetActiveText();\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (KritzelEventHelper.isLeftClick(event) === false) {\r\n return;\r\n }\r\n\r\n const clientX = event.clientX - this._store.offsetX;\r\n const clientY = event.clientY - this._store.offsetY;\r\n const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n text.zIndex = this._store.currentZIndex;\r\n\r\n text.adjustTextareaSize();\r\n\r\n this._store.state.activeText = text;\r\n\r\n this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));\r\n }\r\n\r\n handleMouseUp(_event: MouseEvent): void {\r\n this._store.state.activeText?.focus();\r\n this._store.state.activeText?.adjustTextareaSize();\r\n }\r\n\r\n handleTouchStart(event: TouchEvent): void {\r\n const path = event.composedPath().slice(1) as HTMLElement[];\r\n const objectElement = path.find(element => element.classList && element.classList.contains('object'));\r\n const object = this._store.findObjectById(objectElement?.id);\r\n\r\n if (this._store.state.activeText === null && object && object instanceof KritzelText) {\r\n this._store.state.activeText = object;\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null && object instanceof KritzelText) {\r\n object.focus();\r\n return;\r\n }\r\n\r\n if (this._store.state.activeText !== null) {\r\n this._store.resetActiveText();\r\n this._store.setState('activeTool', KritzelToolRegistry.getTool('selection'));\r\n return;\r\n }\r\n\r\n if (this._store.state.touchCount > 1) {\r\n return;\r\n }\r\n\r\n const clientX = Math.round(event.touches[0].clientX - this._store.offsetX);\r\n const clientY = Math.round(event.touches[0].clientY - this._store.offsetY);\r\n const text = KritzelText.create(this._store, this.fontSize, this.fontFamily);\r\n\r\n text.fontColor = this.fontColor;\r\n text.translateX = (clientX - this._store.state.translateX) / this._store.state.scale;\r\n text.translateY = (clientY - this._store.state.translateY) / this._store.state.scale;\r\n text.zIndex = this._store.currentZIndex;\r\n\r\n this._store.state.activeText = text;\r\n\r\n this._store.history.executeCommand(new AddObjectCommand(this._store, this, text));\r\n }\r\n\r\n\r\n handleTouchEnd(_event: TouchEvent): void {\r\n this._store.state.activeText?.focus();\r\n this._store.state.activeText?.adjustTextareaSize();\r\n }\r\n}\r\n"]}
@@ -1,10 +1,10 @@
1
- :host {
2
- display: block;
3
- position: fixed;
4
- top: 0;
5
- left: 0;
6
- width: 100vw;
7
- height: 100vh;
8
- pointer-events: none;
9
- z-index: 9000;
10
- }
1
+ :host {
2
+ display: block;
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ width: 100vw;
7
+ height: 100vh;
8
+ pointer-events: none;
9
+ z-index: 9000;
10
+ }
@@ -72,7 +72,7 @@ export class KritzelCursorTrail {
72
72
  }
73
73
  }
74
74
  render() {
75
- return (h(Host, { key: '604f5c39a01f3aea870861de0a93cd162302d7b2' }, this.cursorTrailPoints.length > 1 && (h("svg", { key: '6f69f0b5a871010581b73bff51b2ef7341389f5a', class: "cursor-trail-svg", xmlns: "http://www.w3.org/2000/svg", style: {
75
+ return (h(Host, { key: 'c0a9b9ebe1634ba020024efed6446791d6a65a2f' }, this.cursorTrailPoints.length > 1 && (h("svg", { key: '50c73784eaffe743823bc6a75524fa4dc98566a8', class: "cursor-trail-svg", xmlns: "http://www.w3.org/2000/svg", style: {
76
76
  position: 'absolute',
77
77
  left: '0',
78
78
  top: '0',
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-cursor-trail.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-cursor-trail/kritzel-cursor-trail.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Listen, State, h } from '@stencil/core';\n\n@Component({\n tag: 'kritzel-cursor-trail',\n styleUrl: 'kritzel-cursor-trail.css',\n shadow: true,\n})\nexport class KritzelCursorTrail {\n @State()\n cursorTrailPoints: Array<{ x: number; y: number; timestamp: number }> = [];\n\n @State()\n isLeftButtonDown: boolean = false;\n\n private trailCleanupIntervalId: number;\n\n private readonly TRAIL_DURATION_MS = 100;\n\n private readonly MAX_TRAIL_POINTS = 50;\n\n componentDidLoad() {\n this.trailCleanupIntervalId = window.setInterval(() => {\n const now = Date.now();\n const newTrailPoints = this.cursorTrailPoints.filter(p => now - p.timestamp < this.TRAIL_DURATION_MS);\n if (newTrailPoints.length !== this.cursorTrailPoints.length) {\n this.cursorTrailPoints = newTrailPoints;\n }\n }, 50);\n }\n\n disconnectedCallback() {\n if (this.trailCleanupIntervalId) {\n window.clearInterval(this.trailCleanupIntervalId);\n }\n }\n\n @Listen('mousedown', { target: 'window' })\n handleMouseDown(ev: MouseEvent) {\n if (ev.button === 0) {\n this.isLeftButtonDown = true;\n this.cursorTrailPoints = [];\n }\n }\n\n @Listen('mousemove', { target: 'window', passive: true })\n handleMouseMove(ev: MouseEvent) {\n\n if (!this.isLeftButtonDown) {\n return;\n }\n const newPoint = { x: ev.clientX, y: ev.clientY, timestamp: Date.now() };\n const updatedTrail = [newPoint, ...this.cursorTrailPoints];\n if (updatedTrail.length > this.MAX_TRAIL_POINTS) {\n this.cursorTrailPoints = updatedTrail.slice(0, this.MAX_TRAIL_POINTS);\n } else {\n this.cursorTrailPoints = updatedTrail;\n }\n }\n\n @Listen('mouseup', { target: 'window' })\n handleMouseUp(ev: MouseEvent) {\n if (ev.button === 0) {\n this.isLeftButtonDown = false;\n this.cursorTrailPoints = [];\n }\n }\n\n @Listen('touchstart', { target: 'window' })\n handleTouchStart(ev: TouchEvent) {\n if (ev.touches.length === 1) {\n this.isLeftButtonDown = true;\n this.cursorTrailPoints = [];\n }\n }\n\n @Listen('touchmove', { target: 'window', passive: true })\n handleTouchMove(ev: TouchEvent) {\n if (!this.isLeftButtonDown) {\n return;\n }\n\n const touch = ev.touches[0];\n const newPoint = { x: touch.clientX, y: touch.clientY, timestamp: Date.now() };\n const updatedTrail = [newPoint, ...this.cursorTrailPoints];\n if (updatedTrail.length > this.MAX_TRAIL_POINTS) {\n this.cursorTrailPoints = updatedTrail.slice(0, this.MAX_TRAIL_POINTS);\n }\n else {\n this.cursorTrailPoints = updatedTrail;\n }\n }\n\n @Listen('touchend', { target: 'window' })\n handleTouchEnd(ev: TouchEvent) {\n if (ev.touches.length === 0) {\n this.isLeftButtonDown = false;\n this.cursorTrailPoints = [];\n }\n }\n \n\n render() {\n return (\n <Host>\n {this.cursorTrailPoints.length > 1 && (\n <svg\n class=\"cursor-trail-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n position: 'absolute',\n left: '0',\n top: '0',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n opacity: 'var(--kritzel-cursor-trail-opacity, 0.6)',\n zIndex: '9000',\n }}\n >\n {this.cursorTrailPoints.slice(1).map((point, index) => {\n const prevPoint = this.cursorTrailPoints[index];\n const now = Date.now();\n const age = now - point.timestamp;\n const progress = Math.max(0, Math.min(1, age / this.TRAIL_DURATION_MS));\n\n if (progress >= 1) return null;\n\n const baseStrokeWidth = Math.max(2, 15 * (1 - progress));\n\n return (\n <line\n key={`trail-segment-${point.timestamp}`}\n x1={prevPoint.x.toString()}\n y1={prevPoint.y.toString()}\n x2={point.x.toString()}\n y2={point.y.toString()}\n stroke=\"var(--kritzel-cursor-trail-color, rgb(228, 228, 228))\"\n stroke-width={baseStrokeWidth.toString()}\n stroke-linecap=\"round\"\n />\n );\n })}\n </svg>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"kritzel-cursor-trail.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-cursor-trail/kritzel-cursor-trail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAOlE,MAAM,OAAO,kBAAkB;IAL/B;QAOE,sBAAiB,GAAuD,EAAE,CAAC;QAG3E,qBAAgB,GAAY,KAAK,CAAC;QAIjB,sBAAiB,GAAG,GAAG,CAAC;QAExB,qBAAgB,GAAG,EAAE,CAAC;KAiIxC;IA/HC,gBAAgB;QACd,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtG,IAAI,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC5D,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC;YAC1C,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAGD,eAAe,CAAC,EAAc;QAC5B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAGD,eAAe,CAAC,EAAc;QAE5B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACzE,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;QACxC,CAAC;IACH,CAAC;IAGD,aAAa,CAAC,EAAc;QAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAGD,gBAAgB,CAAC,EAAc;QAC7B,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAGD,eAAe,CAAC,EAAc;QAC5B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC/E,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxE,CAAC;aACI,CAAC;YACJ,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;QACxC,CAAC;IACH,CAAC;IAGD,cAAc,CAAC,EAAc;QAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAGD,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,uDACF,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CACpC,4DACE,KAAK,EAAC,kBAAkB,EACxB,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,GAAG;gBACT,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,MAAM;gBACrB,OAAO,EAAE,0CAA0C;gBACnD,MAAM,EAAE,MAAM;aACf,IAEA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAExE,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE/B,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;YAEzD,OAAO,CACL,YACE,GAAG,EAAE,iBAAiB,KAAK,CAAC,SAAS,EAAE,EACvC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,EAC1B,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,EAC1B,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EACtB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EACtB,MAAM,EAAC,uDAAuD,kBAChD,eAAe,CAAC,QAAQ,EAAE,oBACzB,OAAO,GACtB,CACH,CAAC;QACJ,CAAC,CAAC,CACE,CACP,CACI,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Listen, State, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kritzel-cursor-trail',\r\n styleUrl: 'kritzel-cursor-trail.css',\r\n shadow: true,\r\n})\r\nexport class KritzelCursorTrail {\r\n @State()\r\n cursorTrailPoints: Array<{ x: number; y: number; timestamp: number }> = [];\r\n\r\n @State()\r\n isLeftButtonDown: boolean = false;\r\n\r\n private trailCleanupIntervalId: number;\r\n\r\n private readonly TRAIL_DURATION_MS = 100;\r\n\r\n private readonly MAX_TRAIL_POINTS = 50;\r\n\r\n componentDidLoad() {\r\n this.trailCleanupIntervalId = window.setInterval(() => {\r\n const now = Date.now();\r\n const newTrailPoints = this.cursorTrailPoints.filter(p => now - p.timestamp < this.TRAIL_DURATION_MS);\r\n if (newTrailPoints.length !== this.cursorTrailPoints.length) {\r\n this.cursorTrailPoints = newTrailPoints;\r\n }\r\n }, 50);\r\n }\r\n\r\n disconnectedCallback() {\r\n if (this.trailCleanupIntervalId) {\r\n window.clearInterval(this.trailCleanupIntervalId);\r\n }\r\n }\r\n\r\n @Listen('mousedown', { target: 'window' })\r\n handleMouseDown(ev: MouseEvent) {\r\n if (ev.button === 0) {\r\n this.isLeftButtonDown = true;\r\n this.cursorTrailPoints = [];\r\n }\r\n }\r\n\r\n @Listen('mousemove', { target: 'window', passive: true })\r\n handleMouseMove(ev: MouseEvent) {\r\n\r\n if (!this.isLeftButtonDown) {\r\n return;\r\n }\r\n const newPoint = { x: ev.clientX, y: ev.clientY, timestamp: Date.now() };\r\n const updatedTrail = [newPoint, ...this.cursorTrailPoints];\r\n if (updatedTrail.length > this.MAX_TRAIL_POINTS) {\r\n this.cursorTrailPoints = updatedTrail.slice(0, this.MAX_TRAIL_POINTS);\r\n } else {\r\n this.cursorTrailPoints = updatedTrail;\r\n }\r\n }\r\n\r\n @Listen('mouseup', { target: 'window' })\r\n handleMouseUp(ev: MouseEvent) {\r\n if (ev.button === 0) {\r\n this.isLeftButtonDown = false;\r\n this.cursorTrailPoints = [];\r\n }\r\n }\r\n\r\n @Listen('touchstart', { target: 'window' })\r\n handleTouchStart(ev: TouchEvent) {\r\n if (ev.touches.length === 1) {\r\n this.isLeftButtonDown = true;\r\n this.cursorTrailPoints = [];\r\n }\r\n }\r\n\r\n @Listen('touchmove', { target: 'window', passive: true })\r\n handleTouchMove(ev: TouchEvent) {\r\n if (!this.isLeftButtonDown) {\r\n return;\r\n }\r\n\r\n const touch = ev.touches[0];\r\n const newPoint = { x: touch.clientX, y: touch.clientY, timestamp: Date.now() };\r\n const updatedTrail = [newPoint, ...this.cursorTrailPoints];\r\n if (updatedTrail.length > this.MAX_TRAIL_POINTS) {\r\n this.cursorTrailPoints = updatedTrail.slice(0, this.MAX_TRAIL_POINTS);\r\n }\r\n else {\r\n this.cursorTrailPoints = updatedTrail;\r\n }\r\n }\r\n\r\n @Listen('touchend', { target: 'window' })\r\n handleTouchEnd(ev: TouchEvent) {\r\n if (ev.touches.length === 0) {\r\n this.isLeftButtonDown = false;\r\n this.cursorTrailPoints = [];\r\n }\r\n }\r\n \r\n\r\n render() {\r\n return (\r\n <Host>\r\n {this.cursorTrailPoints.length > 1 && (\r\n <svg\r\n class=\"cursor-trail-svg\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n position: 'absolute',\r\n left: '0',\r\n top: '0',\r\n width: '100%',\r\n height: '100%',\r\n pointerEvents: 'none',\r\n opacity: 'var(--kritzel-cursor-trail-opacity, 0.6)',\r\n zIndex: '9000',\r\n }}\r\n >\r\n {this.cursorTrailPoints.slice(1).map((point, index) => {\r\n const prevPoint = this.cursorTrailPoints[index];\r\n const now = Date.now();\r\n const age = now - point.timestamp;\r\n const progress = Math.max(0, Math.min(1, age / this.TRAIL_DURATION_MS));\r\n\r\n if (progress >= 1) return null;\r\n\r\n const baseStrokeWidth = Math.max(2, 15 * (1 - progress));\r\n\r\n return (\r\n <line\r\n key={`trail-segment-${point.timestamp}`}\r\n x1={prevPoint.x.toString()}\r\n y1={prevPoint.y.toString()}\r\n x2={point.x.toString()}\r\n y2={point.y.toString()}\r\n stroke=\"var(--kritzel-cursor-trail-color, rgb(228, 228, 228))\"\r\n stroke-width={baseStrokeWidth.toString()}\r\n stroke-linecap=\"round\"\r\n />\r\n );\r\n })}\r\n </svg>\r\n )}\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -1,11 +1,13 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  import { KritzelIconRegistry } from "../../../classes/icon-registry.class";
3
3
  import { DEFAULT_KRITZEL_CONTROLS } from "../../../configs/default-toolbar-controls";
4
+ import { KritzelText } from "../../../classes/objects/text.class";
4
5
  export class KritzelEditor {
5
6
  constructor() {
6
7
  this.controls = DEFAULT_KRITZEL_CONTROLS;
7
8
  this.customSvgIcons = {};
8
9
  this.hideControls = false;
10
+ this.text = null;
9
11
  }
10
12
  handleTouchStart(event) {
11
13
  if (event.cancelable) {
@@ -15,13 +17,52 @@ export class KritzelEditor {
15
17
  componentWillLoad() {
16
18
  this.registerCustomSvgIcons();
17
19
  }
20
+ addTextObject() {
21
+ const obj = new KritzelText({
22
+ translateX: 100,
23
+ translateY: 100,
24
+ width: 200,
25
+ height: 50,
26
+ value: 'New Text',
27
+ fontSize: 16,
28
+ fontFamily: 'Arial',
29
+ fontColor: '#000000',
30
+ scale: 1,
31
+ });
32
+ this.engineRef.addObject(obj).then((text) => this.text = text);
33
+ }
34
+ getTextObject() {
35
+ var _a;
36
+ this.engineRef.getObjectById(((_a = this.text) === null || _a === void 0 ? void 0 : _a.id) || '').then((object) => {
37
+ console.log('Retrieved Text Object:', object);
38
+ });
39
+ }
40
+ updateTextObject() {
41
+ const updatedText = {
42
+ value: 'Updated Text',
43
+ translateX: 150,
44
+ translateY: 150,
45
+ rotation: Math.PI / 2
46
+ };
47
+ this.engineRef.updateObject(this.text, updatedText)
48
+ .then((text) => {
49
+ this.text = text;
50
+ console.log('Updated Text Object:', text);
51
+ });
52
+ }
53
+ removeTextObject() {
54
+ this.engineRef.removeObject(this.text).then((text) => {
55
+ console.log('Text Object removed', text);
56
+ this.text = null;
57
+ });
58
+ }
18
59
  registerCustomSvgIcons() {
19
60
  for (const [name, svg] of Object.entries(this.customSvgIcons)) {
20
61
  KritzelIconRegistry.register(name, svg);
21
62
  }
22
63
  }
23
64
  render() {
24
- return (h(Host, { key: '3a2846ec3573702162d669a130420f5b0dca97bd' }, h("kritzel-engine", { key: '853d5558e2886c62a3a07109be23145978a0a88f' }), h("kritzel-controls", { key: 'eb4d48e6768b4808d3efc43ceb104de72475a4f2', controls: this.controls, style: this.hideControls ? { display: 'none' } : { display: 'flex' } })));
65
+ return (h(Host, { key: '3e54e232dd459dcebf3322dcba5ac2f1936ef23a' }, h("div", { key: '5c7f90645dfe6010187a709a657b5366d0e6d402', class: "button-panel", style: { position: 'absolute', top: '0', left: '0', zIndex: '10', display: 'flex', flexDirection: 'row' } }, h("button", { key: 'b8c22edc7b752f176c8bee4af186692100d09e1c', onClick: () => this.addTextObject() }, "Add Text"), h("button", { key: 'd38091f4142392ab4d1ed3e4b26c9e4a38ded104', onClick: () => this.getTextObject() }, "Get Text"), h("button", { key: '2f2bacf47603b5fb50a782bf24a8e6b3954d77e2', onClick: () => this.updateTextObject() }, "Update Text"), h("button", { key: '5ce49401b19a3730b30a24aaee6474f8ff8ed94f', onClick: () => this.removeTextObject() }, "Remove Text"), h("button", { key: '38870ef7c6776a37c742722fc96c37055c9e2ae3', onClick: () => this.engineRef.selectObjects([this.text]) }, "Select Text"), h("button", { key: '9a95113343e746cac85a0643a7633bf1030987b5', onClick: () => this.engineRef.selectAllObjectsInViewport() }, "Select All"), h("button", { key: 'c2caf8b0f02ad07d9b7f2166ed04e17daff10786', onClick: () => this.engineRef.clearSelection() }, "Clear Selection")), h("kritzel-engine", { key: 'c3174bc087b7875744f222d9fd03c68f06ce2522', ref: el => (this.engineRef = el) }), h("kritzel-controls", { key: 'b22337b1d0cb2f703f69c197a3c2b50a21a7a9b1', controls: this.controls, style: this.hideControls ? { display: 'none' } : { display: 'flex' } })));
25
66
  }
26
67
  static get is() { return "kritzel-editor"; }
27
68
  static get originalStyleUrls() {
@@ -1 +1 @@
1
- {"version":3,"file":"kritzel-editor.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-editor/kritzel-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAQrF,MAAM,OAAO,aAAa;IAL1B;QAOE,aAAQ,GAA4B,wBAAwB,CAAC;QAG7D,mBAAc,GAA2B,EAAE,CAAC;QAG5C,iBAAY,GAAY,KAAK,CAAC;KA8B/B;IAxBC,gBAAgB,CAAC,KAAiB;QAChC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,sBAAsB;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9D,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,wEAAiC;YACjC,yEAAkB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC,GAAqB,CAC9H,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Listen, Prop, Element, h } from '@stencil/core';\r\nimport { KritzelIconRegistry } from '../../../classes/icon-registry.class';\r\nimport { KritzelToolbarControl } from '../../../interfaces/toolbar-control.interface';\r\nimport { DEFAULT_KRITZEL_CONTROLS } from '../../../configs/default-toolbar-controls';\r\n\r\n\r\n@Component({\r\n tag: 'kritzel-editor',\r\n styleUrl: 'kritzel-editor.css',\r\n shadow: false,\r\n})\r\nexport class KritzelEditor {\r\n @Prop()\r\n controls: KritzelToolbarControl[] = DEFAULT_KRITZEL_CONTROLS;\r\n\r\n @Prop()\r\n customSvgIcons: Record<string, string> = {};\r\n\r\n @Prop()\r\n hideControls: boolean = false;\r\n\r\n @Element()\r\n host!: HTMLElement;\r\n\r\n @Listen('dblclick', { passive: false })\r\n handleTouchStart(event: TouchEvent) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n this.registerCustomSvgIcons();\r\n }\r\n\r\n private registerCustomSvgIcons() {\r\n for (const [name, svg] of Object.entries(this.customSvgIcons)) {\r\n KritzelIconRegistry.register(name, svg);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <kritzel-engine></kritzel-engine>\r\n <kritzel-controls controls={this.controls} style={this.hideControls ? { display: 'none' } : { display: 'flex'}}></kritzel-controls>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"kritzel-editor.js","sourceRoot":"","sources":["../../../../src/components/core/kritzel-editor/kritzel-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Listen, Prop, Element, h } from '@stencil/core';\r\nimport { KritzelIconRegistry } from '../../../classes/icon-registry.class';\r\nimport { KritzelToolbarControl } from '../../../interfaces/toolbar-control.interface';\r\nimport { DEFAULT_KRITZEL_CONTROLS } from '../../../configs/default-toolbar-controls';\r\nimport { KritzelText } from '../../../classes/objects/text.class';\r\n\r\n@Component({\r\n tag: 'kritzel-editor',\r\n styleUrl: 'kritzel-editor.css',\r\n shadow: false,\r\n})\r\nexport class KritzelEditor {\r\n @Prop()\r\n controls: KritzelToolbarControl[] = DEFAULT_KRITZEL_CONTROLS;\r\n\r\n @Prop()\r\n customSvgIcons: Record<string, string> = {};\r\n\r\n @Prop()\r\n hideControls: boolean = false;\r\n\r\n @Element()\r\n host!: HTMLElement;\r\n\r\n engineRef!: HTMLKritzelEngineElement;\r\n\r\n @Listen('dblclick', { passive: false })\r\n handleTouchStart(event: TouchEvent) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n this.registerCustomSvgIcons();\r\n }\r\n\r\n text: KritzelText | null = null;\r\n\r\n addTextObject() {\r\n const obj = new KritzelText({\r\n translateX: 100,\r\n translateY: 100,\r\n width: 200,\r\n height: 50,\r\n value: 'New Text',\r\n fontSize: 16,\r\n fontFamily: 'Arial',\r\n fontColor: '#000000',\r\n scale: 1,\r\n });\r\n\r\n this.engineRef.addObject<KritzelText>(obj).then((text) => this.text = text);\r\n }\r\n\r\n getTextObject() {\r\n this.engineRef.getObjectById<KritzelText>(this.text?.id || '').then((object) => {\r\n console.log('Retrieved Text Object:', object);\r\n });\r\n }\r\n\r\n updateTextObject() {\r\n const updatedText = {\r\n value: 'Updated Text',\r\n translateX: 150,\r\n translateY: 150,\r\n rotation: Math.PI / 2\r\n };\r\n\r\n this.engineRef.updateObject<KritzelText>(this.text, updatedText)\r\n .then((text) => {\r\n this.text = text;\r\n console.log('Updated Text Object:', text);\r\n });\r\n }\r\n\r\n removeTextObject() {\r\n this.engineRef.removeObject<KritzelText>(this.text).then((text) => {\r\n console.log('Text Object removed', text);\r\n this.text = null;\r\n });\r\n }\r\n\r\n private registerCustomSvgIcons() {\r\n for (const [name, svg] of Object.entries(this.customSvgIcons)) {\r\n KritzelIconRegistry.register(name, svg);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div class=\"button-panel\" style={{ position: 'absolute', top: '0', left: '0', zIndex: '10', display: 'flex', flexDirection: 'row' }}>\r\n <button onClick={() => this.addTextObject()}>Add Text</button>\r\n <button onClick={() => this.getTextObject()}>Get Text</button>\r\n <button onClick={() => this.updateTextObject()}>Update Text</button>\r\n <button onClick={() => this.removeTextObject()}>Remove Text</button>\r\n <button onClick={() => this.engineRef.selectObjects([this.text])}>Select Text</button>\r\n <button onClick={() => this.engineRef.selectAllObjectsInViewport()}>Select All</button>\r\n <button onClick={() => this.engineRef.clearSelection()}>Clear Selection</button>\r\n </div>\r\n\r\n <kritzel-engine ref={el => (this.engineRef = el)}></kritzel-engine>\r\n <kritzel-controls controls={this.controls} style={this.hideControls ? { display: 'none' } : { display: 'flex' }}></kritzel-controls>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}