@vived/app 5.0.6 → 5.0.8

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 (368) hide show
  1. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js +3 -1
  2. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  3. package/dist/cjs/Babylon/UC/SceneRayPickUC.test.js +1 -0
  4. package/dist/cjs/Babylon/UC/SceneRayPickUC.test.js.map +1 -1
  5. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js +8 -6
  6. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  7. package/dist/cjs/BaseApp/UC/UndoRedoEditSlideText.test.js +10 -6
  8. package/dist/cjs/BaseApp/UC/UndoRedoEditSlideText.test.js.map +1 -1
  9. package/dist/cjs/BaseApp/UC/UpdateContentSizeUC.test.js +8 -6
  10. package/dist/cjs/BaseApp/UC/UpdateContentSizeUC.test.js.map +1 -1
  11. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js +7 -4
  12. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  13. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUC.test.js +7 -4
  14. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUC.test.js.map +1 -1
  15. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js +13 -7
  16. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js.map +1 -1
  17. package/dist/cjs/Callouts/UC/DeleteCallout.test.js +5 -2
  18. package/dist/cjs/Callouts/UC/DeleteCallout.test.js.map +1 -1
  19. package/dist/cjs/Callouts/UC/DeleteCalloutUndoRedo.test.js +9 -7
  20. package/dist/cjs/Callouts/UC/DeleteCalloutUndoRedo.test.js.map +1 -1
  21. package/dist/cjs/Callouts/UC/SetCalloutSizeUC.test.js +7 -5
  22. package/dist/cjs/Callouts/UC/SetCalloutSizeUC.test.js.map +1 -1
  23. package/dist/cjs/Callouts/UC/SetCalloutSizeUndoRedo.test.js +10 -6
  24. package/dist/cjs/Callouts/UC/SetCalloutSizeUndoRedo.test.js.map +1 -1
  25. package/dist/cjs/Callouts/UC/TryAddCallout.test.js +5 -4
  26. package/dist/cjs/Callouts/UC/TryAddCallout.test.js.map +1 -1
  27. package/dist/cjs/Callouts/UC/TryPanLabelUC.test.js +3 -2
  28. package/dist/cjs/Callouts/UC/TryPanLabelUC.test.js.map +1 -1
  29. package/dist/cjs/Challenge/UCs/SetChallengeUC.test.js +11 -9
  30. package/dist/cjs/Challenge/UCs/SetChallengeUC.test.js.map +1 -1
  31. package/dist/cjs/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js +13 -7
  32. package/dist/cjs/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js.map +1 -1
  33. package/dist/cjs/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js +7 -4
  34. package/dist/cjs/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js.map +1 -1
  35. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js +5 -2
  36. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  37. package/dist/cjs/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js +10 -8
  38. package/dist/cjs/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js.map +1 -1
  39. package/dist/cjs/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js +9 -7
  40. package/dist/cjs/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js.map +1 -1
  41. package/dist/cjs/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js +7 -5
  42. package/dist/cjs/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js.map +1 -1
  43. package/dist/cjs/Dispatcher/Mocks/MockDispatchStateChange.js +3 -3
  44. package/dist/cjs/Dispatcher/Mocks/MockDispatchStateChange.js.map +1 -1
  45. package/dist/cjs/Environment/UCs/SetEnvironmentIntensityUC.test.js +11 -9
  46. package/dist/cjs/Environment/UCs/SetEnvironmentIntensityUC.test.js.map +1 -1
  47. package/dist/cjs/Environment/UCs/SetTexturalEnvironmentUC.test.js +9 -7
  48. package/dist/cjs/Environment/UCs/SetTexturalEnvironmentUC.test.js.map +1 -1
  49. package/dist/cjs/Hideable/UCs/HideUC.test.js +10 -8
  50. package/dist/cjs/Hideable/UCs/HideUC.test.js.map +1 -1
  51. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js +7 -6
  52. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  53. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js +12 -11
  54. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  55. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js +9 -4
  56. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  57. package/dist/cjs/Label/UC/ClearCustomLabelUndoRedo.test.js +10 -6
  58. package/dist/cjs/Label/UC/ClearCustomLabelUndoRedo.test.js.map +1 -1
  59. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js +9 -4
  60. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  61. package/dist/cjs/Label/UC/SetCustomLabelUndoRedo.test.js +10 -6
  62. package/dist/cjs/Label/UC/SetCustomLabelUndoRedo.test.js.map +1 -1
  63. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js +2 -1
  64. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js.map +1 -1
  65. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js +2 -1
  66. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  67. package/dist/cjs/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js +9 -7
  68. package/dist/cjs/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js.map +1 -1
  69. package/dist/cjs/LabelDrop/UseCases/DeleteLabelDropUC.test.js +9 -7
  70. package/dist/cjs/LabelDrop/UseCases/DeleteLabelDropUC.test.js.map +1 -1
  71. package/dist/cjs/LabelDrop/UseCases/DragLabelDropUC.test.js +8 -6
  72. package/dist/cjs/LabelDrop/UseCases/DragLabelDropUC.test.js.map +1 -1
  73. package/dist/cjs/LabelDrop/UseCases/DragLabelDropWorldUC.test.js +17 -17
  74. package/dist/cjs/LabelDrop/UseCases/DragLabelDropWorldUC.test.js.map +1 -1
  75. package/dist/cjs/LabelDrop/UseCases/EditLabelDropUC.test.js +20 -18
  76. package/dist/cjs/LabelDrop/UseCases/EditLabelDropUC.test.js.map +1 -1
  77. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js +4 -2
  78. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  79. package/dist/cjs/Landmarks/UseCases/AddLandmarkUndoRedo.test.js +10 -5
  80. package/dist/cjs/Landmarks/UseCases/AddLandmarkUndoRedo.test.js.map +1 -1
  81. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUC.test.js +5 -3
  82. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUC.test.js.map +1 -1
  83. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js +11 -6
  84. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js.map +1 -1
  85. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUC.test.js +10 -5
  86. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUC.test.js.map +1 -1
  87. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js +10 -5
  88. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js.map +1 -1
  89. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUC.test.js +7 -5
  90. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUC.test.js.map +1 -1
  91. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js +10 -6
  92. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js.map +1 -1
  93. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +29 -15
  94. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  95. package/dist/cjs/Landmarks/UseCases/TryPreviewLandmarkUC.test.js +4 -3
  96. package/dist/cjs/Landmarks/UseCases/TryPreviewLandmarkUC.test.js.map +1 -1
  97. package/dist/cjs/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js +10 -8
  98. package/dist/cjs/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js.map +1 -1
  99. package/dist/cjs/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js +10 -8
  100. package/dist/cjs/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js.map +1 -1
  101. package/dist/cjs/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js +10 -8
  102. package/dist/cjs/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js.map +1 -1
  103. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js +18 -15
  104. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  105. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +3 -1
  106. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  107. package/dist/cjs/OverlayColor/UC/SetOverlayColorUC.test.js +9 -4
  108. package/dist/cjs/OverlayColor/UC/SetOverlayColorUC.test.js.map +1 -1
  109. package/dist/cjs/OverlayColor/UC/SetOverlayColorUndoRedo.test.js +10 -6
  110. package/dist/cjs/OverlayColor/UC/SetOverlayColorUndoRedo.test.js.map +1 -1
  111. package/dist/cjs/Question/UC/AddAnswerUndoRedo.test.js +16 -6
  112. package/dist/cjs/Question/UC/AddAnswerUndoRedo.test.js.map +1 -1
  113. package/dist/cjs/Question/UC/AddQuestionAnswerUC.test.js +14 -5
  114. package/dist/cjs/Question/UC/AddQuestionAnswerUC.test.js.map +1 -1
  115. package/dist/cjs/Question/UC/DeleteAnswerUndoRedo.test.js +17 -6
  116. package/dist/cjs/Question/UC/DeleteAnswerUndoRedo.test.js.map +1 -1
  117. package/dist/cjs/Question/UC/DeleteQuestionAnswerUC.test.js +9 -6
  118. package/dist/cjs/Question/UC/DeleteQuestionAnswerUC.test.js.map +1 -1
  119. package/dist/cjs/Question/UC/SetAnswerFeedbackUC.test.js +9 -6
  120. package/dist/cjs/Question/UC/SetAnswerFeedbackUC.test.js.map +1 -1
  121. package/dist/cjs/Question/UC/SetAnswerFeedbackUndoRedo.test.js +10 -6
  122. package/dist/cjs/Question/UC/SetAnswerFeedbackUndoRedo.test.js.map +1 -1
  123. package/dist/cjs/Question/UC/SetAnswerTextUC.test.js +9 -6
  124. package/dist/cjs/Question/UC/SetAnswerTextUC.test.js.map +1 -1
  125. package/dist/cjs/Question/UC/SetAnswerTextUndoRedo.test.js +10 -6
  126. package/dist/cjs/Question/UC/SetAnswerTextUndoRedo.test.js.map +1 -1
  127. package/dist/cjs/Question/UC/ToggleIsCorrectUndoRedo.test.js +10 -6
  128. package/dist/cjs/Question/UC/ToggleIsCorrectUndoRedo.test.js.map +1 -1
  129. package/dist/cjs/Question/UC/ToggleQuestionAnswerIsCorrect.test.js +7 -4
  130. package/dist/cjs/Question/UC/ToggleQuestionAnswerIsCorrect.test.js.map +1 -1
  131. package/dist/cjs/RequestHandler/UC/SetAppStateUC.test.js +2 -0
  132. package/dist/cjs/RequestHandler/UC/SetAppStateUC.test.js.map +1 -1
  133. package/dist/cjs/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js +7 -4
  134. package/dist/cjs/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js.map +1 -1
  135. package/dist/cjs/SceneRoot/UC/DragScaleSceneRoot.test.js +9 -6
  136. package/dist/cjs/SceneRoot/UC/DragScaleSceneRoot.test.js.map +1 -1
  137. package/dist/cjs/SceneRoot/UC/OrbitSceneRoot.test.js +16 -7
  138. package/dist/cjs/SceneRoot/UC/OrbitSceneRoot.test.js.map +1 -1
  139. package/dist/cjs/SceneRoot/UC/PanSceneRoot.test.js +9 -6
  140. package/dist/cjs/SceneRoot/UC/PanSceneRoot.test.js.map +1 -1
  141. package/dist/cjs/SceneRoot/UC/PinchSceneRoot.test.js +9 -6
  142. package/dist/cjs/SceneRoot/UC/PinchSceneRoot.test.js.map +1 -1
  143. package/dist/cjs/Selection/UC/HoverAppObjectUC.test.js +3 -3
  144. package/dist/cjs/Selection/UC/HoverAppObjectUC.test.js.map +1 -1
  145. package/dist/cjs/Selection/UC/PressAppObjectUC.test.js +3 -3
  146. package/dist/cjs/Selection/UC/PressAppObjectUC.test.js.map +1 -1
  147. package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js +3 -3
  148. package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
  149. package/dist/cjs/Stick/UCs/MoveTransformWithStickUC.test.js +9 -7
  150. package/dist/cjs/Stick/UCs/MoveTransformWithStickUC.test.js.map +1 -1
  151. package/dist/cjs/Stick/UCs/PanTransformWithStickUC.test.js +13 -11
  152. package/dist/cjs/Stick/UCs/PanTransformWithStickUC.test.js.map +1 -1
  153. package/dist/cjs/Stick/UCs/StickUC.test.js +9 -7
  154. package/dist/cjs/Stick/UCs/StickUC.test.js.map +1 -1
  155. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js +7 -6
  156. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  157. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js +5 -3
  158. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  159. package/dist/cjs/Transform3D/UC/MoveTransformUC.test.js +21 -11
  160. package/dist/cjs/Transform3D/UC/MoveTransformUC.test.js.map +1 -1
  161. package/dist/cjs/Transform3D/UC/MoveTransformUndoRedo.test.js +10 -6
  162. package/dist/cjs/Transform3D/UC/MoveTransformUndoRedo.test.js.map +1 -1
  163. package/dist/cjs/Transform3D/UC/PanTransformUC.test.js +13 -11
  164. package/dist/cjs/Transform3D/UC/PanTransformUC.test.js.map +1 -1
  165. package/dist/cjs/Transform3D/UC/PinchTransform.test.js +7 -5
  166. package/dist/cjs/Transform3D/UC/PinchTransform.test.js.map +1 -1
  167. package/dist/cjs/Transform3D/UC/RayPanScaleTransform.test.js +9 -7
  168. package/dist/cjs/Transform3D/UC/RayPanScaleTransform.test.js.map +1 -1
  169. package/dist/cjs/Transform3D/UC/ScaleTransform.test.js +22 -18
  170. package/dist/cjs/Transform3D/UC/ScaleTransform.test.js.map +1 -1
  171. package/dist/cjs/Transform3D/UC/StylusMoveTransformUC.test.js +11 -6
  172. package/dist/cjs/Transform3D/UC/StylusMoveTransformUC.test.js.map +1 -1
  173. package/dist/cjs/Transform3D/UC/TryMoveTransformUC.test.js +3 -1
  174. package/dist/cjs/Transform3D/UC/TryMoveTransformUC.test.js.map +1 -1
  175. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js +25 -24
  176. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  177. package/dist/cjs/Transparency/UCs/MakeTransparentUC.test.js +10 -8
  178. package/dist/cjs/Transparency/UCs/MakeTransparentUC.test.js.map +1 -1
  179. package/dist/cjs/UndoRedo/Mocks/MockUndoRedo.js +4 -4
  180. package/dist/cjs/UndoRedo/Mocks/MockUndoRedo.js.map +1 -1
  181. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js +3 -1
  182. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  183. package/dist/esm/Babylon/UC/SceneRayPickUC.test.js +1 -0
  184. package/dist/esm/Babylon/UC/SceneRayPickUC.test.js.map +1 -1
  185. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js +9 -7
  186. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  187. package/dist/esm/BaseApp/UC/UndoRedoEditSlideText.test.js +10 -6
  188. package/dist/esm/BaseApp/UC/UndoRedoEditSlideText.test.js.map +1 -1
  189. package/dist/esm/BaseApp/UC/UpdateContentSizeUC.test.js +8 -6
  190. package/dist/esm/BaseApp/UC/UpdateContentSizeUC.test.js.map +1 -1
  191. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js +7 -4
  192. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  193. package/dist/esm/Callouts/UC/DeleteAllCalloutsUC.test.js +7 -4
  194. package/dist/esm/Callouts/UC/DeleteAllCalloutsUC.test.js.map +1 -1
  195. package/dist/esm/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js +13 -7
  196. package/dist/esm/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js.map +1 -1
  197. package/dist/esm/Callouts/UC/DeleteCallout.test.js +5 -2
  198. package/dist/esm/Callouts/UC/DeleteCallout.test.js.map +1 -1
  199. package/dist/esm/Callouts/UC/DeleteCalloutUndoRedo.test.js +9 -7
  200. package/dist/esm/Callouts/UC/DeleteCalloutUndoRedo.test.js.map +1 -1
  201. package/dist/esm/Callouts/UC/SetCalloutSizeUC.test.js +7 -5
  202. package/dist/esm/Callouts/UC/SetCalloutSizeUC.test.js.map +1 -1
  203. package/dist/esm/Callouts/UC/SetCalloutSizeUndoRedo.test.js +10 -6
  204. package/dist/esm/Callouts/UC/SetCalloutSizeUndoRedo.test.js.map +1 -1
  205. package/dist/esm/Callouts/UC/TryAddCallout.test.js +5 -4
  206. package/dist/esm/Callouts/UC/TryAddCallout.test.js.map +1 -1
  207. package/dist/esm/Callouts/UC/TryPanLabelUC.test.js +3 -2
  208. package/dist/esm/Callouts/UC/TryPanLabelUC.test.js.map +1 -1
  209. package/dist/esm/Challenge/UCs/SetChallengeUC.test.js +11 -9
  210. package/dist/esm/Challenge/UCs/SetChallengeUC.test.js.map +1 -1
  211. package/dist/esm/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js +13 -7
  212. package/dist/esm/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js.map +1 -1
  213. package/dist/esm/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js +7 -4
  214. package/dist/esm/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js.map +1 -1
  215. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js +5 -2
  216. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  217. package/dist/esm/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js +10 -8
  218. package/dist/esm/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js.map +1 -1
  219. package/dist/esm/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js +9 -7
  220. package/dist/esm/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js.map +1 -1
  221. package/dist/esm/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js +7 -5
  222. package/dist/esm/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js.map +1 -1
  223. package/dist/esm/Dispatcher/Mocks/MockDispatchStateChange.js +3 -3
  224. package/dist/esm/Dispatcher/Mocks/MockDispatchStateChange.js.map +1 -1
  225. package/dist/esm/Environment/UCs/SetEnvironmentIntensityUC.test.js +11 -9
  226. package/dist/esm/Environment/UCs/SetEnvironmentIntensityUC.test.js.map +1 -1
  227. package/dist/esm/Environment/UCs/SetTexturalEnvironmentUC.test.js +9 -7
  228. package/dist/esm/Environment/UCs/SetTexturalEnvironmentUC.test.js.map +1 -1
  229. package/dist/esm/Hideable/UCs/HideUC.test.js +10 -8
  230. package/dist/esm/Hideable/UCs/HideUC.test.js.map +1 -1
  231. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js +7 -6
  232. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  233. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js +12 -11
  234. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  235. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js +9 -4
  236. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  237. package/dist/esm/Label/UC/ClearCustomLabelUndoRedo.test.js +10 -6
  238. package/dist/esm/Label/UC/ClearCustomLabelUndoRedo.test.js.map +1 -1
  239. package/dist/esm/Label/UC/SetCustomLabelUC.test.js +9 -4
  240. package/dist/esm/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  241. package/dist/esm/Label/UC/SetCustomLabelUndoRedo.test.js +10 -6
  242. package/dist/esm/Label/UC/SetCustomLabelUndoRedo.test.js.map +1 -1
  243. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js +2 -1
  244. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js.map +1 -1
  245. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js +2 -1
  246. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  247. package/dist/esm/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js +9 -7
  248. package/dist/esm/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js.map +1 -1
  249. package/dist/esm/LabelDrop/UseCases/DeleteLabelDropUC.test.js +9 -7
  250. package/dist/esm/LabelDrop/UseCases/DeleteLabelDropUC.test.js.map +1 -1
  251. package/dist/esm/LabelDrop/UseCases/DragLabelDropUC.test.js +8 -6
  252. package/dist/esm/LabelDrop/UseCases/DragLabelDropUC.test.js.map +1 -1
  253. package/dist/esm/LabelDrop/UseCases/DragLabelDropWorldUC.test.js +17 -17
  254. package/dist/esm/LabelDrop/UseCases/DragLabelDropWorldUC.test.js.map +1 -1
  255. package/dist/esm/LabelDrop/UseCases/EditLabelDropUC.test.js +20 -18
  256. package/dist/esm/LabelDrop/UseCases/EditLabelDropUC.test.js.map +1 -1
  257. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js +4 -2
  258. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  259. package/dist/esm/Landmarks/UseCases/AddLandmarkUndoRedo.test.js +10 -5
  260. package/dist/esm/Landmarks/UseCases/AddLandmarkUndoRedo.test.js.map +1 -1
  261. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUC.test.js +5 -3
  262. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUC.test.js.map +1 -1
  263. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js +11 -6
  264. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js.map +1 -1
  265. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUC.test.js +10 -5
  266. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUC.test.js.map +1 -1
  267. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js +10 -5
  268. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js.map +1 -1
  269. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUC.test.js +7 -5
  270. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUC.test.js.map +1 -1
  271. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js +10 -6
  272. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js.map +1 -1
  273. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +29 -15
  274. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  275. package/dist/esm/Landmarks/UseCases/TryPreviewLandmarkUC.test.js +4 -3
  276. package/dist/esm/Landmarks/UseCases/TryPreviewLandmarkUC.test.js.map +1 -1
  277. package/dist/esm/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js +10 -8
  278. package/dist/esm/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js.map +1 -1
  279. package/dist/esm/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js +10 -8
  280. package/dist/esm/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js.map +1 -1
  281. package/dist/esm/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js +10 -8
  282. package/dist/esm/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js.map +1 -1
  283. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js +18 -15
  284. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  285. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +3 -1
  286. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  287. package/dist/esm/OverlayColor/UC/SetOverlayColorUC.test.js +9 -4
  288. package/dist/esm/OverlayColor/UC/SetOverlayColorUC.test.js.map +1 -1
  289. package/dist/esm/OverlayColor/UC/SetOverlayColorUndoRedo.test.js +10 -6
  290. package/dist/esm/OverlayColor/UC/SetOverlayColorUndoRedo.test.js.map +1 -1
  291. package/dist/esm/Question/UC/AddAnswerUndoRedo.test.js +16 -6
  292. package/dist/esm/Question/UC/AddAnswerUndoRedo.test.js.map +1 -1
  293. package/dist/esm/Question/UC/AddQuestionAnswerUC.test.js +14 -5
  294. package/dist/esm/Question/UC/AddQuestionAnswerUC.test.js.map +1 -1
  295. package/dist/esm/Question/UC/DeleteAnswerUndoRedo.test.js +17 -6
  296. package/dist/esm/Question/UC/DeleteAnswerUndoRedo.test.js.map +1 -1
  297. package/dist/esm/Question/UC/DeleteQuestionAnswerUC.test.js +9 -6
  298. package/dist/esm/Question/UC/DeleteQuestionAnswerUC.test.js.map +1 -1
  299. package/dist/esm/Question/UC/SetAnswerFeedbackUC.test.js +9 -6
  300. package/dist/esm/Question/UC/SetAnswerFeedbackUC.test.js.map +1 -1
  301. package/dist/esm/Question/UC/SetAnswerFeedbackUndoRedo.test.js +10 -6
  302. package/dist/esm/Question/UC/SetAnswerFeedbackUndoRedo.test.js.map +1 -1
  303. package/dist/esm/Question/UC/SetAnswerTextUC.test.js +9 -6
  304. package/dist/esm/Question/UC/SetAnswerTextUC.test.js.map +1 -1
  305. package/dist/esm/Question/UC/SetAnswerTextUndoRedo.test.js +10 -6
  306. package/dist/esm/Question/UC/SetAnswerTextUndoRedo.test.js.map +1 -1
  307. package/dist/esm/Question/UC/ToggleIsCorrectUndoRedo.test.js +10 -6
  308. package/dist/esm/Question/UC/ToggleIsCorrectUndoRedo.test.js.map +1 -1
  309. package/dist/esm/Question/UC/ToggleQuestionAnswerIsCorrect.test.js +7 -4
  310. package/dist/esm/Question/UC/ToggleQuestionAnswerIsCorrect.test.js.map +1 -1
  311. package/dist/esm/RequestHandler/UC/SetAppStateUC.test.js +2 -0
  312. package/dist/esm/RequestHandler/UC/SetAppStateUC.test.js.map +1 -1
  313. package/dist/esm/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js +7 -4
  314. package/dist/esm/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js.map +1 -1
  315. package/dist/esm/SceneRoot/UC/DragScaleSceneRoot.test.js +9 -6
  316. package/dist/esm/SceneRoot/UC/DragScaleSceneRoot.test.js.map +1 -1
  317. package/dist/esm/SceneRoot/UC/OrbitSceneRoot.test.js +16 -7
  318. package/dist/esm/SceneRoot/UC/OrbitSceneRoot.test.js.map +1 -1
  319. package/dist/esm/SceneRoot/UC/PanSceneRoot.test.js +9 -6
  320. package/dist/esm/SceneRoot/UC/PanSceneRoot.test.js.map +1 -1
  321. package/dist/esm/SceneRoot/UC/PinchSceneRoot.test.js +9 -6
  322. package/dist/esm/SceneRoot/UC/PinchSceneRoot.test.js.map +1 -1
  323. package/dist/esm/Selection/UC/HoverAppObjectUC.test.js +3 -3
  324. package/dist/esm/Selection/UC/HoverAppObjectUC.test.js.map +1 -1
  325. package/dist/esm/Selection/UC/PressAppObjectUC.test.js +3 -3
  326. package/dist/esm/Selection/UC/PressAppObjectUC.test.js.map +1 -1
  327. package/dist/esm/Selection/UC/SelectAppObjectUC.test.js +3 -3
  328. package/dist/esm/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
  329. package/dist/esm/Stick/UCs/MoveTransformWithStickUC.test.js +9 -7
  330. package/dist/esm/Stick/UCs/MoveTransformWithStickUC.test.js.map +1 -1
  331. package/dist/esm/Stick/UCs/PanTransformWithStickUC.test.js +13 -11
  332. package/dist/esm/Stick/UCs/PanTransformWithStickUC.test.js.map +1 -1
  333. package/dist/esm/Stick/UCs/StickUC.test.js +9 -7
  334. package/dist/esm/Stick/UCs/StickUC.test.js.map +1 -1
  335. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js +7 -6
  336. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  337. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js +5 -3
  338. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  339. package/dist/esm/Transform3D/UC/MoveTransformUC.test.js +21 -11
  340. package/dist/esm/Transform3D/UC/MoveTransformUC.test.js.map +1 -1
  341. package/dist/esm/Transform3D/UC/MoveTransformUndoRedo.test.js +10 -6
  342. package/dist/esm/Transform3D/UC/MoveTransformUndoRedo.test.js.map +1 -1
  343. package/dist/esm/Transform3D/UC/PanTransformUC.test.js +13 -11
  344. package/dist/esm/Transform3D/UC/PanTransformUC.test.js.map +1 -1
  345. package/dist/esm/Transform3D/UC/PinchTransform.test.js +7 -5
  346. package/dist/esm/Transform3D/UC/PinchTransform.test.js.map +1 -1
  347. package/dist/esm/Transform3D/UC/RayPanScaleTransform.test.js +9 -7
  348. package/dist/esm/Transform3D/UC/RayPanScaleTransform.test.js.map +1 -1
  349. package/dist/esm/Transform3D/UC/ScaleTransform.test.js +22 -18
  350. package/dist/esm/Transform3D/UC/ScaleTransform.test.js.map +1 -1
  351. package/dist/esm/Transform3D/UC/StylusMoveTransformUC.test.js +11 -6
  352. package/dist/esm/Transform3D/UC/StylusMoveTransformUC.test.js.map +1 -1
  353. package/dist/esm/Transform3D/UC/TryMoveTransformUC.test.js +3 -1
  354. package/dist/esm/Transform3D/UC/TryMoveTransformUC.test.js.map +1 -1
  355. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js +4 -3
  356. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  357. package/dist/esm/Transparency/UCs/MakeTransparentUC.test.js +10 -8
  358. package/dist/esm/Transparency/UCs/MakeTransparentUC.test.js.map +1 -1
  359. package/dist/esm/UndoRedo/Mocks/MockUndoRedo.js +4 -4
  360. package/dist/esm/UndoRedo/Mocks/MockUndoRedo.js.map +1 -1
  361. package/dist/types/Babylon/Mocks/MockSceneRayPickUC.d.ts +1 -1
  362. package/dist/types/Babylon/Mocks/MockSceneRayPickUC.d.ts.map +1 -1
  363. package/dist/types/Dispatcher/Mocks/MockDispatchStateChange.d.ts +3 -3
  364. package/dist/types/Dispatcher/Mocks/MockDispatchStateChange.d.ts.map +1 -1
  365. package/dist/types/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.d.ts.map +1 -1
  366. package/dist/types/UndoRedo/Mocks/MockUndoRedo.d.ts +4 -4
  367. package/dist/types/UndoRedo/Mocks/MockUndoRedo.d.ts.map +1 -1
  368. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"OrbitSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/OrbitSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n Angle,\r\n Matrix,\r\n ParametricLine,\r\n Quaternion,\r\n Vector2,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makeOrbitSceneRootUC, OrbitSceneRootUC } from \"./OrbitSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const orbit = makeOrbitSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = new MockDispatchStateChange(appAO);\r\n\r\n return { orbit, sceneRoot, mockPick, mockDispatch, appObjects };\r\n}\r\n\r\ndescribe(\"Orbit Scene Root Use Case\", () => {\r\n it(\"Rotates about global X when moving the mouse in the y direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(0, 10);\r\n\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n Vector3.Left(),\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.rotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Rotates about local Y when moving the mouse in the X direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.transform.worldRotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Flips the heading angle if the root is flipped upside down\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(100),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.transform.localRotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * -10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n\r\n expect(Quaternion.Close(sceneRoot.rotation, expectFinalQuaterion)).toBe(\r\n true\r\n );\r\n });\r\n\r\n it(\"Orbits around the global origin if there is no pick hit\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const expectedPos = Vector3.Transform(\r\n new Vector3(1, 2, 3),\r\n expectedRotationMatrix\r\n );\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Orbits around the pick point\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const transformedPick = Vector3.Transform(pickPos, expectedRotationMatrix);\r\n const expectedPos = Vector3.Subtract(pickPos, transformedPick);\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Dispatches a state change if the rotaiton has changed since init\", () => {\r\n const { sceneRoot, orbit, mockDispatch } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const finalRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(-45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = finalRotation;\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the rotaiton has not changed\", () => {\r\n const { sceneRoot, orbit, mockDispatch } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { orbit, appObjects } = makeTestRig();\r\n expect(OrbitSceneRootUC.get(appObjects)).toEqual(orbit);\r\n });\r\n\r\n it(\"Quits updating after orbit has been cancelled\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.cancelOrbit();\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"OrbitSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/OrbitSceneRoot.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,KAAK,EACL,MAAM,EACN,cAAc,EACd,UAAU,EACV,OAAO,EACP,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,QAAS,SAAQ,gBAAgB;IAAvC;;QACE,mBAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC7B,CAAC;CAAA;AAED,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACjC,YAAY,CAAC,UAAU,GAAG,cAAc,CAAC;IAEzC,OAAO;QACL,KAAK;QACL,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,CACjD,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;QAErC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhC,MAAM,qBAAqB,GAAG,UAAU,CAAC,aAAa,CACpD,OAAO,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAC1C,CAAC;QACF,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAC9C,qBAAqB,EACrB,eAAe,CAChB,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;QAExC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,CACjD,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;QAErC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhC,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAChE,OAAO,CAAC,IAAI,EAAE,CACf,CAAC;QACF,MAAM,qBAAqB,GAAG,UAAU,CAAC,aAAa,CACpD,gBAAgB,EAChB,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAC1C,CAAC;QAEF,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAC9C,qBAAqB,EACrB,eAAe,CAChB,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC;QAEvD,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,CACjD,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EACtB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,eAAe,CAAC;QAEpD,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhC,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAChE,OAAO,CAAC,IAAI,EAAE,CACf,CAAC;QACF,MAAM,qBAAqB,GAAG,UAAU,CAAC,aAAa,CACpD,gBAAgB,EAChB,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAC3C,CAAC;QAEF,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAC9C,qBAAqB,EACrB,eAAe,CAChB,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,CACrE,IAAI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,SAAS,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CACzD,OAAO,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAC3C,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CACnC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,sBAAsB,CACvB,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAErD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErC,MAAM,IAAI,GAAmB;YAC3B,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE;YAClC,cAAc,EAAE,OAAO;SACxB,CAAC;QACF,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE9C,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CACzD,OAAO,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAC3C,CAAC;QAEF,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAE/D,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,CACjD,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;QAErC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtC,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAC/C,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EACtB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC;QAEnC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,CACjD,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EACrB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QACF,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;QAErC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAErD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAErC,MAAM,IAAI,GAAmB;YAC3B,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE;YAClC,cAAc,EAAE,OAAO;SACxB,CAAC;QACF,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE9C,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n Angle,\r\n Matrix,\r\n ParametricLine,\r\n Quaternion,\r\n Vector2,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makeOrbitSceneRootUC, OrbitSceneRootUC } from \"./OrbitSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const orbit = makeOrbitSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n\r\n return {\r\n orbit,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n doDispatchMock,\r\n appObjects,\r\n };\r\n}\r\n\r\ndescribe(\"Orbit Scene Root Use Case\", () => {\r\n it(\"Rotates about global X when moving the mouse in the y direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(0, 10);\r\n\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n Vector3.Left(),\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.rotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Rotates about local Y when moving the mouse in the X direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.transform.worldRotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Flips the heading angle if the root is flipped upside down\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(100),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.transform.localRotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * -10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n\r\n expect(Quaternion.Close(sceneRoot.rotation, expectFinalQuaterion)).toBe(\r\n true\r\n );\r\n });\r\n\r\n it(\"Orbits around the global origin if there is no pick hit\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const expectedPos = Vector3.Transform(\r\n new Vector3(1, 2, 3),\r\n expectedRotationMatrix\r\n );\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Orbits around the pick point\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const transformedPick = Vector3.Transform(pickPos, expectedRotationMatrix);\r\n const expectedPos = Vector3.Subtract(pickPos, transformedPick);\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Dispatches a state change if the rotaiton has changed since init\", () => {\r\n const { sceneRoot, orbit, doDispatchMock } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const finalRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(-45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = finalRotation;\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the rotaiton has not changed\", () => {\r\n const { sceneRoot, orbit, doDispatchMock } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(doDispatchMock).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { orbit, appObjects } = makeTestRig();\r\n expect(OrbitSceneRootUC.get(appObjects)).toEqual(orbit);\r\n });\r\n\r\n it(\"Quits updating after orbit has been cancelled\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.cancelOrbit();\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n});\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { makeAppObjectRepo } from "@vived/core";
