@vived/app 5.3.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/dist/cjs/Babylon/Adapters/showBabylonInspectorAdapter.test.js +3 -0
  2. package/dist/cjs/Babylon/Adapters/showBabylonInspectorAdapter.test.js.map +1 -1
  3. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  4. package/dist/cjs/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
  5. package/dist/cjs/Babylon/PM/ShowBabylonInspectorPM.js +9 -6
  6. package/dist/cjs/Babylon/PM/ShowBabylonInspectorPM.js.map +1 -1
  7. package/dist/cjs/BaseApp/PM/IsAuthoringPM.js +6 -9
  8. package/dist/cjs/BaseApp/PM/IsAuthoringPM.js.map +1 -1
  9. package/dist/cjs/BaseApp/PM/IsAuthoringPM.test.js +2 -6
  10. package/dist/cjs/BaseApp/PM/IsAuthoringPM.test.js.map +1 -1
  11. package/dist/cjs/BaseApp/PM/IsReviewingPM.js +6 -9
  12. package/dist/cjs/BaseApp/PM/IsReviewingPM.js.map +1 -1
  13. package/dist/cjs/BaseApp/PM/IsReviewingPM.test.js +2 -6
  14. package/dist/cjs/BaseApp/PM/IsReviewingPM.test.js.map +1 -1
  15. package/dist/cjs/BaseApp/PM/SlideTextPM.js +6 -5
  16. package/dist/cjs/BaseApp/PM/SlideTextPM.js.map +1 -1
  17. package/dist/cjs/BaseApp/PM/SlideTextPM.test.js +2 -6
  18. package/dist/cjs/BaseApp/PM/SlideTextPM.test.js.map +1 -1
  19. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js +1 -0
  20. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  21. package/dist/cjs/BaseApp/UC/SerializeBaseAppState.js +1 -1
  22. package/dist/cjs/BaseApp/UC/SerializeBaseAppState.js.map +1 -1
  23. package/dist/cjs/Callouts/Factories/calloutFactory.test.js +6 -0
  24. package/dist/cjs/Callouts/Factories/calloutFactory.test.js.map +1 -1
  25. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js +8 -9
  26. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  27. package/dist/cjs/Callouts/UC/SerializeCallouts.js +1 -1
  28. package/dist/cjs/Callouts/UC/SerializeCallouts.js.map +1 -1
  29. package/dist/cjs/Callouts/UC/TryAddCallout.test.js.map +1 -1
  30. package/dist/cjs/Challenge/UCs/SerializeChallenge.js +1 -1
  31. package/dist/cjs/Challenge/UCs/SerializeChallenge.js.map +1 -1
  32. package/dist/cjs/Challenge/UCs/ShowChallengeHelpUC.test.js +3 -2
  33. package/dist/cjs/Challenge/UCs/ShowChallengeHelpUC.test.js.map +1 -1
  34. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.js +6 -5
  35. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.js.map +1 -1
  36. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.test.js +2 -6
  37. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.test.js.map +1 -1
  38. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.js +5 -3
  39. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.js.map +1 -1
  40. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.test.js +1 -0
  41. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.test.js.map +1 -1
  42. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.js +3 -7
  43. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.js.map +1 -1
  44. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.test.js +1 -0
  45. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.test.js.map +1 -1
  46. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.js +3 -9
  47. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.js.map +1 -1
  48. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js +1 -0
  49. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js.map +1 -1
  50. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.js +3 -7
  51. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.js.map +1 -1
  52. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js +1 -0
  53. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js.map +1 -1
  54. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js +3 -9
  55. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js.map +1 -1
  56. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js +1 -0
  57. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js.map +1 -1
  58. package/dist/cjs/ChannelModel/UC/LoadChannelModelUC.test.js +6 -6
  59. package/dist/cjs/ChannelModel/UC/LoadChannelModelUC.test.js.map +1 -1
  60. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js +1 -1
  61. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  62. package/dist/cjs/ChannelModel/UC/SerializeActiveModel.js +1 -1
  63. package/dist/cjs/ChannelModel/UC/SerializeActiveModel.js.map +1 -1
  64. package/dist/cjs/Dispatcher/Entities/AppDispatcher.js +7 -0
  65. package/dist/cjs/Dispatcher/Entities/AppDispatcher.js.map +1 -1
  66. package/dist/cjs/Dispatcher/Entities/AppDispatcher.test.js +31 -0
  67. package/dist/cjs/Dispatcher/Entities/AppDispatcher.test.js.map +1 -1
  68. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js +3 -1
  69. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
  70. package/dist/cjs/Dispatcher/Mocks/GetAssetBlobURLUCMock.js +1 -1
  71. package/dist/cjs/Dispatcher/Mocks/GetAssetBlobURLUCMock.js.map +1 -1
  72. package/dist/cjs/Dispatcher/Mocks/GetLinkedAssetsUCMock.js +1 -1
  73. package/dist/cjs/Dispatcher/Mocks/GetLinkedAssetsUCMock.js.map +1 -1
  74. package/dist/cjs/Dispatcher/Mocks/MockDispatcher.js +2 -2
  75. package/dist/cjs/Dispatcher/Mocks/MockDispatcher.js.map +1 -1
  76. package/dist/cjs/Dispatcher/Mocks/MockGetAssetFolderURL.js +1 -1
  77. package/dist/cjs/Dispatcher/Mocks/MockGetAssetFolderURL.js.map +1 -1
  78. package/dist/cjs/Dispatcher/Mocks/MockShowAlert.js +1 -1
  79. package/dist/cjs/Dispatcher/Mocks/MockShowAlert.js.map +1 -1
  80. package/dist/cjs/Dispatcher/Mocks/MockShowConfirm.js +1 -1
  81. package/dist/cjs/Dispatcher/Mocks/MockShowConfirm.js.map +1 -1
  82. package/dist/cjs/Dispatcher/Mocks/MockShowMarkdown.js +1 -1
  83. package/dist/cjs/Dispatcher/Mocks/MockShowMarkdown.js.map +1 -1
  84. package/dist/cjs/Dispatcher/Mocks/MockShowSpinner.js +1 -1
  85. package/dist/cjs/Dispatcher/Mocks/MockShowSpinner.js.map +1 -1
  86. package/dist/cjs/Dispatcher/Mocks/MockSubmitResult.js +5 -5
  87. package/dist/cjs/Dispatcher/Mocks/MockSubmitResult.js.map +1 -1
  88. package/dist/cjs/Dispatcher/Mocks/ShowSelectModelUCMock.js +1 -1
  89. package/dist/cjs/Dispatcher/Mocks/ShowSelectModelUCMock.js.map +1 -1
  90. package/dist/cjs/Dispatcher/UC/AppIsReadyUC.test.js +3 -1
  91. package/dist/cjs/Dispatcher/UC/AppIsReadyUC.test.js.map +1 -1
  92. package/dist/cjs/Dispatcher/UC/DispatchStartZSpaceUC.test.js +2 -1
  93. package/dist/cjs/Dispatcher/UC/DispatchStartZSpaceUC.test.js.map +1 -1
  94. package/dist/cjs/Dispatcher/UC/DispatchStateChangeUC.test.js +1 -0
  95. package/dist/cjs/Dispatcher/UC/DispatchStateChangeUC.test.js.map +1 -1
  96. package/dist/cjs/Dispatcher/UC/DispatchStopZSpaceUC.test.js +2 -1
  97. package/dist/cjs/Dispatcher/UC/DispatchStopZSpaceUC.test.js.map +1 -1
  98. package/dist/cjs/Dispatcher/UC/GetAssetBlobURLUC.test.js +3 -1
  99. package/dist/cjs/Dispatcher/UC/GetAssetBlobURLUC.test.js.map +1 -1
  100. package/dist/cjs/Dispatcher/UC/GetAssetFolderURLUC.test.js +3 -1
  101. package/dist/cjs/Dispatcher/UC/GetAssetFolderURLUC.test.js.map +1 -1
  102. package/dist/cjs/Dispatcher/UC/GetAssetMetaUC.test.js +3 -1
  103. package/dist/cjs/Dispatcher/UC/GetAssetMetaUC.test.js.map +1 -1
  104. package/dist/cjs/Dispatcher/UC/GetAssetsForOwnerUC.test.js +3 -1
  105. package/dist/cjs/Dispatcher/UC/GetAssetsForOwnerUC.test.js.map +1 -1
  106. package/dist/cjs/Dispatcher/UC/GetLinkedAssetsUC.test.js +3 -1
  107. package/dist/cjs/Dispatcher/UC/GetLinkedAssetsUC.test.js.map +1 -1
  108. package/dist/cjs/Dispatcher/UC/GoToNextStateUC.test.js +3 -1
  109. package/dist/cjs/Dispatcher/UC/GoToNextStateUC.test.js.map +1 -1
  110. package/dist/cjs/Dispatcher/UC/GoToPreviousStateUC.test.js +3 -1
  111. package/dist/cjs/Dispatcher/UC/GoToPreviousStateUC.test.js.map +1 -1
  112. package/dist/cjs/Dispatcher/UC/HasNextStateUC.test.js +3 -1
  113. package/dist/cjs/Dispatcher/UC/HasNextStateUC.test.js.map +1 -1
  114. package/dist/cjs/Dispatcher/UC/HasPreviousStateUC.test.js +3 -1
  115. package/dist/cjs/Dispatcher/UC/HasPreviousStateUC.test.js.map +1 -1
  116. package/dist/cjs/Dispatcher/UC/IsAssetFetchedUC.test.js +3 -1
  117. package/dist/cjs/Dispatcher/UC/IsAssetFetchedUC.test.js.map +1 -1
  118. package/dist/cjs/Dispatcher/UC/IsZSpaceAvailableUC.test.js +3 -1
  119. package/dist/cjs/Dispatcher/UC/IsZSpaceAvailableUC.test.js.map +1 -1
  120. package/dist/cjs/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js +3 -1
  121. package/dist/cjs/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js.map +1 -1
  122. package/dist/cjs/Dispatcher/UC/RestoreCurrentStateUC.test.js +3 -1
  123. package/dist/cjs/Dispatcher/UC/RestoreCurrentStateUC.test.js.map +1 -1
  124. package/dist/cjs/Dispatcher/UC/StateIsCompleteUC.test.js +3 -1
  125. package/dist/cjs/Dispatcher/UC/StateIsCompleteUC.test.js.map +1 -1
  126. package/dist/cjs/Dispatcher/UC/SubmitActivityAssetUC.test.js +5 -3
  127. package/dist/cjs/Dispatcher/UC/SubmitActivityAssetUC.test.js.map +1 -1
  128. package/dist/cjs/Dispatcher/UC/SubmitResultResultUC.test.js +11 -5
  129. package/dist/cjs/Dispatcher/UC/SubmitResultResultUC.test.js.map +1 -1
  130. package/dist/cjs/Enablement/PM/EnabledStatePM.js +5 -9
  131. package/dist/cjs/Enablement/PM/EnabledStatePM.js.map +1 -1
  132. package/dist/cjs/Enablement/PM/EnabledStatePM.test.js +1 -0
  133. package/dist/cjs/Enablement/PM/EnabledStatePM.test.js.map +1 -1
  134. package/dist/cjs/Environment/UCs/SerializeEnvironment.js +1 -1
  135. package/dist/cjs/Environment/UCs/SerializeEnvironment.js.map +1 -1
  136. package/dist/cjs/Hideable/Factories/setupHideable.test.js +6 -0
  137. package/dist/cjs/Hideable/Factories/setupHideable.test.js.map +1 -1
  138. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js +1 -1
  139. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
  140. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  141. package/dist/cjs/HoverLabel/UseCases/SerializeAllowHoverLabel.js +1 -1
  142. package/dist/cjs/HoverLabel/UseCases/SerializeAllowHoverLabel.js.map +1 -1
  143. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  144. package/dist/cjs/Label/Controller/submitCustomLabel.test.js +3 -0
  145. package/dist/cjs/Label/Controller/submitCustomLabel.test.js.map +1 -1
  146. package/dist/cjs/Label/Controller/updateCustomLabel.test.js +3 -0
  147. package/dist/cjs/Label/Controller/updateCustomLabel.test.js.map +1 -1
  148. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js +0 -7
  149. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  150. package/dist/cjs/Label/UC/SerializeCustomLabels.js +1 -1
  151. package/dist/cjs/Label/UC/SerializeCustomLabels.js.map +1 -1
  152. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js +0 -7
  153. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  154. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  155. package/dist/cjs/LabelDrop/UseCases/SerializeLabelDrop.js +1 -1
  156. package/dist/cjs/LabelDrop/UseCases/SerializeLabelDrop.js.map +1 -1
  157. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  158. package/dist/cjs/Landmarks/PM/LandmarkSizePM.js +5 -8
  159. package/dist/cjs/Landmarks/PM/LandmarkSizePM.js.map +1 -1
  160. package/dist/cjs/Landmarks/UseCases/SerializeLandmarks.js +1 -1
  161. package/dist/cjs/Landmarks/UseCases/SerializeLandmarks.js.map +1 -1
  162. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +2 -0
  163. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  164. package/dist/cjs/ObjectPick/UseCases/SerializeObjectPick.js +1 -1
  165. package/dist/cjs/ObjectPick/UseCases/SerializeObjectPick.js.map +1 -1
  166. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  167. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
  168. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  169. package/dist/cjs/OverlayColor/UC/SerializeOverlayColoredObjects.js +1 -1
  170. package/dist/cjs/OverlayColor/UC/SerializeOverlayColoredObjects.js.map +1 -1
  171. package/dist/cjs/Question/UC/SerializeQuestionChallenge.js +1 -1
  172. package/dist/cjs/Question/UC/SerializeQuestionChallenge.js.map +1 -1
  173. package/dist/cjs/Question/UC/SubmitQuestionAnswerUC.test.js +1 -0
  174. package/dist/cjs/Question/UC/SubmitQuestionAnswerUC.test.js.map +1 -1
  175. package/dist/cjs/RequestHandler/Entities/AppHandler.js +4 -0
  176. package/dist/cjs/RequestHandler/Entities/AppHandler.js.map +1 -1
  177. package/dist/cjs/RequestHandler/Entities/AppHandler.test.js +27 -0
  178. package/dist/cjs/RequestHandler/Entities/AppHandler.test.js.map +1 -1
  179. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.js +28 -29
  180. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.js.map +1 -1
  181. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js +128 -0
  182. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js.map +1 -0
  183. package/dist/cjs/RequestHandler/Mocks/MockAppHandlerEntity.js +1 -0
  184. package/dist/cjs/RequestHandler/Mocks/MockAppHandlerEntity.js.map +1 -1
  185. package/dist/cjs/SceneRoot/UC/SerializeSceneRoot.js +1 -1
  186. package/dist/cjs/SceneRoot/UC/SerializeSceneRoot.js.map +1 -1
  187. package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
  188. package/dist/cjs/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
  189. package/dist/cjs/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
  190. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.js +21 -0
  191. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.js.map +1 -0
  192. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.test.js +34 -0
  193. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.test.js.map +1 -0
  194. package/dist/cjs/StateMachine/Controller/index.js +1 -1
  195. package/dist/cjs/StateMachine/Controller/index.js.map +1 -1
  196. package/dist/cjs/StateMachine/Entities/StateMachineEntity.js +26 -4
  197. package/dist/cjs/StateMachine/Entities/StateMachineEntity.js.map +1 -1
  198. package/dist/cjs/StateMachine/Entities/StateMachineEntity.test.js +23 -4
  199. package/dist/cjs/StateMachine/Entities/StateMachineEntity.test.js.map +1 -1
  200. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  201. package/dist/cjs/StoredView/PM/HasStoredViewPM.js +6 -10
  202. package/dist/cjs/StoredView/PM/HasStoredViewPM.js.map +1 -1
  203. package/dist/cjs/StoredView/PM/HasStoredViewPM.test.js +1 -0
  204. package/dist/cjs/StoredView/PM/HasStoredViewPM.test.js.map +1 -1
  205. package/dist/cjs/StoredView/UC/SerializeStoredView.js +1 -1
  206. package/dist/cjs/StoredView/UC/SerializeStoredView.js.map +1 -1
  207. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.js +7 -6
  208. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.js.map +1 -1
  209. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.test.js +2 -6
  210. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.test.js.map +1 -1
  211. package/dist/cjs/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
  212. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  213. package/dist/cjs/Transform3D/UC/PinchTransform.test.js.map +1 -1
  214. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  215. package/dist/cjs/Transparency/UCs/SerializeTransparentObjects.js +1 -1
  216. package/dist/cjs/Transparency/UCs/SerializeTransparentObjects.js.map +1 -1
  217. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.js +6 -5
  218. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.js.map +1 -1
  219. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.test.js +4 -8
  220. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.test.js.map +1 -1
  221. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.js +6 -5
  222. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.js.map +1 -1
  223. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.test.js +1 -0
  224. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.test.js.map +1 -1
  225. package/dist/esm/Babylon/Adapters/showBabylonInspectorAdapter.test.js +3 -0
  226. package/dist/esm/Babylon/Adapters/showBabylonInspectorAdapter.test.js.map +1 -1
  227. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  228. package/dist/esm/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
  229. package/dist/esm/Babylon/PM/ShowBabylonInspectorPM.js +9 -6
  230. package/dist/esm/Babylon/PM/ShowBabylonInspectorPM.js.map +1 -1
  231. package/dist/esm/BaseApp/PM/IsAuthoringPM.js +7 -10
  232. package/dist/esm/BaseApp/PM/IsAuthoringPM.js.map +1 -1
  233. package/dist/esm/BaseApp/PM/IsAuthoringPM.test.js +2 -6
  234. package/dist/esm/BaseApp/PM/IsAuthoringPM.test.js.map +1 -1
  235. package/dist/esm/BaseApp/PM/IsReviewingPM.js +7 -10
  236. package/dist/esm/BaseApp/PM/IsReviewingPM.js.map +1 -1
  237. package/dist/esm/BaseApp/PM/IsReviewingPM.test.js +2 -6
  238. package/dist/esm/BaseApp/PM/IsReviewingPM.test.js.map +1 -1
  239. package/dist/esm/BaseApp/PM/SlideTextPM.js +7 -6
  240. package/dist/esm/BaseApp/PM/SlideTextPM.js.map +1 -1
  241. package/dist/esm/BaseApp/PM/SlideTextPM.test.js +2 -6
  242. package/dist/esm/BaseApp/PM/SlideTextPM.test.js.map +1 -1
  243. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js +1 -0
  244. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  245. package/dist/esm/BaseApp/UC/SerializeBaseAppState.js +1 -1
  246. package/dist/esm/BaseApp/UC/SerializeBaseAppState.js.map +1 -1
  247. package/dist/esm/Callouts/Factories/calloutFactory.test.js +6 -0
  248. package/dist/esm/Callouts/Factories/calloutFactory.test.js.map +1 -1
  249. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js +8 -9
  250. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  251. package/dist/esm/Callouts/UC/SerializeCallouts.js +1 -1
  252. package/dist/esm/Callouts/UC/SerializeCallouts.js.map +1 -1
  253. package/dist/esm/Callouts/UC/TryAddCallout.test.js.map +1 -1
  254. package/dist/esm/Challenge/UCs/SerializeChallenge.js +1 -1
  255. package/dist/esm/Challenge/UCs/SerializeChallenge.js.map +1 -1
  256. package/dist/esm/Challenge/UCs/ShowChallengeHelpUC.test.js +3 -2
  257. package/dist/esm/Challenge/UCs/ShowChallengeHelpUC.test.js.map +1 -1
  258. package/dist/esm/ChannelModel/PMs/ActiveModelPM.js +7 -6
  259. package/dist/esm/ChannelModel/PMs/ActiveModelPM.js.map +1 -1
  260. package/dist/esm/ChannelModel/PMs/ActiveModelPM.test.js +2 -6
  261. package/dist/esm/ChannelModel/PMs/ActiveModelPM.test.js.map +1 -1
  262. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.js +5 -3
  263. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.js.map +1 -1
  264. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.test.js +1 -0
  265. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.test.js.map +1 -1
  266. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.js +3 -7
  267. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.js.map +1 -1
  268. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.test.js +1 -0
  269. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.test.js.map +1 -1
  270. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.js +3 -9
  271. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.js.map +1 -1
  272. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js +1 -0
  273. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js.map +1 -1
  274. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.js +3 -7
  275. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.js.map +1 -1
  276. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js +1 -0
  277. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js.map +1 -1
  278. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js +3 -9
  279. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js.map +1 -1
  280. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js +1 -0
  281. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js.map +1 -1
  282. package/dist/esm/ChannelModel/UC/LoadChannelModelUC.test.js +6 -6
  283. package/dist/esm/ChannelModel/UC/LoadChannelModelUC.test.js.map +1 -1
  284. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js +1 -1
  285. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  286. package/dist/esm/ChannelModel/UC/SerializeActiveModel.js +1 -1
  287. package/dist/esm/ChannelModel/UC/SerializeActiveModel.js.map +1 -1
  288. package/dist/esm/Dispatcher/Entities/AppDispatcher.js +7 -0
  289. package/dist/esm/Dispatcher/Entities/AppDispatcher.js.map +1 -1
  290. package/dist/esm/Dispatcher/Entities/AppDispatcher.test.js +31 -0
  291. package/dist/esm/Dispatcher/Entities/AppDispatcher.test.js.map +1 -1
  292. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js +3 -1
  293. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
  294. package/dist/esm/Dispatcher/Mocks/GetAssetBlobURLUCMock.js +1 -1
  295. package/dist/esm/Dispatcher/Mocks/GetAssetBlobURLUCMock.js.map +1 -1
  296. package/dist/esm/Dispatcher/Mocks/GetLinkedAssetsUCMock.js +1 -1
  297. package/dist/esm/Dispatcher/Mocks/GetLinkedAssetsUCMock.js.map +1 -1
  298. package/dist/esm/Dispatcher/Mocks/MockDispatcher.js +2 -2
  299. package/dist/esm/Dispatcher/Mocks/MockDispatcher.js.map +1 -1
  300. package/dist/esm/Dispatcher/Mocks/MockGetAssetFolderURL.js +1 -1
  301. package/dist/esm/Dispatcher/Mocks/MockGetAssetFolderURL.js.map +1 -1
  302. package/dist/esm/Dispatcher/Mocks/MockShowAlert.js +1 -1
  303. package/dist/esm/Dispatcher/Mocks/MockShowAlert.js.map +1 -1
  304. package/dist/esm/Dispatcher/Mocks/MockShowConfirm.js +1 -1
  305. package/dist/esm/Dispatcher/Mocks/MockShowConfirm.js.map +1 -1
  306. package/dist/esm/Dispatcher/Mocks/MockShowMarkdown.js +1 -1
  307. package/dist/esm/Dispatcher/Mocks/MockShowMarkdown.js.map +1 -1
  308. package/dist/esm/Dispatcher/Mocks/MockShowSpinner.js +1 -1
  309. package/dist/esm/Dispatcher/Mocks/MockShowSpinner.js.map +1 -1
  310. package/dist/esm/Dispatcher/Mocks/MockSubmitResult.js +5 -5
  311. package/dist/esm/Dispatcher/Mocks/MockSubmitResult.js.map +1 -1
  312. package/dist/esm/Dispatcher/Mocks/ShowSelectModelUCMock.js +1 -1
  313. package/dist/esm/Dispatcher/Mocks/ShowSelectModelUCMock.js.map +1 -1
  314. package/dist/esm/Dispatcher/UC/AppIsReadyUC.test.js +3 -1
  315. package/dist/esm/Dispatcher/UC/AppIsReadyUC.test.js.map +1 -1
  316. package/dist/esm/Dispatcher/UC/DispatchStartZSpaceUC.test.js +2 -1
  317. package/dist/esm/Dispatcher/UC/DispatchStartZSpaceUC.test.js.map +1 -1
  318. package/dist/esm/Dispatcher/UC/DispatchStateChangeUC.test.js +1 -0
  319. package/dist/esm/Dispatcher/UC/DispatchStateChangeUC.test.js.map +1 -1
  320. package/dist/esm/Dispatcher/UC/DispatchStopZSpaceUC.test.js +2 -1
  321. package/dist/esm/Dispatcher/UC/DispatchStopZSpaceUC.test.js.map +1 -1
  322. package/dist/esm/Dispatcher/UC/GetAssetBlobURLUC.test.js +3 -1
  323. package/dist/esm/Dispatcher/UC/GetAssetBlobURLUC.test.js.map +1 -1
  324. package/dist/esm/Dispatcher/UC/GetAssetFolderURLUC.test.js +3 -1
  325. package/dist/esm/Dispatcher/UC/GetAssetFolderURLUC.test.js.map +1 -1
  326. package/dist/esm/Dispatcher/UC/GetAssetMetaUC.test.js +3 -1
  327. package/dist/esm/Dispatcher/UC/GetAssetMetaUC.test.js.map +1 -1
  328. package/dist/esm/Dispatcher/UC/GetAssetsForOwnerUC.test.js +3 -1
  329. package/dist/esm/Dispatcher/UC/GetAssetsForOwnerUC.test.js.map +1 -1
  330. package/dist/esm/Dispatcher/UC/GetLinkedAssetsUC.test.js +3 -1
  331. package/dist/esm/Dispatcher/UC/GetLinkedAssetsUC.test.js.map +1 -1
  332. package/dist/esm/Dispatcher/UC/GoToNextStateUC.test.js +3 -1
  333. package/dist/esm/Dispatcher/UC/GoToNextStateUC.test.js.map +1 -1
  334. package/dist/esm/Dispatcher/UC/GoToPreviousStateUC.test.js +3 -1
  335. package/dist/esm/Dispatcher/UC/GoToPreviousStateUC.test.js.map +1 -1
  336. package/dist/esm/Dispatcher/UC/HasNextStateUC.test.js +3 -1
  337. package/dist/esm/Dispatcher/UC/HasNextStateUC.test.js.map +1 -1
  338. package/dist/esm/Dispatcher/UC/HasPreviousStateUC.test.js +3 -1
  339. package/dist/esm/Dispatcher/UC/HasPreviousStateUC.test.js.map +1 -1
  340. package/dist/esm/Dispatcher/UC/IsAssetFetchedUC.test.js +3 -1
  341. package/dist/esm/Dispatcher/UC/IsAssetFetchedUC.test.js.map +1 -1
  342. package/dist/esm/Dispatcher/UC/IsZSpaceAvailableUC.test.js +3 -1
  343. package/dist/esm/Dispatcher/UC/IsZSpaceAvailableUC.test.js.map +1 -1
  344. package/dist/esm/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js +3 -1
  345. package/dist/esm/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js.map +1 -1
  346. package/dist/esm/Dispatcher/UC/RestoreCurrentStateUC.test.js +3 -1
  347. package/dist/esm/Dispatcher/UC/RestoreCurrentStateUC.test.js.map +1 -1
  348. package/dist/esm/Dispatcher/UC/StateIsCompleteUC.test.js +3 -1
  349. package/dist/esm/Dispatcher/UC/StateIsCompleteUC.test.js.map +1 -1
  350. package/dist/esm/Dispatcher/UC/SubmitActivityAssetUC.test.js +5 -3
  351. package/dist/esm/Dispatcher/UC/SubmitActivityAssetUC.test.js.map +1 -1
  352. package/dist/esm/Dispatcher/UC/SubmitResultResultUC.test.js +11 -5
  353. package/dist/esm/Dispatcher/UC/SubmitResultResultUC.test.js.map +1 -1
  354. package/dist/esm/Enablement/PM/EnabledStatePM.js +5 -9
  355. package/dist/esm/Enablement/PM/EnabledStatePM.js.map +1 -1
  356. package/dist/esm/Enablement/PM/EnabledStatePM.test.js +1 -0
  357. package/dist/esm/Enablement/PM/EnabledStatePM.test.js.map +1 -1
  358. package/dist/esm/Environment/UCs/SerializeEnvironment.js +1 -1
  359. package/dist/esm/Environment/UCs/SerializeEnvironment.js.map +1 -1
  360. package/dist/esm/Hideable/Factories/setupHideable.test.js +6 -0
  361. package/dist/esm/Hideable/Factories/setupHideable.test.js.map +1 -1
  362. package/dist/esm/Hideable/UCs/SerializeHideableObjects.js +1 -1
  363. package/dist/esm/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
  364. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  365. package/dist/esm/HoverLabel/UseCases/SerializeAllowHoverLabel.js +1 -1
  366. package/dist/esm/HoverLabel/UseCases/SerializeAllowHoverLabel.js.map +1 -1
  367. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  368. package/dist/esm/Label/Controller/submitCustomLabel.test.js +3 -0
  369. package/dist/esm/Label/Controller/submitCustomLabel.test.js.map +1 -1
  370. package/dist/esm/Label/Controller/updateCustomLabel.test.js +3 -0
  371. package/dist/esm/Label/Controller/updateCustomLabel.test.js.map +1 -1
  372. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js +0 -7
  373. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  374. package/dist/esm/Label/UC/SerializeCustomLabels.js +1 -1
  375. package/dist/esm/Label/UC/SerializeCustomLabels.js.map +1 -1
  376. package/dist/esm/Label/UC/SetCustomLabelUC.test.js +0 -7
  377. package/dist/esm/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  378. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  379. package/dist/esm/LabelDrop/UseCases/SerializeLabelDrop.js +1 -1
  380. package/dist/esm/LabelDrop/UseCases/SerializeLabelDrop.js.map +1 -1
  381. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  382. package/dist/esm/Landmarks/PM/LandmarkSizePM.js +5 -8
  383. package/dist/esm/Landmarks/PM/LandmarkSizePM.js.map +1 -1
  384. package/dist/esm/Landmarks/UseCases/SerializeLandmarks.js +1 -1
  385. package/dist/esm/Landmarks/UseCases/SerializeLandmarks.js.map +1 -1
  386. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +2 -0
  387. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  388. package/dist/esm/ObjectPick/UseCases/SerializeObjectPick.js +1 -1
  389. package/dist/esm/ObjectPick/UseCases/SerializeObjectPick.js.map +1 -1
  390. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  391. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
  392. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  393. package/dist/esm/OverlayColor/UC/SerializeOverlayColoredObjects.js +1 -1
  394. package/dist/esm/OverlayColor/UC/SerializeOverlayColoredObjects.js.map +1 -1
  395. package/dist/esm/Question/UC/SerializeQuestionChallenge.js +1 -1
  396. package/dist/esm/Question/UC/SerializeQuestionChallenge.js.map +1 -1
  397. package/dist/esm/Question/UC/SubmitQuestionAnswerUC.test.js +1 -0
  398. package/dist/esm/Question/UC/SubmitQuestionAnswerUC.test.js.map +1 -1
  399. package/dist/esm/RequestHandler/Entities/AppHandler.js +4 -0
  400. package/dist/esm/RequestHandler/Entities/AppHandler.js.map +1 -1
  401. package/dist/esm/RequestHandler/Entities/AppHandler.test.js +27 -0
  402. package/dist/esm/RequestHandler/Entities/AppHandler.test.js.map +1 -1
  403. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.js +28 -29
  404. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.js.map +1 -1
  405. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js +126 -0
  406. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js.map +1 -0
  407. package/dist/esm/RequestHandler/Mocks/MockAppHandlerEntity.js +1 -0
  408. package/dist/esm/RequestHandler/Mocks/MockAppHandlerEntity.js.map +1 -1
  409. package/dist/esm/SceneRoot/UC/SerializeSceneRoot.js +1 -1
  410. package/dist/esm/SceneRoot/UC/SerializeSceneRoot.js.map +1 -1
  411. package/dist/esm/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
  412. package/dist/esm/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
  413. package/dist/esm/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
  414. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.js +17 -0
  415. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.js.map +1 -0
  416. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.test.js +32 -0
  417. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.test.js.map +1 -0
  418. package/dist/esm/StateMachine/Controller/index.js +1 -1
  419. package/dist/esm/StateMachine/Controller/index.js.map +1 -1
  420. package/dist/esm/StateMachine/Entities/StateMachineEntity.js +26 -4
  421. package/dist/esm/StateMachine/Entities/StateMachineEntity.js.map +1 -1
  422. package/dist/esm/StateMachine/Entities/StateMachineEntity.test.js +23 -4
  423. package/dist/esm/StateMachine/Entities/StateMachineEntity.test.js.map +1 -1
  424. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  425. package/dist/esm/StoredView/PM/HasStoredViewPM.js +7 -11
  426. package/dist/esm/StoredView/PM/HasStoredViewPM.js.map +1 -1
  427. package/dist/esm/StoredView/PM/HasStoredViewPM.test.js +1 -0
  428. package/dist/esm/StoredView/PM/HasStoredViewPM.test.js.map +1 -1
  429. package/dist/esm/StoredView/UC/SerializeStoredView.js +1 -1
  430. package/dist/esm/StoredView/UC/SerializeStoredView.js.map +1 -1
  431. package/dist/esm/Stylus/PMs/StylusIsInUsePM.js +8 -7
  432. package/dist/esm/Stylus/PMs/StylusIsInUsePM.js.map +1 -1
  433. package/dist/esm/Stylus/PMs/StylusIsInUsePM.test.js +2 -6
  434. package/dist/esm/Stylus/PMs/StylusIsInUsePM.test.js.map +1 -1
  435. package/dist/esm/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
  436. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  437. package/dist/esm/Transform3D/UC/PinchTransform.test.js.map +1 -1
  438. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  439. package/dist/esm/Transparency/UCs/SerializeTransparentObjects.js +1 -1
  440. package/dist/esm/Transparency/UCs/SerializeTransparentObjects.js.map +1 -1
  441. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.js +7 -6
  442. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.js.map +1 -1
  443. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.test.js +4 -8
  444. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.test.js.map +1 -1
  445. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.js +7 -6
  446. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.js.map +1 -1
  447. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.test.js +1 -0
  448. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.test.js.map +1 -1
  449. package/dist/types/Babylon/PM/ShowBabylonInspectorPM.d.ts +3 -2
  450. package/dist/types/Babylon/PM/ShowBabylonInspectorPM.d.ts.map +1 -1
  451. package/dist/types/BaseApp/PM/IsAuthoringPM.d.ts +2 -2
  452. package/dist/types/BaseApp/PM/IsAuthoringPM.d.ts.map +1 -1
  453. package/dist/types/BaseApp/PM/IsReviewingPM.d.ts +2 -2
  454. package/dist/types/BaseApp/PM/IsReviewingPM.d.ts.map +1 -1
  455. package/dist/types/BaseApp/PM/SlideTextPM.d.ts +2 -2
  456. package/dist/types/BaseApp/PM/SlideTextPM.d.ts.map +1 -1
  457. package/dist/types/BaseApp/UC/SerializeBaseAppState.d.ts +1 -1
  458. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts +1 -1
  459. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts.map +1 -1
  460. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts +1 -1
  461. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts.map +1 -1
  462. package/dist/types/Callouts/UC/SerializeCallouts.d.ts +1 -1
  463. package/dist/types/Challenge/UCs/SerializeChallenge.d.ts +1 -1
  464. package/dist/types/ChannelModel/PMs/ActiveModelPM.d.ts +4 -3
  465. package/dist/types/ChannelModel/PMs/ActiveModelPM.d.ts.map +1 -1
  466. package/dist/types/ChannelModel/UC/SerializeActiveModel.d.ts +2 -2
  467. package/dist/types/Dispatcher/Entities/AppDispatcher.d.ts +1 -0
  468. package/dist/types/Dispatcher/Entities/AppDispatcher.d.ts.map +1 -1
  469. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts +1 -0
  470. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts.map +1 -1
  471. package/dist/types/Dispatcher/Mocks/GetAssetBlobURLUCMock.d.ts +1 -1
  472. package/dist/types/Dispatcher/Mocks/GetAssetBlobURLUCMock.d.ts.map +1 -1
  473. package/dist/types/Dispatcher/Mocks/GetLinkedAssetsUCMock.d.ts +1 -1
  474. package/dist/types/Dispatcher/Mocks/GetLinkedAssetsUCMock.d.ts.map +1 -1
  475. package/dist/types/Dispatcher/Mocks/MockDispatcher.d.ts +2 -2
  476. package/dist/types/Dispatcher/Mocks/MockDispatcher.d.ts.map +1 -1
  477. package/dist/types/Dispatcher/Mocks/MockGetAssetFolderURL.d.ts +1 -1
  478. package/dist/types/Dispatcher/Mocks/MockGetAssetFolderURL.d.ts.map +1 -1
  479. package/dist/types/Dispatcher/Mocks/MockShowAlert.d.ts +1 -1
  480. package/dist/types/Dispatcher/Mocks/MockShowAlert.d.ts.map +1 -1
  481. package/dist/types/Dispatcher/Mocks/MockShowConfirm.d.ts +1 -1
  482. package/dist/types/Dispatcher/Mocks/MockShowConfirm.d.ts.map +1 -1
  483. package/dist/types/Dispatcher/Mocks/MockShowMarkdown.d.ts +1 -1
  484. package/dist/types/Dispatcher/Mocks/MockShowMarkdown.d.ts.map +1 -1
  485. package/dist/types/Dispatcher/Mocks/MockShowSpinner.d.ts +1 -1
  486. package/dist/types/Dispatcher/Mocks/MockShowSpinner.d.ts.map +1 -1
  487. package/dist/types/Dispatcher/Mocks/MockSubmitResult.d.ts +5 -5
  488. package/dist/types/Dispatcher/Mocks/MockSubmitResult.d.ts.map +1 -1
  489. package/dist/types/Dispatcher/Mocks/ShowSelectModelUCMock.d.ts +4 -1
  490. package/dist/types/Dispatcher/Mocks/ShowSelectModelUCMock.d.ts.map +1 -1
  491. package/dist/types/Environment/UCs/SerializeEnvironment.d.ts +1 -1
  492. package/dist/types/Hideable/UCs/SerializeHideableObjects.d.ts +2 -2
  493. package/dist/types/HoverLabel/UseCases/SerializeAllowHoverLabel.d.ts +1 -1
  494. package/dist/types/Label/UC/SerializeCustomLabels.d.ts +1 -2
  495. package/dist/types/Label/UC/SerializeCustomLabels.d.ts.map +1 -1
  496. package/dist/types/LabelDrop/UseCases/SerializeLabelDrop.d.ts +1 -1
  497. package/dist/types/Landmarks/UseCases/SerializeLandmarks.d.ts +1 -1
  498. package/dist/types/ObjectPick/UseCases/SerializeObjectPick.d.ts +1 -1
  499. package/dist/types/OverlayColor/UC/SerializeOverlayColoredObjects.d.ts +2 -2
  500. package/dist/types/Question/UC/SerializeQuestionChallenge.d.ts +1 -1
  501. package/dist/types/RequestHandler/Entities/AppHandler.d.ts +1 -0
  502. package/dist/types/RequestHandler/Entities/AppHandler.d.ts.map +1 -1
  503. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.d.ts +19 -20
  504. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.d.ts.map +1 -1
  505. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.test.d.ts +2 -0
  506. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.test.d.ts.map +1 -0
  507. package/dist/types/RequestHandler/Mocks/MockAppHandlerEntity.d.ts +1 -0
  508. package/dist/types/RequestHandler/Mocks/MockAppHandlerEntity.d.ts.map +1 -1
  509. package/dist/types/SceneRoot/UC/SerializeSceneRoot.d.ts +1 -1
  510. package/dist/types/StateMachine/Controller/clickRestorePreviousState.d.ts +7 -0
  511. package/dist/types/StateMachine/Controller/clickRestorePreviousState.d.ts.map +1 -0
  512. package/dist/types/StateMachine/Controller/clickRestorePreviousState.test.d.ts +2 -0
  513. package/dist/types/StateMachine/Controller/clickRestorePreviousState.test.d.ts.map +1 -0
  514. package/dist/types/StateMachine/Controller/index.d.ts +1 -1
  515. package/dist/types/StateMachine/Controller/index.d.ts.map +1 -1
  516. package/dist/types/StateMachine/Entities/StateMachineEntity.d.ts +87 -2
  517. package/dist/types/StateMachine/Entities/StateMachineEntity.d.ts.map +1 -1
  518. package/dist/types/StoredView/PM/HasStoredViewPM.d.ts +2 -2
  519. package/dist/types/StoredView/PM/HasStoredViewPM.d.ts.map +1 -1
  520. package/dist/types/StoredView/UC/SerializeStoredView.d.ts +1 -1
  521. package/dist/types/Stylus/PMs/StylusIsInUsePM.d.ts +2 -2
  522. package/dist/types/Stylus/PMs/StylusIsInUsePM.d.ts.map +1 -1
  523. package/dist/types/Transform3D/UC/MoveTransformUC.d.ts +3 -3
  524. package/dist/types/Transform3D/UC/MoveTransformUC.d.ts.map +1 -1
  525. package/dist/types/Transform3D/UC/PanTransformUC.d.ts +3 -3
  526. package/dist/types/Transform3D/UC/PanTransformUC.d.ts.map +1 -1
  527. package/dist/types/Transform3D/UC/TryMoveTransformUC.d.ts +1 -1
  528. package/dist/types/Transform3D/UC/TryMoveTransformUC.d.ts.map +1 -1
  529. package/dist/types/Transform3D/UC/TryPanTransformUC.d.ts +2 -2
  530. package/dist/types/Transform3D/UC/TryPanTransformUC.d.ts.map +1 -1
  531. package/dist/types/Transparency/UCs/SerializeTransparentObjects.d.ts +2 -2
  532. package/dist/types/zSpace/PM/ZSpaceIsEnabledPM.d.ts +2 -2
  533. package/dist/types/zSpace/PM/ZSpaceIsEnabledPM.d.ts.map +1 -1
  534. package/dist/types/zSpace/PM/ZSpaceIsSupportedPM.d.ts +2 -2
  535. package/dist/types/zSpace/PM/ZSpaceIsSupportedPM.d.ts.map +1 -1
  536. package/package.json +4 -3
  537. package/src/Dispatcher/README.md +652 -0
  538. package/src/RequestHandler/README.md +790 -0
  539. package/src/StateMachine/README.md +430 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TryAddNewLandmarkUC.test.js","sourceRoot":"","sources":["../../../../src/Landmarks/UseCases/TryAddNewLandmarkUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport { makeMockSceneRayPickUC, SceneRayPick } from \"../../Babylon\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { makeToolRepo } from \"../../Tools\";\nimport { makeMockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\nimport { makeLandmarkGlobals } from \"../Entities\";\nimport { makeLandmarkRepoEntity } from \"../Entities/LandmarkRepo\";\nimport { makeTryAddLandmarkUC } from \"./TryAddNewLandmarkUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const dispatchStateChange = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n dispatchStateChange.doDispatch = doDispatchMock;\n\n const mockUndo = makeMockUndoRedo(appObjects);\n const submitActionMock = jest.fn();\n mockUndo.submitAction = submitActionMock;\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({\n hit: true,\n appObjectID: \"anAppObject\",\n normal: Vector3.Forward(),\n worldPickPoint: Vector3.Zero(),\n });\n mockRayPick.sceneRayPick = mockPick;\n\n const pickedAO = appObjects.getOrCreate(\"anAppObject\");\n const repo = makeLandmarkRepoEntity(pickedAO);\n\n const landmarkGlobals = makeLandmarkGlobals(\n appObjects.getOrCreate(\"LandmarkGlobals\"),\n );\n const tryAddLandmarkUC = makeTryAddLandmarkUC(pickedAO);\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\n toolRepo.makeTool(\"LANDMARK\");\n toolRepo.makeTool(\"OTHER\");\n toolRepo.triggerTool(\"LANDMARK\");\n\n return {\n tryAddLandmarkUC,\n landmarkGlobals,\n mockPick,\n repo,\n doDispatchMock,\n mockUndo,\n submitActionMock,\n toolRepo,\n };\n}\n\ndescribe(\"Try Add Landmark Test\", () => {\n it(\"Tries to add new landmark\", () => {\n const { repo, tryAddLandmarkUC } = makeTestRig();\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n\n expect(repo.hasForAppObject(newLandmark.appObject.id)).toEqual(true);\n });\n\n it(\"Sets the position to the pick pos\", () => {\n const { tryAddLandmarkUC, mockPick } = makeTestRig();\n\n mockPick.mockReturnValue({\n hit: true,\n appObjectID: \"anAppObject\",\n normal: Vector3.Forward(),\n worldPickPoint: new Vector3(1, 2, 3),\n });\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n\n expect(newLandmark.position).toEqual(new Vector3(1, 2, 3));\n });\n\n it(\"Sets the rotation to the look rotation\", () => {\n const { tryAddLandmarkUC, mockPick } = makeTestRig();\n\n mockPick.mockReturnValue({\n hit: true,\n appObjectID: \"anAppObject\",\n normal: new Vector3(1, 2, 3),\n worldPickPoint: Vector3.Zero(),\n });\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n const expectedQ = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\n\n expect(Quaternion.Close(newLandmark.rotation, expectedQ)).toEqual(true);\n });\n\n it(\"Sets the last size from landmarkGlobals\", () => {\n const { tryAddLandmarkUC, landmarkGlobals } = makeTestRig();\n\n landmarkGlobals.lastSize = 0.8;\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(newLandmark?.size).toEqual(0.8);\n });\n\n it(\"Sets label\", () => {\n const { tryAddLandmarkUC } = makeTestRig();\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(newLandmark?.label.display).toEqual(\"\");\n });\n\n it(\"Submits an undo\", () => {\n const { tryAddLandmarkUC, submitActionMock } = makeTestRig();\n\n tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(submitActionMock).toHaveBeenCalled();\n });\n\n it(\"Dispatches state change\", () => {\n const { tryAddLandmarkUC, doDispatchMock } = makeTestRig();\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Does not add if allow is returns false\", () => {\n const { tryAddLandmarkUC } = makeTestRig();\n\n tryAddLandmarkUC.allow = () => {\n return false;\n };\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(newLandmark).toBeUndefined();\n });\n\n it(\"Does not allow if the tool is not Callout\", () => {\n const { tryAddLandmarkUC, toolRepo } = makeTestRig();\n\n toolRepo.triggerTool(\"OTHER\");\n\n expect(tryAddLandmarkUC.allow()).toEqual(false);\n\n toolRepo.triggerTool(\"LANDMARK\");\n\n expect(tryAddLandmarkUC.allow()).toEqual(true);\n });\n});\n"]}
