@vived/app 5.1.2 → 5.3.0

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 (207) hide show
  1. package/dist/cjs/Babylon/Mocks/MockBabylonRenderingUC.js +3 -3
  2. package/dist/cjs/Babylon/Mocks/MockBabylonRenderingUC.js.map +1 -1
  3. package/dist/cjs/Babylon/Mocks/MockPixelToSceneRayUC.js +1 -1
  4. package/dist/cjs/Babylon/Mocks/MockPixelToSceneRayUC.js.map +1 -1
  5. package/dist/cjs/Babylon/Mocks/MockScenePixelPickUC.js +1 -1
  6. package/dist/cjs/Babylon/Mocks/MockScenePixelPickUC.js.map +1 -1
  7. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js +1 -3
  8. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  9. package/dist/cjs/Babylon/Mocks/ShowBabylonInspectorPmMock.js +1 -1
  10. package/dist/cjs/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
  11. package/dist/cjs/Babylon/UC/PixelToSceneRayUC.test.js +2 -0
  12. package/dist/cjs/Babylon/UC/PixelToSceneRayUC.test.js.map +1 -1
  13. package/dist/cjs/Babylon/UC/ScenePixelPickUC.test.js +2 -0
  14. package/dist/cjs/Babylon/UC/ScenePixelPickUC.test.js.map +1 -1
  15. package/dist/cjs/BaseApp/UC/RenderCanvasUC.test.js +6 -0
  16. package/dist/cjs/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
  17. package/dist/cjs/Callouts/UC/TryAddCallout.test.js +1 -0
  18. package/dist/cjs/Callouts/UC/TryAddCallout.test.js.map +1 -1
  19. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js +3 -1
  20. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  21. package/dist/cjs/HoverLabel/Controllers/HoverLabelMouse.js.map +1 -1
  22. package/dist/cjs/HoverLabel/Controllers/HoverLabelTouch.js.map +1 -1
  23. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js +9 -3
  24. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  25. package/dist/cjs/LabelDrop/Controller/MouseLabelDropAuthor.js.map +1 -1
  26. package/dist/cjs/LabelDrop/Controller/TouchLabelDropAuthor.js.map +1 -1
  27. package/dist/cjs/LabelDrop/Controller/TouchLabelDropAuthor.test.js +4 -1
  28. package/dist/cjs/LabelDrop/Controller/TouchLabelDropAuthor.test.js.map +1 -1
  29. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js +5 -2
  30. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  31. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js +1 -0
  32. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  33. package/dist/cjs/Landmarks/Controller/MouseLandmark.js.map +1 -1
  34. package/dist/cjs/Landmarks/Controller/TouchLandmark.js.map +1 -1
  35. package/dist/cjs/MouseInput/Entities/MouseInput.js.map +1 -1
  36. package/dist/cjs/MouseInput/Mocks/MockMouseInput.js +4 -5
  37. package/dist/cjs/MouseInput/Mocks/MockMouseInput.js.map +1 -1
  38. package/dist/cjs/MouseInput/Mocks/index.js.map +1 -1
  39. package/dist/cjs/MouseInput/index.js.map +1 -1
  40. package/dist/cjs/ObjectPick/Controllers/MouseObjectPickMC.js.map +1 -1
  41. package/dist/cjs/ObjectPick/Controllers/StylusObjectPickSC.js.map +1 -1
  42. package/dist/cjs/ObjectPick/Controllers/TouchObjectPickTC.js.map +1 -1
  43. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js +1 -0
  44. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  45. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
  46. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  47. package/dist/cjs/SceneRoot/Controllers/DoubleTapToFocus.js.map +1 -1
  48. package/dist/cjs/SceneRoot/Controllers/MouseClickToFocus.js.map +1 -1
  49. package/dist/cjs/SceneRoot/Controllers/MouseOrbit.js.map +1 -1
  50. package/dist/cjs/SceneRoot/Controllers/MouseRoll.js.map +1 -1
  51. package/dist/cjs/SceneRoot/Controllers/MouseScale.js.map +1 -1
  52. package/dist/cjs/SceneRoot/Controllers/ScaleSceneRootSC.js.map +1 -1
  53. package/dist/cjs/SceneRoot/Controllers/SceneRootMoveSC.js.map +1 -1
  54. package/dist/cjs/SceneRoot/Controllers/TouchOrbit.js.map +1 -1
  55. package/dist/cjs/SceneRoot/Controllers/TouchPan.js.map +1 -1
  56. package/dist/cjs/SceneRoot/Controllers/TouchPinch.js.map +1 -1
  57. package/dist/cjs/SceneRoot/Controllers/TouchScale.js.map +1 -1
  58. package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.js.map +1 -1
  59. package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.test.js +1 -0
  60. package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
  61. package/dist/cjs/Selection/Controller/MousePressOnAppObject.js.map +1 -1
  62. package/dist/cjs/Selection/Controller/MousePressOnAppObject.test.js +1 -0
  63. package/dist/cjs/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
  64. package/dist/cjs/Selection/Controller/MouseSelectAppObject.js.map +1 -1
  65. package/dist/cjs/Selection/Controller/MouseSelectAppObject.test.js +1 -0
  66. package/dist/cjs/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
  67. package/dist/cjs/Selection/Controller/StylusHoverOnAppObjectSC.js.map +1 -1
  68. package/dist/cjs/Selection/Controller/StylusPressOnAppObjectSC.js.map +1 -1
  69. package/dist/cjs/Selection/Controller/StylusSelectAppObjectSC.js.map +1 -1
  70. package/dist/cjs/Selection/Controller/TapToSelectAppObject.js.map +1 -1
  71. package/dist/cjs/Selection/Controller/TouchPressOnAppObject.js.map +1 -1
  72. package/dist/cjs/Stick/Controllers/DoubleClickToStickMC.js.map +1 -1
  73. package/dist/cjs/Stick/Controllers/DoubleTapToStickTC.js.map +1 -1
  74. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js +3 -1
  75. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  76. package/dist/cjs/Stylus/Entity/StylusEntity.js.map +1 -1
  77. package/dist/cjs/Stylus/Entity/StylusEntity.test.js.map +1 -1
  78. package/dist/cjs/Stylus/UCs/EmulateStylusUC.test.js +3 -1
  79. package/dist/cjs/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
  80. package/dist/cjs/TouchController/Entities/TouchInput.js.map +1 -1
  81. package/dist/cjs/Transform3D/Controllers/Mouse/DragScaleTransformMC.js.map +1 -1
  82. package/dist/cjs/Transform3D/Controllers/Mouse/MousePanTransformMC.js.map +1 -1
  83. package/dist/cjs/Transform3D/Controllers/Mouse/PanTransformMC.js.map +1 -1
  84. package/dist/cjs/Transform3D/Controllers/Mouse/RollScaleTransformMC.js.map +1 -1
  85. package/dist/cjs/Transform3D/Controllers/Stylus/MoveTransformSC.js.map +1 -1
  86. package/dist/cjs/Transform3D/Controllers/Stylus/PanScaleTransformSC.js.map +1 -1
  87. package/dist/cjs/Transform3D/Controllers/Touch/DragScaleTransformTC.js.map +1 -1
  88. package/dist/cjs/Transform3D/Controllers/Touch/PanTransformTC.js.map +1 -1
  89. package/dist/cjs/Transform3D/Controllers/Touch/PinchTransformTC.js.map +1 -1
  90. package/dist/cjs/Transform3D/Controllers/Touch/TouchPanTransformTC.js.map +1 -1
  91. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js +1 -0
  92. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  93. package/dist/cjs/Transform3D/UC/PinchTransform.test.js +1 -0
  94. package/dist/cjs/Transform3D/UC/PinchTransform.test.js.map +1 -1
  95. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js +1 -0
  96. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  97. package/dist/esm/Babylon/Mocks/MockBabylonRenderingUC.js +3 -3
  98. package/dist/esm/Babylon/Mocks/MockBabylonRenderingUC.js.map +1 -1
  99. package/dist/esm/Babylon/Mocks/MockPixelToSceneRayUC.js +1 -1
  100. package/dist/esm/Babylon/Mocks/MockPixelToSceneRayUC.js.map +1 -1
  101. package/dist/esm/Babylon/Mocks/MockScenePixelPickUC.js +1 -1
  102. package/dist/esm/Babylon/Mocks/MockScenePixelPickUC.js.map +1 -1
  103. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js +1 -3
  104. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  105. package/dist/esm/Babylon/Mocks/ShowBabylonInspectorPmMock.js +1 -1
  106. package/dist/esm/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
  107. package/dist/esm/Babylon/UC/PixelToSceneRayUC.test.js +2 -0
  108. package/dist/esm/Babylon/UC/PixelToSceneRayUC.test.js.map +1 -1
  109. package/dist/esm/Babylon/UC/ScenePixelPickUC.test.js +2 -0
  110. package/dist/esm/Babylon/UC/ScenePixelPickUC.test.js.map +1 -1
  111. package/dist/esm/BaseApp/UC/RenderCanvasUC.test.js +6 -0
  112. package/dist/esm/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
  113. package/dist/esm/Callouts/UC/TryAddCallout.test.js +1 -0
  114. package/dist/esm/Callouts/UC/TryAddCallout.test.js.map +1 -1
  115. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js +3 -1
  116. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  117. package/dist/esm/HoverLabel/Controllers/HoverLabelMouse.js.map +1 -1
  118. package/dist/esm/HoverLabel/Controllers/HoverLabelTouch.js.map +1 -1
  119. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js +9 -3
  120. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  121. package/dist/esm/LabelDrop/Controller/MouseLabelDropAuthor.js.map +1 -1
  122. package/dist/esm/LabelDrop/Controller/TouchLabelDropAuthor.js.map +1 -1
  123. package/dist/esm/LabelDrop/Controller/TouchLabelDropAuthor.test.js +4 -1
  124. package/dist/esm/LabelDrop/Controller/TouchLabelDropAuthor.test.js.map +1 -1
  125. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js +5 -2
  126. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  127. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js +1 -0
  128. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  129. package/dist/esm/Landmarks/Controller/MouseLandmark.js.map +1 -1
  130. package/dist/esm/Landmarks/Controller/TouchLandmark.js.map +1 -1
  131. package/dist/esm/MouseInput/Entities/MouseInput.js.map +1 -1
  132. package/dist/esm/MouseInput/Mocks/MockMouseInput.js +4 -5
  133. package/dist/esm/MouseInput/Mocks/MockMouseInput.js.map +1 -1
  134. package/dist/esm/MouseInput/Mocks/index.js.map +1 -1
  135. package/dist/esm/MouseInput/index.js.map +1 -1
  136. package/dist/esm/ObjectPick/Controllers/MouseObjectPickMC.js.map +1 -1
  137. package/dist/esm/ObjectPick/Controllers/StylusObjectPickSC.js.map +1 -1
  138. package/dist/esm/ObjectPick/Controllers/TouchObjectPickTC.js.map +1 -1
  139. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js +1 -0
  140. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  141. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
  142. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  143. package/dist/esm/SceneRoot/Controllers/DoubleTapToFocus.js.map +1 -1
  144. package/dist/esm/SceneRoot/Controllers/MouseClickToFocus.js.map +1 -1
  145. package/dist/esm/SceneRoot/Controllers/MouseOrbit.js.map +1 -1
  146. package/dist/esm/SceneRoot/Controllers/MouseRoll.js.map +1 -1
  147. package/dist/esm/SceneRoot/Controllers/MouseScale.js.map +1 -1
  148. package/dist/esm/SceneRoot/Controllers/ScaleSceneRootSC.js.map +1 -1
  149. package/dist/esm/SceneRoot/Controllers/SceneRootMoveSC.js.map +1 -1
  150. package/dist/esm/SceneRoot/Controllers/TouchOrbit.js.map +1 -1
  151. package/dist/esm/SceneRoot/Controllers/TouchPan.js.map +1 -1
  152. package/dist/esm/SceneRoot/Controllers/TouchPinch.js.map +1 -1
  153. package/dist/esm/SceneRoot/Controllers/TouchScale.js.map +1 -1
  154. package/dist/esm/Selection/Controller/MouseHoverOnAppObject.js.map +1 -1
  155. package/dist/esm/Selection/Controller/MouseHoverOnAppObject.test.js +1 -0
  156. package/dist/esm/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
  157. package/dist/esm/Selection/Controller/MousePressOnAppObject.js.map +1 -1
  158. package/dist/esm/Selection/Controller/MousePressOnAppObject.test.js +1 -0
  159. package/dist/esm/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
  160. package/dist/esm/Selection/Controller/MouseSelectAppObject.js.map +1 -1
  161. package/dist/esm/Selection/Controller/MouseSelectAppObject.test.js +1 -0
  162. package/dist/esm/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
  163. package/dist/esm/Selection/Controller/StylusHoverOnAppObjectSC.js.map +1 -1
  164. package/dist/esm/Selection/Controller/StylusPressOnAppObjectSC.js.map +1 -1
  165. package/dist/esm/Selection/Controller/StylusSelectAppObjectSC.js.map +1 -1
  166. package/dist/esm/Selection/Controller/TapToSelectAppObject.js.map +1 -1
  167. package/dist/esm/Selection/Controller/TouchPressOnAppObject.js.map +1 -1
  168. package/dist/esm/Stick/Controllers/DoubleClickToStickMC.js.map +1 -1
  169. package/dist/esm/Stick/Controllers/DoubleTapToStickTC.js.map +1 -1
  170. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js +3 -1
  171. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  172. package/dist/esm/Stylus/Entity/StylusEntity.js.map +1 -1
  173. package/dist/esm/Stylus/Entity/StylusEntity.test.js.map +1 -1
  174. package/dist/esm/Stylus/UCs/EmulateStylusUC.test.js +3 -1
  175. package/dist/esm/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
  176. package/dist/esm/TouchController/Entities/TouchInput.js.map +1 -1
  177. package/dist/esm/Transform3D/Controllers/Mouse/DragScaleTransformMC.js.map +1 -1
  178. package/dist/esm/Transform3D/Controllers/Mouse/MousePanTransformMC.js.map +1 -1
  179. package/dist/esm/Transform3D/Controllers/Mouse/PanTransformMC.js.map +1 -1
  180. package/dist/esm/Transform3D/Controllers/Mouse/RollScaleTransformMC.js.map +1 -1
  181. package/dist/esm/Transform3D/Controllers/Stylus/MoveTransformSC.js.map +1 -1
  182. package/dist/esm/Transform3D/Controllers/Stylus/PanScaleTransformSC.js.map +1 -1
  183. package/dist/esm/Transform3D/Controllers/Touch/DragScaleTransformTC.js.map +1 -1
  184. package/dist/esm/Transform3D/Controllers/Touch/PanTransformTC.js.map +1 -1
  185. package/dist/esm/Transform3D/Controllers/Touch/PinchTransformTC.js.map +1 -1
  186. package/dist/esm/Transform3D/Controllers/Touch/TouchPanTransformTC.js.map +1 -1
  187. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js +1 -0
  188. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  189. package/dist/esm/Transform3D/UC/PinchTransform.test.js +1 -0
  190. package/dist/esm/Transform3D/UC/PinchTransform.test.js.map +1 -1
  191. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js +1 -0
  192. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  193. package/dist/types/Babylon/Mocks/MockBabylonRenderingUC.d.ts +3 -3
  194. package/dist/types/Babylon/Mocks/MockBabylonRenderingUC.d.ts.map +1 -1
  195. package/dist/types/Babylon/Mocks/MockPixelToSceneRayUC.d.ts +1 -1
  196. package/dist/types/Babylon/Mocks/MockPixelToSceneRayUC.d.ts.map +1 -1
  197. package/dist/types/Babylon/Mocks/MockScenePixelPickUC.d.ts +1 -1
  198. package/dist/types/Babylon/Mocks/MockScenePixelPickUC.d.ts.map +1 -1
  199. package/dist/types/Babylon/Mocks/MockSceneRayPickUC.d.ts +1 -1
  200. package/dist/types/Babylon/Mocks/MockSceneRayPickUC.d.ts.map +1 -1
  201. package/dist/types/Babylon/Mocks/ShowBabylonInspectorPmMock.d.ts +1 -1
  202. package/dist/types/Babylon/Mocks/ShowBabylonInspectorPmMock.d.ts.map +1 -1
  203. package/dist/types/MouseInput/Mocks/MockMouseInput.d.ts +5 -6
  204. package/dist/types/MouseInput/Mocks/MockMouseInput.d.ts.map +1 -1
  205. package/dist/types/MouseInput/Mocks/index.d.ts.map +1 -1
  206. package/dist/types/MouseInput/index.d.ts.map +1 -1
  207. package/package.json +1 -1