2
2
  import { ParametricLine, Vector2, Vector3 } from "@vived/core";
3
3
  import { PixelToSceneRayUC, ScenePixelPickUC, } from "../../Babylon";
4
- import { MockDispatchStateChange } from "../../Dispatcher/Mocks/MockDispatchStateChange";
4
+ import { makeMockDispatchStateChange } from "../../Dispatcher";
5
5
  import { makeSceneRootEntity } from "../Entities";
6
6
  import { makePanSceneRootUC, PanSceneRootUC } from "./PanSceneRoot";
7
7
  class MockPick extends ScenePixelPickUC {
@@ -23,13 +23,16 @@ function makeTestRig() {
23
23
  const panUC = makePanSceneRootUC(sceneRootAO);
24
24
  const appAO = appObjects.getOrCreate("appAO");
25
25
  const mockPick = new MockPick(appAO, ScenePixelPickUC.type);
26
- const mockDispatch = new MockDispatchStateChange(appAO);
26
+ const mockDispatch = makeMockDispatchStateChange(appObjects);
27
+ const doDispatchMock = jest.fn();
28
+ mockDispatch.doDispatch = doDispatchMock;
27
29
  const mockPixelRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);
28
30
  return {
29
31
  panUC,
30
32
  sceneRoot,
31
33
  mockPick,
32
34
  mockDispatch,
35
+ doDispatchMock,
33
36
  appObjects,
34
37
  mockPixelRay,
35
38
  };
@@ -61,7 +64,7 @@ describe("Pan Scene Root Use Case", () => {
61
64
  expect(sceneRoot.position).toEqual(new Vector3(11, 12, 10));
62
65
  });
63
66
  it("Dispatches a state change if the position has changed since init", () => {
64
- const { sceneRoot, panUC, mockDispatch, mockPick } = makeTestRig();
67
+ const { sceneRoot, panUC, doDispatchMock, mockPick } = makeTestRig();
65
68
  sceneRoot.position = new Vector3(1, 2, 3);
66
69
  const pick = {
67
70
  hit: true,
@@ -71,14 +74,14 @@ describe("Pan Scene Root Use Case", () => {
71
74
  panUC.initializePan(Vector2.Zero());
72
75
  sceneRoot.position = new Vector3(4, 5, 6);
73
76
  panUC.finishPan();
74
- expect(mockDispatch.doDispatch).toHaveBeenCalled();
77
+ expect(doDispatchMock).toHaveBeenCalled();
75
78
  });
76
79
  it("Does not dispatch a state change if the position has not changed", () => {
77
- const { sceneRoot, panUC, mockDispatch } = makeTestRig();
80
+ const { sceneRoot, panUC, doDispatchMock } = makeTestRig();
78
81
  sceneRoot.position = new Vector3(1, 2, 3);
79
82
  panUC.initializePan(Vector2.Zero());
80
83
  panUC.finishPan();
81
- expect(mockDispatch.doDispatch).not.toHaveBeenCalled();
84
+ expect(doDispatchMock).not.toHaveBeenCalled();
82
85
  });
83
86
  it("Doen not move the transform after cancel", () => {
84
87
  const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"PanSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/PanSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport {\r\n PixelToSceneRayUC,\r\n ScenePixelPick,\r\n ScenePixelPickUC,\r\n} from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makePanSceneRootUC, PanSceneRootUC } from \"./PanSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nclass MockPixelToRay extends PixelToSceneRayUC {\r\n pixelToSceneRay = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const panUC = makePanSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = new MockDispatchStateChange(appAO);\r\n const mockPixelRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);\r\n\r\n return {\r\n panUC,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n appObjects,\r\n mockPixelRay,\r\n };\r\n}\r\n\r\ndescribe(\"Pan Scene Root Use Case\", () => {\r\n it(\"Moves the transform\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(1, 2, 0));\r\n });\r\n\r\n it(\"Moves the transform relative to the initial position\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n sceneRoot.position = new Vector3(10, 10, 10);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(11, 12, 10));\r\n });\r\n\r\n it(\"Dispatches a state change if the position has changed since init\", () => {\r\n const { sceneRoot, panUC, mockDispatch, mockPick } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n\r\n sceneRoot.position = new Vector3(4, 5, 6);\r\n panUC.finishPan();\r\n\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the position has not changed\", () => {\r\n const { sceneRoot, panUC, mockDispatch } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.finishPan();\r\n\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Doen not move the transform after cancel\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.cancelPan();\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { panUC, appObjects } = makeTestRig();\r\n expect(PanSceneRootUC.get(appObjects)).toEqual(panUC);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"PanSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/PanSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport {\r\n PixelToSceneRayUC,\r\n ScenePixelPick,\r\n ScenePixelPickUC,\r\n} from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makePanSceneRootUC, PanSceneRootUC } from \"./PanSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nclass MockPixelToRay extends PixelToSceneRayUC {\r\n pixelToSceneRay = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const panUC = makePanSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n const mockPixelRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);\r\n\r\n return {\r\n panUC,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n doDispatchMock,\r\n appObjects,\r\n mockPixelRay,\r\n };\r\n}\r\n\r\ndescribe(\"Pan Scene Root Use Case\", () => {\r\n it(\"Moves the transform\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(1, 2, 0));\r\n });\r\n\r\n it(\"Moves the transform relative to the initial position\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n sceneRoot.position = new Vector3(10, 10, 10);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(11, 12, 10));\r\n });\r\n\r\n it(\"Dispatches a state change if the position has changed since init\", () => {\r\n const { sceneRoot, panUC, doDispatchMock, mockPick } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n\r\n sceneRoot.position = new Vector3(4, 5, 6);\r\n panUC.finishPan();\r\n\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the position has not changed\", () => {\r\n const { sceneRoot, panUC, doDispatchMock } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.finishPan();\r\n\r\n expect(doDispatchMock).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Doen not move the transform after cancel\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.cancelPan();\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { panUC, appObjects } = makeTestRig();\r\n expect(PanSceneRootUC.get(appObjects)).toEqual(panUC);\r\n });\r\n});\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { makeAppObjectRepo } from "@vived/core";
2
2
  import { ParametricLine, Vector2, Vector3 } from "@vived/core";
3
3
  import { PixelToSceneRayUC, ScenePixelPickUC } from "../../Babylon";
4
- import { MockDispatchStateChange } from "../../Dispatcher/Mocks/MockDispatchStateChange";
4
+ import { makeMockDispatchStateChange } from "../../Dispatcher";
5
5
  import { makeSceneRootEntity } from "../Entities";
6
6
  import { makePinchSceneRootUC, PinchSceneRootUC } from "./PinchSceneRoot";
7
7
  class MockPick extends ScenePixelPickUC {
@@ -26,13 +26,16 @@ function makeTestRig() {
26
26
  const appAO = appObjects.getOrCreate("appAO");
27
27
  const mockPick = new MockPick(appAO, ScenePixelPickUC.type);
28
28
  const mockRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);
29
- const mockDispatch = new MockDispatchStateChange(appAO);
29
+ const mockDispatch = makeMockDispatchStateChange(appObjects);
30
+ const doDispatchMock = jest.fn();
31
+ mockDispatch.doDispatch = doDispatchMock;
30
32
  return {
31
33
  appObjects,
32
34
  pinchUC,
33
35
  sceneRoot,
34
36
  mockPick,
35
37
  mockDispatch,
38
+ doDispatchMock,
36
39
  mockRay,
37
40
  };
38
41
  }
@@ -91,23 +94,23 @@ describe("Pinch Scene Root Use Case", () => {
91
94
  expect(sceneRoot.scale).toEqual(1 + expectedScaleDelta);
92
95
  });
93
96
  it("Dispatches a state change if the position has changed since init", () => {
94
- const { sceneRoot, pinchUC, mockDispatch, mockPick } = makeTestRig();
97
+ const { sceneRoot, pinchUC, doDispatchMock, mockPick } = makeTestRig();
95
98
  sceneRoot.scale = 5;
96
99
  const touch1 = new Vector2(0, 8);
97
100
  const touch2 = new Vector2(0, -8);
98
101
  pinchUC.initializePinch(touch1, touch2);
99
102
  sceneRoot.scale = 6;
100
103
  pinchUC.finishPinch();
101
- expect(mockDispatch.doDispatch).toHaveBeenCalled();
104
+ expect(doDispatchMock).toHaveBeenCalled();
102
105
  });
103
106
  it("Does not dispatch a state change if the scale has not changed", () => {
104
- const { sceneRoot, pinchUC, mockDispatch } = makeTestRig();
107
+ const { sceneRoot, pinchUC, doDispatchMock } = makeTestRig();
105
108
  sceneRoot.scale = 5;
106
109
  const touch1 = new Vector2(0, 8);
107
110
  const touch2 = new Vector2(0, -8);
108
111
  pinchUC.initializePinch(touch1, touch2);
109
112
  pinchUC.finishPinch();
110
- expect(mockDispatch.doDispatch).not.toHaveBeenCalled();
113
+ expect(doDispatchMock).not.toHaveBeenCalled();
111
114
  });
112
115
  it("Gets the UC", () => {
113
116
  const { pinchUC, appObjects } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"PinchSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/PinchSceneRoot.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,QAAS,SAAQ,gBAAgB;IAAvC;;QACE,mBAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC7B,CAAC;CAAA;AAED,MAAM,cAAe,SAAQ,iBAAiB;IAA9C;;QACE,oBAAe,GAAG,CAAC,QAAiB,EAAkB,EAAE;YACtD,OAAO,cAAc,CAAC,kBAAkB,CACtC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACxC,OAAO,CAAC,OAAO,EAAE,CAClB,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAExD,OAAO;QACL,UAAU;QACV,OAAO;QACP,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,OAAO;KACR,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,SAAS,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc;QAEtD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvD,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEjE,SAAS,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc;QAEtD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7C,SAAS,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhC,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAEnD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7C,SAAS,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhC,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAErE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAEpB,OAAO,CAAC,WAAW,EAAE,CAAC;QAEtB,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3D,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExC,OAAO,CAAC,WAAW,EAAE,CAAC;QAEtB,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport { PixelToSceneRayUC, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makePinchSceneRootUC, PinchSceneRootUC } from \"./PinchSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nclass MockPixelToRay extends PixelToSceneRayUC {\r\n pixelToSceneRay = (pixelPos: Vector2): ParametricLine => {\r\n return ParametricLine.FromPointDirection(\r\n new Vector3(pixelPos.x, pixelPos.y, -10),\r\n Vector3.Forward()\r\n );\r\n };\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const pinchUC = makePinchSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);\r\n const mockDispatch = new MockDispatchStateChange(appAO);\r\n\r\n return {\r\n appObjects,\r\n pinchUC,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n mockRay,\r\n };\r\n}\r\n\r\ndescribe(\"Pinch Scene Root Use Case\", () => {\r\n it(\"Move with no scaling adjusts the root as expected\", () => {\r\n const { pinchUC, sceneRoot } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n const touch1 = new Vector2(5, 8);\r\n const touch2 = new Vector2(5, 0);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 8);\r\n const touch4 = new Vector2(0, 0);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expected = new Vector3(-4, 2, 3); // -5 in the x\r\n\r\n const wPos = sceneRoot.position;\r\n expect(Vector3.Close(wPos, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Plane pick is relative\", () => {\r\n const { pinchUC, sceneRoot, mockPick } = makeTestRig();\r\n\r\n mockPick.scenePixelPick.mockReturnValue(new Vector3(10, 20, 60));\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n const touch1 = new Vector2(5, 8);\r\n const touch2 = new Vector2(5, 0);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 8);\r\n const touch4 = new Vector2(0, 0);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expected = new Vector3(-4, 2, 3); // -5 in the x\r\n\r\n const wPos = sceneRoot.position;\r\n expect(Vector3.Close(wPos, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Scales smaller with a pinch that moves closer\", () => {\r\n const { pinchUC, sceneRoot } = makeTestRig();\r\n sceneRoot.position = new Vector3(0, 0, 0);\r\n sceneRoot.scale = 1;\r\n\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 4);\r\n const touch4 = new Vector2(0, -4);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expectedScaleDelta = pinchUC.sensitivity * 8;\r\n\r\n expect(sceneRoot.scale).toEqual(1 - expectedScaleDelta);\r\n });\r\n\r\n it(\"Scales larger with a pinch that moves further\", () => {\r\n const { pinchUC, sceneRoot } = makeTestRig();\r\n sceneRoot.position = new Vector3(0, 0, 0);\r\n sceneRoot.scale = 1;\r\n\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 12);\r\n const touch4 = new Vector2(0, -12);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expectedScaleDelta = pinchUC.sensitivity * 8;\r\n expect(sceneRoot.scale).toEqual(1 + expectedScaleDelta);\r\n });\r\n\r\n it(\"Dispatches a state change if the position has changed since init\", () => {\r\n const { sceneRoot, pinchUC, mockDispatch, mockPick } = makeTestRig();\r\n\r\n sceneRoot.scale = 5;\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n sceneRoot.scale = 6;\r\n\r\n pinchUC.finishPinch();\r\n\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the scale has not changed\", () => {\r\n const { sceneRoot, pinchUC, mockDispatch } = makeTestRig();\r\n\r\n sceneRoot.scale = 5;\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n pinchUC.finishPinch();\r\n\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { pinchUC, appObjects } = makeTestRig();\r\n expect(PinchSceneRootUC.get(appObjects)).toEqual(pinchUC);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"PinchSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/PinchSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport { PixelToSceneRayUC, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makePinchSceneRootUC, PinchSceneRootUC } from \"./PinchSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nclass MockPixelToRay extends PixelToSceneRayUC {\r\n pixelToSceneRay = (pixelPos: Vector2): ParametricLine => {\r\n return ParametricLine.FromPointDirection(\r\n new Vector3(pixelPos.x, pixelPos.y, -10),\r\n Vector3.Forward()\r\n );\r\n };\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const pinchUC = makePinchSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n\r\n return {\r\n appObjects,\r\n pinchUC,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n doDispatchMock,\r\n mockRay,\r\n };\r\n}\r\n\r\ndescribe(\"Pinch Scene Root Use Case\", () => {\r\n it(\"Move with no scaling adjusts the root as expected\", () => {\r\n const { pinchUC, sceneRoot } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n const touch1 = new Vector2(5, 8);\r\n const touch2 = new Vector2(5, 0);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 8);\r\n const touch4 = new Vector2(0, 0);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expected = new Vector3(-4, 2, 3); // -5 in the x\r\n\r\n const wPos = sceneRoot.position;\r\n expect(Vector3.Close(wPos, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Plane pick is relative\", () => {\r\n const { pinchUC, sceneRoot, mockPick } = makeTestRig();\r\n\r\n mockPick.scenePixelPick.mockReturnValue(new Vector3(10, 20, 60));\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n const touch1 = new Vector2(5, 8);\r\n const touch2 = new Vector2(5, 0);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 8);\r\n const touch4 = new Vector2(0, 0);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expected = new Vector3(-4, 2, 3); // -5 in the x\r\n\r\n const wPos = sceneRoot.position;\r\n expect(Vector3.Close(wPos, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Scales smaller with a pinch that moves closer\", () => {\r\n const { pinchUC, sceneRoot } = makeTestRig();\r\n sceneRoot.position = new Vector3(0, 0, 0);\r\n sceneRoot.scale = 1;\r\n\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 4);\r\n const touch4 = new Vector2(0, -4);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expectedScaleDelta = pinchUC.sensitivity * 8;\r\n\r\n expect(sceneRoot.scale).toEqual(1 - expectedScaleDelta);\r\n });\r\n\r\n it(\"Scales larger with a pinch that moves further\", () => {\r\n const { pinchUC, sceneRoot } = makeTestRig();\r\n sceneRoot.position = new Vector3(0, 0, 0);\r\n sceneRoot.scale = 1;\r\n\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n const touch3 = new Vector2(0, 12);\r\n const touch4 = new Vector2(0, -12);\r\n pinchUC.doPinch(touch3, touch4);\r\n\r\n const expectedScaleDelta = pinchUC.sensitivity * 8;\r\n expect(sceneRoot.scale).toEqual(1 + expectedScaleDelta);\r\n });\r\n\r\n it(\"Dispatches a state change if the position has changed since init\", () => {\r\n const { sceneRoot, pinchUC, doDispatchMock, mockPick } = makeTestRig();\r\n\r\n sceneRoot.scale = 5;\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n sceneRoot.scale = 6;\r\n\r\n pinchUC.finishPinch();\r\n\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the scale has not changed\", () => {\r\n const { sceneRoot, pinchUC, doDispatchMock } = makeTestRig();\r\n\r\n sceneRoot.scale = 5;\r\n const touch1 = new Vector2(0, 8);\r\n const touch2 = new Vector2(0, -8);\r\n pinchUC.initializePinch(touch1, touch2);\r\n\r\n pinchUC.finishPinch();\r\n\r\n expect(doDispatchMock).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { pinchUC, appObjects } = makeTestRig();\r\n expect(PinchSceneRootUC.get(appObjects)).toEqual(pinchUC);\r\n });\r\n});\r\n"]}
@@ -12,9 +12,9 @@ function makeTestRig() {
12
12
  const selectabelAppObj = appObjects.getOrCreate("selectableAppObj");
13
13
  const selectable = makeSelectable(selectabelAppObj);
14
14
  selection.addSelectable(selectable);
15
- const mockPickUC = makeMockSceneRayPickUC(appObjects);
16
- const mockPick = jest.fn();
17
- mockPickUC.sceneRayPick = mockPick;
15
+ const mockRayPick = makeMockSceneRayPickUC(appObjects);
16
+ const mockPick = jest.fn().mockReturnValue({ appObjectID: "hideableObj" });
17
+ mockRayPick.sceneRayPick = mockPick;
18
18
  const baseApp = makeBaseAppState(appObjects.getOrCreate("BaseApp"));
19
19
  baseApp.isAuthoring = true;
20
20
  const hoverSceneObject = makeHoverAppObject(baseAppObj);
@@ -1 +1 @@
1
- {"version":3,"file":"HoverAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/HoverAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { HoverAppObjectUC, makeHoverAppObject } from \"./HoverAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const hoverSceneObject = makeHoverAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n hoverSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Hover Scene Object UC\", () => {\r\n it(\"Hovers by ID\", () => {\r\n const { hoverSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Hovers by ID\", () => {\r\n const { hoverSceneObject, selection } = makeTestRig();\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-hovers if the id is currently hovered\", () => {\r\n const { hoverSceneObject, selection } = makeTestRig();\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n hoverSceneObject.hoverAppObject(\"some other id\", false);\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the hovered object ID if it pick on it\", () => {\r\n const { hoverSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the hovered to null if the pick doesn't hit anything\", () => {\r\n const { hoverSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the hovered to null if the pick doesn't an app object\", () => {\r\n const { hoverSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the hovered to null if the pick doesn't a selectable object\", () => {\r\n const { hoverSceneObject, selection, mockPick, appObjects } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { hoverSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(HoverAppObjectUC.get(appObjects)).toEqual(hoverSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { hoverSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(hoverSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { hoverSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(hoverSceneObject.allowHover()).toEqual(true);\r\n expect(hoverSceneObject.allowTryHover()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(hoverSceneObject.allowHover()).toEqual(false);\r\n expect(hoverSceneObject.allowTryHover()).toEqual(false);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"HoverAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/HoverAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { HoverAppObjectUC, makeHoverAppObject } from \"./HoverAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"hideableObj\" });\r\n mockRayPick.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const hoverSceneObject = makeHoverAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n hoverSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Hover Scene Object UC\", () => {\r\n it(\"Hovers by ID\", () => {\r\n const { hoverSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Hovers by ID\", () => {\r\n const { hoverSceneObject, selection } = makeTestRig();\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-hovers if the id is currently hovered\", () => {\r\n const { hoverSceneObject, selection } = makeTestRig();\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n hoverSceneObject.hoverAppObject(\"some other id\", false);\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the hovered object ID if it pick on it\", () => {\r\n const { hoverSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the hovered to null if the pick doesn't hit anything\", () => {\r\n const { hoverSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the hovered to null if the pick doesn't an app object\", () => {\r\n const { hoverSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the hovered to null if the pick doesn't a selectable object\", () => {\r\n const { hoverSceneObject, selection, mockPick, appObjects } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n hoverSceneObject.hoverAppObject(\"selectableAppObj\", true);\r\n\r\n hoverSceneObject.tryHoverAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.hoveredObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { hoverSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(HoverAppObjectUC.get(appObjects)).toEqual(hoverSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { hoverSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(hoverSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { hoverSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(hoverSceneObject.allowHover()).toEqual(true);\r\n expect(hoverSceneObject.allowTryHover()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(hoverSceneObject.allowHover()).toEqual(false);\r\n expect(hoverSceneObject.allowTryHover()).toEqual(false);\r\n });\r\n});\r\n"]}
@@ -12,9 +12,9 @@ function makeTestRig() {
12
12
  const selectabelAppObj = appObjects.getOrCreate("selectableAppObj");
13
13
  const selectable = makeSelectable(selectabelAppObj);
14
14
  selection.addSelectable(selectable);
15
- const mockPickUC = makeMockSceneRayPickUC(appObjects);
16
- const mockPick = jest.fn();
17
- mockPickUC.sceneRayPick = mockPick;
15
+ const mockRayPick = makeMockSceneRayPickUC(appObjects);
16
+ const mockPick = jest.fn().mockReturnValue({ appObjectID: "hideableObj" });
17
+ mockRayPick.sceneRayPick = mockPick;
18
18
  const baseApp = makeBaseAppState(appObjects.getOrCreate("BaseApp"));
19
19
  baseApp.isAuthoring = true;
20
20
  const pressSceneObject = makePressAppObject(baseAppObj);
@@ -1 +1 @@
1
- {"version":3,"file":"PressAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/PressAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makePressAppObject, PressAppObjectUC } from \"./PressAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const pressSceneObject = makePressAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n pressSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Press Scene Object UC\", () => {\r\n it(\"Presses by ID\", () => {\r\n const { pressSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Presses by ID\", () => {\r\n const { pressSceneObject, selection } = makeTestRig();\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-presses if the id is currently pressed\", () => {\r\n const { pressSceneObject, selection } = makeTestRig();\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n pressSceneObject.pressAppObject(\"some other id\", false);\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the pressed object ID if it pick on it\", () => {\r\n const { pressSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the pressed to null if the pick doesn't hit anything\", () => {\r\n const { pressSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the pressed to null if the pick doesn't an app object\", () => {\r\n const { pressSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the pressed to null if the pick doesn't a selectable object\", () => {\r\n const { pressSceneObject, selection, mockPick, appObjects } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { pressSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(PressAppObjectUC.get(appObjects)).toEqual(pressSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { pressSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(pressSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { pressSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(pressSceneObject.allowPress()).toEqual(true);\r\n expect(pressSceneObject.allowTryPress()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(pressSceneObject.allowPress()).toEqual(false);\r\n expect(pressSceneObject.allowTryPress()).toEqual(false);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"PressAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/PressAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makePressAppObject, PressAppObjectUC } from \"./PressAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"hideableObj\" });\r\n mockRayPick.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const pressSceneObject = makePressAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n pressSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Press Scene Object UC\", () => {\r\n it(\"Presses by ID\", () => {\r\n const { pressSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Presses by ID\", () => {\r\n const { pressSceneObject, selection } = makeTestRig();\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-presses if the id is currently pressed\", () => {\r\n const { pressSceneObject, selection } = makeTestRig();\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n pressSceneObject.pressAppObject(\"some other id\", false);\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the pressed object ID if it pick on it\", () => {\r\n const { pressSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the pressed to null if the pick doesn't hit anything\", () => {\r\n const { pressSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the pressed to null if the pick doesn't an app object\", () => {\r\n const { pressSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the pressed to null if the pick doesn't a selectable object\", () => {\r\n const { pressSceneObject, selection, mockPick, appObjects } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n pressSceneObject.pressAppObject(\"selectableAppObj\", true);\r\n\r\n pressSceneObject.tryPressAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.pressedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { pressSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(PressAppObjectUC.get(appObjects)).toEqual(pressSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { pressSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(pressSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { pressSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(pressSceneObject.allowPress()).toEqual(true);\r\n expect(pressSceneObject.allowTryPress()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(pressSceneObject.allowPress()).toEqual(false);\r\n expect(pressSceneObject.allowTryPress()).toEqual(false);\r\n });\r\n});\r\n"]}
@@ -13,9 +13,9 @@ function makeTestRig() {
13
13
  const selectabelAppObj = appObjects.getOrCreate("selectableAppObj");
14
14
  const selectable = makeSelectable(selectabelAppObj);
15
15
  selection.addSelectable(selectable);
16
- const mockPickUC = makeMockSceneRayPickUC(appObjects);
17
- const mockPick = jest.fn();
18
- mockPickUC.sceneRayPick = mockPick;
16
+ const mockRayPick = makeMockSceneRayPickUC(appObjects);
17
+ const mockPick = jest.fn().mockReturnValue({ appObjectID: "hideableObj" });
18
+ mockRayPick.sceneRayPick = mockPick;
19
19
  const baseApp = makeBaseAppState(appObjects.getOrCreate("BaseApp"));
20
20
  baseApp.isAuthoring = true;
21
21
  const toolRepo = makeToolRepo(appObjects.getOrCreate("ToolRepo"));
@@ -1 +1 @@
1
- {"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeToolRepo } from \"../../Tools\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\r\n toolRepo.makeTool(\"CALLOUT\");\r\n toolRepo.makeTool(\"LANDMARK\");\r\n toolRepo.makeTool(\"OTHER\");\r\n toolRepo.triggerTool(\"OTHER\");\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n toolRepo,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n\r\n it(\"Does not change the selected object ID the callout tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"CALLOUT\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n\r\n it(\"Does not change the selected object ID the landmark tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"LANDMARK\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeToolRepo } from \"../../Tools\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"hideableObj\" });\r\n mockRayPick.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\r\n toolRepo.makeTool(\"CALLOUT\");\r\n toolRepo.makeTool(\"LANDMARK\");\r\n toolRepo.makeTool(\"OTHER\");\r\n toolRepo.triggerTool(\"OTHER\");\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n toolRepo,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n\r\n it(\"Does not change the selected object ID the callout tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"CALLOUT\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n\r\n it(\"Does not change the selected object ID the landmark tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"LANDMARK\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n});\r\n"]}
@@ -17,12 +17,14 @@ function makeTestRig() {
17
17
  return true;
18
18
  };
19
19
  const mockDispatch = makeMockDispatchStateChange(appObjects);
20
+ const doDispatchMock = jest.fn();
21
+ mockDispatch.doDispatch = doDispatchMock;
20
22
  const undo = makeUndoRedoEntity(appObjects.getOrCreate("Undo"));
21
23
  const helper = makeTransform3D(appObjects.getOrCreate("Helper"));
22
24
  return {
23
25
  moveUC,
24
26
  transform,
25
- mockDispatch,
27
+ doDispatchMock,
26
28
  appObjects,
27
29
  undo,
28
30
  stickable,
@@ -133,7 +135,7 @@ describe("Pan Transform With Stick UC", () => {
133
135
  expect(stickable.doStick).not.toHaveBeenCalled();
134
136
  });
135
137
  it("Tells stick to dispatch a state change on complete if the flag is set", () => {
136
- const { stickable, moveUC, helper, tryPickTarget, mockDispatch } = makeTestRig();
138
+ const { stickable, moveUC, helper, tryPickTarget, doDispatchMock } = makeTestRig();
137
139
  moveUC.dispatchStateChangeOnComplete = true;
138
140
  stickable.doStick = jest.fn();
139
141
  tryPickTarget.tryPick = () => {
@@ -147,7 +149,7 @@ describe("Pan Transform With Stick UC", () => {
147
149
  moveUC.update(helper, ParametricLine.Forward());
148
150
  expect(stickable.highlightTarget).toEqual(true);
149
151
  moveUC.finish();
150
- expect(stickable.doStick).toHaveBeenCalledWith(mockDispatch.doDispatch);
152
+ expect(stickable.doStick).toHaveBeenCalledWith(doDispatchMock);
151
153
  });
152
154
  it("Does not tell stick to dispatch a state change on complete if the flag is set", () => {
153
155
  const { stickable, moveUC, helper, tryPickTarget } = makeTestRig();
@@ -201,7 +203,7 @@ describe("Pan Transform With Stick UC", () => {
201
203
  expect(undo.hasUndo).toEqual(false);
202
204
  });
203
205
  it("Wires up the dispatch for undo and redo", () => {
204
- const { stickable, moveUC, helper, tryPickTarget, undo, mockDispatch } = makeTestRig();
206
+ const { stickable, moveUC, helper, tryPickTarget, undo, doDispatchMock } = makeTestRig();
205
207
  stickable.doStick = jest.fn();
206
208
  tryPickTarget.tryPick = () => {
207
209
  return false;
@@ -214,11 +216,11 @@ describe("Pan Transform With Stick UC", () => {
214
216
  moveUC.update(helper, ParametricLine.Forward());
215
217
  expect(stickable.highlightTarget).toEqual(true);
216
218
  moveUC.finish();
217
- mockDispatch.doDispatch.mockClear();
219
+ doDispatchMock.mockClear();
218
220
  undo.doUndo();
219
- expect(mockDispatch.doDispatch).toHaveBeenCalledTimes(1);
221
+ expect(doDispatchMock).toHaveBeenCalledTimes(1);
220
222
  undo.doRedo();
221
- expect(mockDispatch.doDispatch).toHaveBeenCalledTimes(2);
223
+ expect(doDispatchMock).toHaveBeenCalledTimes(2);
222
224
  });
223
225
  it("Undoes and redoes the move", () => {
224
226
  const { stickable, moveUC, helper, tryPickTarget, undo, transform } = makeTestRig();