1
+ {"version":3,"file":"TryAddNewLandmarkUC.test.js","sourceRoot":"","sources":["../../../../src/Landmarks/UseCases/TryAddNewLandmarkUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAAkE;AAClE,2CAAqE;AACrE,4FAA6F;AAC7F,kEAAmE;AACnE,uCAA2C;AAC3C,oEAAqE;AACrE,0CAAkD;AAClD,2DAAkE;AAClE,+DAA6D;AAE7D,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,mBAAmB,GAAG,IAAA,qDAA2B,EAAC,UAAU,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACjC,mBAAmB,CAAC,UAAU,GAAG,cAAc,CAAC;IAEhD,MAAM,QAAQ,GAAG,IAAA,+BAAgB,EAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACnC,QAAQ,CAAC,YAAY,GAAG,gBAAgB,CAAC;IAEzC,MAAM,WAAW,GAAG,IAAA,gCAAsB,EAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QACzC,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,aAAa;QAC1B,MAAM,EAAE,cAAO,CAAC,OAAO,EAAE;QACzB,cAAc,EAAE,cAAO,CAAC,IAAI,EAAE;KAC/B,CAAC,CAAC;IACH,WAAW,CAAC,YAAY,GAAG,QAAQ,CAAC;IAEpC,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAA,qCAAsB,EAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,eAAe,GAAG,IAAA,8BAAmB,EACzC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAC1C,CAAC;IACF,MAAM,SAAS,GAAG,IAAA,yBAAa,EAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,IAAA,0CAAoB,EAAC,QAAQ,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEjC,OAAO;QACL,gBAAgB;QAChB,eAAe;QACf,QAAQ;QACR,IAAI;QACJ,cAAc;QACd,QAAQ;QACR,gBAAgB;QAChB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAEjD,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAErD,QAAQ,CAAC,eAAe,CAAC;YACvB,GAAG,EAAE,IAAI;YACT,WAAW,EAAE,aAAa;YAC1B,MAAM,EAAE,cAAO,CAAC,OAAO,EAAE;YACzB,cAAc,EAAE,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAErD,QAAQ,CAAC,eAAe,CAAC;YACvB,GAAG,EAAE,IAAI;YACT,WAAW,EAAE,aAAa;YAC1B,MAAM,EAAE,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5B,cAAc,EAAE,cAAO,CAAC,IAAI,EAAE;SAC/B,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,iBAAU,CAAC,mBAAmB,CAAC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvE,MAAM,CAAC,iBAAU,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAE5D,eAAe,CAAC,QAAQ,GAAG,GAAG,CAAC;QAE/B,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1E,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACpB,MAAM,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1E,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7D,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,gBAAgB,CAAC,KAAK,GAAG,GAAG,EAAE;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1E,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAErD,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEhD,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEjC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport { makeMockSceneRayPickUC, SceneRayPick } from \"../../Babylon\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { makeSelection } from \"../../Selection/Entities/Selection\";\nimport { makeToolRepo } from \"../../Tools\";\nimport { makeMockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\nimport { makeLandmarkGlobals } from \"../Entities\";\nimport { makeLandmarkRepoEntity } from \"../Entities/LandmarkRepo\";\nimport { makeTryAddLandmarkUC } from \"./TryAddNewLandmarkUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const dispatchStateChange = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n dispatchStateChange.doDispatch = doDispatchMock;\n\n const mockUndo = makeMockUndoRedo(appObjects);\n const submitActionMock = jest.fn();\n mockUndo.submitAction = submitActionMock;\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({\n hit: true,\n appObjectID: \"anAppObject\",\n normal: Vector3.Forward(),\n worldPickPoint: Vector3.Zero(),\n });\n mockRayPick.sceneRayPick = mockPick;\n\n const pickedAO = appObjects.getOrCreate(\"anAppObject\");\n const repo = makeLandmarkRepoEntity(pickedAO);\n\n const landmarkGlobals = makeLandmarkGlobals(\n appObjects.getOrCreate(\"LandmarkGlobals\"),\n );\n const selection = makeSelection(appObjects.getOrCreate(\"Selection\"));\n const tryAddLandmarkUC = makeTryAddLandmarkUC(pickedAO);\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\n toolRepo.makeTool(\"LANDMARK\");\n toolRepo.makeTool(\"OTHER\");\n toolRepo.triggerTool(\"LANDMARK\");\n\n return {\n tryAddLandmarkUC,\n landmarkGlobals,\n mockPick,\n repo,\n doDispatchMock,\n mockUndo,\n submitActionMock,\n toolRepo,\n };\n}\n\ndescribe(\"Try Add Landmark Test\", () => {\n it(\"Tries to add new landmark\", () => {\n const { repo, tryAddLandmarkUC } = makeTestRig();\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n\n expect(repo.hasForAppObject(newLandmark.appObject.id)).toEqual(true);\n });\n\n it(\"Sets the position to the pick pos\", () => {\n const { tryAddLandmarkUC, mockPick } = makeTestRig();\n\n mockPick.mockReturnValue({\n hit: true,\n appObjectID: \"anAppObject\",\n normal: Vector3.Forward(),\n worldPickPoint: new Vector3(1, 2, 3),\n });\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n\n expect(newLandmark.position).toEqual(new Vector3(1, 2, 3));\n });\n\n it(\"Sets the rotation to the look rotation\", () => {\n const { tryAddLandmarkUC, mockPick } = makeTestRig();\n\n mockPick.mockReturnValue({\n hit: true,\n appObjectID: \"anAppObject\",\n normal: new Vector3(1, 2, 3),\n worldPickPoint: Vector3.Zero(),\n });\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n const expectedQ = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\n\n expect(Quaternion.Close(newLandmark.rotation, expectedQ)).toEqual(true);\n });\n\n it(\"Sets the last size from landmarkGlobals\", () => {\n const { tryAddLandmarkUC, landmarkGlobals } = makeTestRig();\n\n landmarkGlobals.lastSize = 0.8;\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(newLandmark?.size).toEqual(0.8);\n });\n\n it(\"Sets label\", () => {\n const { tryAddLandmarkUC } = makeTestRig();\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(newLandmark?.label.display).toEqual(\"\");\n });\n\n it(\"Submits an undo\", () => {\n const { tryAddLandmarkUC, submitActionMock } = makeTestRig();\n\n tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(submitActionMock).toHaveBeenCalled();\n });\n\n it(\"Dispatches state change\", () => {\n const { tryAddLandmarkUC, doDispatchMock } = makeTestRig();\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n if (!newLandmark) {\n expect(1).toEqual(0);\n return;\n }\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Does not add if allow is returns false\", () => {\n const { tryAddLandmarkUC } = makeTestRig();\n\n tryAddLandmarkUC.allow = () => {\n return false;\n };\n\n const newLandmark = tryAddLandmarkUC.addFromRay(ParametricLine.Forward());\n\n expect(newLandmark).toBeUndefined();\n });\n\n it(\"Does not allow if the tool is not Callout\", () => {\n const { tryAddLandmarkUC, toolRepo } = makeTestRig();\n\n toolRepo.triggerTool(\"OTHER\");\n\n expect(tryAddLandmarkUC.allow()).toEqual(false);\n\n toolRepo.triggerTool(\"LANDMARK\");\n\n expect(tryAddLandmarkUC.allow()).toEqual(true);\n });\n});\n"]}
@@ -35,7 +35,7 @@ class SerializeObjectPick extends core_1.AppObjectUC {
35
35
  constructor(appObject) {
36
36
  super(appObject, SerializeObjectPick.type);
37
37
  this.name = "object-pick";
38
- this.seriliziationVersion = 1;
38
+ this.serializationVersion = 1;
39
39
  const objectPick = ObjectPickEntity_1.ObjectPickEntity.get(this.appObjects);
40
40
  if (!objectPick) {
41
41
  throw new Error("[SerializeObjectPick] App Object does not have a Object Pick Entity. Add one");
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeObjectPick.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/SerializeObjectPick.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,qDAA0E;AAC1E,mEAAgE;AAEhE,MAAa,mBACX,SAAQ,kBAAW;IAUnB,cAAc;QACZ,MAAM,KAAK,GAA2B;YACpC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB;SACnD,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,OAAe;QAC7C,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,KAA+B,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAA6B;QAChD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;QACxC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;IAC1C,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAtC7C,SAAI,GAAG,aAAa,CAAC;QACrB,yBAAoB,GAAG,CAAC,CAAC;QAuCvB,MAAM,UAAU,GAAG,mCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,YAAY,GAAG,iCAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AA5DH,kDA6DC;AAzDiB,wBAAI,GAAG,qBAAqB,AAAxB,CAAyB","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { SerializedSystem, StateMachineEntity } from \"../../StateMachine\";\nimport { ObjectPickEntity } from \"../Entities/ObjectPickEntity\";\n\nexport class SerializeObjectPick\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeObjectPick\";\n\n name = \"object-pick\";\n seriliziationVersion = 1;\n\n private objectPick: ObjectPickEntity;\n\n getSystemState(): object {\n const state: SerializedObjectPickV1 = {\n correctObjectIds: this.objectPick.correctObjectIds,\n };\n\n return state;\n }\n\n applySystemState(state: object, version: number): void {\n if (version === 1) {\n this.applyStateV1(state as SerializedObjectPickV1);\n } else {\n this.applyDefaultState();\n }\n }\n\n private applyStateV1(state: SerializedObjectPickV1) {\n if (state.correctObjectIds === undefined) {\n this.applyDefaultState();\n return;\n }\n\n this.objectPick.clearCorrectObjectIds();\n state.correctObjectIds.forEach((id) => {\n this.objectPick.addCorrectObjectId(id);\n });\n }\n\n applyDefaultState(): void {\n this.objectPick.clearCorrectObjectIds();\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeObjectPick.type);\n\n const objectPick = ObjectPickEntity.get(this.appObjects);\n if (!objectPick) {\n throw new Error(\n \"[SerializeObjectPick] App Object does not have a Object Pick Entity. Add one\",\n );\n }\n this.objectPick = objectPick;\n\n const stateMachine = StateMachineEntity.get(appObject.appObjectRepo);\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface SerializedObjectPickV1 {\n correctObjectIds: string[];\n}\n"]}
1
+ {"version":3,"file":"SerializeObjectPick.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/SerializeObjectPick.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,qDAA0E;AAC1E,mEAAgE;AAEhE,MAAa,mBACX,SAAQ,kBAAW;IAUnB,cAAc;QACZ,MAAM,KAAK,GAA2B;YACpC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB;SACnD,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,OAAe;QAC7C,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,KAA+B,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAA6B;QAChD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;QACxC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;IAC1C,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAtC7C,SAAI,GAAG,aAAa,CAAC;QACrB,yBAAoB,GAAG,CAAC,CAAC;QAuCvB,MAAM,UAAU,GAAG,mCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,YAAY,GAAG,iCAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AA5DH,kDA6DC;AAzDiB,wBAAI,GAAG,qBAAqB,AAAxB,CAAyB","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { SerializedSystem, StateMachineEntity } from \"../../StateMachine\";\nimport { ObjectPickEntity } from \"../Entities/ObjectPickEntity\";\n\nexport class SerializeObjectPick\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeObjectPick\";\n\n name = \"object-pick\";\n serializationVersion = 1;\n\n private objectPick: ObjectPickEntity;\n\n getSystemState(): object {\n const state: SerializedObjectPickV1 = {\n correctObjectIds: this.objectPick.correctObjectIds,\n };\n\n return state;\n }\n\n applySystemState(state: object, version: number): void {\n if (version === 1) {\n this.applyStateV1(state as SerializedObjectPickV1);\n } else {\n this.applyDefaultState();\n }\n }\n\n private applyStateV1(state: SerializedObjectPickV1) {\n if (state.correctObjectIds === undefined) {\n this.applyDefaultState();\n return;\n }\n\n this.objectPick.clearCorrectObjectIds();\n state.correctObjectIds.forEach((id) => {\n this.objectPick.addCorrectObjectId(id);\n });\n }\n\n applyDefaultState(): void {\n this.objectPick.clearCorrectObjectIds();\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeObjectPick.type);\n\n const objectPick = ObjectPickEntity.get(this.appObjects);\n if (!objectPick) {\n throw new Error(\n \"[SerializeObjectPick] App Object does not have a Object Pick Entity. Add one\",\n );\n }\n this.objectPick = objectPick;\n\n const stateMachine = StateMachineEntity.get(appObject.appObjectRepo);\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface SerializedObjectPickV1 {\n correctObjectIds: string[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TrySelectObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySelectObjectPickUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { SceneRayPick } from \"../../Babylon/UC/SceneRayPickUC\";\nimport { makeChallengeEntityMock } from \"../../Challenge/Mocks/ChallengeEntityMock\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { makeUndoRedoEntity } from \"../../UndoRedo/Entities/UndoRedoEntity\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySelectObjectPickUC,\n TrySelectObjectPickUC,\n} from \"./TrySelectObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const mockDispatchStateChange = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n mockDispatchStateChange.doDispatch = doDispatchMock;\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n const undo = makeUndoRedoEntity(appObjects.getOrCreate(\"Undo\"));\n const challenge = makeChallengeEntityMock(appObjects);\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n baseApp.isAuthoring = true;\n objectPick.isSelectingCorrectObjects = true;\n challenge.selectedChallenge = \"OBJECT_PICK\";\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: \"sceneObject\",\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const uc = makeTrySelectObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n\n return {\n objectPick,\n uc,\n baseApp,\n doDispatchMock,\n appObjects,\n mockPixelToRay,\n undo,\n mockPick,\n };\n}\n\ndescribe(\"Try Select Object Pick Use Case\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySelectObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8)\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Tries Select Object Pick successfully\", () => {\n const { uc, objectPick } = makeTestRig();\n\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).toHaveBeenCalledWith(\"sceneObject\");\n });\n\n it(\"Does not add when the pick does not hit\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: false,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Does not add when the pick does not an app object\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: undefined,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Dispatches a state change\", () => {\n const { uc, doDispatchMock } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Is undoable and redoable\", () => {\n const { uc, undo, objectPick } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n\n undo.doUndo();\n\n expect(objectPick.correctObjectIds).toEqual([]);\n\n undo.doRedo();\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n });\n\n it(\"Undo and redo dispatch a state change\", () => {\n const { uc, undo, doDispatchMock } = makeTestRig();\n uc.tryWithRay(ParametricLine.Forward());\n\n doDispatchMock.mockClear();\n\n undo.doUndo();\n expect(doDispatchMock).toHaveBeenCalled();\n\n doDispatchMock.mockClear();\n undo.doRedo();\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n});\n"]}
1
+ {"version":3,"file":"TrySelectObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySelectObjectPickUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAA+D;AAC/D,oEAAqE;AACrE,+CAG6B;AAE7B,mFAAoF;AACpF,4FAA6F;AAC7F,2EAA4E;AAC5E,mEAAoE;AACpE,mEAGiC;AAEjC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,uBAAuB,GAAG,IAAA,qDAA2B,EAAC,UAAU,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACjC,uBAAuB,CAAC,UAAU,GAAG,cAAc,CAAC;IAEpD,MAAM,OAAO,GAAG,IAAA,+BAAgB,EAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,IAAA,mCAAkB,EAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,IAAA,uCAAoB,EAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAE9E,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,iBAAiB,GAAG,aAAa,CAAC;IAE5C,MAAM,cAAc,GAAiB;QACnC,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,aAAa;KAC3B,CAAC;IACF,MAAM,WAAW,GAAG,IAAA,8BAAsB,EAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAC3D,WAAW,CAAC,YAAY,GAAG,QAAQ,CAAC;IAEpC,MAAM,cAAc,GAAG,IAAA,iCAAyB,EAAC,UAAU,CAAC,CAAC;IAC7D,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAE3C,MAAM,EAAE,GAAG,IAAA,iDAAyB,EAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAE3E,OAAO;QACL,UAAU;QACV,EAAE;QACF,OAAO;QACP,cAAc;QACd,UAAU;QACV,cAAc;QACd,IAAI;QACJ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,6CAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,MAAM,OAAO,GAAG,qBAAc,CAAC,YAAY,CACzC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACrB,CAAC;QACD,cAAc,CAAC,eAA6B,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEvE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE1B,EAAE,CAAC,YAAY,CAAC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,oBAAoB,CACzD,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAClB,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEzD,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,cAAc,GAAiB;YACnC,GAAG,EAAE,KAAK;SACX,CAAC;QACF,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAEzC,cAAc,CAAC,GAAG,GAAG,KAAK,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEzD,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,cAAc,GAAiB;YACnC,GAAG,EAAE,IAAI;YACT,WAAW,EAAE,SAAS;SACvB,CAAC;QACF,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAEzC,cAAc,CAAC,GAAG,GAAG,KAAK,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEzD,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAE/C,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;QACnD,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,cAAc,CAAC,SAAS,EAAE,CAAC;QAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAE1C,cAAc,CAAC,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { SceneRayPick } from \"../../Babylon/UC/SceneRayPickUC\";\nimport { makeChallengeEntityMock } from \"../../Challenge/Mocks/ChallengeEntityMock\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { makeUndoRedoEntity } from \"../../UndoRedo/Entities/UndoRedoEntity\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySelectObjectPickUC,\n TrySelectObjectPickUC,\n} from \"./TrySelectObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const mockDispatchStateChange = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n mockDispatchStateChange.doDispatch = doDispatchMock;\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n const undo = makeUndoRedoEntity(appObjects.getOrCreate(\"Undo\"));\n const challenge = makeChallengeEntityMock(appObjects);\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n baseApp.isAuthoring = true;\n objectPick.isSelectingCorrectObjects = true;\n challenge.selectedChallenge = \"OBJECT_PICK\";\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: \"sceneObject\",\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const uc = makeTrySelectObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n\n return {\n objectPick,\n uc,\n baseApp,\n doDispatchMock,\n appObjects,\n mockPixelToRay,\n undo,\n mockPick,\n };\n}\n\ndescribe(\"Try Select Object Pick Use Case\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySelectObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8),\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Tries Select Object Pick successfully\", () => {\n const { uc, objectPick } = makeTestRig();\n\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).toHaveBeenCalledWith(\"sceneObject\");\n });\n\n it(\"Does not add when the pick does not hit\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: false,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Does not add when the pick does not an app object\", () => {\n const { uc, mockPick, objectPick } = makeTestRig();\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n appObjectID: undefined,\n };\n mockPick.mockReturnValue(mockPickResult);\n\n mockPickResult.hit = false;\n const spy = jest.spyOn(objectPick, \"addCorrectObjectId\");\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(spy).not.toHaveBeenCalled();\n });\n\n it(\"Dispatches a state change\", () => {\n const { uc, doDispatchMock } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Is undoable and redoable\", () => {\n const { uc, undo, objectPick } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n\n undo.doUndo();\n\n expect(objectPick.correctObjectIds).toEqual([]);\n\n undo.doRedo();\n\n expect(objectPick.correctObjectIds).toEqual([\"sceneObject\"]);\n });\n\n it(\"Undo and redo dispatch a state change\", () => {\n const { uc, undo, doDispatchMock } = makeTestRig();\n uc.tryWithRay(ParametricLine.Forward());\n\n doDispatchMock.mockClear();\n\n undo.doUndo();\n expect(doDispatchMock).toHaveBeenCalled();\n\n doDispatchMock.mockClear();\n undo.doRedo();\n\n expect(doDispatchMock).toHaveBeenCalled();\n });\n});\n"]}
@@ -14,6 +14,7 @@ function makeTestRig() {
14
14
  baseApp.isAuthoring = false;
15
15
  const challenge = (0, Challenge_1.makeChallengeEntityMock)(appObjects);
16
16
  const mockSubmitResult = (0, Dispatcher_1.makeMockSubmitResult)(appObjects);
17
+ mockSubmitResult.submitHitResult = jest.fn();
17
18
  const mockPickResult = {
18
19
  hit: true,
19
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TrySubmitObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySubmitObjectPickUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n SceneRayPick,\n} from \"../../Babylon\";\nimport { makeChallengeEntityMock } from \"../../Challenge\";\nimport { makeMockSubmitResult } from \"../../Dispatcher\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySubmitObjectPickUC,\n TrySubmitObjectPickUC,\n} from \"./TrySubmitObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n baseApp.isAuthoring = false;\n\n const challenge = makeChallengeEntityMock(appObjects);\n\n const mockSubmitResult = makeMockSubmitResult(appObjects);\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n const sceneObject = appObjects.getOrCreate(\"parent\");\n\n const uc = makeTrySubmitObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n const trySubmitObjectPick = uc.tryWithRay;\n\n return {\n trySubmitObjectPick,\n objectPick,\n mockSubmitResult,\n sceneObject,\n mockPickResult,\n baseApp,\n challenge,\n mockPixelToRay,\n appObjects,\n uc,\n };\n}\n\ndescribe(\"Submit Object Pick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySubmitObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8)\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Doesn't submit object pick when authoring\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isAuthoring = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when challenge is not OBJECT_PICK\", () => {\n const { challenge, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"QUESTION\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when app mode is review\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isReviewing = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Submits object pick when not authoring\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).toHaveBeenCalled();\n });\n\n it(\"Dispatches a submitHitResult\", () => {\n const {\n challenge,\n objectPick,\n sceneObject,\n mockPickResult,\n trySubmitObjectPick,\n mockSubmitResult,\n baseApp,\n } = makeTestRig();\n\n const mockSubmit = jest.fn();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmitResult.submitHitResult).toHaveBeenCalledWith({\n success: objectPick.hasSubmitted,\n description: baseApp.slideText,\n });\n });\n\n it(\"Sets the appState to Review\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n baseApp,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(baseApp.isReviewing).toEqual(true);\n });\n});\n"]}
1
+ {"version":3,"file":"TrySubmitObjectPickUC.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/UseCases/TrySubmitObjectPickUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n SceneRayPick,\n} from \"../../Babylon\";\nimport { makeChallengeEntityMock } from \"../../Challenge\";\nimport { makeMockSubmitResult } from \"../../Dispatcher\";\nimport { makeObjectPickEntity } from \"../Entities/ObjectPickEntity\";\nimport {\n makeTrySubmitObjectPickUC,\n TrySubmitObjectPickUC,\n} from \"./TrySubmitObjectPickUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n baseApp.isAuthoring = false;\n\n const challenge = makeChallengeEntityMock(appObjects);\n\n const mockSubmitResult = makeMockSubmitResult(appObjects);\n mockSubmitResult.submitHitResult = jest.fn();\n\n const mockPickResult: SceneRayPick = {\n hit: true,\n };\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue(mockPickResult);\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const objectPick = makeObjectPickEntity(appObjects.getOrCreate(\"ObjectPick\"));\n\n const sceneObject = appObjects.getOrCreate(\"parent\");\n\n const uc = makeTrySubmitObjectPickUC(appObjects.getOrCreate(\"ObjectPick\"));\n const trySubmitObjectPick = uc.tryWithRay;\n\n return {\n trySubmitObjectPick,\n objectPick,\n mockSubmitResult,\n sceneObject,\n mockPickResult,\n baseApp,\n challenge,\n mockPixelToRay,\n appObjects,\n uc,\n };\n}\n\ndescribe(\"Submit Object Pick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TrySubmitObjectPickUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Forms the pixel into a ray and passed it to the try with ray\", () => {\n const { mockPixelToRay, uc } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n uc.tryWithRay = jest.fn();\n\n uc.tryWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8),\n );\n expect(uc.tryWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Doesn't submit object pick when authoring\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isAuthoring = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when challenge is not OBJECT_PICK\", () => {\n const { challenge, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"QUESTION\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't submit object pick when app mode is review\", () => {\n const { baseApp, objectPick, trySubmitObjectPick } = makeTestRig();\n const mockSubmit = jest.fn();\n\n baseApp.isReviewing = true;\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).not.toHaveBeenCalled();\n });\n\n it(\"Submits object pick when not authoring\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmit).toHaveBeenCalled();\n });\n\n it(\"Dispatches a submitHitResult\", () => {\n const {\n challenge,\n objectPick,\n sceneObject,\n mockPickResult,\n trySubmitObjectPick,\n mockSubmitResult,\n baseApp,\n } = makeTestRig();\n\n const mockSubmit = jest.fn();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(mockSubmitResult.submitHitResult).toHaveBeenCalledWith({\n success: objectPick.hasSubmitted,\n description: baseApp.slideText,\n });\n });\n\n it(\"Sets the appState to Review\", () => {\n const {\n sceneObject,\n challenge,\n objectPick,\n trySubmitObjectPick,\n mockPickResult,\n baseApp,\n } = makeTestRig();\n\n mockPickResult.appObjectID = sceneObject.id;\n\n const mockSubmit = jest.fn();\n\n challenge.selectedChallenge = \"OBJECT_PICK\";\n objectPick.submit = mockSubmit;\n\n const pickRay = new ParametricLine({\n x0: 1,\n y0: 1,\n z0: 1,\n a: 1,\n b: 1,\n c: 1,\n });\n trySubmitObjectPick(pickRay);\n\n expect(baseApp.isReviewing).toEqual(true);\n });\n});\n"]}
@@ -71,7 +71,7 @@ class SerializeOverlayColoredObjectsImp extends SerializeOverlayColoredObjects {
71
71
  }
72
72
  constructor(appObj) {
73
73
  super(appObj, SerializeOverlayColoredObjects.type);
74
- this.seriliziationVersion = 1;
74
+ this.serializationVersion = 1;
75
75
  const stateMachine = this.appObjects.getSingleton(StateMachineEntity_1.StateMachineEntity.type);
76
76
  if (stateMachine) {
77
77
  stateMachine.registerSerializedSystem(this);
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeOverlayColoredObjects.js","sourceRoot":"","sources":["../../../../src/OverlayColor/UC/SerializeOverlayColoredObjects.ts"],"names":[],"mappings":"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","sourcesContent":["import { OverlayColor, OverlayColorEnums } from \"../Entities/OverlayColor\";\nimport {\n SerializedSystem,\n StateMachineEntity,\n} from \"../../StateMachine/Entities/StateMachineEntity\";\nimport { AppObjectUC, AppObject } from \"@vived/core\";\n\nexport abstract class SerializeOverlayColoredObjects\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeOverlayColoredObjects\";\n name: string = \"overlaycolored-objects\";\n abstract seriliziationVersion: number;\n abstract getSystemState(): object;\n abstract applySystemState(\n state: object,\n version: number,\n transitionDuration: number,\n ): void;\n abstract applyDefaultState(transitionDuration: number): void;\n}\n\nexport function makeSerializeOverlayColoredObjects(\n appObject: AppObject,\n): SerializeOverlayColoredObjects {\n return new SerializeOverlayColoredObjectsImp(appObject);\n}\n\nexport class SerializeOverlayColoredObjectsImp extends SerializeOverlayColoredObjects {\n seriliziationVersion = 1;\n\n getSystemState(): object {\n const overlayColoredObjects: SerializedOverlayColoredObjectV1[] = [];\n\n const allOverlayColors = this.appObjects.getAllComponents<OverlayColor>(\n OverlayColor.type,\n );\n\n allOverlayColors.forEach((overlayColor) => {\n if (overlayColor.overlayColor !== OverlayColorEnums.NONE)\n overlayColoredObjects.push({\n id: overlayColor.appObject.id,\n overlayColor: overlayColor.overlayColor,\n });\n });\n\n const state: SerializedOverlayColoredObjectsV1 = {\n overlayColoredObjects,\n };\n\n return state;\n }\n\n applySystemState(\n state: object,\n version: number,\n durationS: number,\n ): Promise<void> | void {\n if (version === 1) {\n return this.applyStateV1(\n state as SerializedOverlayColoredObjectsV1,\n durationS,\n );\n } else {\n this.applyDefaultState();\n }\n }\n\n private applyStateV1(\n state: SerializedOverlayColoredObjectsV1,\n durationS: number,\n ) {\n const { overlayColoredObjects } = state;\n if (!overlayColoredObjects) {\n this.applyDefaultState();\n return;\n }\n\n // Create a Map for faster lookups\n const overlayLookup = new Map<string, OverlayColorEnums>();\n overlayColoredObjects.forEach((overlayColorObj) => {\n overlayLookup.set(overlayColorObj.id, overlayColorObj.overlayColor);\n });\n\n const allOverlayColors = this.appObjects.getAllComponents<OverlayColor>(\n OverlayColor.type,\n );\n\n allOverlayColors.forEach((overlayColor) => {\n const appObjectId = overlayColor.appObject.id;\n overlayColor.overlayColor =\n overlayLookup.get(appObjectId) ?? OverlayColorEnums.NONE;\n });\n\n overlayLookup.forEach((desiredColor, remainingObjectId) => {\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\n const overlayColor = OverlayColor.addIfMissing(appObject);\n overlayColor.overlayColor = desiredColor;\n });\n }\n\n applyDefaultState(): void {\n const allOverlayColors = this.appObjects.getAllComponents<OverlayColor>(\n OverlayColor.type,\n );\n\n allOverlayColors.forEach((overlayColor) => {\n overlayColor.overlayColor = OverlayColorEnums.NONE;\n });\n }\n\n constructor(appObj: AppObject) {\n super(appObj, SerializeOverlayColoredObjects.type);\n\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\n StateMachineEntity.type,\n );\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface SerializedOverlayColoredObjectV1 {\n id: string;\n overlayColor: OverlayColorEnums;\n}\n\nexport interface SerializedOverlayColoredObjectsV1 {\n overlayColoredObjects: SerializedOverlayColoredObjectV1[];\n}\n"]}
1
+ {"version":3,"file":"SerializeOverlayColoredObjects.js","sourceRoot":"","sources":["../../../../src/OverlayColor/UC/SerializeOverlayColoredObjects.ts"],"names":[],"mappings":"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","sourcesContent":["import { OverlayColor, OverlayColorEnums } from \"../Entities/OverlayColor\";\nimport {\n SerializedSystem,\n StateMachineEntity,\n} from \"../../StateMachine/Entities/StateMachineEntity\";\nimport { AppObjectUC, AppObject } from \"@vived/core\";\n\nexport abstract class SerializeOverlayColoredObjects\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeOverlayColoredObjects\";\n name: string = \"overlaycolored-objects\";\n abstract serializationVersion: number;\n abstract getSystemState(): object;\n abstract applySystemState(\n state: object,\n version: number,\n transitionDuration: number,\n ): void;\n abstract applyDefaultState(transitionDuration: number): void;\n}\n\nexport function makeSerializeOverlayColoredObjects(\n appObject: AppObject,\n): SerializeOverlayColoredObjects {\n return new SerializeOverlayColoredObjectsImp(appObject);\n}\n\nexport class SerializeOverlayColoredObjectsImp extends SerializeOverlayColoredObjects {\n serializationVersion = 1;\n\n getSystemState(): object {\n const overlayColoredObjects: SerializedOverlayColoredObjectV1[] = [];\n\n const allOverlayColors = this.appObjects.getAllComponents<OverlayColor>(\n OverlayColor.type,\n );\n\n allOverlayColors.forEach((overlayColor) => {\n if (overlayColor.overlayColor !== OverlayColorEnums.NONE)\n overlayColoredObjects.push({\n id: overlayColor.appObject.id,\n overlayColor: overlayColor.overlayColor,\n });\n });\n\n const state: SerializedOverlayColoredObjectsV1 = {\n overlayColoredObjects,\n };\n\n return state;\n }\n\n applySystemState(\n state: object,\n version: number,\n durationS: number,\n ): Promise<void> | void {\n if (version === 1) {\n return this.applyStateV1(\n state as SerializedOverlayColoredObjectsV1,\n durationS,\n );\n } else {\n this.applyDefaultState();\n }\n }\n\n private applyStateV1(\n state: SerializedOverlayColoredObjectsV1,\n durationS: number,\n ) {\n const { overlayColoredObjects } = state;\n if (!overlayColoredObjects) {\n this.applyDefaultState();\n return;\n }\n\n // Create a Map for faster lookups\n const overlayLookup = new Map<string, OverlayColorEnums>();\n overlayColoredObjects.forEach((overlayColorObj) => {\n overlayLookup.set(overlayColorObj.id, overlayColorObj.overlayColor);\n });\n\n const allOverlayColors = this.appObjects.getAllComponents<OverlayColor>(\n OverlayColor.type,\n );\n\n allOverlayColors.forEach((overlayColor) => {\n const appObjectId = overlayColor.appObject.id;\n overlayColor.overlayColor =\n overlayLookup.get(appObjectId) ?? OverlayColorEnums.NONE;\n });\n\n overlayLookup.forEach((desiredColor, remainingObjectId) => {\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\n const overlayColor = OverlayColor.addIfMissing(appObject);\n overlayColor.overlayColor = desiredColor;\n });\n }\n\n applyDefaultState(): void {\n const allOverlayColors = this.appObjects.getAllComponents<OverlayColor>(\n OverlayColor.type,\n );\n\n allOverlayColors.forEach((overlayColor) => {\n overlayColor.overlayColor = OverlayColorEnums.NONE;\n });\n }\n\n constructor(appObj: AppObject) {\n super(appObj, SerializeOverlayColoredObjects.type);\n\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\n StateMachineEntity.type,\n );\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface SerializedOverlayColoredObjectV1 {\n id: string;\n overlayColor: OverlayColorEnums;\n}\n\nexport interface SerializedOverlayColoredObjectsV1 {\n overlayColoredObjects: SerializedOverlayColoredObjectV1[];\n}\n"]}
@@ -80,7 +80,7 @@ class SerializeQuestionChallenge extends core_1.AppObjectUC {
80
80
  constructor(appObject) {
81
81
  super(appObject, SerializeQuestionChallenge.type);
82
82
  this.name = "question";
83
- this.seriliziationVersion = 3;
83
+ this.serializationVersion = 3;
84
84
  this.questionEntity = appObject.getComponent(QuestionEntity_1.QuestionEntity.type);
85
85
  if (!this.questionEntity) {
86
86
  this.warn("SerializeQuestionChallenge has been added to an app object that does not have QuestionEntity");
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeQuestionChallenge.js","sourceRoot":"","sources":["../../../../src/Question/UC/SerializeQuestionChallenge.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,qDAA0E;AAC1E,+DAA4D;AAE5D,MAAa,0BACX,SAAQ,kBAAW;IASnB,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAmB,IAAI,CAAC,cAAc;aAChD,aAAa,EAAE;aACf,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,QAAQ,EAAE,MAAM,CAAC,YAAY;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,MAAM,KAAK,GAAoB;YAC7B,OAAO;SACR,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,OAAe;QAC7C,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAwB,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAwB,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,KAAwB,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,IAAI,CAAC,IAAI,CACP,4BAA4B,OAAO,0BAA0B,IAAI,CAAC,IAAI,8BAA8B,CACrG,CAAC;YACF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,CAAC;IACzC,CAAC;IAEO,SAAS,CAAC,IAAqB;QACrC,QAAQ;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,SAAS,CAAC,IAAqB;QACrC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,OAAO;YACL,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,IAAqB;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEjC,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAClC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,IAAI,CAAC,cAAe,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YAED,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAC9B,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACxC,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;YAE1C,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC;QACnE,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,cAAe,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAxFpD,SAAI,GAAG,UAAU,CAAC;QAClB,yBAAoB,GAAG,CAAC,CAAC;QAyFvB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,YAAY,CAC1C,+BAAc,CAAC,IAAI,CACpB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CACP,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,iCAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC1E,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AAhHH,gEAiHC;AA7GiB,+BAAI,GAAG,4BAA4B,AAA/B,CAAgC","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { SerializedSystem, StateMachineEntity } from \"../../StateMachine\";\nimport { QuestionEntity } from \"../Entities/QuestionEntity\";\n\nexport class SerializeQuestionChallenge\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeQuestionChallenge\";\n\n name = \"question\";\n seriliziationVersion = 3;\n private questionEntity?: QuestionEntity;\n\n getSystemState(): object {\n if (!this.questionEntity) {\n return {};\n }\n\n const answers: AnswerDataV1[] = this.questionEntity\n .getAllAnswers()\n .map((answer) => {\n return {\n id: answer.id,\n feedback: answer.feedbackText,\n isCorrect: answer.isCorrect,\n text: answer.text,\n };\n });\n\n const state: ChallengeDataV3 = {\n answers,\n };\n\n return state;\n }\n\n applySystemState(state: object, version: number): void {\n if (version === 1) {\n const mappedState = this.mapV1ToV3(state as ChallengeDataV1);\n this.applyDataV3(mappedState);\n } else if (version === 2) {\n const mappedState = this.mapV2ToV3(state as ChallengeDataV2);\n this.applyDataV3(mappedState);\n } else if (version === 3) {\n this.applyDataV3(state as ChallengeDataV3);\n } else {\n // Unsupported version\n this.warn(\n `Unsupported data version ${version} for serialized system ${this.name}. Reverting to default state`,\n );\n this.applyDefaultState();\n }\n }\n\n applyDefaultState(): void {\n this.questionEntity?.setDefaultState();\n }\n\n private mapV1ToV3(data: ChallengeDataV1): ChallengeDataV3 {\n // Easy!\n return data;\n }\n\n private mapV2ToV3(data: ChallengeDataV2): ChallengeDataV3 {\n const { answers } = data;\n return {\n answers,\n };\n }\n\n private applyDataV3(data: ChallengeDataV3) {\n if (!this.questionEntity) return;\n\n const stateAnswerIDs: string[] = [];\n data.answers.forEach((answerData) => {\n let answer = this.questionEntity!.getAnswer(answerData.id);\n if (!answer) {\n answer = this.questionEntity!.answerFactory(answerData.id);\n this.questionEntity?.addAnswer(answer);\n }\n\n answer.text = answerData.text;\n answer.isCorrect = answerData.isCorrect;\n answer.feedbackText = answerData.feedback;\n\n stateAnswerIDs.push(answerData.id);\n });\n\n const allAnswers = Array.from(this.questionEntity.getAllAnswers());\n allAnswers.forEach((ans) => {\n if (!stateAnswerIDs.includes(ans.id)) {\n this.questionEntity!.removeAnswer(ans.id);\n }\n });\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeQuestionChallenge.type);\n\n this.questionEntity = appObject.getComponent<QuestionEntity>(\n QuestionEntity.type,\n );\n\n if (!this.questionEntity) {\n this.warn(\n \"SerializeQuestionChallenge has been added to an app object that does not have QuestionEntity\",\n );\n }\n\n const stateMachine = StateMachineEntity.get(this.appObject.appObjectRepo);\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface ChallengeDataV3 {\n answers: AnswerDataV1[];\n}\n\nexport interface ChallengeDataV2 {\n questionText: string;\n answers: AnswerDataV1[];\n}\n\nexport interface ChallengeDataV1 {\n answers: AnswerDataV1[];\n}\n\nexport interface AnswerDataV1 {\n id: string;\n text: string;\n feedback: string;\n isCorrect: boolean;\n}\n"]}
1
+ {"version":3,"file":"SerializeQuestionChallenge.js","sourceRoot":"","sources":["../../../../src/Question/UC/SerializeQuestionChallenge.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { SerializedSystem, StateMachineEntity } from \"../../StateMachine\";\nimport { QuestionEntity } from \"../Entities/QuestionEntity\";\n\nexport class SerializeQuestionChallenge\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeQuestionChallenge\";\n\n name = \"question\";\n serializationVersion = 3;\n private questionEntity?: QuestionEntity;\n\n getSystemState(): object {\n if (!this.questionEntity) {\n return {};\n }\n\n const answers: AnswerDataV1[] = this.questionEntity\n .getAllAnswers()\n .map((answer) => {\n return {\n id: answer.id,\n feedback: answer.feedbackText,\n isCorrect: answer.isCorrect,\n text: answer.text,\n };\n });\n\n const state: ChallengeDataV3 = {\n answers,\n };\n\n return state;\n }\n\n applySystemState(state: object, version: number): void {\n if (version === 1) {\n const mappedState = this.mapV1ToV3(state as ChallengeDataV1);\n this.applyDataV3(mappedState);\n } else if (version === 2) {\n const mappedState = this.mapV2ToV3(state as ChallengeDataV2);\n this.applyDataV3(mappedState);\n } else if (version === 3) {\n this.applyDataV3(state as ChallengeDataV3);\n } else {\n // Unsupported version\n this.warn(\n `Unsupported data version ${version} for serialized system ${this.name}. Reverting to default state`,\n );\n this.applyDefaultState();\n }\n }\n\n applyDefaultState(): void {\n this.questionEntity?.setDefaultState();\n }\n\n private mapV1ToV3(data: ChallengeDataV1): ChallengeDataV3 {\n // Easy!\n return data;\n }\n\n private mapV2ToV3(data: ChallengeDataV2): ChallengeDataV3 {\n const { answers } = data;\n return {\n answers,\n };\n }\n\n private applyDataV3(data: ChallengeDataV3) {\n if (!this.questionEntity) return;\n\n const stateAnswerIDs: string[] = [];\n data.answers.forEach((answerData) => {\n let answer = this.questionEntity!.getAnswer(answerData.id);\n if (!answer) {\n answer = this.questionEntity!.answerFactory(answerData.id);\n this.questionEntity?.addAnswer(answer);\n }\n\n answer.text = answerData.text;\n answer.isCorrect = answerData.isCorrect;\n answer.feedbackText = answerData.feedback;\n\n stateAnswerIDs.push(answerData.id);\n });\n\n const allAnswers = Array.from(this.questionEntity.getAllAnswers());\n allAnswers.forEach((ans) => {\n if (!stateAnswerIDs.includes(ans.id)) {\n this.questionEntity!.removeAnswer(ans.id);\n }\n });\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeQuestionChallenge.type);\n\n this.questionEntity = appObject.getComponent<QuestionEntity>(\n QuestionEntity.type,\n );\n\n if (!this.questionEntity) {\n this.warn(\n \"SerializeQuestionChallenge has been added to an app object that does not have QuestionEntity\",\n );\n }\n\n const stateMachine = StateMachineEntity.get(this.appObject.appObjectRepo);\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface ChallengeDataV3 {\n answers: AnswerDataV1[];\n}\n\nexport interface ChallengeDataV2 {\n questionText: string;\n answers: AnswerDataV1[];\n}\n\nexport interface ChallengeDataV1 {\n answers: AnswerDataV1[];\n}\n\nexport interface AnswerDataV1 {\n id: string;\n text: string;\n feedback: string;\n isCorrect: boolean;\n}\n"]}
@@ -28,6 +28,7 @@ function makeTestRig() {
28
28
  const app = appObjects.getOrCreate("app");
29
29
  const baseApp = (0, BaseAppState_1.makeBaseAppState)(app);
30
30
  const mockSubmit = new MockSubmitResult(app, Dispatcher_1.SubmitResultResultUC.type);
31
+ mockSubmit.submitHitResult = jest.fn();
31
32
  const questionAO = appObjects.getOrCreate("Question");
32
33
  const questionEnt = (0, Entities_1.makeQuestionEntity)(questionAO);
33
34
  questionEnt.answerFactory = (id) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitQuestionAnswerUC.test.js","sourceRoot":"","sources":["../../../../src/Question/UC/SubmitQuestionAnswerUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n MultiHitResultDTO,\n ProgressResultDTO,\n QualityResultDTO,\n ScoreResultDTO,\n SubmitResultResultUC,\n} from \"../../Dispatcher\";\nimport { makeQuestionAnswerEntity, makeQuestionEntity } from \"../Entities\";\nimport { makeSubmitQuestionAnswerUC } from \"./SubmitQuestionAnswerUC\";\n\nclass MockSubmitResult extends SubmitResultResultUC {\n submitHitResult = jest.fn();\n submitProgressResult(data: ProgressResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n submitMultiHitResult(data: MultiHitResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n submitQualityResult(data: QualityResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n submitScoreResult(data: ScoreResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const app = appObjects.getOrCreate(\"app\");\n const baseApp = makeBaseAppState(app);\n const mockSubmit = new MockSubmitResult(app, SubmitResultResultUC.type);\n\n const questionAO = appObjects.getOrCreate(\"Question\");\n const questionEnt = makeQuestionEntity(questionAO);\n questionEnt.answerFactory = (id?: string) => {\n const index = questionEnt.getAllAnswers().length + 1;\n const ao = appObjects.getOrCreate(id ?? \"answer\" + index);\n return makeQuestionAnswerEntity(ao);\n };\n\n const mockAns = questionEnt.createNewAnswer();\n const uc = makeSubmitQuestionAnswerUC(questionAO);\n\n baseApp.isAuthoring = false;\n baseApp.slideText = \"Hello World!\";\n baseApp.isReviewing = false;\n\n const mockSubmitAnswer = jest.fn();\n questionEnt.submitAnswer = mockSubmitAnswer;\n\n return {\n mockSubmit,\n appObjects,\n mockAns,\n uc,\n baseApp,\n questionEnt,\n mockSubmitAnswer,\n };\n}\n\ndescribe(\"Submit Question Answer UC\", () => {\n it(\"Submits answer ID\", () => {\n const { mockSubmitAnswer, mockAns, uc } = makeTestRig();\n\n uc.submitAnswer(mockAns.id);\n\n expect(mockSubmitAnswer).toHaveBeenCalledWith(mockAns.id);\n });\n\n it(\"Doesn't submit answer when authoring\", () => {\n const { baseApp, uc, mockSubmitAnswer, mockAns } = makeTestRig();\n baseApp.isAuthoring = true;\n\n uc.submitAnswer(mockAns.id);\n\n expect(mockSubmitAnswer).not.toHaveBeenCalled();\n });\n\n it(\"Warns if the answer ID is not known\", () => {\n const { uc } = makeTestRig();\n\n uc.warn = jest.fn();\n\n uc.submitAnswer(\"unknown\");\n\n expect(uc.warn).toHaveBeenCalled();\n });\n\n it(\"Warns if it cannot find the base app\", () => {\n const { uc, baseApp, mockAns } = makeTestRig();\n\n uc.warn = jest.fn();\n baseApp.dispose();\n\n uc.submitAnswer(mockAns.id);\n\n expect(uc.warn).toHaveBeenCalled();\n });\n\n it(\"Dispatches a submitHitResult\", () => {\n const { baseApp, questionEnt, mockAns, uc, mockSubmit } = makeTestRig();\n\n uc.submitAnswer(mockAns.id);\n\n expect(mockSubmit.submitHitResult).toHaveBeenCalledWith({\n success: questionEnt.gotItRight,\n description: baseApp.slideText,\n });\n });\n\n it(\"Sets the baseApp to Review\", () => {\n const { baseApp, mockAns, uc } = makeTestRig();\n\n uc.submitAnswer(mockAns.id);\n\n expect(baseApp.isReviewing).toEqual(true);\n });\n});\n"]}