@@ -11,7 +11,10 @@ function makeTestRig() {
11
11
  const registerSpy = jest.spyOn(touchInput, "registerController");
12
12
  const mockUC = makeToggleLabelDropTargetUcMock(appObjects);
13
13
  const touchLabelDrop = makeTouchLabelDropAuthor(appObjects.getOrCreate("AO"));
14
- makeMockPixelToSceneRayUC(appObjects).pixelToSceneRay.mockReturnValue(ParametricLine.Forward());
14
+ const mockPixelToRayUC = makeMockPixelToSceneRayUC(appObjects);
15
+ mockPixelToRayUC.pixelToSceneRay = jest
16
+ .fn()
17
+ .mockReturnValue(ParametricLine.Forward());
15
18
  return {
16
19
  appObjects,
17
20
  mockUC,
@@ -1 +1 @@
1
- {"version":3,"file":"TouchLabelDropAuthor.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/Controller/TouchLabelDropAuthor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IAEvC,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,+BAA+B,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,wBAAwB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,yBAAyB,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,eAAe,CACnE,cAAc,CAAC,OAAO,EAAE,CACzB,CAAC;IAEF,OAAO;QACL,UAAU;QACV,MAAM;QACN,cAAc;QACd,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;QAEtD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1B,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon/Mocks\";\nimport { makeTouchInput } from \"../../TouchController/Entities/TouchInput\";\nimport { mockTouchInputEvent } from \"../../TouchController/Mock\";\nimport { makeToggleLabelDropTargetUcMock } from \"../Mocks/ToggleLabelDropTargetUcMock\";\nimport { makeTouchLabelDropAuthor } from \"./TouchLabelDropAuthor\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const touchInput = makeTouchInput(appObjects.getOrCreate(\"Input\"));\n const registerSpy = jest.spyOn(touchInput, \"registerController\");\n const mockUC = makeToggleLabelDropTargetUcMock(appObjects);\n const touchLabelDrop = makeTouchLabelDropAuthor(appObjects.getOrCreate(\"AO\"));\n\n makeMockPixelToSceneRayUC(appObjects).pixelToSceneRay.mockReturnValue(\n ParametricLine.Forward(),\n );\n\n return {\n appObjects,\n mockUC,\n touchLabelDrop,\n registerSpy,\n };\n}\n\ndescribe(\"Touch Label Drop Controller\", () => {\n it(\"Registers with the mouse input when constructed\", () => {\n const { registerSpy, touchLabelDrop } = makeTestRig();\n\n expect(registerSpy).toHaveBeenCalledWith(touchLabelDrop);\n });\n\n it(\"Calls the UC on tap\", () => {\n const { touchLabelDrop, mockUC } = makeTestRig();\n const evt = mockTouchInputEvent([new Vector2(2, 3)]);\n\n touchLabelDrop.onTap(evt);\n\n expect(mockUC.tryToggleFromPixel).toHaveBeenCalledWith(new Vector2(2, 3));\n });\n});\n"]}
1
+ {"version":3,"file":"TouchLabelDropAuthor.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/Controller/TouchLabelDropAuthor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IAEvC,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,+BAA+B,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,wBAAwB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAC/D,gBAAgB,CAAC,eAAe,GAAG,IAAI;SACpC,EAAE,EAAE;SACJ,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAE7C,OAAO;QACL,UAAU;QACV,MAAM;QACN,cAAc;QACd,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;QAEtD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1B,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon/Mocks\";\nimport { makeTouchInput } from \"../../TouchController/Entities/TouchInput\";\nimport { mockTouchInputEvent } from \"../../TouchController/Mock\";\nimport { makeToggleLabelDropTargetUcMock } from \"../Mocks/ToggleLabelDropTargetUcMock\";\nimport { makeTouchLabelDropAuthor } from \"./TouchLabelDropAuthor\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const touchInput = makeTouchInput(appObjects.getOrCreate(\"Input\"));\n const registerSpy = jest.spyOn(touchInput, \"registerController\");\n const mockUC = makeToggleLabelDropTargetUcMock(appObjects);\n const touchLabelDrop = makeTouchLabelDropAuthor(appObjects.getOrCreate(\"AO\"));\n\n const mockPixelToRayUC = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRayUC.pixelToSceneRay = jest\n .fn()\n .mockReturnValue(ParametricLine.Forward());\n\n return {\n appObjects,\n mockUC,\n touchLabelDrop,\n registerSpy,\n };\n}\n\ndescribe(\"Touch Label Drop Controller\", () => {\n it(\"Registers with the mouse input when constructed\", () => {\n const { registerSpy, touchLabelDrop } = makeTestRig();\n\n expect(registerSpy).toHaveBeenCalledWith(touchLabelDrop);\n });\n\n it(\"Calls the UC on tap\", () => {\n const { touchLabelDrop, mockUC } = makeTestRig();\n const evt = mockTouchInputEvent([new Vector2(2, 3)]);\n\n touchLabelDrop.onTap(evt);\n\n expect(mockUC.tryToggleFromPixel).toHaveBeenCalledWith(new Vector2(2, 3));\n });\n});\n"]}
@@ -13,7 +13,10 @@ function makeTestRig() {
13
13
  const labelDropEntity = makeLabelDropRepo(ao);
14
14
  const mockUC = makeMockDragLabelDropUC(appObjects);
15
15
  labelDropEntity.makeLabelDropItem("labelDropTestID");
16
- const pixelToSceneRayUC = makeMockPixelToSceneRayUC(appObjects).pixelToSceneRay.mockReturnValue(ParametricLine.Forward());
16
+ const pixelToSceneRayUC = makeMockPixelToSceneRayUC(appObjects);
17
+ pixelToSceneRayUC.pixelToSceneRay = jest
18
+ .fn()
19
+ .mockReturnValue(ParametricLine.Forward());
17
20
  return { appObjects, ao, labelDropEntity, mockUC, pixelToSceneRayUC };
18
21
  }
19
22
  describe("Release Drag Label Drop Answer Item", () => {
@@ -35,7 +38,7 @@ describe("Release Drag Label Drop Answer Item", () => {
35
38
  const releasePos = new Vector2(10, 20);
36
39
  const expectedOffSet = new Vector2(releasePos.x - renderCanvas.position.x, releasePos.y - renderCanvas.position.y);
37
40
  releaseLabelDropAnswerItemScreen(10, 20, appObjects);
38
- expect(pixelToSceneRayUC).toHaveBeenCalledWith(expectedOffSet);
41
+ expect(pixelToSceneRayUC.pixelToSceneRay).toHaveBeenCalledWith(expectedOffSet);
39
42
  });
40
43
  });
