@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
@@ -1 +1 @@
1
- {"version":3,"file":"releaseLabelDropAnswerItemScreen.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAAsD;AACtD,qFAAsF;AACtF,0DAGqC;AACrC,+EAAgF;AAChF,6DAA8D;AAC9D,sEAAuE;AACvE,yFAAsF;AACtF,qDAAuE;AAEvE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IAEvC,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,IAAA,iCAAiB,EAAC,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAA,6CAAuB,EAAC,UAAU,CAAC,CAAC;IAEnD,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,IAAA,iDAAyB,EACjD,UAAU,CACX,CAAC,eAAe,CAAC,eAAe,CAAC,qBAAc,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,IAAA,mEAAgC,EAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,qBAAc,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,IAAA,2BAAgB,EACnC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CACvC,CAAC;QACF,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,gDAAiC,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAA,oCAAyB,EAAC,EAAE,CAAC,CAAC;QACnD,IAAA,yCAAqB,EAAC,EAAE,CAAC,CAAC;QAC1B,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACxC,YAAY,CAAC,QAAQ,GAAG,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,IAAI,cAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,IAAI,cAAO,CAChC,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,EACtC,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CACvC,CAAC;QAEF,IAAA,mEAAgC,EAAC,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":";;AAAA,sCAAgD;AAChD,sCAAsD;AACtD,qFAAsF;AACtF,0DAGqC;AACrC,+EAAgF;AAChF,6DAA8D;AAC9D,sEAAuE;AACvE,yFAAsF;AACtF,qDAAuE;AAEvE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IAEvC,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,IAAA,iCAAiB,EAAC,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAA,6CAAuB,EAAC,UAAU,CAAC,CAAC;IAEnD,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,IAAA,iDAAyB,EAAC,UAAU,CAAC,CAAC;IAChE,iBAAiB,CAAC,eAAe,GAAG,IAAI;SACrC,EAAE,EAAE;SACJ,eAAe,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAE7C,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,IAAA,mEAAgC,EAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,qBAAc,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,IAAA,2BAAgB,EACnC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CACvC,CAAC;QACF,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,gDAAiC,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAA,oCAAyB,EAAC,EAAE,CAAC,CAAC;QACnD,IAAA,yCAAqB,EAAC,EAAE,CAAC,CAAC;QAC1B,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACxC,YAAY,CAAC,QAAQ,GAAG,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,IAAI,cAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,IAAI,cAAO,CAChC,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,EACtC,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CACvC,CAAC;QAEF,IAAA,mEAAgC,EAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAC5D,cAAc,CACf,CAAC;IACJ,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(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"]}
@@ -16,6 +16,7 @@ function makeTestRig() {
16
16
  const mockPick = jest.fn().mockReturnValue({ appObjectID: "hideableObj" });
17
17
  mockRayPick.sceneRayPick = mockPick;
18
18
  const mockPixelToRay = (0, Mocks_1.makeMockPixelToSceneRayUC)(appObjects);
19
+ mockPixelToRay.pixelToSceneRay = jest.fn();
19
20
  const uc = (0, ToggleLabelDropTargetUC_1.makeToggleLabelDropTargetUC)(labelDropAO);
20
21
  return {
21
22
  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":";;;AAwBA,8CAEC;AA1BD,sCAA6D;AAC7D,sCAAsC;AACtC,2CAAgD;AAChD,2DAI+B;AAE/B,yEAAsE;AACtE,2EAAwE;AAExE,MAAsB,aACpB,SAAQ,0BAAmB;;AAD7B,sCAUC;AANQ,kBAAI,GAAG,2BAA2B,CAAC;AAQ5C,SAAgB,iBAAiB,CAAC,SAAoB;IACpD,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,gBAAiB,SAAQ,aAAa;IAG1C,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,2CAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,yCAAmB,CAAC,IAAI,CACzB,CAAC;IACJ,CAAC;IA0CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QAvD/B,cAAS,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QAc5C,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB;gBAAE,OAAO;YAEvC,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAC3B,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;gBAAE,OAAO;YAC7B,IAAI,CAAC,IAAI,CAAC,oBAAoB;gBAAE,OAAO;YAEvC,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC;QAEF,eAAU,GAAG,CAAC,CAAkB,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAC3B,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;gBAAE,OAAO;YAC7B,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAAE,OAAO;YACnC,IAAI,CAAC,IAAI,CAAC,oBAAoB;gBAAE,OAAO;YAEvC,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;QAC1C,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,kCAAgB,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;CACF","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":"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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"]}
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"]}
@@ -8,11 +8,10 @@ class MockMouseInput extends MouseInput_1.MouseInputEntity {
8
8
  }
9
9
  constructor(appObject) {
10
10
  super(appObject, MouseInput_1.MouseInputEntity.type);
11
- this.setEventElement = jest.fn();
12
- this.clearInputElement = jest.fn();
13
- this.registerController = jest.fn();
14
- this.removeController = jest.fn();
15
- this.isKeyPressed = jest.fn();
11
+ this.setEventElement = (_eventElement) => { };
12
+ this.clearInputElement = () => { };
13
+ this.registerController = (_controller) => { };
14
+ this.removeController = (_controller) => { };
16
15
  }
17
16
  }
18
17
  exports.MockMouseInput = MockMouseInput;
@@ -1 +1 @@
1
- {"version":3,"file":"MockMouseInput.js","sourceRoot":"","sources":["../../../../src/MouseInput/Mocks/MockMouseInput.ts"],"names":[],"mappings":";;;AACA,uDAA0D;AAE1D,MAAa,cAAe,SAAQ,6BAAgB;IAClD,IAAI,YAAY;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,6BAAgB,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;AAbD,wCAaC","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,uDAA6E;AAE7E,MAAa,cAAe,SAAQ,6BAAgB;IAClD,IAAI,YAAY;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAMD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,6BAAgB,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;AAZD,wCAYC","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,mDAAgC","sourcesContent":["export * from \"./MockMouseInput\"\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/MouseInput/Mocks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC","sourcesContent":["export * from \"./MockMouseInput\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/MouseInput/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B;AAC5B,0CAAuB","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,6CAA2B;AAC3B,8CAA4B;AAC5B,0CAAwB","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,sCAA6D;AAC7D,oEAAiE;AACjE,qEAI8C;AAC9C,6EAA0E;AAC1E,6EAA0E;AAE1E,MAAa,iBACX,SAAQ,0BAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,6BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,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;;AA3CH,8CA4CC;AAxCQ,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,sCAA6D;AAC7D,oEAAiE;AACjE,qEAI8C;AAC9C,6EAA0E;AAC1E,6EAA0E;AAE1E,MAAa,iBACX,SAAQ,0BAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,6BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,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;;AA3CH,8CA4CC;AAxCQ,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,sCAA6D;AAC7D,mEAG0C;AAC1C,6EAA0E;AAE1E,MAAa,kBACX,SAAQ,0BAAmB;IAI3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,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;;AA1BH,gDA2BC;AAvBiB,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,sCAA6D;AAC7D,mEAG0C;AAC1C,6EAA0E;AAE1E,MAAa,kBACX,SAAQ,0BAAmB;IAI3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,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;;AA1BH,gDA2BC;AAvBiB,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,sCAA6D;AAC7D,oEAAiE;AACjE,0EAImD;AACnD,6EAA0E;AAC1E,6EAA0E;AAE1E,MAAa,iBACX,SAAQ,0BAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,6BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,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;;AAvCH,8CAwCC;AApCQ,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,sCAA6D;AAC7D,oEAAiE;AACjE,0EAImD;AACnD,6EAA0E;AAC1E,6EAA0E;AAE1E,MAAa,iBACX,SAAQ,0BAAmB;IAK3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,6BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,CAAC,IAAI,CAC3B,EAAE,YAAY,CAAC;IAClB,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,6CAAqB,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;;AAvCH,8CAwCC;AApCQ,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"]}
@@ -29,6 +29,7 @@ function makeTestRig() {
29
29
  const mockPick = jest.fn().mockReturnValue(mockPickResult);
30
30
  mockRayPick.sceneRayPick = mockPick;
31
31
  const mockPixelToRay = (0, Mocks_1.makeMockPixelToSceneRayUC)(appObjects);
32
+ mockPixelToRay.pixelToSceneRay = jest.fn();
32
33
  const uc = (0, TrySelectObjectPickUC_1.makeTrySelectObjectPickUC)(appObjects.getOrCreate("ObjectPick"));
33
34
  return {
34
35
  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"]}
@@ -21,6 +21,7 @@ function makeTestRig() {
21
21
  const mockPick = jest.fn().mockReturnValue(mockPickResult);
22
22
  mockRayPick.sceneRayPick = mockPick;
23
23
  const mockPixelToRay = (0, Babylon_1.makeMockPixelToSceneRayUC)(appObjects);
24
+ mockPixelToRay.pixelToSceneRay = jest.fn();
24
25
  const objectPick = (0, ObjectPickEntity_1.makeObjectPickEntity)(appObjects.getOrCreate("ObjectPick"));
25
26
  const sceneObject = appObjects.getOrCreate("parent");
26
27
  const uc = (0, TrySubmitObjectPickUC_1.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,sCAA6D;AAC7D,iDAI0B;AAC1B,iFAAgF;AAEhF,MAAa,iBACX,SAAQ,0BAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yDAA4B,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,6BAAgB,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;;AAnCH,8CAoCC;AAhCiB,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,sCAA6D;AAC7D,iDAI0B;AAC1B,iFAAgF;AAEhF,MAAa,iBACX,SAAQ,0BAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yDAA4B,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,6BAAgB,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;;AAnCH,8CAoCC;AAhCiB,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,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,yDAAwD;AAExD,MAAa,UACX,SAAQ,0BAAmB;IAM3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,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,iBAAS,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,6BAAgB,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;;AAlEH,gCAmEC;AA/DiB,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,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,yDAAwD;AAExD,MAAa,UACX,SAAQ,0BAAmB;IAM3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,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,iBAAS,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,6BAAgB,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;;AAlEH,gCAmEC;AA/DiB,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,sCAA6D;AAC7D,iDAI0B;AAC1B,+FAA8F;AAE9F,MAAa,SACX,SAAQ,0BAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,uEAAmC,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,6BAAgB,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;;AAnCH,8BAoCC;AAhCiB,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,sCAA6D;AAC7D,iDAI0B;AAC1B,+FAA8F;AAE9F,MAAa,SACX,SAAQ,0BAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,uEAAmC,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,6BAAgB,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;;AAnCH,8BAoCC;AAhCiB,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,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,iEAAgE;AAEhE,MAAa,UACX,SAAQ,0BAAmB;IAM3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yCAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,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,iBAAS,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,6BAAgB,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;;AA5DH,gCA6DC;AAzDiB,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,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,iEAAgE;AAEhE,MAAa,UACX,SAAQ,0BAAmB;IAM3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yCAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,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,iBAAS,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,6BAAgB,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;;AA5DH,gCA6DC;AAzDiB,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 +1 @@
1
- {"version":3,"file":"ScaleSceneRootSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/ScaleSceneRootSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,uEAAoE;AAEpE,MAAa,gBACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IAmCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAlClC,cAAS,GAAG,KAAK,CAAC;QAE1B,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AApDH,4CAqDC;AAjDiB,qBAAI,GAAG,kBAAkB,AAArB,CAAsB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { ScaleSceneRootWithRay } from \"../UC/ScaleSceneRootWithRay\";\n\nexport class ScaleSceneRootSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"ScaleSceneRootSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get scaleSceneRootWithRay() {\n return this.getCachedLocalComponent<ScaleSceneRootWithRay>(\n ScaleSceneRootWithRay.type\n );\n }\n\n private isScaling = false;\n\n allow = (button: number): boolean => {\n if (button === 1) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isScaling = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.initializeScale(pointerRay, rayStart);\n this.isScaling = true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n if (!this.isScaling) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.doScale(pointerRay, rayStart);\n };\n\n onButtonUp = () => {\n this.isScaling = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ScaleSceneRootSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"ScaleSceneRootSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/ScaleSceneRootSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,uEAAoE;AAEpE,MAAa,gBACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IAmCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAlClC,cAAS,GAAG,KAAK,CAAC;QAE1B,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AApDH,4CAqDC;AAjDiB,qBAAI,GAAG,kBAAkB,AAArB,CAAsB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { ScaleSceneRootWithRay } from \"../UC/ScaleSceneRootWithRay\";\n\nexport class ScaleSceneRootSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"ScaleSceneRootSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get scaleSceneRootWithRay() {\n return this.getCachedLocalComponent<ScaleSceneRootWithRay>(\n ScaleSceneRootWithRay.type,\n );\n }\n\n private isScaling = false;\n\n allow = (button: number): boolean => {\n if (button === 1) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isScaling = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.initializeScale(pointerRay, rayStart);\n this.isScaling = true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n if (!this.isScaling) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.doScale(pointerRay, rayStart);\n };\n\n onButtonUp = () => {\n this.isScaling = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ScaleSceneRootSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SceneRootMoveSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/SceneRootMoveSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,sFAAmF;AAEnF,MAAa,eACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IA+BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QA9BjC,aAAQ,GAAG,KAAK,CAAC;QAEzB,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC3C,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AAhDH,0CAiDC;AA7CiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { StylusMoveTransformUC } from \"../../Transform3D/UC/StylusMoveTransformUC\";\n\nexport class SceneRootMoveSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"SceneRootMoveSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get stylusRootMovementUC() {\n return this.getCachedLocalComponent<StylusMoveTransformUC>(\n StylusMoveTransformUC.type\n );\n }\n\n private isMoving = false;\n\n allow = (button: number): boolean => {\n if (button === 2) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isMoving = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n this.stylusRootMovementUC?.initialize();\n this.isMoving = true;\n };\n\n onButtonUp = () => {\n this.isMoving = true;\n\n if (!this.stylus) return;\n\n this.stylusRootMovementUC?.stop();\n };\n\n onStylusMove = () => {\n if (!this.stylus || !this.isMoving) return;\n this.stylusRootMovementUC?.move();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, SceneRootMoveSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"SceneRootMoveSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/SceneRootMoveSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,sFAAmF;AAEnF,MAAa,eACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IA+BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QA9BjC,aAAQ,GAAG,KAAK,CAAC;QAEzB,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC3C,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AAhDH,0CAiDC;AA7CiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { StylusMoveTransformUC } from \"../../Transform3D/UC/StylusMoveTransformUC\";\n\nexport class SceneRootMoveSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"SceneRootMoveSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get stylusRootMovementUC() {\n return this.getCachedLocalComponent<StylusMoveTransformUC>(\n StylusMoveTransformUC.type,\n );\n }\n\n private isMoving = false;\n\n allow = (button: number): boolean => {\n if (button === 2) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isMoving = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n this.stylusRootMovementUC?.initialize();\n this.isMoving = true;\n };\n\n onButtonUp = () => {\n this.isMoving = true;\n\n if (!this.stylus) return;\n\n this.stylusRootMovementUC?.stop();\n };\n\n onStylusMove = () => {\n if (!this.stylus || !this.isMoving) return;\n this.stylusRootMovementUC?.move();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, SceneRootMoveSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchOrbit.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,uCAAwD;AACxD,2DAI+B;AAC/B,yDAAwD;AAExD,MAAa,UACX,SAAQ,0BAAmB;IAQ3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA1D5B,eAAU,GAAG,KAAK,CAAC;QAEpB,6BAAwB,GAAG,EAAE,CAAC;QAYrC,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,iBAAS,CAAC,MAAM,CAAC;YAE/D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;QACrC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAxEH,gCAyEC;AArEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class TouchOrbit\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchOrbit\";\n private isOrbiting = false;\n\n public ORBIT_FINGER_DISTANCE_PX = 80;\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: TouchInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && orbitToolIsActive) {\n return true;\n } else if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position\n ).magnitued;\n\n if (dist < this.ORBIT_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.isOrbiting = false;\n this.orbitSceneRoot?.cancelOrbit();\n return;\n }\n\n this.orbitSceneRoot?.initializeOrbit(e.touchCenter);\n this.isOrbiting = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isOrbiting) return;\n this.orbitSceneRoot?.doOrbit(e.touchCenter);\n };\n\n onTouchEnd = () => {\n this.isOrbiting = false;\n this.orbitSceneRoot?.finishOrbit();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchOrbit.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":"TouchOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchOrbit.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,uCAAwD;AACxD,2DAI+B;AAC/B,yDAAwD;AAExD,MAAa,UACX,SAAQ,0BAAmB;IAQ3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA1D5B,eAAU,GAAG,KAAK,CAAC;QAEpB,6BAAwB,GAAG,EAAE,CAAC;QAYrC,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,iBAAS,CAAC,MAAM,CAAC;YAE/D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;QACrC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAxEH,gCAyEC;AArEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class TouchOrbit\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchOrbit\";\n private isOrbiting = false;\n\n public ORBIT_FINGER_DISTANCE_PX = 80;\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: TouchInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && orbitToolIsActive) {\n return true;\n } else if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position,\n ).magnitued;\n\n if (dist < this.ORBIT_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.isOrbiting = false;\n this.orbitSceneRoot?.cancelOrbit();\n return;\n }\n\n this.orbitSceneRoot?.initializeOrbit(e.touchCenter);\n this.isOrbiting = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isOrbiting) return;\n this.orbitSceneRoot?.doOrbit(e.touchCenter);\n };\n\n onTouchEnd = () => {\n this.isOrbiting = false;\n this.orbitSceneRoot?.finishOrbit();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchOrbit.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"]}