1
+ {"version":3,"file":"SubmitQuestionAnswerUC.test.js","sourceRoot":"","sources":["../../../../src/Question/UC/SubmitQuestionAnswerUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport {\n MultiHitResultDTO,\n ProgressResultDTO,\n QualityResultDTO,\n ScoreResultDTO,\n SubmitResultResultUC,\n} from \"../../Dispatcher\";\nimport { makeQuestionAnswerEntity, makeQuestionEntity } from \"../Entities\";\nimport { makeSubmitQuestionAnswerUC } from \"./SubmitQuestionAnswerUC\";\n\nclass MockSubmitResult extends SubmitResultResultUC {\n submitHitResult = jest.fn();\n submitProgressResult(data: ProgressResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n submitMultiHitResult(data: MultiHitResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n submitQualityResult(data: QualityResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n submitScoreResult(data: ScoreResultDTO): void {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const app = appObjects.getOrCreate(\"app\");\n const baseApp = makeBaseAppState(app);\n const mockSubmit = new MockSubmitResult(app, SubmitResultResultUC.type);\n mockSubmit.submitHitResult = jest.fn();\n\n const questionAO = appObjects.getOrCreate(\"Question\");\n const questionEnt = makeQuestionEntity(questionAO);\n questionEnt.answerFactory = (id?: string) => {\n const index = questionEnt.getAllAnswers().length + 1;\n const ao = appObjects.getOrCreate(id ?? \"answer\" + index);\n return makeQuestionAnswerEntity(ao);\n };\n\n const mockAns = questionEnt.createNewAnswer();\n const uc = makeSubmitQuestionAnswerUC(questionAO);\n\n baseApp.isAuthoring = false;\n baseApp.slideText = \"Hello World!\";\n baseApp.isReviewing = false;\n\n const mockSubmitAnswer = jest.fn();\n questionEnt.submitAnswer = mockSubmitAnswer;\n\n return {\n mockSubmit,\n appObjects,\n mockAns,\n uc,\n baseApp,\n questionEnt,\n mockSubmitAnswer,\n };\n}\n\ndescribe(\"Submit Question Answer UC\", () => {\n it(\"Submits answer ID\", () => {\n const { mockSubmitAnswer, mockAns, uc } = makeTestRig();\n\n uc.submitAnswer(mockAns.id);\n\n expect(mockSubmitAnswer).toHaveBeenCalledWith(mockAns.id);\n });\n\n it(\"Doesn't submit answer when authoring\", () => {\n const { baseApp, uc, mockSubmitAnswer, mockAns } = makeTestRig();\n baseApp.isAuthoring = true;\n\n uc.submitAnswer(mockAns.id);\n\n expect(mockSubmitAnswer).not.toHaveBeenCalled();\n });\n\n it(\"Warns if the answer ID is not known\", () => {\n const { uc } = makeTestRig();\n\n uc.warn = jest.fn();\n\n uc.submitAnswer(\"unknown\");\n\n expect(uc.warn).toHaveBeenCalled();\n });\n\n it(\"Warns if it cannot find the base app\", () => {\n const { uc, baseApp, mockAns } = makeTestRig();\n\n uc.warn = jest.fn();\n baseApp.dispose();\n\n uc.submitAnswer(mockAns.id);\n\n expect(uc.warn).toHaveBeenCalled();\n });\n\n it(\"Dispatches a submitHitResult\", () => {\n const { baseApp, questionEnt, mockAns, uc, mockSubmit } = makeTestRig();\n\n uc.submitAnswer(mockAns.id);\n\n expect(mockSubmit.submitHitResult).toHaveBeenCalledWith({\n success: questionEnt.gotItRight,\n description: baseApp.slideText,\n });\n });\n\n it(\"Sets the baseApp to Review\", () => {\n const { baseApp, mockAns, uc } = makeTestRig();\n\n uc.submitAnswer(mockAns.id);\n\n expect(baseApp.isReviewing).toEqual(true);\n });\n});\n"]}
@@ -41,7 +41,11 @@ class RequestHandlerImp extends AppHandlerEntity {
41
41
  this.getAppPayloadRequest = "GET_APP_PAYLOAD_VERSION";
42
42
  this.getAppHandlerVersionRequest = "GET_APP_HANDLER_VERSION";
43
43
  this.appHandlerVersion = 1;
44
+ this.verbose = false;
44
45
  this.handler = (request) => {
46
+ if (this.verbose) {
47
+ console.log(`[AppHandler] Request received:`, request);
48
+ }
45
49
  if (request.type === this.getAppPayloadRequest) {
46
50
  this.handlePayloadVersionRequest(request);
47
51
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"AppHandler.js","sourceRoot":"","sources":["../../../../src/RequestHandler/Entities/AppHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectEntity, Handler, Request } from \"@vived/core\";\n\nexport interface RequestHandler {\n readonly requestType: string;\n payloadVersion: number;\n handleRequest: (version: number, payload?: unknown) => void;\n}\n\nexport abstract class AppHandlerEntity extends AppObjectEntity {\n static readonly type = \"APP_HANDLER_ENTITY\";\n abstract handler: Handler;\n abstract registerRequestHandler: (requestHandler: RequestHandler) => void;\n}\n\nexport function makeAppHandler(appObject: AppObject): AppHandlerEntity {\n return new RequestHandlerImp(appObject);\n}\n\nclass RequestHandlerImp extends AppHandlerEntity {\n private handlers = new Map<string, RequestHandler>();\n private getAppPayloadRequest = \"GET_APP_PAYLOAD_VERSION\";\n private getAppHandlerVersionRequest = \"GET_APP_HANDLER_VERSION\";\n private readonly appHandlerVersion = 1;\n\n handler: Handler = (request: Request): void => {\n if (request.type === this.getAppPayloadRequest) {\n this.handlePayloadVersionRequest(request);\n return;\n }\n\n if (request.type === this.getAppHandlerVersionRequest) {\n this.handleAppHandlerVersionRequest(request);\n return;\n }\n\n const handler = this.handlers.get(request.type);\n\n if (!handler) {\n console.warn(\n `[AppHandler] Unsupported request type received: ${request.type}`,\n );\n return;\n }\n\n try {\n handler.handleRequest(request.version, request.payload);\n } catch (e) {\n console.warn(`[AppHandler] ${e}`);\n }\n };\n\n registerRequestHandler = (handler: RequestHandler): void => {\n if (this.handlers.has(handler.requestType)) {\n console.warn(\n `[AppHandler] More than one handler is being registered for ${handler.requestType}. Previous handler is being overwritten`,\n );\n }\n\n this.handlers.set(handler.requestType, handler);\n };\n\n private handlePayloadVersionRequest(request: Request) {\n if (request.version !== 2) {\n throw new UnsupportedRequestVersion(request.type, request.version);\n }\n\n const payload = request.payload as PayloadVersionPayload;\n if (payload.callback === undefined) {\n throw new UnableToParsePayload(\n request.type,\n request.version,\n JSON.stringify(payload),\n );\n }\n\n const versionMap = new Map<string, number>();\n this.handlers.forEach((handler) => {\n versionMap.set(handler.requestType, handler.payloadVersion);\n });\n\n payload.callback(versionMap);\n }\n\n private handleAppHandlerVersionRequest(request: Request) {\n if (request.version !== 1) {\n throw new UnsupportedRequestVersion(request.type, request.version);\n }\n\n const payload = request.payload as AppHandlerVersionPayload;\n if (payload.callback === undefined) {\n throw new UnableToParsePayload(\n request.type,\n request.version,\n JSON.stringify(payload),\n );\n }\n\n payload.callback(this.appHandlerVersion);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, AppHandlerEntity.type);\n }\n}\n\ntype PayloadVersionPayload = {\n callback: (requestVersionLookup: Map<string, number>) => void;\n};\n\ntype AppHandlerVersionPayload = {\n callback: (version: number) => void;\n};\n\nexport class UnsupportedRequestVersion extends Error {\n constructor(requestType: string, version: number) {\n const msg = `Version ${version} of request type ${requestType} is not supported`;\n super(msg);\n }\n}\n\nexport class UnableToParsePayload extends Error {\n constructor(requestType: string, version: number, payload: string) {\n const msg = `Unable to parse payload for version ${version} of request type ${requestType}: ${payload}`;\n super(msg);\n }\n}\n"]}
1
+ {"version":3,"file":"AppHandler.js","sourceRoot":"","sources":["../../../../src/RequestHandler/Entities/AppHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectEntity, Handler, Request } from \"@vived/core\";\n\nexport interface RequestHandler {\n readonly requestType: string;\n payloadVersion: number;\n handleRequest: (version: number, payload?: unknown) => void;\n}\n\nexport abstract class AppHandlerEntity extends AppObjectEntity {\n static readonly type = \"APP_HANDLER_ENTITY\";\n abstract handler: Handler;\n abstract registerRequestHandler: (requestHandler: RequestHandler) => void;\n abstract verbose: boolean;\n}\n\nexport function makeAppHandler(appObject: AppObject): AppHandlerEntity {\n return new RequestHandlerImp(appObject);\n}\n\nclass RequestHandlerImp extends AppHandlerEntity {\n private handlers = new Map<string, RequestHandler>();\n private getAppPayloadRequest = \"GET_APP_PAYLOAD_VERSION\";\n private getAppHandlerVersionRequest = \"GET_APP_HANDLER_VERSION\";\n private readonly appHandlerVersion = 1;\n verbose = false;\n\n handler: Handler = (request: Request): void => {\n if (this.verbose) {\n console.log(`[AppHandler] Request received:`, request);\n }\n if (request.type === this.getAppPayloadRequest) {\n this.handlePayloadVersionRequest(request);\n return;\n }\n\n if (request.type === this.getAppHandlerVersionRequest) {\n this.handleAppHandlerVersionRequest(request);\n return;\n }\n\n const handler = this.handlers.get(request.type);\n\n if (!handler) {\n console.warn(\n `[AppHandler] Unsupported request type received: ${request.type}`,\n );\n return;\n }\n\n try {\n handler.handleRequest(request.version, request.payload);\n } catch (e) {\n console.warn(`[AppHandler] ${e}`);\n }\n };\n\n registerRequestHandler = (handler: RequestHandler): void => {\n if (this.handlers.has(handler.requestType)) {\n console.warn(\n `[AppHandler] More than one handler is being registered for ${handler.requestType}. Previous handler is being overwritten`,\n );\n }\n\n this.handlers.set(handler.requestType, handler);\n };\n\n private handlePayloadVersionRequest(request: Request) {\n if (request.version !== 2) {\n throw new UnsupportedRequestVersion(request.type, request.version);\n }\n\n const payload = request.payload as PayloadVersionPayload;\n if (payload.callback === undefined) {\n throw new UnableToParsePayload(\n request.type,\n request.version,\n JSON.stringify(payload),\n );\n }\n\n const versionMap = new Map<string, number>();\n this.handlers.forEach((handler) => {\n versionMap.set(handler.requestType, handler.payloadVersion);\n });\n\n payload.callback(versionMap);\n }\n\n private handleAppHandlerVersionRequest(request: Request) {\n if (request.version !== 1) {\n throw new UnsupportedRequestVersion(request.type, request.version);\n }\n\n const payload = request.payload as AppHandlerVersionPayload;\n if (payload.callback === undefined) {\n throw new UnableToParsePayload(\n request.type,\n request.version,\n JSON.stringify(payload),\n );\n }\n\n payload.callback(this.appHandlerVersion);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, AppHandlerEntity.type);\n }\n}\n\ntype PayloadVersionPayload = {\n callback: (requestVersionLookup: Map<string, number>) => void;\n};\n\ntype AppHandlerVersionPayload = {\n callback: (version: number) => void;\n};\n\nexport class UnsupportedRequestVersion extends Error {\n constructor(requestType: string, version: number) {\n const msg = `Version ${version} of request type ${requestType} is not supported`;\n super(msg);\n }\n}\n\nexport class UnableToParsePayload extends Error {\n constructor(requestType: string, version: number, payload: string) {\n const msg = `Unable to parse payload for version ${version} of request type ${requestType}: ${payload}`;\n super(msg);\n }\n}\n"]}
@@ -135,5 +135,32 @@ describe("App Handler", () => {
135
135
  };
136
136
  expect(() => appHandler.handler(request)).toThrowError();
137
137
  });
138
+ it("Verbose flag defaults to false", () => {
139
+ const { appHandler } = makeTestRig();
140
+ expect(appHandler.verbose).toBe(false);
141
+ });
142
+ it("Does not log requests when verbose is false", () => {
143
+ const { appHandler, mockRequestHandler } = makeTestRig();
144
+ console.log = jest.fn();
145
+ const request = {
146
+ type: "A_REQUEST",
147
+ version: 2,
148
+ payload: { foo: "bar" },
149
+ };
150
+ appHandler.handler(request);
151
+ expect(console.log).not.toHaveBeenCalled();
152
+ });
153
+ it("Logs requests when verbose is true", () => {
154
+ const { appHandler, mockRequestHandler } = makeTestRig();
155
+ console.log = jest.fn();
156
+ appHandler.verbose = true;
157
+ const request = {
158
+ type: "A_REQUEST",
159
+ version: 2,
160
+ payload: { foo: "bar" },
161
+ };
162
+ appHandler.handler(request);
163
+ expect(console.log).toHaveBeenCalledWith("[AppHandler] Request received:", request);
164
+ });
138
165
  });