41
44
  //# sourceMappingURL=releaseLabelDropAnswerItemScreen.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"releaseLabelDropAnswerItemScreen.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EACL,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEvE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IAEvC,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAEnD,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,UAAU,CACX,CAAC,eAAe,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5D,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AACxE,CAAC;AAED,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAE3B,gCAAgC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAE3B,MAAM,YAAY,GAAG,gBAAgB,CACnC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CACvC,CAAC;QACF,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;QACnD,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACxC,YAAY,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,IAAI,OAAO,CAChC,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,EACtC,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CACvC,CAAC;QAEF,gCAAgC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon/Mocks/MockPixelToSceneRayUC\";\nimport {\n makeFramedScreen,\n makeFramedScreenContainer,\n} from \"../../FramedScreen/Entities\";\nimport { makeFramedContainerPM } from \"../../FramedScreen/PM/FramedContainerPM\";\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\nimport { makeMockDragLabelDropUC } from \"../Mocks/MockDragLabelDropUC\";\nimport { releaseLabelDropAnswerItemScreen } from \"./releaseLabelDropAnswerItemScreen\";\nimport { RENDER_CANVAS_FRAMED_CONTAINER_ID } from \"../../FramedScreen\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const ao = appObjects.getOrCreate(\"ao\");\n const labelDropEntity = makeLabelDropRepo(ao);\n\n const mockUC = makeMockDragLabelDropUC(appObjects);\n\n labelDropEntity.makeLabelDropItem(\"labelDropTestID\");\n\n const pixelToSceneRayUC = makeMockPixelToSceneRayUC(\n appObjects,\n ).pixelToSceneRay.mockReturnValue(ParametricLine.Forward());\n\n return { appObjects, ao, labelDropEntity, mockUC, pixelToSceneRayUC };\n}\n\ndescribe(\"Release Drag Label Drop Answer Item\", () => {\n it(\"Calls release on the UC\", () => {\n const { mockUC, appObjects } = makeTestRig();\n mockUC.release.mockClear();\n\n releaseLabelDropAnswerItemScreen(10, 20, appObjects);\n expect(mockUC.release).toHaveBeenCalledWith(ParametricLine.Forward());\n });\n\n it(\"Offsets with the render canvas if it exists\", () => {\n const { mockUC, appObjects, pixelToSceneRayUC } = makeTestRig();\n mockUC.release.mockClear();\n\n const framedScreen = makeFramedScreen(\n appObjects.getOrCreate(\"FramedScreen\"),\n );\n const ao = appObjects.getOrCreate(RENDER_CANVAS_FRAMED_CONTAINER_ID);\n const renderCanvas = makeFramedScreenContainer(ao);\n makeFramedContainerPM(ao);\n framedScreen.addContainer(renderCanvas);\n renderCanvas.position = new Vector2(1, 2);\n\n const releasePos = new Vector2(10, 20);\n const expectedOffSet = new Vector2(\n releasePos.x - renderCanvas.position.x,\n releasePos.y - renderCanvas.position.y,\n );\n\n releaseLabelDropAnswerItemScreen(10, 20, appObjects);\n expect(pixelToSceneRayUC).toHaveBeenCalledWith(expectedOffSet);\n });\n});\n"]}
1
+ {"version":3,"file":"releaseLabelDropAnswerItemScreen.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon/Mocks/MockPixelToSceneRayUC\";\nimport {\n makeFramedScreen,\n makeFramedScreenContainer,\n} from \"../../FramedScreen/Entities\";\nimport { makeFramedContainerPM } from \"../../FramedScreen/PM/FramedContainerPM\";\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\nimport { makeMockDragLabelDropUC } from \"../Mocks/MockDragLabelDropUC\";\nimport { releaseLabelDropAnswerItemScreen } from \"./releaseLabelDropAnswerItemScreen\";\nimport { RENDER_CANVAS_FRAMED_CONTAINER_ID } from \"../../FramedScreen\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const ao = appObjects.getOrCreate(\"ao\");\n const labelDropEntity = makeLabelDropRepo(ao);\n\n const mockUC = makeMockDragLabelDropUC(appObjects);\n\n labelDropEntity.makeLabelDropItem(\"labelDropTestID\");\n\n const pixelToSceneRayUC = makeMockPixelToSceneRayUC(appObjects);\n pixelToSceneRayUC.pixelToSceneRay = jest\n .fn()\n .mockReturnValue(ParametricLine.Forward());\n\n return { appObjects, ao, labelDropEntity, mockUC, pixelToSceneRayUC };\n}\n\ndescribe(\"Release Drag Label Drop Answer Item\", () => {\n it(\"Calls release on the UC\", () => {\n const { mockUC, appObjects } = makeTestRig();\n mockUC.release.mockClear();\n\n releaseLabelDropAnswerItemScreen(10, 20, appObjects);\n expect(mockUC.release).toHaveBeenCalledWith(ParametricLine.Forward());\n });\n\n it(\"Offsets with the render canvas if it exists\", () => {\n const { mockUC, appObjects, pixelToSceneRayUC } = makeTestRig();\n mockUC.release.mockClear();\n\n const framedScreen = makeFramedScreen(\n appObjects.getOrCreate(\"FramedScreen\")\n );\n const ao = appObjects.getOrCreate(RENDER_CANVAS_FRAMED_CONTAINER_ID);\n const renderCanvas = makeFramedScreenContainer(ao);\n makeFramedContainerPM(ao);\n framedScreen.addContainer(renderCanvas);\n renderCanvas.position = new Vector2(1, 2);\n\n const releasePos = new Vector2(10, 20);\n const expectedOffSet = new Vector2(\n releasePos.x - renderCanvas.position.x,\n releasePos.y - renderCanvas.position.y\n );\n\n releaseLabelDropAnswerItemScreen(10, 20, appObjects);\n expect(pixelToSceneRayUC.pixelToSceneRay).toHaveBeenCalledWith(\n expectedOffSet\n );\n });\n});\n"]}
@@ -14,6 +14,7 @@ function makeTestRig() {
14
14
  const mockPick = jest.fn().mockReturnValue({ appObjectID: "hideableObj" });
15
15
  mockRayPick.sceneRayPick = mockPick;
16
16
  const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);
17
+ mockPixelToRay.pixelToSceneRay = jest.fn();
17
18
  const uc = makeToggleLabelDropTargetUC(labelDropAO);
