@vived/app 5.1.0 → 5.1.2

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 (232) hide show
  1. package/dist/cjs/Callouts/Controller/MouseAddCalloutMC.js.map +1 -1
  2. package/dist/cjs/Callouts/Controller/TouchAddCalloutTC.js.map +1 -1
  3. package/dist/cjs/Hideable/Controllers/HideMC.js.map +1 -1
  4. package/dist/cjs/Hideable/Controllers/HideTC.js.map +1 -1
  5. package/dist/cjs/HoverLabel/Controllers/HoverLabelMouse.js.map +1 -1
  6. package/dist/cjs/HoverLabel/Controllers/HoverLabelTouch.js.map +1 -1
  7. package/dist/cjs/HoverLabel/Controllers/StylusHoverLabel.js.map +1 -1
  8. package/dist/cjs/LabelDrop/Controller/MouseLabelDropAuthor.js.map +1 -1
  9. package/dist/cjs/LabelDrop/Controller/StylusLabelDrop.js.map +1 -1
  10. package/dist/cjs/LabelDrop/Controller/TouchLabelDropAuthor.js.map +1 -1
  11. package/dist/cjs/Landmarks/Controller/MouseLandmark.js.map +1 -1
  12. package/dist/cjs/Landmarks/Controller/TouchLandmark.js.map +1 -1
  13. package/dist/cjs/MouseInput/Entities/MouseInput.js.map +1 -1
  14. package/dist/cjs/MouseInput/Entities/MouseInput.test.js.map +1 -1
  15. package/dist/cjs/MouseInput/Mocks/index.js +18 -0
  16. package/dist/cjs/MouseInput/Mocks/index.js.map +1 -0
  17. package/dist/cjs/MouseInput/index.js +1 -0
  18. package/dist/cjs/MouseInput/index.js.map +1 -1
  19. package/dist/cjs/ObjectPick/Controllers/MouseObjectPickMC.js.map +1 -1
  20. package/dist/cjs/ObjectPick/Controllers/StylusObjectPickSC.js.map +1 -1
  21. package/dist/cjs/ObjectPick/Controllers/TouchObjectPickTC.js.map +1 -1
  22. package/dist/cjs/SceneRoot/Controllers/DoubleTapToFocus.js.map +1 -1
  23. package/dist/cjs/SceneRoot/Controllers/MouseClickToFocus.js.map +1 -1
  24. package/dist/cjs/SceneRoot/Controllers/MouseDoubleClickToRecenter.js.map +1 -1
  25. package/dist/cjs/SceneRoot/Controllers/MouseOrbit.js.map +1 -1
  26. package/dist/cjs/SceneRoot/Controllers/MousePan.js.map +1 -1
  27. package/dist/cjs/SceneRoot/Controllers/MouseRoll.js.map +1 -1
  28. package/dist/cjs/SceneRoot/Controllers/MouseScale.js.map +1 -1
  29. package/dist/cjs/SceneRoot/Controllers/ScaleSceneRootSC.js.map +1 -1
  30. package/dist/cjs/SceneRoot/Controllers/SceneRootMoveSC.js.map +1 -1
  31. package/dist/cjs/SceneRoot/Controllers/TouchOrbit.js.map +1 -1
  32. package/dist/cjs/SceneRoot/Controllers/TouchPan.js.map +1 -1
  33. package/dist/cjs/SceneRoot/Controllers/TouchPinch.js.map +1 -1
  34. package/dist/cjs/SceneRoot/Controllers/TouchScale.js.map +1 -1
  35. package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.js.map +1 -1
  36. package/dist/cjs/Selection/Controller/MousePressOnAppObject.js.map +1 -1
  37. package/dist/cjs/Selection/Controller/MouseSelectAppObject.js.map +1 -1
  38. package/dist/cjs/Selection/Controller/StylusHoverOnAppObjectSC.js.map +1 -1
  39. package/dist/cjs/Selection/Controller/StylusPressOnAppObjectSC.js.map +1 -1
  40. package/dist/cjs/Selection/Controller/StylusSelectAppObjectSC.js.map +1 -1
  41. package/dist/cjs/Selection/Controller/TapToSelectAppObject.js.map +1 -1
  42. package/dist/cjs/Selection/Controller/TouchPressOnAppObject.js.map +1 -1
  43. package/dist/cjs/Stick/Controllers/DoubleClickToStickMC.js.map +1 -1
  44. package/dist/cjs/Stick/Controllers/DoubleTapToStickTC.js.map +1 -1
  45. package/dist/cjs/Stylus/Entity/StylusEntity.js.map +1 -1
  46. package/dist/cjs/Stylus/Entity/StylusEntity.test.js.map +1 -1
  47. package/dist/cjs/TouchController/Entities/TouchInput.js.map +1 -1
  48. package/dist/cjs/TouchController/Entities/TouchInput.test.js.map +1 -1
  49. package/dist/cjs/Transform3D/Controllers/Mouse/DragScaleTransformMC.js.map +1 -1
  50. package/dist/cjs/Transform3D/Controllers/Mouse/MousePanTransformMC.js.map +1 -1
  51. package/dist/cjs/Transform3D/Controllers/Mouse/PanTransformMC.js.map +1 -1
  52. package/dist/cjs/Transform3D/Controllers/Mouse/RollScaleTransformMC.js.map +1 -1
  53. package/dist/cjs/Transform3D/Controllers/Stylus/MoveTransformSC.js.map +1 -1
  54. package/dist/cjs/Transform3D/Controllers/Stylus/PanScaleTransformSC.js.map +1 -1
  55. package/dist/cjs/Transform3D/Controllers/Stylus/PanTransformSC.js.map +1 -1
  56. package/dist/cjs/Transform3D/Controllers/Stylus/ScaleTransformSC.js.map +1 -1
  57. package/dist/cjs/Transform3D/Controllers/Touch/DragScaleTransformTC.js.map +1 -1
  58. package/dist/cjs/Transform3D/Controllers/Touch/PanTransformTC.js.map +1 -1
  59. package/dist/cjs/Transform3D/Controllers/Touch/PinchTransformTC.js.map +1 -1
  60. package/dist/cjs/Transform3D/Controllers/Touch/TouchPanTransformTC.js.map +1 -1
  61. package/dist/esm/Callouts/Controller/MouseAddCalloutMC.js.map +1 -1
  62. package/dist/esm/Callouts/Controller/TouchAddCalloutTC.js.map +1 -1
  63. package/dist/esm/Hideable/Controllers/HideMC.js.map +1 -1
  64. package/dist/esm/Hideable/Controllers/HideTC.js.map +1 -1
  65. package/dist/esm/HoverLabel/Controllers/HoverLabelMouse.js.map +1 -1
  66. package/dist/esm/HoverLabel/Controllers/HoverLabelTouch.js.map +1 -1
  67. package/dist/esm/HoverLabel/Controllers/StylusHoverLabel.js.map +1 -1
  68. package/dist/esm/LabelDrop/Controller/MouseLabelDropAuthor.js.map +1 -1
  69. package/dist/esm/LabelDrop/Controller/StylusLabelDrop.js.map +1 -1
  70. package/dist/esm/LabelDrop/Controller/TouchLabelDropAuthor.js.map +1 -1
  71. package/dist/esm/Landmarks/Controller/MouseLandmark.js.map +1 -1
  72. package/dist/esm/Landmarks/Controller/TouchLandmark.js.map +1 -1
  73. package/dist/esm/MouseInput/Entities/MouseInput.js.map +1 -1
  74. package/dist/esm/MouseInput/Entities/MouseInput.test.js.map +1 -1
  75. package/dist/esm/MouseInput/Mocks/index.js +2 -0
  76. package/dist/esm/MouseInput/Mocks/index.js.map +1 -0
  77. package/dist/esm/MouseInput/index.js +1 -0
  78. package/dist/esm/MouseInput/index.js.map +1 -1
  79. package/dist/esm/ObjectPick/Controllers/MouseObjectPickMC.js.map +1 -1
  80. package/dist/esm/ObjectPick/Controllers/StylusObjectPickSC.js.map +1 -1
  81. package/dist/esm/ObjectPick/Controllers/TouchObjectPickTC.js.map +1 -1
  82. package/dist/esm/SceneRoot/Controllers/DoubleTapToFocus.js.map +1 -1
  83. package/dist/esm/SceneRoot/Controllers/MouseClickToFocus.js.map +1 -1
  84. package/dist/esm/SceneRoot/Controllers/MouseDoubleClickToRecenter.js.map +1 -1
  85. package/dist/esm/SceneRoot/Controllers/MouseOrbit.js.map +1 -1
  86. package/dist/esm/SceneRoot/Controllers/MousePan.js.map +1 -1
  87. package/dist/esm/SceneRoot/Controllers/MouseRoll.js.map +1 -1
  88. package/dist/esm/SceneRoot/Controllers/MouseScale.js.map +1 -1
  89. package/dist/esm/SceneRoot/Controllers/ScaleSceneRootSC.js.map +1 -1
  90. package/dist/esm/SceneRoot/Controllers/SceneRootMoveSC.js.map +1 -1
  91. package/dist/esm/SceneRoot/Controllers/TouchOrbit.js.map +1 -1
  92. package/dist/esm/SceneRoot/Controllers/TouchPan.js.map +1 -1
  93. package/dist/esm/SceneRoot/Controllers/TouchPinch.js.map +1 -1
  94. package/dist/esm/SceneRoot/Controllers/TouchScale.js.map +1 -1
  95. package/dist/esm/Selection/Controller/MouseHoverOnAppObject.js.map +1 -1
  96. package/dist/esm/Selection/Controller/MousePressOnAppObject.js.map +1 -1
  97. package/dist/esm/Selection/Controller/MouseSelectAppObject.js.map +1 -1
  98. package/dist/esm/Selection/Controller/StylusHoverOnAppObjectSC.js.map +1 -1
  99. package/dist/esm/Selection/Controller/StylusPressOnAppObjectSC.js.map +1 -1
  100. package/dist/esm/Selection/Controller/StylusSelectAppObjectSC.js.map +1 -1
  101. package/dist/esm/Selection/Controller/TapToSelectAppObject.js.map +1 -1
  102. package/dist/esm/Selection/Controller/TouchPressOnAppObject.js.map +1 -1
  103. package/dist/esm/Stick/Controllers/DoubleClickToStickMC.js.map +1 -1
  104. package/dist/esm/Stick/Controllers/DoubleTapToStickTC.js.map +1 -1
  105. package/dist/esm/Stylus/Entity/StylusEntity.js.map +1 -1
  106. package/dist/esm/Stylus/Entity/StylusEntity.test.js.map +1 -1
  107. package/dist/esm/TouchController/Entities/TouchInput.js.map +1 -1
  108. package/dist/esm/TouchController/Entities/TouchInput.test.js.map +1 -1
  109. package/dist/esm/Transform3D/Controllers/Mouse/DragScaleTransformMC.js.map +1 -1
  110. package/dist/esm/Transform3D/Controllers/Mouse/MousePanTransformMC.js.map +1 -1
  111. package/dist/esm/Transform3D/Controllers/Mouse/PanTransformMC.js.map +1 -1
  112. package/dist/esm/Transform3D/Controllers/Mouse/RollScaleTransformMC.js.map +1 -1
  113. package/dist/esm/Transform3D/Controllers/Stylus/MoveTransformSC.js.map +1 -1
  114. package/dist/esm/Transform3D/Controllers/Stylus/PanScaleTransformSC.js.map +1 -1
  115. package/dist/esm/Transform3D/Controllers/Stylus/PanTransformSC.js.map +1 -1
  116. package/dist/esm/Transform3D/Controllers/Stylus/ScaleTransformSC.js.map +1 -1
  117. package/dist/esm/Transform3D/Controllers/Touch/DragScaleTransformTC.js.map +1 -1
  118. package/dist/esm/Transform3D/Controllers/Touch/PanTransformTC.js.map +1 -1
  119. package/dist/esm/Transform3D/Controllers/Touch/PinchTransformTC.js.map +1 -1
  120. package/dist/esm/Transform3D/Controllers/Touch/TouchPanTransformTC.js.map +1 -1
  121. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts +2 -2
  122. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts.map +1 -1
  123. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts +2 -2
  124. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts.map +1 -1
  125. package/dist/types/Hideable/Controllers/HideMC.d.ts +2 -2
  126. package/dist/types/Hideable/Controllers/HideMC.d.ts.map +1 -1
  127. package/dist/types/Hideable/Controllers/HideTC.d.ts +2 -2
  128. package/dist/types/Hideable/Controllers/HideTC.d.ts.map +1 -1
  129. package/dist/types/HoverLabel/Controllers/HoverLabelMouse.d.ts +2 -2
  130. package/dist/types/HoverLabel/Controllers/HoverLabelMouse.d.ts.map +1 -1
  131. package/dist/types/HoverLabel/Controllers/HoverLabelTouch.d.ts +2 -2
  132. package/dist/types/HoverLabel/Controllers/HoverLabelTouch.d.ts.map +1 -1
  133. package/dist/types/HoverLabel/Controllers/StylusHoverLabel.d.ts +2 -2
  134. package/dist/types/HoverLabel/Controllers/StylusHoverLabel.d.ts.map +1 -1
  135. package/dist/types/LabelDrop/Controller/MouseLabelDropAuthor.d.ts +2 -2
  136. package/dist/types/LabelDrop/Controller/MouseLabelDropAuthor.d.ts.map +1 -1
  137. package/dist/types/LabelDrop/Controller/StylusLabelDrop.d.ts +2 -2
  138. package/dist/types/LabelDrop/Controller/StylusLabelDrop.d.ts.map +1 -1
  139. package/dist/types/LabelDrop/Controller/TouchLabelDropAuthor.d.ts +2 -2
  140. package/dist/types/LabelDrop/Controller/TouchLabelDropAuthor.d.ts.map +1 -1
  141. package/dist/types/Landmarks/Controller/MouseLandmark.d.ts +2 -2
  142. package/dist/types/Landmarks/Controller/MouseLandmark.d.ts.map +1 -1
  143. package/dist/types/Landmarks/Controller/TouchLandmark.d.ts +2 -2
  144. package/dist/types/Landmarks/Controller/TouchLandmark.d.ts.map +1 -1
  145. package/dist/types/MouseInput/Entities/MouseInput.d.ts +7 -3
  146. package/dist/types/MouseInput/Entities/MouseInput.d.ts.map +1 -1
  147. package/dist/types/MouseInput/Mocks/index.d.ts +2 -0
  148. package/dist/types/MouseInput/Mocks/index.d.ts.map +1 -0
  149. package/dist/types/MouseInput/index.d.ts +1 -0
  150. package/dist/types/MouseInput/index.d.ts.map +1 -1
  151. package/dist/types/ObjectPick/Controllers/MouseObjectPickMC.d.ts +2 -2
  152. package/dist/types/ObjectPick/Controllers/MouseObjectPickMC.d.ts.map +1 -1
  153. package/dist/types/ObjectPick/Controllers/StylusObjectPickSC.d.ts +2 -2
  154. package/dist/types/ObjectPick/Controllers/StylusObjectPickSC.d.ts.map +1 -1
  155. package/dist/types/ObjectPick/Controllers/TouchObjectPickTC.d.ts +2 -2
  156. package/dist/types/ObjectPick/Controllers/TouchObjectPickTC.d.ts.map +1 -1
  157. package/dist/types/SceneRoot/Controllers/DoubleTapToFocus.d.ts +2 -2
  158. package/dist/types/SceneRoot/Controllers/DoubleTapToFocus.d.ts.map +1 -1
  159. package/dist/types/SceneRoot/Controllers/MouseClickToFocus.d.ts +2 -2
  160. package/dist/types/SceneRoot/Controllers/MouseClickToFocus.d.ts.map +1 -1
  161. package/dist/types/SceneRoot/Controllers/MouseDoubleClickToRecenter.d.ts +2 -2
  162. package/dist/types/SceneRoot/Controllers/MouseDoubleClickToRecenter.d.ts.map +1 -1
  163. package/dist/types/SceneRoot/Controllers/MouseOrbit.d.ts +2 -2
  164. package/dist/types/SceneRoot/Controllers/MouseOrbit.d.ts.map +1 -1
  165. package/dist/types/SceneRoot/Controllers/MousePan.d.ts +2 -2
  166. package/dist/types/SceneRoot/Controllers/MousePan.d.ts.map +1 -1
  167. package/dist/types/SceneRoot/Controllers/MouseRoll.d.ts +2 -2
  168. package/dist/types/SceneRoot/Controllers/MouseRoll.d.ts.map +1 -1
  169. package/dist/types/SceneRoot/Controllers/MouseScale.d.ts +2 -2
  170. package/dist/types/SceneRoot/Controllers/MouseScale.d.ts.map +1 -1
  171. package/dist/types/SceneRoot/Controllers/ScaleSceneRootSC.d.ts +2 -2
  172. package/dist/types/SceneRoot/Controllers/ScaleSceneRootSC.d.ts.map +1 -1
  173. package/dist/types/SceneRoot/Controllers/SceneRootMoveSC.d.ts +2 -2
  174. package/dist/types/SceneRoot/Controllers/SceneRootMoveSC.d.ts.map +1 -1
  175. package/dist/types/SceneRoot/Controllers/TouchOrbit.d.ts +2 -2
  176. package/dist/types/SceneRoot/Controllers/TouchOrbit.d.ts.map +1 -1
  177. package/dist/types/SceneRoot/Controllers/TouchPan.d.ts +2 -2
  178. package/dist/types/SceneRoot/Controllers/TouchPan.d.ts.map +1 -1
  179. package/dist/types/SceneRoot/Controllers/TouchPinch.d.ts +2 -2
  180. package/dist/types/SceneRoot/Controllers/TouchPinch.d.ts.map +1 -1
  181. package/dist/types/SceneRoot/Controllers/TouchScale.d.ts +2 -2
  182. package/dist/types/SceneRoot/Controllers/TouchScale.d.ts.map +1 -1
  183. package/dist/types/Selection/Controller/MouseHoverOnAppObject.d.ts +2 -2
  184. package/dist/types/Selection/Controller/MouseHoverOnAppObject.d.ts.map +1 -1
  185. package/dist/types/Selection/Controller/MousePressOnAppObject.d.ts +2 -2
  186. package/dist/types/Selection/Controller/MousePressOnAppObject.d.ts.map +1 -1
  187. package/dist/types/Selection/Controller/MouseSelectAppObject.d.ts +2 -2
  188. package/dist/types/Selection/Controller/MouseSelectAppObject.d.ts.map +1 -1
  189. package/dist/types/Selection/Controller/StylusHoverOnAppObjectSC.d.ts +2 -2
  190. package/dist/types/Selection/Controller/StylusHoverOnAppObjectSC.d.ts.map +1 -1
  191. package/dist/types/Selection/Controller/StylusPressOnAppObjectSC.d.ts +2 -2
  192. package/dist/types/Selection/Controller/StylusPressOnAppObjectSC.d.ts.map +1 -1
  193. package/dist/types/Selection/Controller/StylusSelectAppObjectSC.d.ts +2 -2
  194. package/dist/types/Selection/Controller/StylusSelectAppObjectSC.d.ts.map +1 -1
  195. package/dist/types/Selection/Controller/TapToSelectAppObject.d.ts +2 -2
  196. package/dist/types/Selection/Controller/TapToSelectAppObject.d.ts.map +1 -1
  197. package/dist/types/Selection/Controller/TouchPressOnAppObject.d.ts +2 -2
  198. package/dist/types/Selection/Controller/TouchPressOnAppObject.d.ts.map +1 -1
  199. package/dist/types/Stick/Controllers/DoubleClickToStickMC.d.ts +2 -2
  200. package/dist/types/Stick/Controllers/DoubleClickToStickMC.d.ts.map +1 -1
  201. package/dist/types/Stick/Controllers/DoubleTapToStickTC.d.ts +2 -2
  202. package/dist/types/Stick/Controllers/DoubleTapToStickTC.d.ts.map +1 -1
  203. package/dist/types/Stylus/Entity/StylusEntity.d.ts +6 -2
  204. package/dist/types/Stylus/Entity/StylusEntity.d.ts.map +1 -1
  205. package/dist/types/TouchController/Entities/TouchInput.d.ts +7 -3
  206. package/dist/types/TouchController/Entities/TouchInput.d.ts.map +1 -1
  207. package/dist/types/Transform3D/Controllers/Mouse/DragScaleTransformMC.d.ts +2 -2
  208. package/dist/types/Transform3D/Controllers/Mouse/DragScaleTransformMC.d.ts.map +1 -1
  209. package/dist/types/Transform3D/Controllers/Mouse/MousePanTransformMC.d.ts +2 -2
  210. package/dist/types/Transform3D/Controllers/Mouse/MousePanTransformMC.d.ts.map +1 -1
  211. package/dist/types/Transform3D/Controllers/Mouse/MousePanTransformMC.test.d.ts +1 -1
  212. package/dist/types/Transform3D/Controllers/Mouse/PanTransformMC.d.ts +2 -2
  213. package/dist/types/Transform3D/Controllers/Mouse/PanTransformMC.d.ts.map +1 -1
  214. package/dist/types/Transform3D/Controllers/Mouse/RollScaleTransformMC.d.ts +2 -2
  215. package/dist/types/Transform3D/Controllers/Mouse/RollScaleTransformMC.d.ts.map +1 -1
  216. package/dist/types/Transform3D/Controllers/Stylus/MoveTransformSC.d.ts +2 -2
  217. package/dist/types/Transform3D/Controllers/Stylus/MoveTransformSC.d.ts.map +1 -1
  218. package/dist/types/Transform3D/Controllers/Stylus/PanScaleTransformSC.d.ts +2 -2
  219. package/dist/types/Transform3D/Controllers/Stylus/PanScaleTransformSC.d.ts.map +1 -1
  220. package/dist/types/Transform3D/Controllers/Stylus/PanTransformSC.d.ts +2 -2
  221. package/dist/types/Transform3D/Controllers/Stylus/PanTransformSC.d.ts.map +1 -1
  222. package/dist/types/Transform3D/Controllers/Stylus/ScaleTransformSC.d.ts +2 -2
  223. package/dist/types/Transform3D/Controllers/Stylus/ScaleTransformSC.d.ts.map +1 -1
  224. package/dist/types/Transform3D/Controllers/Touch/DragScaleTransformTC.d.ts +2 -2
  225. package/dist/types/Transform3D/Controllers/Touch/DragScaleTransformTC.d.ts.map +1 -1
  226. package/dist/types/Transform3D/Controllers/Touch/PanTransformTC.d.ts +2 -2
  227. package/dist/types/Transform3D/Controllers/Touch/PanTransformTC.d.ts.map +1 -1
  228. package/dist/types/Transform3D/Controllers/Touch/PinchTransformTC.d.ts +2 -2
  229. package/dist/types/Transform3D/Controllers/Touch/PinchTransformTC.d.ts.map +1 -1
  230. package/dist/types/Transform3D/Controllers/Touch/TouchPanTransformTC.d.ts +2 -2
  231. package/dist/types/Transform3D/Controllers/Touch/TouchPanTransformTC.d.ts.map +1 -1
  232. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TouchScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,OAAO,UAAW,SAAQ,mBAAmB;IAIjD,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,oBAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAxD5B,cAAS,GAAG,KAAK,CAAC;QAY1B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAE5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEnC,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAlEe,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class TouchScale extends AppObjectController implements TouchController {\n static readonly type = \"TouchScale\";\n private isScaling = false;\n\n private get dragScaleRootUC() {\n return this.getCachedLocalComponent<DragScaleSceneRootUC>(\n DragScaleSceneRootUC.type,\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const zoomTool = this.toolRepo?.getTool(\"ZOOM\");\n if (!zoomTool) return false;\n\n const zoomToolIsActive = zoomTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.isScaling = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isScaling = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isScaling) return;\n if (e.touches.length !== 1) return;\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.doScale(pixelPosition);\n };\n\n onTouchEnd = () => {\n this.isScaling = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchScale.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TouchScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,OAAO,UACX,SAAQ,mBAAmB;IAM3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,oBAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAxD5B,cAAS,GAAG,KAAK,CAAC;QAY1B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAE5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEnC,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAlEe,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class TouchScale\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchScale\";\n private isScaling = false;\n\n private get dragScaleRootUC() {\n return this.getCachedLocalComponent<DragScaleSceneRootUC>(\n DragScaleSceneRootUC.type\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const zoomTool = this.toolRepo?.getTool(\"ZOOM\");\n if (!zoomTool) return false;\n\n const zoomToolIsActive = zoomTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.isScaling = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isScaling = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isScaling) return;\n if (e.touches.length !== 1) return;\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.doScale(pixelPosition);\n };\n\n onTouchEnd = () => {\n this.isScaling = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchScale.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseHoverOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseHoverOnAppObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,qBACX,SAAQ,mBAAmB;IAsB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAjBvC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,wIAAwI,CACzI,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAvCe,0BAAI,GAAG,uBAAuB,AAA1B,CAA2B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class MouseHoverOnAppObject\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MouseHoverOnAppObject\";\n\n private hoverUC?: HoverAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.hoverUC) return;\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.hoverUC.tryHoverAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseHoverOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type,\n );\n if (!this.hoverUC) {\n console.warn(\n \"MouseHover has been added to an App Object that does not have a HoverAppObjectUC. Add an HoverAppObjectUC before adding the Controller\",\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseHoverOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseHoverOnAppObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,qBACX,SAAQ,mBAAmB;IAsB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAjBvC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,wIAAwI,CACzI,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAvCe,0BAAI,GAAG,uBAAuB,AAA1B,CAA2B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class MouseHoverOnAppObject\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseHoverOnAppObject\";\n\n private hoverUC?: HoverAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.hoverUC) return;\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.hoverUC.tryHoverAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseHoverOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type\n );\n if (!this.hoverUC) {\n console.warn(\n \"MouseHover has been added to an App Object that does not have a HoverAppObjectUC. Add an HoverAppObjectUC before adding the Controller\"\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MousePressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MousePressOnAppObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,qBACX,SAAQ,mBAAmB;IAyE3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAnEvC,iBAAY,GAA6B,SAAS,CAAC;QACnD,kBAAa,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,gBAAW,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,cAAS,GAAkB,IAAI,CAAC;QAChC,cAAS,GAAY,KAAK,CAAC;QAEnC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,QAAmB,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,SAAI,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,wBAAwB;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,QAAmB,CAAC;gBAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,CACjB,CAAC,SAAS,CAAC;gBAEZ,IAAI,QAAQ,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;oBACtD,wBAAwB;oBACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,wIAAwI,CACzI,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA1Fe,0BAAI,GAAG,uBAAuB,AAA1B,CAA2B;AAC/B,sCAAgB,GAAG,CAAC,AAAJ,CAAK","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class MousePressOnAppObject\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MousePressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDown = (e: MouseInputEvent) => {\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n this.startPosition = e.position as Vector2;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onUp = (e: MouseInputEvent) => {\n this.isPressed = false;\n\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = e.position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitued;\n\n if (movement > MousePressOnAppObject.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePressOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type,\n );\n if (!this.pressUC) {\n console.warn(\n \"MousePress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MousePressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MousePressOnAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class MousePressOnAppObject\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MousePressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDown = (e: MouseInputEvent) => {\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n this.startPosition = e.position as Vector2;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onUp = (e: MouseInputEvent) => {\n this.isPressed = false;\n\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = e.position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitued;\n\n if (movement > MousePressOnAppObject.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePressOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type\n );\n if (!this.pressUC) {\n console.warn(\n \"MousePress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseSelectAppObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,OAAO,oBACX,SAAQ,mBAAmB;IA6B3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAxBtC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,iBAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA9Ce,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class MouseSelectAppObject\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MouseSelectAppObject\";\n\n private selectUC?: SelectAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onClick = (e: MouseInputEvent) => {\n if (!this.selectUC) {\n return;\n }\n\n if (e.button !== 0) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.selectUC.trySelectAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseSelectAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type,\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseSelectAppObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,OAAO,oBACX,SAAQ,mBAAmB;IA6B3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAxBtC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,iBAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA9Ce,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class MouseSelectAppObject\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseSelectAppObject\";\n\n private selectUC?: SelectAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onClick = (e: MouseInputEvent) => {\n if (!this.selectUC) {\n return;\n }\n\n if (e.button !== 0) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.selectUC.trySelectAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseSelectAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusHoverOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusHoverOnAppObjectSC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAoB,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,wBACX,SAAQ,mBAAmB;IAuB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAjBlD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACV,uGAAuG,CACxG,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;;AA5Ce,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class StylusHoverOnAppObjectSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"StylusHoverOnAppObjectSC\";\n private stylus?: StylusEntity;\n private hoverUC?: HoverAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n\n if (!this.hoverUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.hoverUC.tryHoverAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusHoverOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.warn(\"Unable to find StylusEntity\");\n return;\n }\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type,\n );\n\n if (!this.stylus) {\n console.warn(\n \"StylusInputPointer Controller has been added to an app object that does not have a ZSpaceStylusEntity\",\n );\n } else if (!this.hoverUC) {\n console.warn(\n \"HoverAppObjectUC has not been found on any objects in the app object repo\",\n );\n } else {\n this.stylus.registerController(this);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"StylusHoverOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusHoverOnAppObjectSC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAsB,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,wBACX,SAAQ,mBAAmB;IAuB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAjBlD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACV,uGAAuG,CACxG,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;;AA5Ce,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class StylusHoverOnAppObjectSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusHoverOnAppObjectSC\";\n private stylus?: StylusEntity;\n private hoverUC?: HoverAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n\n if (!this.hoverUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.hoverUC.tryHoverAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusHoverOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.warn(\"Unable to find StylusEntity\");\n return;\n }\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type\n );\n\n if (!this.stylus) {\n console.warn(\n \"StylusInputPointer Controller has been added to an app object that does not have a ZSpaceStylusEntity\"\n );\n } else if (!this.hoverUC) {\n console.warn(\n \"HoverAppObjectUC has not been found on any objects in the app object repo\"\n );\n } else {\n this.stylus.registerController(this);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusPressOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusPressOnAppObjectSC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector3 } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class StylusPressOnAppObjectSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"StylusPressOnAppObjectSC\";\n static readonly maxTapDistancePx = 5;\n\n private stylus?: StylusEntity;\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector3 = Vector3.Zero();\n private endPosition: Vector3 = Vector3.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (button: number): boolean => {\n return true;\n };\n\n onButtonDown = (button: number) => {\n if (!this.stylus) return;\n if (!this.pressUC) return;\n\n if (!this.allow(button)) return;\n\n this.startPosition = this.stylus.transform.localPosition as Vector3;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n this.pressedID = this.pressUC?.tryPressAppObject(this.stylus.pickRay);\n };\n\n onButtonUp = (button: number) => {\n this.isPressed = false;\n\n if (button !== 0) return;\n\n if (!this.pressUC) return;\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onStylusMove = () => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = this.stylus?.transform.localPosition as Vector3;\n\n const movement = Vector3.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitude;\n\n if (movement > StylusPressOnAppObjectSC.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusPressOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type,\n );\n\n if (!this.pressUC) {\n this.error(\"Unable to get PressAppObjectUC from the App Object\");\n return;\n }\n\n this.stylus.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusPressOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusPressOnAppObjectSC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector3 } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class StylusPressOnAppObjectSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusPressOnAppObjectSC\";\n static readonly maxTapDistancePx = 5;\n\n private stylus?: StylusEntity;\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector3 = Vector3.Zero();\n private endPosition: Vector3 = Vector3.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (button: number): boolean => {\n return true;\n };\n\n onButtonDown = (button: number) => {\n if (!this.stylus) return;\n if (!this.pressUC) return;\n\n if (!this.allow(button)) return;\n\n this.startPosition = this.stylus.transform.localPosition as Vector3;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n this.pressedID = this.pressUC?.tryPressAppObject(this.stylus.pickRay);\n };\n\n onButtonUp = (button: number) => {\n this.isPressed = false;\n\n if (button !== 0) return;\n\n if (!this.pressUC) return;\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onStylusMove = () => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = this.stylus?.transform.localPosition as Vector3;\n\n const movement = Vector3.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitude;\n\n if (movement > StylusPressOnAppObjectSC.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusPressOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type\n );\n\n if (!this.pressUC) {\n this.error(\"Unable to get PressAppObjectUC from the App Object\");\n return;\n }\n\n this.stylus.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusSelectAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusSelectAppObjectSC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAoB,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,OAAO,uBACX,SAAQ,mBAAmB;IAyB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAnBjD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,iBAAiB,CAAC,IAAI,CACvB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;AAxCe,4BAAI,GAAG,yBAAyB,AAA5B,CAA6B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { SelectAppObjectUC } from \"../UC\";\n\nexport class StylusSelectAppObjectSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"StylusSelectAppObjectSC\";\n private stylus?: StylusEntity;\n private selectUC?: SelectAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onButtonClick = (button: number) => {\n if (button !== 0) return;\n\n if (!this.stylus) return;\n\n if (!this.selectUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.selectUC.trySelectAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusSelectAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type,\n );\n\n if (!this.selectUC) {\n this.error(\"Added to an App Object that does not have SelectAppObjectUC\");\n return;\n }\n this.stylus.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusSelectAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusSelectAppObjectSC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAsB,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,OAAO,uBACX,SAAQ,mBAAmB;IAyB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAnBjD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,iBAAiB,CAAC,IAAI,CACvB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;AAxCe,4BAAI,GAAG,yBAAyB,AAA5B,CAA6B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { SelectAppObjectUC } from \"../UC\";\n\nexport class StylusSelectAppObjectSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusSelectAppObjectSC\";\n private stylus?: StylusEntity;\n private selectUC?: SelectAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onButtonClick = (button: number) => {\n if (button !== 0) return;\n\n if (!this.stylus) return;\n\n if (!this.selectUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.selectUC.trySelectAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusSelectAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type\n );\n\n if (!this.selectUC) {\n this.error(\"Added to an App Object that does not have SelectAppObjectUC\");\n return;\n }\n this.stylus.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TapToSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TapToSelectAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class TapToSelectAppObject\n extends AppObjectController\n implements TouchController\n{\n static readonly type = \"TapToSelectAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private selectUC?: SelectAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n } else {\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n\n if (!this.selectUC) {\n return;\n }\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitued;\n\n if (movement <= TapToSelectAppObject.maxTapDistancePx) {\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.selectUC?.trySelectAppObject(ray);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TapToSelectAppObject.type);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type,\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TapToSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TapToSelectAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class TapToSelectAppObject\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TapToSelectAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private selectUC?: SelectAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n } else {\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n\n if (!this.selectUC) {\n return;\n }\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitued;\n\n if (movement <= TapToSelectAppObject.maxTapDistancePx) {\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.selectUC?.trySelectAppObject(ray);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TapToSelectAppObject.type);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchPressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TouchPressOnAppObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,qBACX,SAAQ,mBAAmB;IAoE3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QA9DvC,kBAAa,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,gBAAW,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,eAAU,GAAY,KAAK,CAAC;QAC5B,cAAS,GAAkB,IAAI,CAAC;QAChC,cAAS,GAAY,KAAK,CAAC;QAEnC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAmB,CAAC;YACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAmB,CAAC;gBAEpD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,CACjB,CAAC,SAAS,CAAC;gBAEZ,IAAI,QAAQ,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;oBACtD,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,CAAC,CAAC;QAKA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,wIAAwI,CACzI,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AApFe,0BAAI,GAAG,uBAAuB,AAA1B,CAA2B;AAC/B,sCAAgB,GAAG,CAAC,AAAJ,CAAK","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class TouchPressOnAppObject\n extends AppObjectController\n implements TouchController\n{\n static readonly type = \"TouchPressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n this.isPressed = true;\n\n if (!this.pressUC) {\n return;\n }\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitued;\n\n if (movement > TouchPressOnAppObject.maxTapDistancePx) {\n this.pressUC?.pressAppObject(null, true);\n }\n } else {\n this.pressUC?.pressAppObject(null, true);\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n this.isPressed = false;\n\n this.pressUC?.pressAppObject(this.pressedID, this.isPressed);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPressOnAppObject.type);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type,\n );\n if (!this.pressUC) {\n console.warn(\n \"TouchPress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TouchPressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TouchPressOnAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class TouchPressOnAppObject\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchPressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n this.isPressed = true;\n\n if (!this.pressUC) {\n return;\n }\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitued;\n\n if (movement > TouchPressOnAppObject.maxTapDistancePx) {\n this.pressUC?.pressAppObject(null, true);\n }\n } else {\n this.pressUC?.pressAppObject(null, true);\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n this.isPressed = false;\n\n this.pressUC?.pressAppObject(this.pressedID, this.isPressed);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPressOnAppObject.type);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type\n );\n if (!this.pressUC) {\n console.warn(\n \"TouchPress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleClickToStickMC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleClickToStickMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,OAAO,oBACX,SAAQ,mBAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAyCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAzDrC,mBAAc,GAAG,GAAG,CAAC;QACrB,uBAAkB,GAAG,CAAC,CAAC;QAExB,oBAAe,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,eAAU,GAAG,CAAC,CAAC;QAYvB,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,QAAQ,CACX,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IACE,UAAU,IAAI,IAAI,CAAC,cAAc;oBACjC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EACnC,CAAC;oBACD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;gBAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEM,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AA7DM,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleClickToStickMC\n extends AppObjectController\n implements MouseController\n{\n static type = \"DoubleClickToStickMC\";\n\n readonly maxClickTimeMS = 300;\n readonly maxClickDistancePx = 5;\n\n private initialClickPos: Vector2 = Vector2.Zero();\n private initialClickTime: number = 0;\n private clickCount = 0;\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type,\n )?.tryWithPixel;\n }\n\n onClick = (e: MouseInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n if (e.button !== 0) {\n this.cancelDoubleClick();\n return;\n }\n\n this.clickCount = 1 + this.clickCount;\n if (this.clickCount === 1) {\n this.initialClickPos = e.position;\n this.initialClickTime = Date.now();\n } else if (this.clickCount === 2) {\n const movement = Vector2.Subtract(\n this.initialClickPos,\n e.position,\n ).magnitued;\n\n const passedTime = Date.now() - this.initialClickTime;\n\n if (\n passedTime <= this.maxClickTimeMS &&\n movement <= this.maxClickDistancePx\n ) {\n this.tryStickSceneMesh(e.position);\n }\n\n this.cancelDoubleClick();\n }\n };\n\n private cancelDoubleClick = () => {\n this.initialClickPos = Vector2.Zero();\n this.initialClickTime = 0;\n this.clickCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleClickToStickMC.type);\n this.mouseInput?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"DoubleClickToStickMC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleClickToStickMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,OAAO,oBACX,SAAQ,mBAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAyCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAzDrC,mBAAc,GAAG,GAAG,CAAC;QACrB,uBAAkB,GAAG,CAAC,CAAC;QAExB,oBAAe,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,eAAU,GAAG,CAAC,CAAC;QAYvB,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,QAAQ,CACX,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IACE,UAAU,IAAI,IAAI,CAAC,cAAc;oBACjC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EACnC,CAAC;oBACD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;gBAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEM,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AA7DM,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleClickToStickMC\n extends AppObjectController\n implements MouseEventHandler\n{\n static type = \"DoubleClickToStickMC\";\n\n readonly maxClickTimeMS = 300;\n readonly maxClickDistancePx = 5;\n\n private initialClickPos: Vector2 = Vector2.Zero();\n private initialClickTime: number = 0;\n private clickCount = 0;\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type\n )?.tryWithPixel;\n }\n\n onClick = (e: MouseInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n if (e.button !== 0) {\n this.cancelDoubleClick();\n return;\n }\n\n this.clickCount = 1 + this.clickCount;\n if (this.clickCount === 1) {\n this.initialClickPos = e.position;\n this.initialClickTime = Date.now();\n } else if (this.clickCount === 2) {\n const movement = Vector2.Subtract(\n this.initialClickPos,\n e.position\n ).magnitued;\n\n const passedTime = Date.now() - this.initialClickTime;\n\n if (\n passedTime <= this.maxClickTimeMS &&\n movement <= this.maxClickDistancePx\n ) {\n this.tryStickSceneMesh(e.position);\n }\n\n this.cancelDoubleClick();\n }\n };\n\n private cancelDoubleClick = () => {\n this.initialClickPos = Vector2.Zero();\n this.initialClickTime = 0;\n this.clickCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleClickToStickMC.type);\n this.mouseInput?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleTapToStickTC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleTapToStickTC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,OAAO,kBACX,SAAQ,mBAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAkCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAlDnC,cAAS,GAAG,GAAG,CAAC;QAChB,qBAAgB,GAAG,EAAE,CAAC;QAEvB,oBAAe,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,aAAQ,GAAG,CAAC,CAAC;QAYrB,UAAK,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,WAAW,CACd,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACxC,CAAC;gBAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAtDM,uBAAI,GAAG,oBAAoB,AAAvB,CAAwB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleTapToStickTC\n extends AppObjectController\n implements TouchController\n{\n static type = \"DoubleTapToStickTC\";\n\n readonly tapTimeMS = 300;\n readonly maxTapDistancePx = 30;\n\n private initialTouchPos: Vector2 = Vector2.Zero();\n private initialTouchTime: number = 0;\n private tapCount = 0;\n\n private get touchInput() {\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type,\n )?.tryWithPixel;\n }\n\n onTap = (e: TouchInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n\n this.tapCount = 1 + this.tapCount;\n if (this.tapCount === 1) {\n this.initialTouchPos = e.touchCenter;\n this.initialTouchTime = Date.now();\n } else if (this.tapCount === 2) {\n const movement = Vector2.Subtract(\n this.initialTouchPos,\n e.touchCenter,\n ).magnitued;\n\n const passedTime = Date.now() - this.initialTouchTime;\n\n if (passedTime <= this.tapTimeMS && movement <= this.maxTapDistancePx) {\n this.tryStickSceneMesh(e.touchCenter);\n }\n\n this.cancelDoubleTap();\n }\n };\n\n private cancelDoubleTap = () => {\n this.initialTouchPos = Vector2.Zero();\n this.initialTouchTime = 0;\n this.tapCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleTapToStickTC.type);\n this.touchInput?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"DoubleTapToStickTC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleTapToStickTC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,OAAO,kBACX,SAAQ,mBAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAkCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAlDnC,cAAS,GAAG,GAAG,CAAC;QAChB,qBAAgB,GAAG,EAAE,CAAC;QAEvB,oBAAe,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,aAAQ,GAAG,CAAC,CAAC;QAYrB,UAAK,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,WAAW,CACd,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACxC,CAAC;gBAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAtDM,uBAAI,GAAG,oBAAoB,AAAvB,CAAwB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleTapToStickTC\n extends AppObjectController\n implements TouchEventHandler\n{\n static type = \"DoubleTapToStickTC\";\n\n readonly tapTimeMS = 300;\n readonly maxTapDistancePx = 30;\n\n private initialTouchPos: Vector2 = Vector2.Zero();\n private initialTouchTime: number = 0;\n private tapCount = 0;\n\n private get touchInput() {\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type\n )?.tryWithPixel;\n }\n\n onTap = (e: TouchInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n\n this.tapCount = 1 + this.tapCount;\n if (this.tapCount === 1) {\n this.initialTouchPos = e.touchCenter;\n this.initialTouchTime = Date.now();\n } else if (this.tapCount === 2) {\n const movement = Vector2.Subtract(\n this.initialTouchPos,\n e.touchCenter\n ).magnitued;\n\n const passedTime = Date.now() - this.initialTouchTime;\n\n if (passedTime <= this.tapTimeMS && movement <= this.maxTapDistancePx) {\n this.tryStickSceneMesh(e.touchCenter);\n }\n\n this.cancelDoubleTap();\n }\n };\n\n private cancelDoubleTap = () => {\n this.initialTouchPos = Vector2.Zero();\n this.initialTouchTime = 0;\n this.tapCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleTapToStickTC.type);\n this.touchInput?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusEntity.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,qBAAqB,EAErB,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD,MAAM,OAAgB,YAAa,SAAQ,eAAe;IAexD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;;AAhBe,iBAAI,GAAG,cAAc,CAAC;AAE/B,mCAAsB,GAAW,IAAI,CAAC;AACtC,iCAAoB,GAAW,GAAG,CAAC;AAgB5C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,SAAU,SAAQ,YAAY;IAgFlC,IAAI,OAAO;QACT,OAAO,cAAc,CAAC,kBAAkB,CACtC,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CACxD,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAClC,CAAC;IAEO,oBAAoB,CAAC,WAAmB;QAC9C,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;QACxB,IACE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACX,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACX,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QA/G9B,gBAAW,GAAuB,EAAE,CAAC;QACrC,iBAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAGrC,kBAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,cAAS,GAAG,CAAC,CAAC;QAEtB,uBAAkB,GAAG,CAAC,UAA4B,EAAQ,EAAE;YAC1D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,MAAc,EAAE,SAAkB,EAAQ,EAAE;YAC/D,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,SAAS;gBAAE,OAAO;YAEpD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;wBAC5B,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAClC,CAAC;oBACD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;oBAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;oBAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;wBAC1B,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBAChC,CAAC;oBAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;wBACrD,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,mBAAc,GAAG,CAAC,MAAc,EAAW,EAAE;YAC3C,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBACrD,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,MAAc,EAAW,EAAE;YAC5C,MAAM,eAAe,GAAG,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC;YAE1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,IAAI,CAAC,aAAa,CACnB,CAAC,SAAS,CAAC;YACZ,MAAM,qBAAqB,GACzB,QAAQ,GAAG,YAAY,CAAC,sBAAsB,CAAC;YAEjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/C,MAAM,sBAAsB,GAC1B,UAAU,GAAG,YAAY,CAAC,oBAAoB,CAAC;YAEjD,IAAI,eAAe,IAAI,qBAAqB,IAAI,sBAAsB,EAAE,CAAC;gBACvE,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAIM,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAEtD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC5B,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QASM,oBAAe,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QA0BxE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n getSingletonComponent,\n Matrix,\n MemoizedBoolean,\n ParametricLine,\n Vector3,\n} from \"@vived/core\";\nimport { Transform3D } from \"../../Transform3D\";\n\nexport interface StylusController {\n onButtonDown?: (button: number) => void;\n onButtonUp?: (button: number) => void;\n onButtonClick?: (button: number) => void;\n onStylusMove?: (transform: Transform3D) => void;\n}\n\nexport abstract class StylusEntity extends AppObjectEntity {\n static readonly type = \"StylusEntity\";\n\n static clickMovementThreshold: number = 0.32;\n static clickTimeThresholdMS: number = 350;\n\n abstract registerController: (controller: StylusController) => void;\n abstract updateButtonState: (button: number, isPressed: boolean) => void;\n abstract getButtonState(button: number): boolean;\n\n abstract readonly transform: Transform3D;\n\n abstract get isInUse(): boolean;\n abstract get pickRay(): ParametricLine;\n\n static get(appObjects: AppObjectRepo): StylusEntity | undefined {\n return getSingletonComponent(StylusEntity.type, appObjects);\n }\n}\n\nexport function makeStylusEntity(appObj: AppObject): StylusEntity {\n return new StylusImp(appObj);\n}\n\nclass StylusImp extends StylusEntity {\n private controllers: StylusController[] = [];\n private buttonStates = [false, false, false];\n\n private lassPressedButton?: number;\n private pressPosition = Vector3.Zero();\n private pressTime = 0;\n\n registerController = (controller: StylusController): void => {\n this.controllers.push(controller);\n };\n\n updateButtonState = (button: number, isPressed: boolean): void => {\n if (this.buttonStates[button] === isPressed) return;\n\n this.controllers.forEach((controller) => {\n if (isPressed) {\n if (controller.onButtonDown) {\n controller.onButtonDown(button);\n }\n this.lassPressedButton = button;\n this.pressPosition = this.transform.localPosition;\n this.pressTime = Date.now();\n } else {\n if (controller.onButtonUp) {\n controller.onButtonUp(button);\n }\n\n if (this.isClick(button) && controller.onButtonClick) {\n controller.onButtonClick(button);\n }\n }\n });\n\n this.buttonStates[button] = isPressed;\n this.notifyOnChange();\n };\n\n getButtonState = (button: number): boolean => {\n if (button < 0 || button >= this.buttonStates.length) {\n return false;\n } else {\n return this.buttonStates[button];\n }\n };\n\n private isClick = (button: number): boolean => {\n const buttonIsCorrect = button === this.lassPressedButton;\n\n const movement = Vector3.Subtract(\n this.transform.localPosition,\n this.pressPosition,\n ).magnitude;\n const movementIsSmallEnough =\n movement < StylusEntity.clickMovementThreshold;\n\n const passedTime = Date.now() - this.pressTime;\n const pressTimeIsShortEnough =\n passedTime < StylusEntity.clickTimeThresholdMS;\n\n if (buttonIsCorrect && movementIsSmallEnough && pressTimeIsShortEnough) {\n return true;\n } else {\n return false;\n }\n };\n\n readonly transform: Transform3D;\n\n private onTransformUpdate = () => {\n this.checkIfStylusIsInUse(this.transform.worldMatrix);\n\n this.controllers.forEach((controller) => {\n if (controller.onStylusMove) {\n controller.onStylusMove(this.transform);\n }\n });\n this.notifyOnChange();\n };\n\n get pickRay(): ParametricLine {\n return ParametricLine.FromPointDirection(\n this.transform.worldPosition,\n this.transform.localDirectionToWorld(Vector3.Forward()),\n );\n }\n\n private memoizedIsInUse = new MemoizedBoolean(false, this.notifyOnChange);\n get isInUse(): boolean {\n return this.memoizedIsInUse.val;\n }\n\n private checkIfStylusIsInUse(worldMatrix: Matrix) {\n const m = worldMatrix.m;\n if (\n m[1] === 0 &&\n m[2] === 0 &&\n m[3] === 0 &&\n m[4] === 0 &&\n m[7] === 0 &&\n m[8] === 0 &&\n m[11] === 0 &&\n m[12] === 0 &&\n m[15] === 1\n ) {\n this.memoizedIsInUse.val = false;\n } else {\n this.memoizedIsInUse.val = true;\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, StylusEntity.type);\n this.transform = Transform3D.addIfMissing(appObject);\n this.transform.addChangeObserver(this.onTransformUpdate);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusEntity.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n getSingletonComponent,\n Matrix,\n MemoizedBoolean,\n ParametricLine,\n Vector3,\n} from \"@vived/core\";\nimport { Transform3D } from \"../../Transform3D\";\n\nexport interface StylusEventHandler {\n onButtonDown?: (button: number) => void;\n onButtonUp?: (button: number) => void;\n onButtonClick?: (button: number) => void;\n onStylusMove?: (transform: Transform3D) => void;\n}\n\n/**\n * @deprecated Use StylusEventHandler instead\n */\nexport type StylusController = StylusEventHandler;\n\nexport abstract class StylusEntity extends AppObjectEntity {\n static readonly type = \"StylusEntity\";\n\n static clickMovementThreshold: number = 0.32;\n static clickTimeThresholdMS: number = 350;\n\n abstract registerController: (controller: StylusEventHandler) => void;\n abstract updateButtonState: (button: number, isPressed: boolean) => void;\n abstract getButtonState(button: number): boolean;\n\n abstract readonly transform: Transform3D;\n\n abstract get isInUse(): boolean;\n abstract get pickRay(): ParametricLine;\n\n static get(appObjects: AppObjectRepo): StylusEntity | undefined {\n return getSingletonComponent(StylusEntity.type, appObjects);\n }\n}\n\nexport function makeStylusEntity(appObj: AppObject): StylusEntity {\n return new StylusImp(appObj);\n}\n\nclass StylusImp extends StylusEntity {\n private controllers: StylusEventHandler[] = [];\n private buttonStates = [false, false, false];\n\n private lassPressedButton?: number;\n private pressPosition = Vector3.Zero();\n private pressTime = 0;\n\n registerController = (controller: StylusEventHandler): void => {\n this.controllers.push(controller);\n };\n\n updateButtonState = (button: number, isPressed: boolean): void => {\n if (this.buttonStates[button] === isPressed) return;\n\n this.controllers.forEach((controller) => {\n if (isPressed) {\n if (controller.onButtonDown) {\n controller.onButtonDown(button);\n }\n this.lassPressedButton = button;\n this.pressPosition = this.transform.localPosition;\n this.pressTime = Date.now();\n } else {\n if (controller.onButtonUp) {\n controller.onButtonUp(button);\n }\n\n if (this.isClick(button) && controller.onButtonClick) {\n controller.onButtonClick(button);\n }\n }\n });\n\n this.buttonStates[button] = isPressed;\n this.notifyOnChange();\n };\n\n getButtonState = (button: number): boolean => {\n if (button < 0 || button >= this.buttonStates.length) {\n return false;\n } else {\n return this.buttonStates[button];\n }\n };\n\n private isClick = (button: number): boolean => {\n const buttonIsCorrect = button === this.lassPressedButton;\n\n const movement = Vector3.Subtract(\n this.transform.localPosition,\n this.pressPosition\n ).magnitude;\n const movementIsSmallEnough =\n movement < StylusEntity.clickMovementThreshold;\n\n const passedTime = Date.now() - this.pressTime;\n const pressTimeIsShortEnough =\n passedTime < StylusEntity.clickTimeThresholdMS;\n\n if (buttonIsCorrect && movementIsSmallEnough && pressTimeIsShortEnough) {\n return true;\n } else {\n return false;\n }\n };\n\n readonly transform: Transform3D;\n\n private onTransformUpdate = () => {\n this.checkIfStylusIsInUse(this.transform.worldMatrix);\n\n this.controllers.forEach((controller) => {\n if (controller.onStylusMove) {\n controller.onStylusMove(this.transform);\n }\n });\n this.notifyOnChange();\n };\n\n get pickRay(): ParametricLine {\n return ParametricLine.FromPointDirection(\n this.transform.worldPosition,\n this.transform.localDirectionToWorld(Vector3.Forward())\n );\n }\n\n private memoizedIsInUse = new MemoizedBoolean(false, this.notifyOnChange);\n get isInUse(): boolean {\n return this.memoizedIsInUse.val;\n }\n\n private checkIfStylusIsInUse(worldMatrix: Matrix) {\n const m = worldMatrix.m;\n if (\n m[1] === 0 &&\n m[2] === 0 &&\n m[3] === 0 &&\n m[4] === 0 &&\n m[7] === 0 &&\n m[8] === 0 &&\n m[11] === 0 &&\n m[12] === 0 &&\n m[15] === 1\n ) {\n this.memoizedIsInUse.val = false;\n } else {\n this.memoizedIsInUse.val = true;\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, StylusEntity.type);\n this.transform = Transform3D.addIfMissing(appObject);\n this.transform.addChangeObserver(this.onTransformUpdate);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusEntity.test.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Angle, ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport {\n makeStylusEntity,\n StylusController,\n StylusEntity,\n} from \"./StylusEntity\";\n\nclass MockController implements StylusController {\n onButtonDown = jest.fn();\n onButtonUp = jest.fn();\n onStylusMove = jest.fn();\n onButtonClick = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const stylusAO = appObjects.getOrCreate(\"stylus\");\n\n const stylus = makeStylusEntity(stylusAO);\n const observer = jest.fn();\n stylus.addChangeObserver(observer);\n const controller = new MockController();\n stylus.registerController(controller);\n\n return { stylus, controller, observer };\n}\n\ndescribe(\"Stylus Entity\", () => {\n it(\"Forwards a press to the controller\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonDown).toHaveBeenCalledWith(1);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).toHaveBeenCalledWith(1);\n });\n\n it(\"Only forwards if there is a change\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n\n controller.onButtonDown.mockClear();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n });\n\n it(\"Forms the parametric line as expected\", () => {\n const { stylus } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.transform.localRotation = Quaternion.Identity();\n\n let rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n let expectedPoint = new Vector3(0, 0, 1);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localRotation = Quaternion.FromAngleAxis(\n Vector3.Up(),\n Angle.FromDegrees(90),\n );\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(1, 0, 0);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(2, 2, 3);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n });\n\n it(\"Triggers the controller move when the transform position changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers the controller move when the transform rotation changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localRotation = new Quaternion(1, 2, 3, 4);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers a button click\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalledWith(1);\n });\n\n it(\"Does not click if a different button is pressed\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(0, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(2, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if there is a little movement\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold * 0.99,\n 0,\n 0,\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if the movement is too great\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold,\n 0,\n 0,\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if a little time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS - 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if too much time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS + 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Sets is in use to false\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(false);\n });\n\n it(\"Sets is in use to true\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.One();\n stylus.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(true);\n });\n\n it(\"Returns correct button states\", () => {\n const { stylus } = makeTestRig();\n\n expect(stylus.getButtonState(0)).toBeFalsy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n expect(stylus.getButtonState(-1)).toBeFalsy();\n expect(stylus.getButtonState(3)).toBeFalsy();\n\n stylus.updateButtonState(0, true);\n expect(stylus.getButtonState(0)).toBeTruthy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n stylus.updateButtonState(0, false);\n expect(stylus.getButtonState(0)).toBeFalsy();\n\n stylus.updateButtonState(1, true);\n expect(stylus.getButtonState(1)).toBeTruthy();\n\n stylus.updateButtonState(2, true);\n expect(stylus.getButtonState(2)).toBeTruthy();\n });\n});\n"]}
1
+ {"version":3,"file":"StylusEntity.test.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Angle, ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport {\n makeStylusEntity,\n StylusEventHandler,\n StylusEntity,\n} from \"./StylusEntity\";\n\nclass MockController implements StylusEventHandler {\n onButtonDown = jest.fn();\n onButtonUp = jest.fn();\n onStylusMove = jest.fn();\n onButtonClick = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const stylusAO = appObjects.getOrCreate(\"stylus\");\n\n const stylus = makeStylusEntity(stylusAO);\n const observer = jest.fn();\n stylus.addChangeObserver(observer);\n const controller = new MockController();\n stylus.registerController(controller);\n\n return { stylus, controller, observer };\n}\n\ndescribe(\"Stylus Entity\", () => {\n it(\"Forwards a press to the controller\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonDown).toHaveBeenCalledWith(1);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).toHaveBeenCalledWith(1);\n });\n\n it(\"Only forwards if there is a change\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n\n controller.onButtonDown.mockClear();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n });\n\n it(\"Forms the parametric line as expected\", () => {\n const { stylus } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.transform.localRotation = Quaternion.Identity();\n\n let rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n let expectedPoint = new Vector3(0, 0, 1);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localRotation = Quaternion.FromAngleAxis(\n Vector3.Up(),\n Angle.FromDegrees(90)\n );\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(1, 0, 0);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(2, 2, 3);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n });\n\n it(\"Triggers the controller move when the transform position changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers the controller move when the transform rotation changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localRotation = new Quaternion(1, 2, 3, 4);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers a button click\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalledWith(1);\n });\n\n it(\"Does not click if a different button is pressed\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(0, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(2, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if there is a little movement\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold * 0.99,\n 0,\n 0\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if the movement is too great\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold,\n 0,\n 0\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if a little time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS - 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if too much time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS + 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Sets is in use to false\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(false);\n });\n\n it(\"Sets is in use to true\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.One();\n stylus.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(true);\n });\n\n it(\"Returns correct button states\", () => {\n const { stylus } = makeTestRig();\n\n expect(stylus.getButtonState(0)).toBeFalsy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n expect(stylus.getButtonState(-1)).toBeFalsy();\n expect(stylus.getButtonState(3)).toBeFalsy();\n\n stylus.updateButtonState(0, true);\n expect(stylus.getButtonState(0)).toBeTruthy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n stylus.updateButtonState(0, false);\n expect(stylus.getButtonState(0)).toBeFalsy();\n\n stylus.updateButtonState(1, true);\n expect(stylus.getButtonState(1)).toBeTruthy();\n\n stylus.updateButtonState(2, true);\n expect(stylus.getButtonState(2)).toBeTruthy();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchInput.js","sourceRoot":"","sources":["../../../../src/TouchController/Entities/TouchInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAuBtC,MAAM,OAAgB,gBAAiB,SAAQ,eAAe;;AAC5C,qBAAI,GAAG,kBAAkB,CAAC;AAYnC,oBAAG,GAAG,CAAC,UAAyB,EAAgC,EAAE,CACvE,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG7D,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,gBAAgB;IAG1C,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IA0IO,qBAAqB,CAAC,KAAiB;QAC7C,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAExC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAEpD,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK,CAAC,UAAU;gBACpB,KAAK;gBACL,QAAQ;aACT,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;YACpC,UAAU;YACV,OAAO;YACP,KAAK;SACN,CAAC;IACJ,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAlMlC,gBAAW,GAAsB,EAAE,CAAC;QACpC,kBAAa,GAA4B,SAAS,CAAC;QAO3D,6BAAwB,GAAG,GAAG,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,wBAAwB;QAChG,CAAC,CAAC;QAEF,2BAAsB,GAAG,CAAC,KAAY,EAAW,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;YAED,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAEpD,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,YAAyB,EAAQ,EAAE;YACpD,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEjD,YAAY,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACtE,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpE,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAClE,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAExE,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;YAC/D,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpC,CAAC,CAAC;QAEM,gBAAW,GAAG,KAAK,CAAC;QACpB,qBAAgB,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3C,qBAAgB,GAAG,CAAC,CAAC;QAGrB,iBAAY,GAAG,CAAC,CAAa,EAAE,EAAE;YACvC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;oBACnB,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC/C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEM,cAAS,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,CAAa,EAAE,EAAE;YACtC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAClB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE,OAAO;YAE9B,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,gBAAgB,EACrB,UAAU,CAAC,WAAW,CACvB,CAAC,SAAS,CAAC;YAEZ,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,CAAa,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAChD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACZ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,CAAC;QAEM,kBAAa,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;oBACpB,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,CAAC;QAEF,sBAAiB,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAEhC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACxE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAE1E,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,UAA2B,EAAQ,EAAE;YACzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,qBAAgB,GAAG,CAAC,UAA2B,EAAQ,EAAE;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC;IAuDF,CAAC;CACF","sourcesContent":["import { getSingletonComponent } from \"@vived/core\";\nimport { AppObject } from \"@vived/core\";\nimport { AppObjectEntity } from \"@vived/core\";\nimport { AppObjectRepo } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\n\nexport interface TouchInputEvent {\n touchCount: number;\n touchCenter: Vector2;\n touches: TouchData[];\n event: TouchEvent;\n}\n\nexport interface TouchData {\n id: number;\n position: Vector2;\n touch?: Touch;\n}\n\nexport interface TouchController {\n onTouchStart?: (e: TouchInputEvent) => void;\n onTouchMove?: (e: TouchInputEvent) => void;\n onTouchEnd?: (e: TouchInputEvent) => void;\n onTouchCancel?: (e: TouchInputEvent) => void;\n onTap?: (e: TouchInputEvent) => void;\n}\n\nexport abstract class TouchInputEntity extends AppObjectEntity {\n static readonly type = \"TouchInputEntity\";\n\n abstract get eventElement(): HTMLElement | undefined;\n abstract eventElementBounds?: DOMRect;\n\n abstract setEventElement: (eventElement: HTMLElement) => void;\n abstract clearInputElement: () => void;\n abstract updateInputElementBounds: () => void;\n\n abstract registerController: (controller: TouchController) => void;\n abstract removeController: (controller: TouchController) => void;\n\n static get = (appObjects: AppObjectRepo): TouchInputEntity | undefined =>\n getSingletonComponent(TouchInputEntity.type, appObjects);\n}\n\nexport function makeTouchInput(appObject: AppObject): TouchInputEntity {\n return new TouchInputImp(appObject);\n}\n\nclass TouchInputImp extends TouchInputEntity {\n private controllers: TouchController[] = [];\n private _eventElement: HTMLElement | undefined = undefined;\n public get eventElement(): HTMLElement | undefined {\n return this._eventElement;\n }\n\n public eventElementBounds?: DOMRect;\n\n updateInputElementBounds = () => {\n if (!this._eventElement) return;\n this.eventElementBounds = this._eventElement.getBoundingClientRect(); // Expensive so we cache\n };\n\n getTouchOffsetPosition = (touch: Touch): Vector2 => {\n if (!this.eventElementBounds) {\n console.warn(\"No target bounds\");\n return Vector2.Zero();\n }\n\n const x = touch.clientX - this.eventElementBounds.x;\n const y = touch.clientY - this.eventElementBounds.y;\n\n return new Vector2(x, y);\n };\n\n setEventElement = (eventElement: HTMLElement): void => {\n if (this._eventElement) this.clearInputElement();\n\n eventElement.addEventListener(\"touchstart\", this.onTouchStart, false);\n eventElement.addEventListener(\"touchmove\", this.onTouchMove, false);\n eventElement.addEventListener(\"touchend\", this.onTouchEnd, false);\n eventElement.addEventListener(\"touchcancel\", this.onTouchCancel, false);\n\n this.eventElementBounds = eventElement.getBoundingClientRect();\n this._eventElement = eventElement;\n };\n\n private considerTap = false;\n private tapStartPosition: Vector2 = Vector2.Zero();\n private maxTapDistancePx = 5;\n private tapEvent?: TouchInputEvent;\n\n private onTouchStart = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchStart) {\n c.onTouchStart(touchInput);\n }\n });\n\n if (touchInput.touchCount === 1) {\n this.considerTap = true;\n this.tapStartPosition = touchInput.touchCenter;\n this.tapEvent = touchInput;\n } else {\n this.cancelTap();\n }\n };\n\n private cancelTap = () => {\n this.considerTap = false;\n this.tapStartPosition = Vector2.Zero();\n this.tapEvent = undefined;\n };\n\n private onTouchMove = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchMove) {\n c.onTouchMove(touchInput);\n }\n });\n\n if (!this.considerTap) return;\n\n if (touchInput.touchCount !== 1) {\n this.cancelTap();\n }\n\n const movement = Vector2.Subtract(\n this.tapStartPosition,\n touchInput.touchCenter,\n ).magnitued;\n\n if (movement > this.maxTapDistancePx) {\n this.cancelTap();\n }\n };\n\n private onTouchEnd = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchEnd) {\n c.onTouchEnd(touchInput);\n }\n });\n\n if (!this.considerTap || !this.tapEvent) return;\n this.controllers.forEach((c) => {\n if (c.onTap) {\n c.onTap(this.tapEvent!);\n }\n });\n\n this.cancelTap();\n };\n\n private onTouchCancel = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchCancel) {\n c.onTouchCancel(touchInput);\n }\n });\n this.cancelTap();\n };\n\n clearInputElement = (): void => {\n if (!this._eventElement) return;\n\n this._eventElement.removeEventListener(\"touchstart\", this.onTouchStart);\n this._eventElement.removeEventListener(\"touchmove\", this.onTouchMove);\n this._eventElement.removeEventListener(\"touchend\", this.onTouchEnd);\n this._eventElement.removeEventListener(\"touchcancel\", this.onTouchCancel);\n\n this._eventElement = undefined;\n };\n\n registerController = (controller: TouchController): void => {\n this.controllers.push(controller);\n };\n removeController = (controller: TouchController): void => {\n const index = this.controllers.indexOf(controller);\n if (index >= 0) {\n this.controllers.splice(index, 1);\n }\n };\n\n private createTouchInputEvent(event: TouchEvent): TouchInputEvent {\n const touches: TouchData[] = [];\n const touchCount = event.touches.length;\n\n let minX = 0;\n let maxX = 0;\n let minY = 0;\n let maxY = 0;\n\n for (let i = 0; i < touchCount; i++) {\n const touch = event.touches[i];\n const position = this.getTouchOffsetPosition(touch);\n\n touches.push({\n id: touch.identifier,\n touch,\n position,\n });\n\n if (i === 0) {\n minX = position.x;\n maxX = position.x;\n minY = position.y;\n maxY = position.y;\n } else {\n minX = Math.min(minX, position.x);\n maxX = Math.max(maxX, position.x);\n minY = Math.min(minY, position.y);\n maxY = Math.max(maxY, position.y);\n }\n }\n\n let cntX = 0;\n let cntY = 0;\n\n if (touchCount === 1) {\n cntX = maxX;\n cntY = maxY;\n } else {\n cntX = minX + (maxX - minX) / 2;\n cntY = minY + (maxY - minY) / 2;\n }\n\n return {\n touchCenter: new Vector2(cntX, cntY),\n touchCount,\n touches,\n event,\n };\n }\n\n constructor(appObject: AppObject) {\n super(appObject, TouchInputEntity.type);\n }\n}\n"]}
1
+ {"version":3,"file":"TouchInput.js","sourceRoot":"","sources":["../../../../src/TouchController/Entities/TouchInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA4BtC,MAAM,OAAgB,gBAAiB,SAAQ,eAAe;;AAC5C,qBAAI,GAAG,kBAAkB,CAAC;AAYnC,oBAAG,GAAG,CAAC,UAAyB,EAAgC,EAAE,CACvE,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG7D,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,gBAAgB;IAG1C,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IA0IO,qBAAqB,CAAC,KAAiB;QAC7C,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAExC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAEpD,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK,CAAC,UAAU;gBACpB,KAAK;gBACL,QAAQ;aACT,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;YACpC,UAAU;YACV,OAAO;YACP,KAAK;SACN,CAAC;IACJ,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAlMlC,gBAAW,GAAwB,EAAE,CAAC;QACtC,kBAAa,GAA4B,SAAS,CAAC;QAO3D,6BAAwB,GAAG,GAAG,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,wBAAwB;QAChG,CAAC,CAAC;QAEF,2BAAsB,GAAG,CAAC,KAAY,EAAW,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;YAED,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAEpD,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,YAAyB,EAAQ,EAAE;YACpD,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEjD,YAAY,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACtE,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpE,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAClE,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAExE,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;YAC/D,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpC,CAAC,CAAC;QAEM,gBAAW,GAAG,KAAK,CAAC;QACpB,qBAAgB,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3C,qBAAgB,GAAG,CAAC,CAAC;QAGrB,iBAAY,GAAG,CAAC,CAAa,EAAE,EAAE;YACvC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;oBACnB,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC/C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEM,cAAS,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,CAAa,EAAE,EAAE;YACtC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAClB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE,OAAO;YAE9B,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,gBAAgB,EACrB,UAAU,CAAC,WAAW,CACvB,CAAC,SAAS,CAAC;YAEZ,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,CAAa,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAChD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACZ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,CAAC;QAEM,kBAAa,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;oBACpB,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,CAAC;QAEF,sBAAiB,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAEhC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACxE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAE1E,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,UAA6B,EAAQ,EAAE;YAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,qBAAgB,GAAG,CAAC,UAA6B,EAAQ,EAAE;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC;IAuDF,CAAC;CACF","sourcesContent":["import { getSingletonComponent } from \"@vived/core\";\nimport { AppObject } from \"@vived/core\";\nimport { AppObjectEntity } from \"@vived/core\";\nimport { AppObjectRepo } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\n\nexport interface TouchInputEvent {\n touchCount: number;\n touchCenter: Vector2;\n touches: TouchData[];\n event: TouchEvent;\n}\n\nexport interface TouchData {\n id: number;\n position: Vector2;\n touch?: Touch;\n}\n\nexport interface TouchEventHandler {\n onTouchStart?: (e: TouchInputEvent) => void;\n onTouchMove?: (e: TouchInputEvent) => void;\n onTouchEnd?: (e: TouchInputEvent) => void;\n onTouchCancel?: (e: TouchInputEvent) => void;\n onTap?: (e: TouchInputEvent) => void;\n}\n\n/**\n * @deprecated Use TouchEventHandler instead. TouchController will be removed in a future version.\n */\nexport type TouchController = TouchEventHandler;\n\nexport abstract class TouchInputEntity extends AppObjectEntity {\n static readonly type = \"TouchInputEntity\";\n\n abstract get eventElement(): HTMLElement | undefined;\n abstract eventElementBounds?: DOMRect;\n\n abstract setEventElement: (eventElement: HTMLElement) => void;\n abstract clearInputElement: () => void;\n abstract updateInputElementBounds: () => void;\n\n abstract registerController: (controller: TouchEventHandler) => void;\n abstract removeController: (controller: TouchEventHandler) => void;\n\n static get = (appObjects: AppObjectRepo): TouchInputEntity | undefined =>\n getSingletonComponent(TouchInputEntity.type, appObjects);\n}\n\nexport function makeTouchInput(appObject: AppObject): TouchInputEntity {\n return new TouchInputImp(appObject);\n}\n\nclass TouchInputImp extends TouchInputEntity {\n private controllers: TouchEventHandler[] = [];\n private _eventElement: HTMLElement | undefined = undefined;\n public get eventElement(): HTMLElement | undefined {\n return this._eventElement;\n }\n\n public eventElementBounds?: DOMRect;\n\n updateInputElementBounds = () => {\n if (!this._eventElement) return;\n this.eventElementBounds = this._eventElement.getBoundingClientRect(); // Expensive so we cache\n };\n\n getTouchOffsetPosition = (touch: Touch): Vector2 => {\n if (!this.eventElementBounds) {\n console.warn(\"No target bounds\");\n return Vector2.Zero();\n }\n\n const x = touch.clientX - this.eventElementBounds.x;\n const y = touch.clientY - this.eventElementBounds.y;\n\n return new Vector2(x, y);\n };\n\n setEventElement = (eventElement: HTMLElement): void => {\n if (this._eventElement) this.clearInputElement();\n\n eventElement.addEventListener(\"touchstart\", this.onTouchStart, false);\n eventElement.addEventListener(\"touchmove\", this.onTouchMove, false);\n eventElement.addEventListener(\"touchend\", this.onTouchEnd, false);\n eventElement.addEventListener(\"touchcancel\", this.onTouchCancel, false);\n\n this.eventElementBounds = eventElement.getBoundingClientRect();\n this._eventElement = eventElement;\n };\n\n private considerTap = false;\n private tapStartPosition: Vector2 = Vector2.Zero();\n private maxTapDistancePx = 5;\n private tapEvent?: TouchInputEvent;\n\n private onTouchStart = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchStart) {\n c.onTouchStart(touchInput);\n }\n });\n\n if (touchInput.touchCount === 1) {\n this.considerTap = true;\n this.tapStartPosition = touchInput.touchCenter;\n this.tapEvent = touchInput;\n } else {\n this.cancelTap();\n }\n };\n\n private cancelTap = () => {\n this.considerTap = false;\n this.tapStartPosition = Vector2.Zero();\n this.tapEvent = undefined;\n };\n\n private onTouchMove = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchMove) {\n c.onTouchMove(touchInput);\n }\n });\n\n if (!this.considerTap) return;\n\n if (touchInput.touchCount !== 1) {\n this.cancelTap();\n }\n\n const movement = Vector2.Subtract(\n this.tapStartPosition,\n touchInput.touchCenter\n ).magnitued;\n\n if (movement > this.maxTapDistancePx) {\n this.cancelTap();\n }\n };\n\n private onTouchEnd = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchEnd) {\n c.onTouchEnd(touchInput);\n }\n });\n\n if (!this.considerTap || !this.tapEvent) return;\n this.controllers.forEach((c) => {\n if (c.onTap) {\n c.onTap(this.tapEvent!);\n }\n });\n\n this.cancelTap();\n };\n\n private onTouchCancel = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n const touchInput = this.createTouchInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onTouchCancel) {\n c.onTouchCancel(touchInput);\n }\n });\n this.cancelTap();\n };\n\n clearInputElement = (): void => {\n if (!this._eventElement) return;\n\n this._eventElement.removeEventListener(\"touchstart\", this.onTouchStart);\n this._eventElement.removeEventListener(\"touchmove\", this.onTouchMove);\n this._eventElement.removeEventListener(\"touchend\", this.onTouchEnd);\n this._eventElement.removeEventListener(\"touchcancel\", this.onTouchCancel);\n\n this._eventElement = undefined;\n };\n\n registerController = (controller: TouchEventHandler): void => {\n this.controllers.push(controller);\n };\n removeController = (controller: TouchEventHandler): void => {\n const index = this.controllers.indexOf(controller);\n if (index >= 0) {\n this.controllers.splice(index, 1);\n }\n };\n\n private createTouchInputEvent(event: TouchEvent): TouchInputEvent {\n const touches: TouchData[] = [];\n const touchCount = event.touches.length;\n\n let minX = 0;\n let maxX = 0;\n let minY = 0;\n let maxY = 0;\n\n for (let i = 0; i < touchCount; i++) {\n const touch = event.touches[i];\n const position = this.getTouchOffsetPosition(touch);\n\n touches.push({\n id: touch.identifier,\n touch,\n position,\n });\n\n if (i === 0) {\n minX = position.x;\n maxX = position.x;\n minY = position.y;\n maxY = position.y;\n } else {\n minX = Math.min(minX, position.x);\n maxX = Math.max(maxX, position.x);\n minY = Math.min(minY, position.y);\n maxY = Math.max(maxY, position.y);\n }\n }\n\n let cntX = 0;\n let cntY = 0;\n\n if (touchCount === 1) {\n cntX = maxX;\n cntY = maxY;\n } else {\n cntX = minX + (maxX - minX) / 2;\n cntY = minY + (maxY - minY) / 2;\n }\n\n return {\n touchCenter: new Vector2(cntX, cntY),\n touchCount,\n touches,\n event,\n };\n }\n\n constructor(appObject: AppObject) {\n super(appObject, TouchInputEntity.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchInput.test.js","sourceRoot":"","sources":["../../../../src/TouchController/Entities/TouchInput.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeTouchInput,\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../Entities/TouchInput\";\n\nclass MockController implements TouchController {\n onTouchStart = jest.fn();\n onTouchMove = jest.fn();\n onTouchEnd = jest.fn();\n onTouchCancel = jest.fn();\n onTap = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"App\");\n const touchInput = makeTouchInput(ao);\n\n const mockController = new MockController();\n touchInput.registerController(mockController);\n\n const element = document.createElement(\"div\");\n touchInput.setEventElement(element);\n\n return { touchInput, mockController, element, appObjects };\n}\n\ndescribe(\"Touch input\", () => {\n it(\"Sets the element\", () => {\n const { touchInput, element } = makeTestRig();\n expect(touchInput.eventElement).toEqual(element);\n });\n\n it(\"Clears the element\", () => {\n const { touchInput, element } = makeTestRig();\n\n expect(touchInput.eventElement).toEqual(element);\n\n touchInput.clearInputElement();\n\n expect(touchInput.eventElement).toBeUndefined();\n });\n\n it(\"Allows a controller to be removed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.removeController(mockController);\n\n const e = new TouchEvent(\"touchstart\");\n\n element.dispatchEvent(e);\n\n expect(mockController.onTouchStart).not.toHaveBeenCalled();\n });\n\n it(\"Gets the entity\", () => {\n const { touchInput, appObjects } = makeTestRig();\n\n expect(TouchInputEntity.get(appObjects)).toEqual(touchInput);\n });\n\n it(\"Warns if it cannot find the entity\", () => {\n const { touchInput, appObjects } = makeTestRig();\n console.warn = jest.fn();\n touchInput.dispose();\n\n expect(TouchInputEntity.get(appObjects)).toEqual(undefined);\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Warns if it finds multiple entity\", () => {\n const { touchInput, appObjects } = makeTestRig();\n const anotherAO = appObjects.getOrCreate(\"anotherAppObject\");\n makeTouchInput(anotherAO);\n\n console.warn = jest.fn();\n\n expect(TouchInputEntity.get(appObjects)).toEqual(touchInput);\n expect(console.warn).toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch start\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchstart\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchStart.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchstart\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchStart).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchstart\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchStart).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch move\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchmove\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchMove.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchmove\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchMove).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchmove\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchMove).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch end\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchend\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchEnd.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchend\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchEnd).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchend\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchEnd).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch cancel\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchcancel\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchCancel.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchcancel\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchCancel).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchcancel\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchCancel).not.toHaveBeenCalled();\n });\n});\n"]}
1
+ {"version":3,"file":"TouchInput.test.js","sourceRoot":"","sources":["../../../../src/TouchController/Entities/TouchInput.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeTouchInput,\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../Entities/TouchInput\";\n\nclass MockController implements TouchEventHandler {\n onTouchStart = jest.fn();\n onTouchMove = jest.fn();\n onTouchEnd = jest.fn();\n onTouchCancel = jest.fn();\n onTap = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"App\");\n const touchInput = makeTouchInput(ao);\n\n const mockController = new MockController();\n touchInput.registerController(mockController);\n\n const element = document.createElement(\"div\");\n touchInput.setEventElement(element);\n\n return { touchInput, mockController, element, appObjects };\n}\n\ndescribe(\"Touch input\", () => {\n it(\"Sets the element\", () => {\n const { touchInput, element } = makeTestRig();\n expect(touchInput.eventElement).toEqual(element);\n });\n\n it(\"Clears the element\", () => {\n const { touchInput, element } = makeTestRig();\n\n expect(touchInput.eventElement).toEqual(element);\n\n touchInput.clearInputElement();\n\n expect(touchInput.eventElement).toBeUndefined();\n });\n\n it(\"Allows a controller to be removed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.removeController(mockController);\n\n const e = new TouchEvent(\"touchstart\");\n\n element.dispatchEvent(e);\n\n expect(mockController.onTouchStart).not.toHaveBeenCalled();\n });\n\n it(\"Gets the entity\", () => {\n const { touchInput, appObjects } = makeTestRig();\n\n expect(TouchInputEntity.get(appObjects)).toEqual(touchInput);\n });\n\n it(\"Warns if it cannot find the entity\", () => {\n const { touchInput, appObjects } = makeTestRig();\n console.warn = jest.fn();\n touchInput.dispose();\n\n expect(TouchInputEntity.get(appObjects)).toEqual(undefined);\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Warns if it finds multiple entity\", () => {\n const { touchInput, appObjects } = makeTestRig();\n const anotherAO = appObjects.getOrCreate(\"anotherAppObject\");\n makeTouchInput(anotherAO);\n\n console.warn = jest.fn();\n\n expect(TouchInputEntity.get(appObjects)).toEqual(touchInput);\n expect(console.warn).toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch start\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchstart\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchStart.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchstart\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchStart).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchstart\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchStart).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch move\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchmove\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchMove.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchmove\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchMove).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchmove\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchMove).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch end\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchend\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchEnd.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchend\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchEnd).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchend\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchEnd).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"Touch input - On touch cancel\", () => {\n it(\"Notifies controller with the event\", () => {\n const { element, mockController } = makeTestRig();\n\n const e = new TouchEvent(\"touchcancel\");\n element.dispatchEvent(e);\n\n const touchInputEvent = mockController.onTouchCancel.mock\n .calls[0][0] as TouchInputEvent;\n expect(touchInputEvent.event).toEqual(e);\n });\n\n it(\"Removes event listener when the element is cleared\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n touchInput.clearInputElement();\n\n const e = new TouchEvent(\"touchcancel\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchCancel).not.toHaveBeenCalled();\n });\n\n it(\"Removes event listener when the element is changed\", () => {\n const { element, mockController, touchInput } = makeTestRig();\n\n const newElement = document.createElement(\"div\");\n touchInput.setEventElement(newElement);\n\n const e = new TouchEvent(\"touchcancel\");\n element.dispatchEvent(e);\n\n expect(mockController.onTouchCancel).not.toHaveBeenCalled();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DragScaleTransformMC.js","sourceRoot":"","sources":["../../../../../src/Transform3D/Controllers/Mouse/DragScaleTransformMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,OAAO,oBACX,SAAQ,mBAAmB;IAiC3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QA9BtC,eAAU,GAAG,KAAK,CAAC;QAI3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAE7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACzB,CAAC,CAAC;QAKA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA/Ce,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../../MouseInput\";\nimport { ScaleTransformUC } from \"../../UC\";\n\nexport class DragScaleTransformMC\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"DragScaleTransformMC\";\n private isDragging = false;\n\n private scaleUC?: ScaleTransformUC;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isDragging = false;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.scaleUC?.initializePixel(pixelPosition);\n\n this.isDragging = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDragging) return;\n this.scaleUC?.updatePixel(e.position);\n };\n\n onUp = () => {\n this.isDragging = false;\n this.scaleUC?.finish();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DragScaleTransformMC.type);\n\n this.scaleUC = appObject.getComponent<ScaleTransformUC>(\n ScaleTransformUC.type,\n );\n if (!this.scaleUC) {\n this.error(\"App Object that does not have ScaleTransformUC\");\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"DragScaleTransformMC.js","sourceRoot":"","sources":["../../../../../src/Transform3D/Controllers/Mouse/DragScaleTransformMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,OAAO,oBACX,SAAQ,mBAAmB;IAiC3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QA9BtC,eAAU,GAAG,KAAK,CAAC;QAI3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAE7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACzB,CAAC,CAAC;QAKA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,gBAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA/Ce,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../../MouseInput\";\nimport { ScaleTransformUC } from \"../../UC\";\n\nexport class DragScaleTransformMC\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"DragScaleTransformMC\";\n private isDragging = false;\n\n private scaleUC?: ScaleTransformUC;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isDragging = false;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.scaleUC?.initializePixel(pixelPosition);\n\n this.isDragging = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDragging) return;\n this.scaleUC?.updatePixel(e.position);\n };\n\n onUp = () => {\n this.isDragging = false;\n this.scaleUC?.finish();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DragScaleTransformMC.type);\n\n this.scaleUC = appObject.getComponent<ScaleTransformUC>(\n ScaleTransformUC.type\n );\n if (!this.scaleUC) {\n this.error(\"App Object that does not have ScaleTransformUC\");\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MousePanTransformMC.js","sourceRoot":"","sources":["../../../../../src/Transform3D/Controllers/Mouse/MousePanTransformMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,OAAO,mBACX,SAAQ,mBAAmB;IAU3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iBAAiB,CAAC,IAAI,CACvB,CAAC;IACJ,CAAC;IA8BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QA5CtC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAYM,eAAU,GAAG,KAAK,CAAC;QAE3B,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;QAC5E,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAjDe,wBAAI,GAAG,qBAAqB,AAAxB,CAAyB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../../MouseInput\";\nimport { TryPanTransformUC } from \"../../UC/TryPanTransformUC\";\n\nexport class MousePanTransformMC\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MousePanTransformMC\";\n\n public allow = (e: MouseInputEvent): boolean => {\n if (e.button !== 0) return false;\n return true;\n };\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get tryScreenDragUC() {\n return this.getCachedLocalComponent<TryPanTransformUC>(\n TryPanTransformUC.type,\n );\n }\n\n private isDragging = false;\n\n onDown = (e: MouseInputEvent) => {\n if (this.isDragging) {\n this.tryScreenDragUC?.cancel();\n this.isDragging = false;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.isDragging = this.tryScreenDragUC?.tryWithPixel(e.position) ?? false;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDragging) return;\n\n this.tryScreenDragUC?.moveWithPixel(e.position);\n };\n\n onUp = () => {\n if (!this.isDragging) return;\n\n this.tryScreenDragUC?.stop();\n this.isDragging = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePanTransformMC.type);\n\n this.mouseInput?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"MousePanTransformMC.js","sourceRoot":"","sources":["../../../../../src/Transform3D/Controllers/Mouse/MousePanTransformMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,OAAO,mBACX,SAAQ,mBAAmB;IAU3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iBAAiB,CAAC,IAAI,CACvB,CAAC;IACJ,CAAC;IA8BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QA5CtC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAYM,eAAU,GAAG,KAAK,CAAC;QAE3B,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;QAC5E,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAjDe,wBAAI,GAAG,qBAAqB,AAAxB,CAAyB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../../MouseInput\";\nimport { TryPanTransformUC } from \"../../UC/TryPanTransformUC\";\n\nexport class MousePanTransformMC\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MousePanTransformMC\";\n\n public allow = (e: MouseInputEvent): boolean => {\n if (e.button !== 0) return false;\n return true;\n };\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get tryScreenDragUC() {\n return this.getCachedLocalComponent<TryPanTransformUC>(\n TryPanTransformUC.type\n );\n }\n\n private isDragging = false;\n\n onDown = (e: MouseInputEvent) => {\n if (this.isDragging) {\n this.tryScreenDragUC?.cancel();\n this.isDragging = false;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.isDragging = this.tryScreenDragUC?.tryWithPixel(e.position) ?? false;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDragging) return;\n\n this.tryScreenDragUC?.moveWithPixel(e.position);\n };\n\n onUp = () => {\n if (!this.isDragging) return;\n\n this.tryScreenDragUC?.stop();\n this.isDragging = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePanTransformMC.type);\n\n this.mouseInput?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PanTransformMC.js","sourceRoot":"","sources":["../../../../../src/Transform3D/Controllers/Mouse/PanTransformMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,OAAO,cACX,SAAQ,mBAAmB;IA+B3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QA5BhC,UAAK,GAAG,KAAK,CAAC;QAEtB,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAIF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC;QAKA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CACR,8FAA8F,CAC/F,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA7Ce,mBAAI,GAAG,gBAAgB,AAAnB,CAAoB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../../MouseInput\";\nimport { PanTransformUC } from \"../../UC\";\n\nexport class PanTransformMC\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"PanTransformMC\";\n private doPan = false;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n private panUC?: PanTransformUC;\n\n onDown = (e: MouseInputEvent) => {\n this.doPan = false;\n\n if (!this.allow(e)) return;\n\n this.panUC?.initializePixel(e.position);\n this.doPan = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.doPan) return;\n this.panUC?.updatePixel(e.position);\n };\n\n onUp = () => {\n this.doPan = false;\n this.panUC?.finish();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, PanTransformMC.type);\n\n this.panUC = appObject.getComponent<PanTransformUC>(PanTransformUC.type);\n if (!this.panUC) {\n this.error(\n \"Controller has been added to an App Object that does not have PanTransformUC. Add one first.\",\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"PanTransformMC.js","sourceRoot":"","sources":["../../../../../src/Transform3D/Controllers/Mouse/PanTransformMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,OAAO,cACX,SAAQ,mBAAmB;IA+B3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QA5BhC,UAAK,GAAG,KAAK,CAAC;QAEtB,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAIF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC;QAKA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CACR,8FAA8F,CAC/F,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA7Ce,mBAAI,GAAG,gBAAgB,AAAnB,CAAoB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../../MouseInput\";\nimport { PanTransformUC } from \"../../UC\";\n\nexport class PanTransformMC\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"PanTransformMC\";\n private doPan = false;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n private panUC?: PanTransformUC;\n\n onDown = (e: MouseInputEvent) => {\n this.doPan = false;\n\n if (!this.allow(e)) return;\n\n this.panUC?.initializePixel(e.position);\n this.doPan = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.doPan) return;\n this.panUC?.updatePixel(e.position);\n };\n\n onUp = () => {\n this.doPan = false;\n this.panUC?.finish();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, PanTransformMC.type);\n\n this.panUC = appObject.getComponent<PanTransformUC>(PanTransformUC.type);\n if (!this.panUC) {\n this.error(\n \"Controller has been added to an App Object that does not have PanTransformUC. Add one first.\"\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}