139
166
  //# sourceMappingURL=AppHandler.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppHandler.test.js","sourceRoot":"","sources":["../../../../src/RequestHandler/Entities/AppHandler.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, Request } from \"@vived/core\";\nimport {\n makeAppHandler,\n RequestHandler,\n UnsupportedRequestVersion,\n} from \"./AppHandler\";\n\nclass MockHandler implements RequestHandler {\n readonly requestType = \"A_REQUEST\";\n readonly payloadVersion = 1;\n handleRequest = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjectRepo = makeAppObjectRepo();\n const handlerAO = appObjectRepo.getOrCreate(\"Handler\");\n const appHandler = makeAppHandler(handlerAO);\n const mockRequestHandler = new MockHandler();\n appHandler.registerRequestHandler(mockRequestHandler);\n\n return { appHandler, mockRequestHandler };\n}\n\ndescribe(\"App Handler\", () => {\n it(\"Warns if multiple request handlers are added for the same type\", () => {\n const { appHandler } = makeTestRig();\n console.warn = jest.fn();\n const anotherHandler = new MockHandler();\n\n appHandler.registerRequestHandler(anotherHandler);\n\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Triggers the handler when a request received\", () => {\n const { appHandler, mockRequestHandler } = makeTestRig();\n const request: Request = {\n type: \"A_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n appHandler.handler(request);\n\n expect(mockRequestHandler.handleRequest).toHaveBeenCalledWith(2, {\n foo: \"bar\",\n });\n });\n\n it(\"Warns if a request type has not been registered\", () => {\n const { appHandler } = makeTestRig();\n console.warn = jest.fn();\n const request: Request = {\n type: \"A_DIFFERENT_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n appHandler.handler(request);\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Consoles a warn if the the handler throw an error\", () => {\n const { appHandler, mockRequestHandler } = makeTestRig();\n console.warn = jest.fn();\n const request: Request = {\n type: \"A_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n mockRequestHandler.handleRequest.mockImplementation(() => {\n throw new UnsupportedRequestVersion(\"A_REQUEST\", 2);\n });\n\n appHandler.handler(request);\n\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Handles the GET_APP_PAYLOAD_VERSION request\", (done) => {\n const { appHandler } = makeTestRig();\n\n const expectedResponse = new Map<string, number>([[\"A_REQUEST\", 1]]);\n\n function callback(payloadVersions: Map<string, number>) {\n try {\n expect(payloadVersions).toEqual(expectedResponse);\n done();\n } catch (e) {\n done(e);\n }\n }\n\n const request: Request = {\n type: \"GET_APP_PAYLOAD_VERSION\",\n version: 2,\n payload: { callback },\n };\n\n appHandler.handler(request);\n });\n\n it(\"Throws for an unsupported version of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_PAYLOAD_VERSION\",\n version: 1,\n payload: { callback: () => {} },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n\n it(\"Throws for a bungled payload of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_PAYLOAD_VERSION\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n\n it(\"Handles the GET_APP_HANDLER_VERSION request\", (done) => {\n const { appHandler } = makeTestRig();\n\n function callback(appHandlerVersion: number) {\n try {\n expect(appHandlerVersion).toEqual(1);\n done();\n } catch (e) {\n done(e);\n }\n }\n\n const request: Request = {\n type: \"GET_APP_HANDLER_VERSION\",\n version: 1,\n payload: { callback },\n };\n\n appHandler.handler(request);\n });\n\n it(\"Throws for an unsupported version of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_HANDLER_VERSION\",\n version: 0,\n payload: { callback: () => {} },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n\n it(\"Throws for a bungled payload of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_HANDLER_VERSION\",\n version: 1,\n payload: { foo: \"bar\" },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n});\n"]}