18
19
  return {
19
20
  appObjects,
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleLabelDropTargetUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\nimport {\n makeToggleLabelDropTargetUC,\n ToggleLabelDropTargetUC,\n} from \"./ToggleLabelDropTargetUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\n\n const labelDropAO = appObjects.getOrCreate(\"repo\");\n\n const repo = makeLabelDropRepo(labelDropAO);\n const dropItem = repo.makeLabelDropItem(\"labelDropID\");\n repo.editingID = \"labelDropID\";\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"hideableObj\" });\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n\n const uc = makeToggleLabelDropTargetUC(labelDropAO);\n\n return {\n appObjects,\n repo,\n uc,\n dropItem,\n mockPick,\n registerSpy,\n mockPixelToRay,\n };\n}\n\ndescribe(\"Toggle Label Drop Target UC\", () => {\n it(\"Get it UC\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(ToggleLabelDropTargetUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Registers as the singleton\", () => {\n const { uc, registerSpy } = makeTestRig();\n\n expect(registerSpy).toHaveBeenCalledWith(uc);\n });\n\n it(\"Toggles target ID\", () => {\n const { uc, dropItem } = makeTestRig();\n\n expect(dropItem.targetIds).toEqual([]);\n\n uc.toggleByID(\"target1\");\n\n expect(dropItem.targetIds).toEqual([\"target1\"]);\n\n uc.toggleByID(\"target1\");\n\n expect(dropItem.targetIds).toEqual([]);\n });\n\n it(\"Toggles the ray picked ID\", () => {\n const { uc, dropItem, mockPick } = makeTestRig();\n\n expect(dropItem.targetIds).toEqual([]);\n\n mockPick.mockReturnValue({\n appObjectID: \"target1\",\n });\n\n uc.tryToggleFromRay(ParametricLine.Forward());\n\n expect(dropItem.targetIds).toEqual([\"target1\"]);\n\n uc.tryToggleFromRay(ParametricLine.Forward());\n\n expect(dropItem.targetIds).toEqual([]);\n });\n\n it(\"Converts a pixel to a ray and then picks\", () => {\n const { uc, mockPixelToRay } = makeTestRig();\n\n uc.tryToggleFromRay = jest.fn();\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n mockPixelToRay.pixelToSceneRay.mockReturnValue(mockRay);\n\n uc.tryToggleFromPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8),\n );\n expect(uc.tryToggleFromRay).toHaveBeenCalledWith(mockRay);\n });\n});\n"]}
1
+ {"version":3,"file":"ToggleLabelDropTargetUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\nimport {\n makeToggleLabelDropTargetUC,\n ToggleLabelDropTargetUC,\n} from \"./ToggleLabelDropTargetUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\n\n const labelDropAO = appObjects.getOrCreate(\"repo\");\n\n const repo = makeLabelDropRepo(labelDropAO);\n const dropItem = repo.makeLabelDropItem(\"labelDropID\");\n repo.editingID = \"labelDropID\";\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"hideableObj\" });\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const uc = makeToggleLabelDropTargetUC(labelDropAO);\n\n return {\n appObjects,\n repo,\n uc,\n dropItem,\n mockPick,\n registerSpy,\n mockPixelToRay,\n };\n}\n\ndescribe(\"Toggle Label Drop Target UC\", () => {\n it(\"Get it UC\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(ToggleLabelDropTargetUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Registers as the singleton\", () => {\n const { uc, registerSpy } = makeTestRig();\n\n expect(registerSpy).toHaveBeenCalledWith(uc);\n });\n\n it(\"Toggles target ID\", () => {\n const { uc, dropItem } = makeTestRig();\n\n expect(dropItem.targetIds).toEqual([]);\n\n uc.toggleByID(\"target1\");\n\n expect(dropItem.targetIds).toEqual([\"target1\"]);\n\n uc.toggleByID(\"target1\");\n\n expect(dropItem.targetIds).toEqual([]);\n });\n\n it(\"Toggles the ray picked ID\", () => {\n const { uc, dropItem, mockPick } = makeTestRig();\n\n expect(dropItem.targetIds).toEqual([]);\n\n mockPick.mockReturnValue({\n appObjectID: \"target1\",\n });\n\n uc.tryToggleFromRay(ParametricLine.Forward());\n\n expect(dropItem.targetIds).toEqual([\"target1\"]);\n\n uc.tryToggleFromRay(ParametricLine.Forward());\n\n expect(dropItem.targetIds).toEqual([]);\n });\n\n it(\"Converts a pixel to a ray and then picks\", () => {\n const { uc, mockPixelToRay } = makeTestRig();\n\n uc.tryToggleFromRay = jest.fn();\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n uc.tryToggleFromPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8)\n );\n expect(uc.tryToggleFromRay).toHaveBeenCalledWith(mockRay);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseLandmark.js","sourceRoot":"","sources":["../../../../src/Landmarks/Controller/MouseLandmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { TryAddNewLandmarkUC } from \"../UseCases/TryAddNewLandmarkUC\";\nimport { TryPreviewLandmarkUC } from \"../UseCases/TryPreviewLandmarkUC\";\n\nexport abstract class MouseLandmark\n extends AppObjectController\n implements MouseEventHandler\n{\n static type = \"Mouse_Landmark_Controller\";\n\n addingLandmark: boolean = false;\n pressed = false;\n abstract onMove: (e: MouseInputEvent) => void;\n abstract onDown: (e: MouseInputEvent) => void;\n abstract onUp: (e: MouseInputEvent) => void;\n abstract allow: (e: MouseInputEvent) => boolean;\n}\n\nexport function makeMouseLandmark(appObject: AppObject): MouseLandmark {\n return new MouseLandmarkImp(appObject);\n}\n\nclass MouseLandmarkImp extends MouseLandmark {\n addingLandmark: boolean = false;\n pressed = false;\n\n private get tryPreviewLandmarkUc() {\n return this.getCachedSingleton<TryPreviewLandmarkUC>(\n TryPreviewLandmarkUC.type\n );\n }\n\n private get tryAddLandmarkUc() {\n return this.getCachedSingleton<TryAddNewLandmarkUC>(\n TryAddNewLandmarkUC.type\n );\n }\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.allow(e)) return;\n\n if (!this.tryPreviewLandmarkUc) {\n return;\n }\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, this.pressed);\n };\n\n onDown = (e: MouseInputEvent) => {\n this.addingLandmark = false;\n\n if (e.button !== 0) return;\n\n if (!this.allow(e)) return;\n\n if (!this.tryPreviewLandmarkUc) {\n return;\n }\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n const pressed = true;\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, pressed);\n this.addingLandmark = true;\n this.pressed = true;\n };\n\n onUp = (e: MouseInputEvent) => {\n if (!this.allow(e)) return;\n if (!this.addingLandmark) return;\n if (!this.tryAddLandmarkUc) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.tryAddLandmarkUc.addFromRay(ray);\n\n this.tryPreviewLandmarkUc.hidePreview();\n this.addingLandmark = false;\n this.pressed = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseLandmark.type);\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":"MouseLandmark.js","sourceRoot":"","sources":["../../../../src/Landmarks/Controller/MouseLandmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { TryAddNewLandmarkUC } from \"../UseCases/TryAddNewLandmarkUC\";\nimport { TryPreviewLandmarkUC } from \"../UseCases/TryPreviewLandmarkUC\";\n\nexport abstract class MouseLandmark\n extends AppObjectController\n implements MouseEventHandler\n{\n static type = \"Mouse_Landmark_Controller\";\n\n addingLandmark: boolean = false;\n pressed = false;\n abstract onMove: (e: MouseInputEvent) => void;\n abstract onDown: (e: MouseInputEvent) => void;\n abstract onUp: (e: MouseInputEvent) => void;\n abstract allow: (e: MouseInputEvent) => boolean;\n}\n\nexport function makeMouseLandmark(appObject: AppObject): MouseLandmark {\n return new MouseLandmarkImp(appObject);\n}\n\nclass MouseLandmarkImp extends MouseLandmark {\n addingLandmark: boolean = false;\n pressed = false;\n\n private get tryPreviewLandmarkUc() {\n return this.getCachedSingleton<TryPreviewLandmarkUC>(\n TryPreviewLandmarkUC.type,\n );\n }\n\n private get tryAddLandmarkUc() {\n return this.getCachedSingleton<TryAddNewLandmarkUC>(\n TryAddNewLandmarkUC.type,\n );\n }\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.allow(e)) return;\n\n if (!this.tryPreviewLandmarkUc) {\n return;\n }\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, this.pressed);\n };\n\n onDown = (e: MouseInputEvent) => {\n this.addingLandmark = false;\n\n if (e.button !== 0) return;\n\n if (!this.allow(e)) return;\n\n if (!this.tryPreviewLandmarkUc) {\n return;\n }\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n const pressed = true;\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, pressed);\n this.addingLandmark = true;\n this.pressed = true;\n };\n\n onUp = (e: MouseInputEvent) => {\n if (!this.allow(e)) return;\n if (!this.addingLandmark) return;\n if (!this.tryAddLandmarkUc) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.tryAddLandmarkUc.addFromRay(ray);\n\n this.tryPreviewLandmarkUc.hidePreview();\n this.addingLandmark = false;\n this.pressed = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseLandmark.type);\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":"TouchLandmark.js","sourceRoot":"","sources":["../../../../src/Landmarks/Controller/TouchLandmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { LandmarkGlobals } from \"../Entities/LandmarkGlobals\";\nimport { TryAddNewLandmarkUC } from \"../UseCases/TryAddNewLandmarkUC\";\nimport { TryPreviewLandmarkUC } from \"../UseCases/TryPreviewLandmarkUC\";\n\nexport abstract class TouchLandmark\n extends AppObjectController\n implements TouchEventHandler\n{\n static type = \"TOUCH_LANDMARK_CONTROLLER\";\n\n abstract onTouchStart(e: TouchInputEvent): void;\n abstract onTouchMove(e: TouchInputEvent): void;\n abstract onTouchEnd(e: TouchInputEvent): void;\n abstract allow: (e: TouchInputEvent) => boolean;\n}\n\nexport function makeTouchLandmark(appObject: AppObject): TouchLandmark {\n return new TouchLandmarkImp(appObject);\n}\n\nclass TouchLandmarkImp extends TouchLandmark {\n private lastTouch: Vector2 = Vector2.Zero();\n\n private get tryPreviewLandmarkUc() {\n return this.getCachedSingleton<TryPreviewLandmarkUC>(\n TryPreviewLandmarkUC.type\n );\n }\n\n private get tryAddLandmarkUc() {\n return this.getCachedSingleton<TryAddNewLandmarkUC>(\n TryAddNewLandmarkUC.type\n );\n }\n\n allow = (e: TouchInputEvent): boolean => {\n if (e.touches.length === 1) {\n return true;\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const position = e.touches[0].position;\n this.lastTouch = position;\n const ray = pixelToSceneRay(position, this.appObjects);\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, true);\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.allow(e)) return;\n if (e.touchCount > 1) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const position = e.touches[0].position;\n this.lastTouch = position;\n const ray = pixelToSceneRay(position, this.appObjects);\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, true);\n };\n\n onTouchEnd = (e: TouchInputEvent) => {\n if (!this.allow(e)) return;\n if (e.touchCount > 1) return;\n if (!this.tryAddLandmarkUc) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const ray = pixelToSceneRay(this.lastTouch, this.appObjects);\n this.tryAddLandmarkUc.addFromRay(ray);\n this.tryPreviewLandmarkUc.hidePreview();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchLandmark.type);\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":"TouchLandmark.js","sourceRoot":"","sources":["../../../../src/Landmarks/Controller/TouchLandmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { LandmarkGlobals } from \"../Entities/LandmarkGlobals\";\nimport { TryAddNewLandmarkUC } from \"../UseCases/TryAddNewLandmarkUC\";\nimport { TryPreviewLandmarkUC } from \"../UseCases/TryPreviewLandmarkUC\";\n\nexport abstract class TouchLandmark\n extends AppObjectController\n implements TouchEventHandler\n{\n static type = \"TOUCH_LANDMARK_CONTROLLER\";\n\n abstract onTouchStart(e: TouchInputEvent): void;\n abstract onTouchMove(e: TouchInputEvent): void;\n abstract onTouchEnd(e: TouchInputEvent): void;\n abstract allow: (e: TouchInputEvent) => boolean;\n}\n\nexport function makeTouchLandmark(appObject: AppObject): TouchLandmark {\n return new TouchLandmarkImp(appObject);\n}\n\nclass TouchLandmarkImp extends TouchLandmark {\n private lastTouch: Vector2 = Vector2.Zero();\n\n private get tryPreviewLandmarkUc() {\n return this.getCachedSingleton<TryPreviewLandmarkUC>(\n TryPreviewLandmarkUC.type,\n );\n }\n\n private get tryAddLandmarkUc() {\n return this.getCachedSingleton<TryAddNewLandmarkUC>(\n TryAddNewLandmarkUC.type,\n );\n }\n\n allow = (e: TouchInputEvent): boolean => {\n if (e.touches.length === 1) {\n return true;\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const position = e.touches[0].position;\n this.lastTouch = position;\n const ray = pixelToSceneRay(position, this.appObjects);\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, true);\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.allow(e)) return;\n if (e.touchCount > 1) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const position = e.touches[0].position;\n this.lastTouch = position;\n const ray = pixelToSceneRay(position, this.appObjects);\n this.tryPreviewLandmarkUc.tryPreviewLandmark(ray, true);\n };\n\n onTouchEnd = (e: TouchInputEvent) => {\n if (!this.allow(e)) return;\n if (e.touchCount > 1) return;\n if (!this.tryAddLandmarkUc) return;\n if (!this.tryPreviewLandmarkUc) return;\n\n const ray = pixelToSceneRay(this.lastTouch, this.appObjects);\n this.tryAddLandmarkUc.addFromRay(ray);\n this.tryPreviewLandmarkUc.hidePreview();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchLandmark.type);\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":"MouseInput.js","sourceRoot":"","sources":["../../../../src/MouseInput/Entities/MouseInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGhF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA2BtC,MAAM,OAAgB,gBAAiB,SAAQ,eAAe;;AAC5C,qBAAI,GAAG,kBAAkB,CAAC;AAUnC,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,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,mBAAoB,SAAQ,gBAAgB;IAchD,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAqLO,mBAAmB,CAAC,KAAiB;QAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACzB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,OAAO;YACL,QAAQ,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;YAC7B,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAjNlC,gBAAW,GAAwB,EAAE,CAAC;QAEtC,qBAAgB,GAAG,CAAC,CAAC,CAAC,SAAS;QAE/B,cAAS,GAAG,KAAK,CAAC;QAElB,qBAAgB,GAAW,CAAC,CAAC;QAC7B,oBAAe,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,eAAU,GAAG,CAAC,CAAC;QACf,yBAAoB,GAAG,GAAG,CAAC;QAC3B,6BAAwB,GAAG,CAAC,CAAC;QAE7B,kBAAa,GAA4B,SAAS,CAAC;QAK3D,oBAAe,GAAG,CAAC,YAAyB,EAAQ,EAAE;YACpD,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEjD,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpE,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAChE,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,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAE5D,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpC,CAAC,CAAC;QACF,sBAAiB,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAEhC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClE,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,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAE9D,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;QAEM,gBAAW,GAAG,CAAC,CAAa,EAAE,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACb,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAEpB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;gBAAE,OAAO;YAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,QAAQ,CAAC,QAAQ,CAClB,CAAC,SAAS,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACtD,IACE,UAAU,GAAG,IAAI,CAAC,oBAAoB;gBACtC,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EACxC,CAAC;gBACD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEM,cAAS,GAAG,CAAC,CAAa,EAAE,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;wBACd,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACnC,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAChC,IAAI,CAAC,UAAU,CAAC,OAAO,EACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CACxB,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,IAAI,OAAO,CAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,EACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CACxB,CAAC;gBACF,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC7B,IAAI,CAAC,eAAe,EACpB,UAAU,CACX,CAAC,SAAS,CAAC;gBACZ,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpB,QAAQ,GAAG,CAAC,CAAC;gBACf,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACtD,IACE,UAAU,IAAI,IAAI,CAAC,oBAAoB;oBACvC,QAAQ,IAAI,IAAI,CAAC,wBAAwB,EACzC,CAAC;oBACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC7B,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;4BACpB,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;wBAC5B,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,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;QAEM,gBAAW,GAAG,CAAC,CAAa,EAAE,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACb,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,CAAa,EAAE,EAAE;YACrC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,CAAa,EAAE,EAAE;YAClC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;YACrB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YAExB,MAAM,QAAQ,GAAoB;gBAChC,QAAQ,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;gBAC7B,KAAK,EAAE,CAAC;aACT,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IAgBF,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectEntity, getSingletonComponent } from \"@vived/core\";\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\n\nexport interface MouseInputEvent {\n position: Vector2;\n button: number;\n event: MouseEvent;\n}\n\nexport interface MouseWheelEvent {\n position: Vector2;\n event: WheelEvent;\n}\n\nexport interface MouseEventHandler {\n onClick?: (e: MouseInputEvent) => void;\n onDoubleClick?: (e: MouseInputEvent) => void;\n onDown?: (e: MouseInputEvent) => void;\n onUp?: (e: MouseInputEvent) => void;\n onMove?: (e: MouseInputEvent) => void;\n onWheel?: (e: MouseWheelEvent) => void;\n}\n\n/**\n * @deprecated Use MouseEventHandler instead. MouseController will be removed in a future version.\n */\nexport type MouseController = MouseEventHandler;\n\nexport abstract class MouseInputEntity extends AppObjectEntity {\n static readonly type = \"MouseInputEntity\";\n\n abstract get eventElement(): HTMLElement | undefined;\n\n abstract setEventElement(eventElement: HTMLElement): void;\n abstract clearInputElement(): void;\n\n abstract registerController(controller: MouseEventHandler): void;\n abstract removeController(controller: MouseEventHandler): void;\n\n static get = (appObjects: AppObjectRepo): MouseInputEntity | undefined =>\n getSingletonComponent(MouseInputEntity.type, appObjects);\n}\n\nexport function makeMouseInput(appObject: AppObject): MouseInputEntity {\n return new MouseInputEntityImp(appObject);\n}\n\nclass MouseInputEntityImp extends MouseInputEntity {\n private controllers: MouseEventHandler[] = [];\n\n private maxClickMovement = 5; // pixels\n private pressEvent?: MouseEvent;\n private isPressed = false;\n\n private initialClickTime: number = 0;\n private initialClickPos: Vector2 = Vector2.Zero();\n private clickCount = 0;\n private maxDoubleClickTimeMS = 300;\n private maxDoubleClickDistancePx = 5;\n\n private _eventElement: HTMLElement | undefined = undefined;\n public get eventElement(): HTMLElement | undefined {\n return this._eventElement;\n }\n\n setEventElement = (eventElement: HTMLElement): void => {\n if (this._eventElement) this.clearInputElement();\n\n eventElement.addEventListener(\"mousedown\", this.onMouseDown, false);\n eventElement.addEventListener(\"mouseup\", this.onMouseUp, false);\n eventElement.addEventListener(\"mousemove\", this.onMouseMove, false);\n eventElement.addEventListener(\"mouseout\", this.onMouseOut, false);\n eventElement.addEventListener(\"wheel\", this.onWheel, false);\n\n this._eventElement = eventElement;\n };\n clearInputElement = (): void => {\n if (!this._eventElement) return;\n\n this._eventElement.removeEventListener(\"mousedown\", this.onMouseDown);\n this._eventElement.removeEventListener(\"mouseup\", this.onMouseUp);\n this._eventElement.removeEventListener(\"mousemove\", this.onMouseMove);\n this._eventElement.removeEventListener(\"mouseout\", this.onMouseOut);\n this._eventElement.removeEventListener(\"wheel\", this.onWheel);\n\n this._eventElement = undefined;\n };\n\n registerController = (controller: MouseEventHandler): void => {\n this.controllers.push(controller);\n };\n removeController = (controller: MouseEventHandler): void => {\n const index = this.controllers.indexOf(controller);\n if (index >= 0) {\n this.controllers.splice(index, 1);\n }\n };\n\n private onMouseDown = (e: MouseEvent) => {\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onDown) {\n c.onDown(inputEvt);\n }\n });\n\n this.isPressed = true;\n this.pressEvent = e;\n\n if (this.clickCount === 0) return;\n\n const movement = Vector2.Subtract(\n this.initialClickPos,\n inputEvt.position\n ).magnitued;\n const passedTime = Date.now() - this.initialClickTime;\n if (\n passedTime > this.maxDoubleClickTimeMS ||\n movement > this.maxDoubleClickDistancePx\n ) {\n this.clickCount = 0;\n }\n };\n\n private onMouseUp = (e: MouseEvent) => {\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onUp) {\n c.onUp(inputEvt);\n }\n });\n\n this.isPressed = false;\n\n if (!this.pressEvent) return;\n\n const deltaX = this.pressEvent.screenX - e.screenX;\n const deltaY = this.pressEvent.screenY - e.screenY;\n const delta = new Vector2(deltaX, deltaY);\n if (delta.magnitued < this.maxClickMovement) {\n this.controllers.forEach((c) => {\n if (c.onClick) {\n c.onClick(inputEvt);\n }\n });\n this.clickCount += 1;\n } else {\n this.cancelDoubleClick();\n return;\n }\n\n if (this.clickCount === 1) {\n this.initialClickTime = Date.now();\n this.initialClickPos = new Vector2(\n this.pressEvent.screenX,\n this.pressEvent.screenY\n );\n } else if (this.clickCount === 2) {\n const currentPos = new Vector2(\n this.pressEvent.screenX,\n this.pressEvent.screenY\n );\n let movement = Vector2.Subtract(\n this.initialClickPos,\n currentPos\n ).magnitued;\n if (isNaN(movement)) {\n movement = 0;\n }\n const passedTime = Date.now() - this.initialClickTime;\n if (\n passedTime <= this.maxDoubleClickTimeMS &&\n movement <= this.maxDoubleClickDistancePx\n ) {\n this.controllers.forEach((c) => {\n if (c.onDoubleClick) {\n c.onDoubleClick(inputEvt);\n }\n });\n\n this.cancelDoubleClick();\n }\n }\n\n this.pressEvent = undefined;\n };\n\n private cancelDoubleClick = () => {\n this.initialClickPos = Vector2.Zero();\n this.initialClickTime = 0;\n this.clickCount = 0;\n };\n\n private onMouseMove = (e: MouseEvent) => {\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onMove) {\n c.onMove(inputEvt);\n }\n });\n\n if (!this.pressEvent) return;\n\n const deltaX = this.pressEvent.screenX - e.screenX;\n const deltaY = this.pressEvent.screenY - e.screenY;\n const delta = new Vector2(deltaX, deltaY);\n if (delta.magnitued > this.maxClickMovement) {\n this.pressEvent = undefined;\n }\n };\n\n private onMouseOut = (e: MouseEvent) => {\n this.cancelDoubleClick();\n\n if (!this.isPressed) return;\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onUp) {\n c.onUp(inputEvt);\n }\n });\n\n this.pressEvent = undefined;\n this.isPressed = false;\n };\n\n private onWheel = (e: WheelEvent) => {\n e.preventDefault();\n const px = e.offsetX;\n const py = e.offsetY;\n const button = e.button;\n\n const inputEvt: MouseWheelEvent = {\n position: new Vector2(px, py),\n event: e,\n };\n\n this.controllers.forEach((c) => {\n if (c.onWheel) {\n c.onWheel(inputEvt);\n }\n });\n };\n\n private makeMouseInputEvent(event: MouseEvent): MouseInputEvent {\n const px = event.offsetX;\n const py = event.offsetY;\n const button = event.button;\n\n return {\n position: new Vector2(px, py),\n button,\n event,\n };\n }\n\n constructor(appObject: AppObject) {\n super(appObject, MouseInputEntity.type);\n }\n}\n"]}
1
+ {"version":3,"file":"MouseInput.js","sourceRoot":"","sources":["../../../../src/MouseInput/Entities/MouseInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectEntity, getSingletonComponent } from \"@vived/core\";\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\n\nexport interface MouseInputEvent {\n position: Vector2;\n button: number;\n event: MouseEvent;\n}\n\nexport interface MouseWheelEvent {\n position: Vector2;\n event: WheelEvent;\n}\n\nexport interface MouseEventHandler {\n onClick?: (e: MouseInputEvent) => void;\n onDoubleClick?: (e: MouseInputEvent) => void;\n onDown?: (e: MouseInputEvent) => void;\n onUp?: (e: MouseInputEvent) => void;\n onMove?: (e: MouseInputEvent) => void;\n onWheel?: (e: MouseWheelEvent) => void;\n}\n\n/**\n * @deprecated Use MouseEventHandler instead. MouseController will be removed in a future version.\n */\nexport type MouseController = MouseEventHandler;\n\nexport abstract class MouseInputEntity extends AppObjectEntity {\n static readonly type = \"MouseInputEntity\";\n\n abstract get eventElement(): HTMLElement | undefined;\n\n abstract setEventElement(eventElement: HTMLElement): void;\n abstract clearInputElement(): void;\n\n abstract registerController(controller: MouseEventHandler): void;\n abstract removeController(controller: MouseEventHandler): void;\n\n static get = (appObjects: AppObjectRepo): MouseInputEntity | undefined =>\n getSingletonComponent(MouseInputEntity.type, appObjects);\n}\n\nexport function makeMouseInput(appObject: AppObject): MouseInputEntity {\n return new MouseInputEntityImp(appObject);\n}\n\nclass MouseInputEntityImp extends MouseInputEntity {\n private controllers: MouseEventHandler[] = [];\n\n private maxClickMovement = 5; // pixels\n private pressEvent?: MouseEvent;\n private isPressed = false;\n\n private initialClickTime: number = 0;\n private initialClickPos: Vector2 = Vector2.Zero();\n private clickCount = 0;\n private maxDoubleClickTimeMS = 300;\n private maxDoubleClickDistancePx = 5;\n\n private _eventElement: HTMLElement | undefined = undefined;\n public get eventElement(): HTMLElement | undefined {\n return this._eventElement;\n }\n\n setEventElement = (eventElement: HTMLElement): void => {\n if (this._eventElement) this.clearInputElement();\n\n eventElement.addEventListener(\"mousedown\", this.onMouseDown, false);\n eventElement.addEventListener(\"mouseup\", this.onMouseUp, false);\n eventElement.addEventListener(\"mousemove\", this.onMouseMove, false);\n eventElement.addEventListener(\"mouseout\", this.onMouseOut, false);\n eventElement.addEventListener(\"wheel\", this.onWheel, false);\n\n this._eventElement = eventElement;\n };\n clearInputElement = (): void => {\n if (!this._eventElement) return;\n\n this._eventElement.removeEventListener(\"mousedown\", this.onMouseDown);\n this._eventElement.removeEventListener(\"mouseup\", this.onMouseUp);\n this._eventElement.removeEventListener(\"mousemove\", this.onMouseMove);\n this._eventElement.removeEventListener(\"mouseout\", this.onMouseOut);\n this._eventElement.removeEventListener(\"wheel\", this.onWheel);\n\n this._eventElement = undefined;\n };\n\n registerController = (controller: MouseEventHandler): void => {\n this.controllers.push(controller);\n };\n removeController = (controller: MouseEventHandler): void => {\n const index = this.controllers.indexOf(controller);\n if (index >= 0) {\n this.controllers.splice(index, 1);\n }\n };\n\n private onMouseDown = (e: MouseEvent) => {\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onDown) {\n c.onDown(inputEvt);\n }\n });\n\n this.isPressed = true;\n this.pressEvent = e;\n\n if (this.clickCount === 0) return;\n\n const movement = Vector2.Subtract(\n this.initialClickPos,\n inputEvt.position,\n ).magnitued;\n const passedTime = Date.now() - this.initialClickTime;\n if (\n passedTime > this.maxDoubleClickTimeMS ||\n movement > this.maxDoubleClickDistancePx\n ) {\n this.clickCount = 0;\n }\n };\n\n private onMouseUp = (e: MouseEvent) => {\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onUp) {\n c.onUp(inputEvt);\n }\n });\n\n this.isPressed = false;\n\n if (!this.pressEvent) return;\n\n const deltaX = this.pressEvent.screenX - e.screenX;\n const deltaY = this.pressEvent.screenY - e.screenY;\n const delta = new Vector2(deltaX, deltaY);\n if (delta.magnitued < this.maxClickMovement) {\n this.controllers.forEach((c) => {\n if (c.onClick) {\n c.onClick(inputEvt);\n }\n });\n this.clickCount += 1;\n } else {\n this.cancelDoubleClick();\n return;\n }\n\n if (this.clickCount === 1) {\n this.initialClickTime = Date.now();\n this.initialClickPos = new Vector2(\n this.pressEvent.screenX,\n this.pressEvent.screenY,\n );\n } else if (this.clickCount === 2) {\n const currentPos = new Vector2(\n this.pressEvent.screenX,\n this.pressEvent.screenY,\n );\n let movement = Vector2.Subtract(\n this.initialClickPos,\n currentPos,\n ).magnitued;\n if (isNaN(movement)) {\n movement = 0;\n }\n const passedTime = Date.now() - this.initialClickTime;\n if (\n passedTime <= this.maxDoubleClickTimeMS &&\n movement <= this.maxDoubleClickDistancePx\n ) {\n this.controllers.forEach((c) => {\n if (c.onDoubleClick) {\n c.onDoubleClick(inputEvt);\n }\n });\n\n this.cancelDoubleClick();\n }\n }\n\n this.pressEvent = undefined;\n };\n\n private cancelDoubleClick = () => {\n this.initialClickPos = Vector2.Zero();\n this.initialClickTime = 0;\n this.clickCount = 0;\n };\n\n private onMouseMove = (e: MouseEvent) => {\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onMove) {\n c.onMove(inputEvt);\n }\n });\n\n if (!this.pressEvent) return;\n\n const deltaX = this.pressEvent.screenX - e.screenX;\n const deltaY = this.pressEvent.screenY - e.screenY;\n const delta = new Vector2(deltaX, deltaY);\n if (delta.magnitued > this.maxClickMovement) {\n this.pressEvent = undefined;\n }\n };\n\n private onMouseOut = (e: MouseEvent) => {\n this.cancelDoubleClick();\n\n if (!this.isPressed) return;\n const inputEvt = this.makeMouseInputEvent(e);\n this.controllers.forEach((c) => {\n if (c.onUp) {\n c.onUp(inputEvt);\n }\n });\n\n this.pressEvent = undefined;\n this.isPressed = false;\n };\n\n private onWheel = (e: WheelEvent) => {\n e.preventDefault();\n const px = e.offsetX;\n const py = e.offsetY;\n const button = e.button;\n\n const inputEvt: MouseWheelEvent = {\n position: new Vector2(px, py),\n event: e,\n };\n\n this.controllers.forEach((c) => {\n if (c.onWheel) {\n c.onWheel(inputEvt);\n }\n });\n };\n\n private makeMouseInputEvent(event: MouseEvent): MouseInputEvent {\n const px = event.offsetX;\n const py = event.offsetY;\n const button = event.button;\n\n return {\n position: new Vector2(px, py),\n button,\n event,\n };\n }\n\n constructor(appObject: AppObject) {\n super(appObject, MouseInputEntity.type);\n }\n}\n"]}
@@ -5,11 +5,10 @@ export class MockMouseInput extends MouseInputEntity {
5
5
  }
6
6
  constructor(appObject) {
7
7
  super(appObject, MouseInputEntity.type);
8
- this.setEventElement = jest.fn();
9
- this.clearInputElement = jest.fn();
10
- this.registerController = jest.fn();
11
- this.removeController = jest.fn();
12
- this.isKeyPressed = jest.fn();
8
+ this.setEventElement = (_eventElement) => { };
9
+ this.clearInputElement = () => { };
10
+ this.registerController = (_controller) => { };
11
+ this.removeController = (_controller) => { };
13
12
  }
14
13
  }
15
14
  //# sourceMappingURL=MockMouseInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockMouseInput.js","sourceRoot":"","sources":["../../../../src/MouseInput/Mocks/MockMouseInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,IAAI,YAAY;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAP1C,oBAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5B,sBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9B,uBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,qBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,iBAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAIzB,CAAC;CACF","sourcesContent":["import { AppObject } from \"@vived/core\";\nimport { MouseInputEntity } from \"../Entities/MouseInput\";\n\nexport class MockMouseInput extends MouseInputEntity {\n get eventElement(): HTMLElement | undefined {\n throw new Error(\"Method not implemented.\");\n }\n setEventElement = jest.fn();\n clearInputElement = jest.fn();\n registerController = jest.fn();\n removeController = jest.fn();\n isKeyPressed = jest.fn();\n\n constructor(appObject: AppObject) {\n super(appObject, MouseInputEntity.type);\n }\n}\n"]}
1
+ {"version":3,"file":"MockMouseInput.js","sourceRoot":"","sources":["../../../../src/MouseInput/Mocks/MockMouseInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,wBAAwB,CAAC;AAE7E,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,IAAI,YAAY;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAMD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAN1C,oBAAe,GAAG,CAAC,aAA0B,EAAQ,EAAE,GAAE,CAAC,CAAC;QAC3D,sBAAiB,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;QACnC,uBAAkB,GAAG,CAAC,WAA8B,EAAQ,EAAE,GAAE,CAAC,CAAC;QAClE,qBAAgB,GAAG,CAAC,WAA8B,EAAQ,EAAE,GAAE,CAAC,CAAC;IAIhE,CAAC;CACF","sourcesContent":["import { AppObject } from \"@vived/core\";\nimport { MouseInputEntity, MouseEventHandler } from \"../Entities/MouseInput\";\n\nexport class MockMouseInput extends MouseInputEntity {\n get eventElement(): HTMLElement | undefined {\n throw new Error(\"Method not implemented.\");\n }\n setEventElement = (_eventElement: HTMLElement): void => {};\n clearInputElement = (): void => {};\n registerController = (_controller: MouseEventHandler): void => {};\n removeController = (_controller: MouseEventHandler): void => {};\n\n constructor(appObject: AppObject) {\n super(appObject, MouseInputEntity.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/MouseInput/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA","sourcesContent":["export * from \"./MockMouseInput\"\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/MouseInput/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC","sourcesContent":["export * from \"./MockMouseInput\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MouseInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAA","sourcesContent":["export * from \"./Entities\";\nexport * from \"./Factories\";\nexport * from \"./Mocks\"\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MouseInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC","sourcesContent":["export * from \"./Entities\";\nexport * from \"./Factories\";\nexport * from \"./Mocks\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseObjectPickMC.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Controllers/MouseObjectPickMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAEL,gBAAgB,GAEjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,OAAO,iBACX,SAAQ,mBAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAf3C,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YAEnE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAvCM,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { BaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput/Entities/MouseInput\";\nimport { TrySelectObjectPickUC } from \"../UseCases/TrySelectObjectPickUC\";\nimport { TrySubmitObjectPickUC } from \"../UseCases/TrySubmitObjectPickUC\";\n\nexport class MouseObjectPickMC\n extends AppObjectController\n implements MouseEventHandler\n{\n static type = \"MouseObjectPickMC\";\n\n private get baseApp() {\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\n }\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get trySelectObjectPick() {\n return this.getCachedSingleton<TrySelectObjectPickUC>(\n TrySelectObjectPickUC.type\n )?.tryWithPixel;\n }\n\n private get trySubmitObjectPick() {\n return this.getCachedSingleton<TrySubmitObjectPickUC>(\n TrySubmitObjectPickUC.type\n )?.tryWithPixel;\n }\n\n onClick = (e: MouseInputEvent) => {\n if (!this.trySelectObjectPick || !this.trySubmitObjectPick) return;\n\n if (e.button !== 0) {\n return;\n }\n\n if (this.baseApp?.isAuthoring) {\n this.trySelectObjectPick(e.position);\n } else {\n this.trySubmitObjectPick(e.position);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseObjectPickMC.type);\n this.mouseInput?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"MouseObjectPickMC.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Controllers/MouseObjectPickMC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAEL,gBAAgB,GAEjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,OAAO,iBACX,SAAQ,mBAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAf3C,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YAEnE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAvCM,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { BaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput/Entities/MouseInput\";\nimport { TrySelectObjectPickUC } from \"../UseCases/TrySelectObjectPickUC\";\nimport { TrySubmitObjectPickUC } from \"../UseCases/TrySubmitObjectPickUC\";\n\nexport class MouseObjectPickMC\n extends AppObjectController\n implements MouseEventHandler\n{\n static type = \"MouseObjectPickMC\";\n\n private get baseApp() {\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\n }\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get trySelectObjectPick() {\n return this.getCachedSingleton<TrySelectObjectPickUC>(\n TrySelectObjectPickUC.type,\n )?.tryWithPixel;\n }\n\n private get trySubmitObjectPick() {\n return this.getCachedSingleton<TrySubmitObjectPickUC>(\n TrySubmitObjectPickUC.type,\n )?.tryWithPixel;\n }\n\n onClick = (e: MouseInputEvent) => {\n if (!this.trySelectObjectPick || !this.trySubmitObjectPick) return;\n\n if (e.button !== 0) {\n return;\n }\n\n if (this.baseApp?.isAuthoring) {\n this.trySelectObjectPick(e.position);\n } else {\n this.trySubmitObjectPick(e.position);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseObjectPickMC.type);\n this.mouseInput?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusObjectPickSC.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Controllers/StylusObjectPickSC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,YAAY,GACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,OAAO,kBACX,SAAQ,mBAAmB;IAI3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,UAAU,CAAC;IAChB,CAAC;IAUD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAT5C,kBAAa,GAAG,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YACtD,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AAtBe,uBAAI,GAAG,oBAAoB,AAAvB,CAAwB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n StylusEventHandler,\n StylusEntity,\n} from \"../../Stylus/Entity/StylusEntity\";\nimport { TrySubmitObjectPickUC } from \"../UseCases/TrySubmitObjectPickUC\";\n\nexport class StylusObjectPickSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusObjectPickSC\";\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get trySubmitObjectPick() {\n return this.getCachedSingleton<TrySubmitObjectPickUC>(\n TrySubmitObjectPickUC.type\n )?.tryWithRay;\n }\n\n onButtonClick = (button: number) => {\n if (!this.stylus || !this.trySubmitObjectPick) return;\n if (button !== 0) return;\n\n const pointerRay = this.stylus.pickRay;\n this.trySubmitObjectPick(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusObjectPickSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusObjectPickSC.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Controllers/StylusObjectPickSC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,YAAY,GACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,OAAO,kBACX,SAAQ,mBAAmB;IAI3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,UAAU,CAAC;IAChB,CAAC;IAUD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAT5C,kBAAa,GAAG,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YACtD,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AAtBe,uBAAI,GAAG,oBAAoB,AAAvB,CAAwB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n StylusEventHandler,\n StylusEntity,\n} from \"../../Stylus/Entity/StylusEntity\";\nimport { TrySubmitObjectPickUC } from \"../UseCases/TrySubmitObjectPickUC\";\n\nexport class StylusObjectPickSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusObjectPickSC\";\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get trySubmitObjectPick() {\n return this.getCachedSingleton<TrySubmitObjectPickUC>(\n TrySubmitObjectPickUC.type,\n )?.tryWithRay;\n }\n\n onButtonClick = (button: number) => {\n if (!this.stylus || !this.trySubmitObjectPick) return;\n if (button !== 0) return;\n\n const pointerRay = this.stylus.pickRay;\n this.trySubmitObjectPick(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusObjectPickSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchObjectPickTC.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Controllers/TouchObjectPickTC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAEL,gBAAgB,GAEjB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,OAAO,iBACX,SAAQ,mBAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAYD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAX3C,UAAK,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YAEnE,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAnCM,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { BaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController/Entities/TouchInput\";\nimport { TrySelectObjectPickUC } from \"../UseCases/TrySelectObjectPickUC\";\nimport { TrySubmitObjectPickUC } from \"../UseCases/TrySubmitObjectPickUC\";\n\nexport class TouchObjectPickTC\n extends AppObjectController\n implements TouchEventHandler\n{\n static type = \"TouchObjectPickTC\";\n\n private get baseApp() {\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\n }\n\n private get touchInput() {\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\n }\n\n private get trySelectObjectPick() {\n return this.getCachedSingleton<TrySelectObjectPickUC>(\n TrySelectObjectPickUC.type\n )?.tryWithPixel;\n }\n\n private get trySubmitObjectPick() {\n return this.getCachedSingleton<TrySubmitObjectPickUC>(\n TrySubmitObjectPickUC.type\n )?.tryWithPixel;\n }\n\n onTap = (e: TouchInputEvent) => {\n if (!this.trySelectObjectPick || !this.trySubmitObjectPick) return;\n\n if (this.baseApp?.isAuthoring) {\n this.trySelectObjectPick(e.touchCenter);\n } else {\n this.trySubmitObjectPick(e.touchCenter);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchObjectPickTC.type);\n this.touchInput?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"TouchObjectPickTC.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Controllers/TouchObjectPickTC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAEL,gBAAgB,GAEjB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,OAAO,iBACX,SAAQ,mBAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,qBAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAYD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAX3C,UAAK,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB;gBAAE,OAAO;YAEnE,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAnCM,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { BaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController/Entities/TouchInput\";\nimport { TrySelectObjectPickUC } from \"../UseCases/TrySelectObjectPickUC\";\nimport { TrySubmitObjectPickUC } from \"../UseCases/TrySubmitObjectPickUC\";\n\nexport class TouchObjectPickTC\n extends AppObjectController\n implements TouchEventHandler\n{\n static type = \"TouchObjectPickTC\";\n\n private get baseApp() {\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\n }\n\n private get touchInput() {\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\n }\n\n private get trySelectObjectPick() {\n return this.getCachedSingleton<TrySelectObjectPickUC>(\n TrySelectObjectPickUC.type,\n )?.tryWithPixel;\n }\n\n private get trySubmitObjectPick() {\n return this.getCachedSingleton<TrySubmitObjectPickUC>(\n TrySubmitObjectPickUC.type,\n )?.tryWithPixel;\n }\n\n onTap = (e: TouchInputEvent) => {\n if (!this.trySelectObjectPick || !this.trySubmitObjectPick) return;\n\n if (this.baseApp?.isAuthoring) {\n this.trySelectObjectPick(e.touchCenter);\n } else {\n this.trySubmitObjectPick(e.touchCenter);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchObjectPickTC.type);\n this.touchInput?.registerController(this);\n }\n}\n"]}
@@ -27,6 +27,7 @@ function makeTestRig() {
27
27
  const mockPick = jest.fn().mockReturnValue(mockPickResult);
28
28
  mockRayPick.sceneRayPick = mockPick;
29
29
  const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);
30
+ mockPixelToRay.pixelToSceneRay = jest.fn();
30
31
  const uc = makeTrySelectObjectPickUC(appObjects.getOrCreate("ObjectPick"));
31
32
  return {
32
33
  objectPick,
@@ -1 +1 @@
1
- {"version":3,"file":"TrySelectObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySelectObjectPickUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { SceneRayPick } from \"../../Babylon/UC/SceneRayPickUC\";\nimport { makeChallengeEntityMock } from \"../../Challenge/Mocks/ChallengeEntityMock\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { makeUndoRedoEntity } from \"../../UndoRedo/Entities/UndoRedoEntity\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySelectObjectPickUC,\n TrySelectObjectPickUC,\n} from \"./TrySelectObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const mockDispatchStateChange = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n mockDispatchStateChange.doDispatch = doDispatchMock;\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n const undo = makeUndoRedoEntity(appObjects.getOrCreate(\"Undo\"));\n const challenge = makeChallengeEntityMock(appObjects);\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n baseApp.isAuthoring = true;\n objectPick.isSelectingCorrectObjects = true;\n challenge.selectedChallenge = \"OBJECT_PICK\";\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: \"sceneObject\",\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n\n const uc = makeTrySelectObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n\n return {\n objectPick,\n uc,\n baseApp,\n doDispatchMock,\n appObjects,\n mockPixelToRay,\n undo,\n mockPick,\n };\n}\n\ndescribe(\"Try Select Object Pick Use Case\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySelectObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n mockPixelToRay.pixelToSceneRay.mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8),\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Tries Select Object Pick successfully\", () => {\n const { uc, objectPick } = makeTestRig();\n\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).toHaveBeenCalledWith(\"sceneObject\");\n });\n\n it(\"Does not add when the pick does not hit\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: false,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Does not add when the pick does not an app object\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: undefined,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Dispatches a state change\", () => {\n const { uc, doDispatchMock } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Is undoable and redoable\", () => {\n const { uc, undo, objectPick } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n\n undo.doUndo();\n\n expect(objectPick.correctObjectIds).toEqual([]);\n\n undo.doRedo();\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n });\n\n it(\"Undo and redo dispatch a state change\", () => {\n const { uc, undo, doDispatchMock } = makeTestRig();\n uc.tryWithRay(ParametricLine.Forward());\n\n doDispatchMock.mockClear();\n\n undo.doUndo();\n expect(doDispatchMock).toHaveBeenCalled();\n\n doDispatchMock.mockClear();\n undo.doRedo();\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n});\n"]}
1
+ {"version":3,"file":"TrySelectObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySelectObjectPickUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { SceneRayPick } from \"../../Babylon/UC/SceneRayPickUC\";\nimport { makeChallengeEntityMock } from \"../../Challenge/Mocks/ChallengeEntityMock\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { makeUndoRedoEntity } from \"../../UndoRedo/Entities/UndoRedoEntity\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySelectObjectPickUC,\n TrySelectObjectPickUC,\n} from \"./TrySelectObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const mockDispatchStateChange = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n mockDispatchStateChange.doDispatch = doDispatchMock;\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n const undo = makeUndoRedoEntity(appObjects.getOrCreate(\"Undo\"));\n const challenge = makeChallengeEntityMock(appObjects);\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n baseApp.isAuthoring = true;\n objectPick.isSelectingCorrectObjects = true;\n challenge.selectedChallenge = \"OBJECT_PICK\";\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: \"sceneObject\",\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const uc = makeTrySelectObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n\n return {\n objectPick,\n uc,\n baseApp,\n doDispatchMock,\n appObjects,\n mockPixelToRay,\n undo,\n mockPick,\n };\n}\n\ndescribe(\"Try Select Object Pick Use Case\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySelectObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8)\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Tries Select Object Pick successfully\", () => {\n const { uc, objectPick } = makeTestRig();\n\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).toHaveBeenCalledWith(\"sceneObject\");\n });\n\n it(\"Does not add when the pick does not hit\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: false,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Does not add when the pick does not an app object\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: undefined,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Dispatches a state change\", () => {\n const { uc, doDispatchMock } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Is undoable and redoable\", () => {\n const { uc, undo, objectPick } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n\n undo.doUndo();\n\n expect(objectPick.correctObjectIds).toEqual([]);\n\n undo.doRedo();\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n });\n\n it(\"Undo and redo dispatch a state change\", () => {\n const { uc, undo, doDispatchMock } = makeTestRig();\n uc.tryWithRay(ParametricLine.Forward());\n\n doDispatchMock.mockClear();\n\n undo.doUndo();\n expect(doDispatchMock).toHaveBeenCalled();\n\n doDispatchMock.mockClear();\n undo.doRedo();\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n});\n"]}
@@ -19,6 +19,7 @@ function makeTestRig() {
19
19
  const mockPick = jest.fn().mockReturnValue(mockPickResult);
20
20
  mockRayPick.sceneRayPick = mockPick;
21
21
  const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);
22
+ mockPixelToRay.pixelToSceneRay = jest.fn();
22
23
  const objectPick = makeObjectPickEntity(appObjects.getOrCreate("ObjectPick"));
23
24
  const sceneObject = appObjects.getOrCreate("parent");
24
25
  const uc = makeTrySubmitObjectPickUC(appObjects.getOrCreate("ObjectPick"));
@@ -1 +1 @@
1
- {"version":3,"file":"TrySubmitObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySubmitObjectPickUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n SceneRayPick,\n} from \"../../Babylon\";\nimport { makeChallengeEntityMock } from \"../../Challenge\";\nimport { makeMockSubmitResult } from \"../../Dispatcher\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySubmitObjectPickUC,\n TrySubmitObjectPickUC,\n} from \"./TrySubmitObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n baseApp.isAuthoring = false;\n\n const challenge = makeChallengeEntityMock(appObjects);\n\n const mockSubmitResult = makeMockSubmitResult(appObjects);\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n const sceneObject = appObjects.getOrCreate(\"parent\");\n\n const uc = makeTrySubmitObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n const trySubmitObjectPick = uc.tryWithRay;\n\n return {\n trySubmitObjectPick,\n objectPick,\n mockSubmitResult,\n sceneObject,\n mockPickResult,\n baseApp,\n challenge,\n mockPixelToRay,\n appObjects,\n uc,\n };\n}\n\ndescribe(\"Submit Object Pick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySubmitObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n mockPixelToRay.pixelToSceneRay.mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8),\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Doesn't submit object pick when authoring\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isAuthoring = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when challenge is not OBJECT_PICK\", () => {\n const { challenge, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"QUESTION\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when app mode is review\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isReviewing = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Submits object pick when not authoring\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).toHaveBeenCalled();\n });\n\n it(\"Dispatches a submitHitResult\", () => {\n const {\n challenge,\n objectPick,\n sceneObject,\n mockPickResult,\n trySubmitObjectPick,\n mockSubmitResult,\n baseApp,\n } = makeTestRig();\n\n const mockSubmit = jest.fn();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmitResult.submitHitResult).toHaveBeenCalledWith({\n success: objectPick.hasSubmitted,\n description: baseApp.slideText,\n });\n });\n\n it(\"Sets the appState to Review\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n baseApp,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(baseApp.isReviewing).toEqual(true);\n });\n});\n"]}
1
+ {"version":3,"file":"TrySubmitObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySubmitObjectPickUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n SceneRayPick,\n} from \"../../Babylon\";\nimport { makeChallengeEntityMock } from \"../../Challenge\";\nimport { makeMockSubmitResult } from \"../../Dispatcher\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySubmitObjectPickUC,\n TrySubmitObjectPickUC,\n} from \"./TrySubmitObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n baseApp.isAuthoring = false;\n\n const challenge = makeChallengeEntityMock(appObjects);\n\n const mockSubmitResult = makeMockSubmitResult(appObjects);\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n const sceneObject = appObjects.getOrCreate(\"parent\");\n\n const uc = makeTrySubmitObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n const trySubmitObjectPick = uc.tryWithRay;\n\n return {\n trySubmitObjectPick,\n objectPick,\n mockSubmitResult,\n sceneObject,\n mockPickResult,\n baseApp,\n challenge,\n mockPixelToRay,\n appObjects,\n uc,\n };\n}\n\ndescribe(\"Submit Object Pick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySubmitObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8)\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Doesn't submit object pick when authoring\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isAuthoring = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when challenge is not OBJECT_PICK\", () => {\n const { challenge, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"QUESTION\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when app mode is review\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isReviewing = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Submits object pick when not authoring\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).toHaveBeenCalled();\n });\n\n it(\"Dispatches a submitHitResult\", () => {\n const {\n challenge,\n objectPick,\n sceneObject,\n mockPickResult,\n trySubmitObjectPick,\n mockSubmitResult,\n baseApp,\n } = makeTestRig();\n\n const mockSubmit = jest.fn();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmitResult.submitHitResult).toHaveBeenCalledWith({\n success: objectPick.hasSubmitted,\n description: baseApp.slideText,\n });\n });\n\n it(\"Sets the appState to Review\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n baseApp,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(baseApp.isReviewing).toEqual(true);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleTapToFocus.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/DoubleTapToFocus.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { FocusOnPixelUC } from \"../UC/FocusOnPixel\";\n\nexport class DoubleTapToFocus\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"DoubleTapToFocus\";\n\n readonly focusDurationMS = 500;\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 focusOnPixelUC() {\n return this.getCachedLocalComponent<FocusOnPixelUC>(FocusOnPixelUC.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.cancelDoubleTap();\n return;\n }\n\n if (e.touchCount !== 1) {\n this.cancelDoubleTap();\n return;\n }\n\n this.tapCount = this.tapCount + 1;\n\n if (this.tapCount === 1) {\n this.initialTouchPos = e.touchCenter;\n this.initialTouchTime = Date.now();\n } else if (this.tapCount === 2) {\n this.checkForMovement(e.touchCenter);\n }\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (this.tapCount !== 1) return;\n if (e.touchCount !== 1) {\n this.cancelDoubleTap();\n return;\n }\n\n this.checkForMovement(e.touchCenter);\n };\n\n onTouchEnd = () => {\n if (this.tapCount === 2) {\n const passedTime = Date.now() - this.initialTouchTime;\n\n if (passedTime > this.tapTimeMS) {\n this.cancelDoubleTap();\n return;\n }\n this.focusOnPixelUC?.centerOnPixel(this.initialTouchPos);\n this.tapCount = 0;\n this.initialTouchTime = 0;\n }\n };\n\n private cancelDoubleTap = () => {\n this.initialTouchTime = 0;\n this.tapCount = 0;\n };\n\n private checkForMovement(currentPixelPos: Vector2) {\n const movement = Vector2.Subtract(\n this.initialTouchPos,\n currentPixelPos\n ).magnitued;\n\n if (movement > this.maxTapDistancePx) {\n this.cancelDoubleTap();\n return;\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleTapToFocus.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":"DoubleTapToFocus.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/DoubleTapToFocus.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { FocusOnPixelUC } from \"../UC/FocusOnPixel\";\n\nexport class DoubleTapToFocus\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"DoubleTapToFocus\";\n\n readonly focusDurationMS = 500;\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 focusOnPixelUC() {\n return this.getCachedLocalComponent<FocusOnPixelUC>(FocusOnPixelUC.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.cancelDoubleTap();\n return;\n }\n\n if (e.touchCount !== 1) {\n this.cancelDoubleTap();\n return;\n }\n\n this.tapCount = this.tapCount + 1;\n\n if (this.tapCount === 1) {\n this.initialTouchPos = e.touchCenter;\n this.initialTouchTime = Date.now();\n } else if (this.tapCount === 2) {\n this.checkForMovement(e.touchCenter);\n }\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (this.tapCount !== 1) return;\n if (e.touchCount !== 1) {\n this.cancelDoubleTap();\n return;\n }\n\n this.checkForMovement(e.touchCenter);\n };\n\n onTouchEnd = () => {\n if (this.tapCount === 2) {\n const passedTime = Date.now() - this.initialTouchTime;\n\n if (passedTime > this.tapTimeMS) {\n this.cancelDoubleTap();\n return;\n }\n this.focusOnPixelUC?.centerOnPixel(this.initialTouchPos);\n this.tapCount = 0;\n this.initialTouchTime = 0;\n }\n };\n\n private cancelDoubleTap = () => {\n this.initialTouchTime = 0;\n this.tapCount = 0;\n };\n\n private checkForMovement(currentPixelPos: Vector2) {\n const movement = Vector2.Subtract(\n this.initialTouchPos,\n currentPixelPos,\n ).magnitued;\n\n if (movement > this.maxTapDistancePx) {\n this.cancelDoubleTap();\n return;\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleTapToFocus.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":"MouseClickToFocus.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseClickToFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,OAAO,iBACX,SAAQ,mBAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,4BAA4B,CAAC,IAAI,CAClC,CAAC;IACJ,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAf3C,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC;QAKA,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/Be,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { CenterSceneRootOnPixelPickUC } from \"../UC/CenterSceneRootOnPixelPick\";\n\nexport class MouseClickToFocus\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseClickToFocus\";\n\n private get centerOnPixelUI() {\n return this.getCachedLocalComponent<CenterSceneRootOnPixelPickUC>(\n CenterSceneRootOnPixelPickUC.type\n );\n }\n\n allow = (e: MouseInputEvent): boolean => {\n if (e.button === 0) {\n return false;\n }\n\n return true;\n };\n\n onClick = (e: MouseInputEvent) => {\n if (this.allow(e)) {\n this.centerOnPixelUI?.centerOnPixel(e.position);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseClickToFocus.type);\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":"MouseClickToFocus.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseClickToFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,OAAO,iBACX,SAAQ,mBAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,4BAA4B,CAAC,IAAI,CAClC,CAAC;IACJ,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAf3C,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC;QAKA,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/Be,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { CenterSceneRootOnPixelPickUC } from \"../UC/CenterSceneRootOnPixelPick\";\n\nexport class MouseClickToFocus\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseClickToFocus\";\n\n private get centerOnPixelUI() {\n return this.getCachedLocalComponent<CenterSceneRootOnPixelPickUC>(\n CenterSceneRootOnPixelPickUC.type,\n );\n }\n\n allow = (e: MouseInputEvent): boolean => {\n if (e.button === 0) {\n return false;\n }\n\n return true;\n };\n\n onClick = (e: MouseInputEvent) => {\n if (this.allow(e)) {\n this.centerOnPixelUI?.centerOnPixel(e.position);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseClickToFocus.type);\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":"MouseOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseOrbit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,OAAO,UACX,SAAQ,mBAAmB;IAM3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,gBAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA0CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QArD5B,eAAU,GAAG,KAAK,CAAC;QAY3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAE7B,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YAEjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAEnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;QAKA,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;;AA9De,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class MouseOrbit\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseOrbit\";\n private isOrbiting = false;\n\n private get orbitSceneRoot() {\n return this.getCachedLocalComponent<OrbitSceneRootUC>(\n OrbitSceneRootUC.type\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n if (e.button === 0 && orbitToolIsActive) {\n return true;\n } else if (e.button === 2) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isOrbiting = false;\n if (!this.orbitSceneRoot) return;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.orbitSceneRoot.initializeOrbit(pixelPosition);\n\n this.isOrbiting = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.orbitSceneRoot) return;\n if (!this.isOrbiting) return;\n\n const currentPixelPos = e.position;\n this.orbitSceneRoot.doOrbit(currentPixelPos);\n };\n\n onUp = () => {\n if (!this.orbitSceneRoot) return;\n this.orbitSceneRoot.finishOrbit();\n this.isOrbiting = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseOrbit.type);\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":"MouseOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseOrbit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,OAAO,UACX,SAAQ,mBAAmB;IAM3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,gBAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA0CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QArD5B,eAAU,GAAG,KAAK,CAAC;QAY3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAE7B,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YAEjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAEnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;QAKA,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;;AA9De,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class MouseOrbit\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseOrbit\";\n private isOrbiting = false;\n\n private get orbitSceneRoot() {\n return this.getCachedLocalComponent<OrbitSceneRootUC>(\n OrbitSceneRootUC.type,\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n if (e.button === 0 && orbitToolIsActive) {\n return true;\n } else if (e.button === 2) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isOrbiting = false;\n if (!this.orbitSceneRoot) return;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.orbitSceneRoot.initializeOrbit(pixelPosition);\n\n this.isOrbiting = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.orbitSceneRoot) return;\n if (!this.isOrbiting) return;\n\n const currentPixelPos = e.position;\n this.orbitSceneRoot.doOrbit(currentPixelPos);\n };\n\n onUp = () => {\n if (!this.orbitSceneRoot) return;\n this.orbitSceneRoot.finishOrbit();\n this.isOrbiting = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseOrbit.type);\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":"MouseRoll.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseRoll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mCAAmC,EAAE,MAAM,yCAAyC,CAAC;AAE9F,MAAM,OAAO,SACX,SAAQ,mBAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,mCAAmC,CAAC,IAAI,CACzC,CAAC;IACJ,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAfnC,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,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3E,CAAC,CAAC;QAKA,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/Be,cAAI,GAAG,WAAW,AAAd,CAAe","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseWheelEvent,\n} from \"../../MouseInput\";\nimport { BumpSceneRootScaleAboutPixelPointUC } from \"../UC/BumpSceneRootScaleAboutPixelPoint\";\n\nexport class MouseRoll\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseRoll\";\n\n private get bumpRootScaleUC() {\n return this.getCachedLocalComponent<BumpSceneRootScaleAboutPixelPointUC>(\n BumpSceneRootScaleAboutPixelPointUC.type\n );\n }\n\n allow = (e: MouseWheelEvent): boolean => {\n return true;\n };\n\n onWheel = (e: MouseWheelEvent) => {\n if (!this.allow(e)) return;\n\n if (!this.bumpRootScaleUC) {\n return;\n }\n\n this.bumpRootScaleUC.bump(e.event.deltaY > 0 ? \"OUT\" : \"IN\", e.position);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseRoll.type);\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":"MouseRoll.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseRoll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mCAAmC,EAAE,MAAM,yCAAyC,CAAC;AAE9F,MAAM,OAAO,SACX,SAAQ,mBAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,mCAAmC,CAAC,IAAI,CACzC,CAAC;IACJ,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAfnC,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,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3E,CAAC,CAAC;QAKA,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/Be,cAAI,GAAG,WAAW,AAAd,CAAe","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseWheelEvent,\n} from \"../../MouseInput\";\nimport { BumpSceneRootScaleAboutPixelPointUC } from \"../UC/BumpSceneRootScaleAboutPixelPoint\";\n\nexport class MouseRoll\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseRoll\";\n\n private get bumpRootScaleUC() {\n return this.getCachedLocalComponent<BumpSceneRootScaleAboutPixelPointUC>(\n BumpSceneRootScaleAboutPixelPointUC.type,\n );\n }\n\n allow = (e: MouseWheelEvent): boolean => {\n return true;\n };\n\n onWheel = (e: MouseWheelEvent) => {\n if (!this.allow(e)) return;\n\n if (!this.bumpRootScaleUC) {\n return;\n }\n\n this.bumpRootScaleUC.bump(e.event.deltaY > 0 ? \"OUT\" : \"IN\", e.position);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseRoll.type);\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":"MouseScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,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;IAoCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA/C5B,eAAU,GAAG,KAAK,CAAC;QAY3B,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,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,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,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,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,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAKA,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;;AAxDe,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class MouseScale\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseScale\";\n private isDollying = 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: MouseInputEvent): 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.button === 0 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isDollying = false;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isDollying = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDollying) return;\n this.dragScaleRootUC?.doScale(e.position);\n };\n\n onUp = () => {\n this.isDollying = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseScale.type);\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":"MouseScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,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;IAoCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA/C5B,eAAU,GAAG,KAAK,CAAC;QAY3B,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,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,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,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,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,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAKA,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;;AAxDe,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class MouseScale\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseScale\";\n private isDollying = 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: MouseInputEvent): 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.button === 0 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isDollying = false;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isDollying = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDollying) return;\n this.dragScaleRootUC?.doScale(e.position);\n };\n\n onUp = () => {\n this.isDollying = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseScale.type);\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"]}