1
+ {"version":3,"file":"AppHandler.test.js","sourceRoot":"","sources":["../../../../src/RequestHandler/Entities/AppHandler.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, Request } from \"@vived/core\";\nimport {\n makeAppHandler,\n RequestHandler,\n UnsupportedRequestVersion,\n} from \"./AppHandler\";\n\nclass MockHandler implements RequestHandler {\n readonly requestType = \"A_REQUEST\";\n readonly payloadVersion = 1;\n handleRequest = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjectRepo = makeAppObjectRepo();\n const handlerAO = appObjectRepo.getOrCreate(\"Handler\");\n const appHandler = makeAppHandler(handlerAO);\n const mockRequestHandler = new MockHandler();\n appHandler.registerRequestHandler(mockRequestHandler);\n\n return { appHandler, mockRequestHandler };\n}\n\ndescribe(\"App Handler\", () => {\n it(\"Warns if multiple request handlers are added for the same type\", () => {\n const { appHandler } = makeTestRig();\n console.warn = jest.fn();\n const anotherHandler = new MockHandler();\n\n appHandler.registerRequestHandler(anotherHandler);\n\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Triggers the handler when a request received\", () => {\n const { appHandler, mockRequestHandler } = makeTestRig();\n const request: Request = {\n type: \"A_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n appHandler.handler(request);\n\n expect(mockRequestHandler.handleRequest).toHaveBeenCalledWith(2, {\n foo: \"bar\",\n });\n });\n\n it(\"Warns if a request type has not been registered\", () => {\n const { appHandler } = makeTestRig();\n console.warn = jest.fn();\n const request: Request = {\n type: \"A_DIFFERENT_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n appHandler.handler(request);\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Consoles a warn if the the handler throw an error\", () => {\n const { appHandler, mockRequestHandler } = makeTestRig();\n console.warn = jest.fn();\n const request: Request = {\n type: \"A_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n mockRequestHandler.handleRequest.mockImplementation(() => {\n throw new UnsupportedRequestVersion(\"A_REQUEST\", 2);\n });\n\n appHandler.handler(request);\n\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Handles the GET_APP_PAYLOAD_VERSION request\", (done) => {\n const { appHandler } = makeTestRig();\n\n const expectedResponse = new Map<string, number>([[\"A_REQUEST\", 1]]);\n\n function callback(payloadVersions: Map<string, number>) {\n try {\n expect(payloadVersions).toEqual(expectedResponse);\n done();\n } catch (e) {\n done(e);\n }\n }\n\n const request: Request = {\n type: \"GET_APP_PAYLOAD_VERSION\",\n version: 2,\n payload: { callback },\n };\n\n appHandler.handler(request);\n });\n\n it(\"Throws for an unsupported version of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_PAYLOAD_VERSION\",\n version: 1,\n payload: { callback: () => {} },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n\n it(\"Throws for a bungled payload of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_PAYLOAD_VERSION\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n\n it(\"Handles the GET_APP_HANDLER_VERSION request\", (done) => {\n const { appHandler } = makeTestRig();\n\n function callback(appHandlerVersion: number) {\n try {\n expect(appHandlerVersion).toEqual(1);\n done();\n } catch (e) {\n done(e);\n }\n }\n\n const request: Request = {\n type: \"GET_APP_HANDLER_VERSION\",\n version: 1,\n payload: { callback },\n };\n\n appHandler.handler(request);\n });\n\n it(\"Throws for an unsupported version of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_HANDLER_VERSION\",\n version: 0,\n payload: { callback: () => {} },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n\n it(\"Throws for a bungled payload of the get payload version request\", () => {\n const { appHandler } = makeTestRig();\n\n const request: Request = {\n type: \"GET_APP_HANDLER_VERSION\",\n version: 1,\n payload: { foo: \"bar\" },\n };\n\n expect(() => appHandler.handler(request)).toThrowError();\n });\n\n it(\"Verbose flag defaults to false\", () => {\n const { appHandler } = makeTestRig();\n\n expect(appHandler.verbose).toBe(false);\n });\n\n it(\"Does not log requests when verbose is false\", () => {\n const { appHandler, mockRequestHandler } = makeTestRig();\n console.log = jest.fn();\n const request: Request = {\n type: \"A_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n appHandler.handler(request);\n\n expect(console.log).not.toHaveBeenCalled();\n });\n\n it(\"Logs requests when verbose is true\", () => {\n const { appHandler, mockRequestHandler } = makeTestRig();\n console.log = jest.fn();\n appHandler.verbose = true;\n const request: Request = {\n type: \"A_REQUEST\",\n version: 2,\n payload: { foo: \"bar\" },\n };\n\n appHandler.handler(request);\n\n expect(console.log).toHaveBeenCalledWith(\n \"[AppHandler] Request received:\",\n request,\n );\n });\n});\n"]}
@@ -19,9 +19,16 @@ const UC_1 = require("../UC");
19
19
  * @extends DomainFactory
20
20
  */
21
21
  class RequestHandlerFeatureFactory extends core_1.DomainFactory {
22
- constructor() {
23
- super(...arguments);
22
+ get appHandler() {
23
+ return this._appHandler;
24
+ }
25
+ constructor(appObject, config) {
26
+ super(appObject);
24
27
  this.factoryName = "RequestHandlerFeatureFactory";
28
+ this.zSpaceSupported = config?.zSpaceSupported ?? true;
29
+ this.themeSupported = config?.themeSupported ?? true;
30
+ this.babylonSupported = config?.babylonSupported ?? true;
31
+ this.verbose = config?.verbose ?? false;
25
32
  }
26
33
  /**
27
34
  * Sets up all entities required for the Request Handler Feature.
@@ -30,7 +37,9 @@ class RequestHandlerFeatureFactory extends core_1.DomainFactory {
30
37
  * registration of request handlers for the application.
31
38
  */
32
39
  setupEntities() {
33
- this.appHandlerEntity = (0, Entities_1.makeAppHandler)(this.appObject);
40
+ const appHandlerEntity = (0, Entities_1.makeAppHandler)(this.appObject);
41
+ appHandlerEntity.verbose = this.verbose;
42
+ this._appHandler = appHandlerEntity.handler;
34
43
  }
35
44
  /**
36
45
  * Sets up all use cases for the Request Handler Feature.
@@ -49,25 +58,26 @@ class RequestHandlerFeatureFactory extends core_1.DomainFactory {
49
58
  * - StopZSpace: Manages ZSpace functionality shutdown
50
59
  */
51
60
  setupUCs() {
61
+ // Required Use Cases
52
62
  (0, UC_1.makeDisposeAppUC)(this.appObject);
53
- (0, UC_1.makeEnableFeatureUC)(this.appObject);
54
63
  (0, UC_1.makeSetAppStateUC)(this.appObject);
55
64
  (0, UC_1.makeSetIsAuthoringUC)(this.appObject);
56
- (0, UC_1.makeSetThemeColorUC)(this.appObject);
57
- (0, UC_1.makeShowBabylonInspectorUC)(this.appObject);
58
65
  (0, UC_1.makeStartAppUC)(this.appObject);
59
- (0, UC_1.makeStartZSpaceUC)(this.appObject);
60
66
  (0, UC_1.makeStopAppUC)(this.appObject);
61
- (0, UC_1.makeStopZSpaceUC)(this.appObject);
67
+ (0, UC_1.makeEnableFeatureUC)(this.appObject);
68
+ if (this.themeSupported) {
69
+ (0, UC_1.makeSetThemeColorUC)(this.appObject);
70
+ }
71
+ if (this.babylonSupported) {
72
+ (0, UC_1.makeShowBabylonInspectorUC)(this.appObject);
73
+ }
74
+ if (this.zSpaceSupported) {
75
+ (0, UC_1.makeStartZSpaceUC)(this.appObject);
76
+ (0, UC_1.makeStopZSpaceUC)(this.appObject);
77
+ }
62
78
  }
63
- /**
64
- * Sets up all presentation models for the Request Handler Feature.
65
- *
66
- * Currently no presentation models are required for the Request Handler
67
- * feature as it primarily handles backend operations and use case coordination.
68
- */
69
79
  setupPMs() {
70
- // TODO: Add presentation models if needed in the future
80
+ // No PMs to set up for this feature
71
81
  }
72
82
  /**
73
83
  * Performs any final setup operations after all components are initialized.
@@ -78,27 +88,16 @@ class RequestHandlerFeatureFactory extends core_1.DomainFactory {
78
88
  finalSetup() {
79
89
  // No additional setup required for this feature
80
90
  }
81
- /**
82
- * Returns the created AppHandler entity.
83
- *
84
- * This method provides equivalent functionality to the return value of
85
- * the original setupAppHandlers function, allowing consumers who need
86
- * the AppHandlerEntity reference to access it after factory creation.
87
- *
88
- * @returns The AppHandlerEntity created during setupEntities, or undefined if not created
89
- */
90
- getAppHandlerEntity() {
91
- return this.appHandlerEntity;
92
- }
93
91
  }
94
92
  exports.RequestHandlerFeatureFactory = RequestHandlerFeatureFactory;
95
93
  /**
96
94
  * Factory function to create a new RequestHandlerFeatureFactory
97
95
  * @param appObjects The AppObjectRepo to get the AppHandlers AppObject from
96
+ * @param config Optional configuration object for the Request Handler Feature
98
97
  * @returns A new RequestHandlerFeatureFactory instance
99
98
  */
100
- function makeRequestHandlerFeatureFactory(appObjects) {
99
+ function makeRequestHandlerFeatureFactory(appObjects, config) {
101
100
  const appObject = appObjects.getOrCreate("AppHandlers");
102
- return new RequestHandlerFeatureFactory(appObject);
101
+ return new RequestHandlerFeatureFactory(appObject, config);
103
102
  }
104
103
  //# sourceMappingURL=RequestHandlerFeatureFactory.js.map