@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
@@ -30,7 +30,7 @@ describe("State Machine Entity", () => {
30
30
  expect(state.systems).toHaveLength(2);
31
31
  const serializeState = state.systems[0];
32
32
  expect(serializeState.name).toEqual("state1");
33
- expect(serializeState.seriliziationVersion).toEqual(1);
33
+ expect(serializeState.serializationVersion).toEqual(1);
34
34
  expect(serializeState.state).toEqual({ foo: "bar" });
35
35
  });
36
36
  it("Skips a serialized state that returns undefined", () => {
@@ -50,6 +50,25 @@ describe("State Machine Entity", () => {
50
50
  foo: "bar1",
51
51
  }, 1, 3);
52
52
  });
53
+ it("Set serialized state with old misspelled property name for backwards compatibility", () => {
54
+ const { stateMachine, mockSerializedSystem1 } = makeTestRig();
55
+ const state = {
56
+ version: 2,
57
+ systems: [
58
+ {
59
+ name: "state1",
60
+ seriliziationVersion: 1,
61
+ state: {
62
+ foo: "bar1",
63
+ },
64
+ },
65
+ ],
66
+ };
67
+ stateMachine.setSerializedStates(state, 3);
68
+ expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith({
69
+ foo: "bar1",
70
+ }, 1, 3);
71
+ });
53
72
  it("Submits an warning if trying to deserialize data with a bad version number", () => {
54
73
  const { stateMachine } = makeTestRig();
55
74
  stateMachine.warn = jest.fn();
@@ -149,14 +168,14 @@ function makeSerializedState() {
149
168
  systems: [
150
169
  {
151
170
  name: "state1",
152
- seriliziationVersion: 1,
171
+ serializationVersion: 1,
153
172
  state: {
154
173
  foo: "bar1",
155
174
  },
156
175
  },
157
176
  {
158
177
  name: "state2",
159
- seriliziationVersion: 1,
178
+ serializationVersion: 1,
160
179
  state: {
161
180
  foo: "bar2",
162
181
  },
@@ -166,7 +185,7 @@ function makeSerializedState() {
166
185
  }
167
186
  class MockSerializedSystem {
168
187
  constructor() {
169
- this.seriliziationVersion = 1;
188
+ this.serializationVersion = 1;
170
189
  this.name = "mockSystem";
171
190
  this.getSystemState = () => {
172
191
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"StateMachineEntity.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Entities/StateMachineEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeStateMachineEntity,\n SerializedStates,\n SerializedSystem,\n StateMachineEntity,\n} from \"./StateMachineEntity\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appAO = appObjects.getOrCreate(\"App\");\n\n const stateMachine = makeStateMachineEntity(appAO);\n const stateAppliedObserver = jest.fn();\n stateMachine.addChangeObserver(stateAppliedObserver);\n\n const mockSerializedSystem1 = new MockSerializedSystem();\n mockSerializedSystem1.name = \"state1\";\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n const mockSerializedSystem2 = new MockSerializedSystem();\n mockSerializedSystem2.name = \"state2\";\n stateMachine.registerSerializedSystem(mockSerializedSystem2);\n\n return {\n stateMachine,\n mockSerializedSystem1,\n mockSerializedSystem2,\n stateAppliedObserver,\n appObjects,\n };\n}\n\ndescribe(\"State Machine Entity\", () => {\n it(\"Gets a serialized state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(2);\n\n const serializeState = state.systems[0] as any;\n expect(serializeState.name).toEqual(\"state1\");\n expect(serializeState.seriliziationVersion).toEqual(1);\n expect(serializeState.state).toEqual({ foo: \"bar\" });\n });\n\n it(\"Skips a serialized state that returns undefined\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n mockSerializedSystem1.getSystemState = () => {\n return undefined;\n };\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(1);\n });\n\n it(\"Set serialized state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n const state = makeSerializedState();\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith(\n {\n foo: \"bar1\",\n },\n 1,\n 3,\n );\n });\n\n it(\"Submits an warning if trying to deserialize data with a bad version number\", () => {\n const { stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n const state: SerializedStates = {\n version: -1,\n systems: [],\n };\n\n stateMachine.setSerializedStates(state, 0);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets an empty state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Logs an error if adding two systems with the same name\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets the default state and warns when passing in junk\", () => {\n const { mockSerializedSystem1, stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.applySerializedStatesString(\"your mom goes to college\", 5);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(5);\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Set to default if a system is not in the saved state \", () => {\n const { stateMachine } = makeTestRig();\n const state = makeSerializedState();\n\n const secondSystem = new MockSerializedSystem();\n secondSystem.name = \"second system\";\n stateMachine.registerSerializedSystem(secondSystem);\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(secondSystem.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Notifies after a state has been applied\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Notifies after an empty state has been set\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Gets the entity\", () => {\n const { stateMachine, appObjects } = makeTestRig();\n\n expect(StateMachineEntity.get(appObjects)).toEqual(stateMachine);\n });\n\n it(\"Set serialized state in the order that they are added\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n const system1Order =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n const system2Order =\n mockSerializedSystem2.applySystemState.mock.invocationCallOrder[0];\n\n expect(system1Order).toBeLessThan(system2Order);\n });\n\n it(\"Sets the default before setting states\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n state.systems = [state.systems[0]]; // Removed state 2 data\n\n stateMachine.setSerializedStates(state, 3);\n\n const setSystemOrder =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n\n const setDefaultOrder =\n mockSerializedSystem2.applyDefaultState.mock.invocationCallOrder[0];\n\n expect(setDefaultOrder).toBeLessThan(setSystemOrder);\n });\n\n it(\"Restores the last state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n stateMachine.setSerializedStates = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setSerializedStates).toHaveBeenCalledWith(\n state,\n stateMachine.restoreDurationS,\n );\n });\n\n it(\"Sets it to default if restore is called before a state is set\", () => {\n const { stateMachine } = makeTestRig();\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n\n it(\"Sets it to default if restore is called after a state is set and the default is set\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n stateMachine.setDefaultState(5);\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n});\n\nfunction makeSerializedState(): SerializedStates {\n return {\n version: 2,\n systems: [\n {\n name: \"state1\",\n seriliziationVersion: 1,\n state: {\n foo: \"bar1\",\n },\n },\n {\n name: \"state2\",\n seriliziationVersion: 1,\n state: {\n foo: \"bar2\",\n },\n },\n ],\n };\n}\n\nclass MockSerializedSystem implements SerializedSystem {\n seriliziationVersion = 1;\n\n public name = \"mockSystem\";\n\n getSystemState = (): object | undefined => {\n return {\n foo: \"bar\",\n };\n };\n\n applyDefaultState = jest.fn();\n\n applySystemState = jest.fn();\n}\n"]}
1
+ {"version":3,"file":"StateMachineEntity.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Entities/StateMachineEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeStateMachineEntity,\n SerializedStates,\n SerializedSystem,\n StateMachineEntity,\n} from \"./StateMachineEntity\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appAO = appObjects.getOrCreate(\"App\");\n\n const stateMachine = makeStateMachineEntity(appAO);\n const stateAppliedObserver = jest.fn();\n stateMachine.addChangeObserver(stateAppliedObserver);\n\n const mockSerializedSystem1 = new MockSerializedSystem();\n mockSerializedSystem1.name = \"state1\";\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n const mockSerializedSystem2 = new MockSerializedSystem();\n mockSerializedSystem2.name = \"state2\";\n stateMachine.registerSerializedSystem(mockSerializedSystem2);\n\n return {\n stateMachine,\n mockSerializedSystem1,\n mockSerializedSystem2,\n stateAppliedObserver,\n appObjects,\n };\n}\n\ndescribe(\"State Machine Entity\", () => {\n it(\"Gets a serialized state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(2);\n\n const serializeState = state.systems[0] as any;\n expect(serializeState.name).toEqual(\"state1\");\n expect(serializeState.serializationVersion).toEqual(1);\n expect(serializeState.state).toEqual({ foo: \"bar\" });\n });\n\n it(\"Skips a serialized state that returns undefined\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n mockSerializedSystem1.getSystemState = () => {\n return undefined;\n };\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(1);\n });\n\n it(\"Set serialized state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n const state = makeSerializedState();\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith(\n {\n foo: \"bar1\",\n },\n 1,\n 3,\n );\n });\n\n it(\"Set serialized state with old misspelled property name for backwards compatibility\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n const state: SerializedStates = {\n version: 2,\n systems: [\n {\n name: \"state1\",\n seriliziationVersion: 1,\n state: {\n foo: \"bar1\",\n },\n } as any,\n ],\n };\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith(\n {\n foo: \"bar1\",\n },\n 1,\n 3,\n );\n });\n\n it(\"Submits an warning if trying to deserialize data with a bad version number\", () => {\n const { stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n const state: SerializedStates = {\n version: -1,\n systems: [],\n };\n\n stateMachine.setSerializedStates(state, 0);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets an empty state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Logs an error if adding two systems with the same name\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets the default state and warns when passing in junk\", () => {\n const { mockSerializedSystem1, stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.applySerializedStatesString(\"your mom goes to college\", 5);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(5);\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Set to default if a system is not in the saved state \", () => {\n const { stateMachine } = makeTestRig();\n const state = makeSerializedState();\n\n const secondSystem = new MockSerializedSystem();\n secondSystem.name = \"second system\";\n stateMachine.registerSerializedSystem(secondSystem);\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(secondSystem.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Notifies after a state has been applied\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Notifies after an empty state has been set\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Gets the entity\", () => {\n const { stateMachine, appObjects } = makeTestRig();\n\n expect(StateMachineEntity.get(appObjects)).toEqual(stateMachine);\n });\n\n it(\"Set serialized state in the order that they are added\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n const system1Order =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n const system2Order =\n mockSerializedSystem2.applySystemState.mock.invocationCallOrder[0];\n\n expect(system1Order).toBeLessThan(system2Order);\n });\n\n it(\"Sets the default before setting states\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n state.systems = [state.systems[0]]; // Removed state 2 data\n\n stateMachine.setSerializedStates(state, 3);\n\n const setSystemOrder =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n\n const setDefaultOrder =\n mockSerializedSystem2.applyDefaultState.mock.invocationCallOrder[0];\n\n expect(setDefaultOrder).toBeLessThan(setSystemOrder);\n });\n\n it(\"Restores the last state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n stateMachine.setSerializedStates = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setSerializedStates).toHaveBeenCalledWith(\n state,\n stateMachine.restoreDurationS,\n );\n });\n\n it(\"Sets it to default if restore is called before a state is set\", () => {\n const { stateMachine } = makeTestRig();\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n\n it(\"Sets it to default if restore is called after a state is set and the default is set\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n stateMachine.setDefaultState(5);\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n});\n\nfunction makeSerializedState(): SerializedStates {\n return {\n version: 2,\n systems: [\n {\n name: \"state1\",\n serializationVersion: 1,\n state: {\n foo: \"bar1\",\n },\n },\n {\n name: \"state2\",\n serializationVersion: 1,\n state: {\n foo: \"bar2\",\n },\n },\n ],\n };\n}\n\nclass MockSerializedSystem implements SerializedSystem {\n serializationVersion = 1;\n\n public name = \"mockSystem\";\n\n getSystemState = (): object | undefined => {\n return {\n foo: \"bar\",\n };\n };\n\n applyDefaultState = jest.fn();\n\n applySystemState = jest.fn();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TryStickAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Stick/UCs/TryStickAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport {\n makeMockScenePixelPickUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon\";\nimport { makeToolRepo, ToolState } from \"../../Tools\";\nimport { StickUCMock } from \"../Mocks/StickUCMock\";\nimport {\n makeTryStickAppObjectUC,\n TryStickAppObjectUC,\n} from \"./TryStickAppObjectUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingleton = jest.spyOn(appObjects, \"registerSingleton\");\n\n const ao = appObjects.getOrCreate(\"AO\");\n const uc = makeTryStickAppObjectUC(ao);\n\n const stickableObj = appObjects.getOrCreate(\"stickableObj\");\n const mockHideUC = new StickUCMock(stickableObj);\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"stickableObj\" });\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelPick = makeMockScenePixelPickUC(appObjects);\n mockPixelPick.scenePixelPick = jest\n .fn()\n .mockReturnValue({ appObjectID: \"stickableObj\" });\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"Tool\"));\n const peelTool = toolRepo.makeTool(\"PEEL\");\n peelTool.state = ToolState.ACTIVE;\n\n return {\n appObjects,\n ao,\n mockHideUC,\n uc,\n registerSingleton,\n mockPick,\n mockPixelPick,\n peelTool,\n };\n}\n\ndescribe(\"Try Stick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TryStickAppObjectUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Registers as the singleton\", () => {\n const { registerSingleton, uc } = makeTestRig();\n\n expect(registerSingleton).toHaveBeenCalledWith(uc);\n });\n\n it(\"Picks with the ray\", () => {\n const { uc, mockPick } = makeTestRig();\n\n const pickRay = ParametricLine.FromPointDirection(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n\n uc.tryWithRay(pickRay);\n\n expect(mockPick).toHaveBeenCalledWith(pickRay);\n });\n\n it(\"Calls the UC\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(mockHideUC.doStick).toHaveBeenCalled();\n });\n\n it(\"Does not call on ray pick if not allowed\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.allow = () => {\n return false;\n };\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(mockHideUC.doStick).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't warn if the picked object does not have the UC\", () => {\n const { uc, mockPick, appObjects } = makeTestRig();\n\n appObjects.submitWarning = jest.fn();\n appObjects.getOrCreate(\"SomeOtherObject\");\n mockPick.mockReturnValue({\n appObjectID: \"SomeOtherObject\",\n });\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(appObjects.submitWarning).not.toHaveBeenCalled();\n });\n\n it(\"Picks with a pixel\", () => {\n const { uc, mockPixelPick } = makeTestRig();\n\n const pickPixel = new Vector2(1, 2);\n\n uc.tryWithPixel(pickPixel);\n\n expect(mockPixelPick.scenePixelPick).toHaveBeenCalledWith(pickPixel);\n });\n\n it(\"Calls the UC with a pixel pick\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.tryWithPixel(Vector2.One());\n\n expect(mockHideUC.doStick).toHaveBeenCalled();\n });\n\n it(\"Does not call on pixel pick if not allowed\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.allow = () => {\n return false;\n };\n\n uc.tryWithPixel(Vector2.One());\n\n expect(mockHideUC.doStick).not.toHaveBeenCalled();\n });\n\n it(\"Allows if the peel tool is active\", () => {\n const { uc, peelTool } = makeTestRig();\n\n peelTool.state = ToolState.ACTIVE;\n\n expect(uc.allow()).toEqual(true);\n\n peelTool.state = ToolState.ENABLED;\n\n expect(uc.allow()).toEqual(false);\n });\n});\n"]}
1
+ {"version":3,"file":"TryStickAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Stick/UCs/TryStickAppObjectUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAA+D;AAC/D,2CAGuB;AACvB,uCAAsD;AACtD,sDAAmD;AACnD,+DAG+B;AAE/B,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAEtE,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,IAAA,6CAAuB,EAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,yBAAW,CAAC,YAAY,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,IAAA,gCAAsB,EAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,YAAY,GAAG,QAAQ,CAAC;IAEpC,MAAM,aAAa,GAAG,IAAA,kCAAwB,EAAC,UAAU,CAAC,CAAC;IAC3D,aAAa,CAAC,cAAc,GAAG,IAAI;SAChC,EAAE,EAAE;SACJ,eAAe,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;IAElC,OAAO;QACL,UAAU;QACV,EAAE;QACF,UAAU;QACV,EAAE;QACF,iBAAiB;QACjB,QAAQ;QACR,aAAa;QACb,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,yCAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEhD,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvC,MAAM,OAAO,GAAG,qBAAc,CAAC,kBAAkB,CAC/C,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACrB,CAAC;QAEF,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEvB,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,EAAE,CAAC,KAAK,GAAG,GAAG,EAAE;YACd,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACrC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1C,QAAQ,CAAC,eAAe,CAAC;YACvB,WAAW,EAAE,iBAAiB;SAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,UAAU,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QAE5C,MAAM,SAAS,GAAG,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE3B,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,EAAE,CAAC,YAAY,CAAC,cAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE/B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,EAAE,CAAC,KAAK,GAAG,GAAG,EAAE;YACd,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,EAAE,CAAC,YAAY,CAAC,cAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE/B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvC,QAAQ,CAAC,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;QAElC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjC,QAAQ,CAAC,KAAK,GAAG,iBAAS,CAAC,OAAO,CAAC;QAEnC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport {\n makeMockScenePixelPickUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon\";\nimport { makeToolRepo, ToolState } from \"../../Tools\";\nimport { StickUCMock } from \"../Mocks/StickUCMock\";\nimport {\n makeTryStickAppObjectUC,\n TryStickAppObjectUC,\n} from \"./TryStickAppObjectUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingleton = jest.spyOn(appObjects, \"registerSingleton\");\n\n const ao = appObjects.getOrCreate(\"AO\");\n const uc = makeTryStickAppObjectUC(ao);\n\n const stickableObj = appObjects.getOrCreate(\"stickableObj\");\n const mockHideUC = new StickUCMock(stickableObj);\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"stickableObj\" });\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelPick = makeMockScenePixelPickUC(appObjects);\n mockPixelPick.scenePixelPick = jest\n .fn()\n .mockReturnValue({ appObjectID: \"stickableObj\" });\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"Tool\"));\n const peelTool = toolRepo.makeTool(\"PEEL\");\n peelTool.state = ToolState.ACTIVE;\n\n return {\n appObjects,\n ao,\n mockHideUC,\n uc,\n registerSingleton,\n mockPick,\n mockPixelPick,\n peelTool,\n };\n}\n\ndescribe(\"Try Stick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TryStickAppObjectUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Registers as the singleton\", () => {\n const { registerSingleton, uc } = makeTestRig();\n\n expect(registerSingleton).toHaveBeenCalledWith(uc);\n });\n\n it(\"Picks with the ray\", () => {\n const { uc, mockPick } = makeTestRig();\n\n const pickRay = ParametricLine.FromPointDirection(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n\n uc.tryWithRay(pickRay);\n\n expect(mockPick).toHaveBeenCalledWith(pickRay);\n });\n\n it(\"Calls the UC\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(mockHideUC.doStick).toHaveBeenCalled();\n });\n\n it(\"Does not call on ray pick if not allowed\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.allow = () => {\n return false;\n };\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(mockHideUC.doStick).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't warn if the picked object does not have the UC\", () => {\n const { uc, mockPick, appObjects } = makeTestRig();\n\n appObjects.submitWarning = jest.fn();\n appObjects.getOrCreate(\"SomeOtherObject\");\n mockPick.mockReturnValue({\n appObjectID: \"SomeOtherObject\",\n });\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(appObjects.submitWarning).not.toHaveBeenCalled();\n });\n\n it(\"Picks with a pixel\", () => {\n const { uc, mockPixelPick } = makeTestRig();\n\n const pickPixel = new Vector2(1, 2);\n\n uc.tryWithPixel(pickPixel);\n\n expect(mockPixelPick.scenePixelPick).toHaveBeenCalledWith(pickPixel);\n });\n\n it(\"Calls the UC with a pixel pick\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.tryWithPixel(Vector2.One());\n\n expect(mockHideUC.doStick).toHaveBeenCalled();\n });\n\n it(\"Does not call on pixel pick if not allowed\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.allow = () => {\n return false;\n };\n\n uc.tryWithPixel(Vector2.One());\n\n expect(mockHideUC.doStick).not.toHaveBeenCalled();\n });\n\n it(\"Allows if the peel tool is active\", () => {\n const { uc, peelTool } = makeTestRig();\n\n peelTool.state = ToolState.ACTIVE;\n\n expect(uc.allow()).toEqual(true);\n\n peelTool.state = ToolState.ENABLED;\n\n expect(uc.allow()).toEqual(false);\n });\n});\n"]}
@@ -4,7 +4,7 @@ exports.HasStoredViewPM = void 0;
4
4
  exports.makeHasStoredViewPM = makeHasStoredViewPM;
5
5
  const core_1 = require("@vived/core");
6
6
  const Entities_1 = require("../Entities");
7
- class HasStoredViewPM extends core_1.AppObjectPM {
7
+ class HasStoredViewPM extends core_1.AppObjectSingletonPM {
8
8
  }
9
9
  exports.HasStoredViewPM = HasStoredViewPM;
10
10
  HasStoredViewPM.type = "HasStoredViewPM";
@@ -21,19 +21,15 @@ class HasStoredViewPMImp extends HasStoredViewPM {
21
21
  }
22
22
  constructor(appObject) {
23
23
  super(appObject, HasStoredViewPM.type);
24
- this.onRepoChange = () => {
24
+ this.defaultVM = false;
25
+ this.formVM = () => {
25
26
  if (!this.storedView)
26
27
  return;
27
28
  this.doUpdateView(this.storedView.hasStoredView);
28
29
  };
29
- this.dispose = () => {
30
- super.dispose();
31
- this.storedView?.removeChangeObserver(this.onRepoChange);
32
- this.storedView?.removeOnDisposeObserver(this.dispose);
33
- };
34
- this.storedView?.addChangeObserver(this.onRepoChange);
35
- this.onRepoChange();
36
- this.appObjects.registerSingleton(this);
30
+ if (this.storedView) {
31
+ this.observeEntity(this.storedView);
32
+ }
37
33
  }
38
34
  }
39
35
  //# sourceMappingURL=HasStoredViewPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HasStoredViewPM.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.ts"],"names":[],"mappings":";;;AAeA,kDAEC;AAjBD,sCAKqB;AACrB,0CAAyC;AAEzC,MAAsB,eAAgB,SAAQ,kBAAoB;;AAAlE,0CAKC;AAJiB,oBAAI,GAAG,iBAAiB,CAAC;AAElC,mBAAG,GAAG,CAAC,UAAyB,EAA+B,EAAE,CACtE,IAAA,4BAAqB,EAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG5D,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAa,qBAAU,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAaD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAZzC,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC,CAAC;QAEF,YAAO,GAAG,GAAS,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\n AppObject,\n AppObjectPM,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { StoredView } from \"../Entities\";\n\nexport abstract class HasStoredViewPM extends AppObjectPM<boolean> {\n static readonly type = \"HasStoredViewPM\";\n\n static get = (appObjects: AppObjectRepo): HasStoredViewPM | undefined =>\n getSingletonComponent(HasStoredViewPM.type, appObjects);\n}\n\nexport function makeHasStoredViewPM(appObject: AppObject): HasStoredViewPM {\n return new HasStoredViewPMImp(appObject);\n}\n\nclass HasStoredViewPMImp extends HasStoredViewPM {\n private get storedView() {\n return this.getCachedSingleton<StoredView>(StoredView.type);\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n onRepoChange = () => {\n if (!this.storedView) return;\n this.doUpdateView(this.storedView.hasStoredView);\n };\n\n dispose = (): void => {\n super.dispose();\n this.storedView?.removeChangeObserver(this.onRepoChange);\n this.storedView?.removeOnDisposeObserver(this.dispose);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, HasStoredViewPM.type);\n\n this.storedView?.addChangeObserver(this.onRepoChange);\n this.onRepoChange();\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
1
+ {"version":3,"file":"HasStoredViewPM.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.ts"],"names":[],"mappings":";;;AAeA,kDAEC;AAjBD,sCAKqB;AACrB,0CAAyC;AAEzC,MAAsB,eAAgB,SAAQ,2BAA6B;;AAA3E,0CAKC;AAJiB,oBAAI,GAAG,iBAAiB,CAAC;AAElC,mBAAG,GAAG,CAAC,UAAyB,EAA+B,EAAE,CACtE,IAAA,4BAAqB,EAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG5D,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAa,qBAAU,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAhBzC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n AppObject,\n AppObjectSingletonPM,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { StoredView } from \"../Entities\";\n\nexport abstract class HasStoredViewPM extends AppObjectSingletonPM<boolean> {\n static readonly type = \"HasStoredViewPM\";\n\n static get = (appObjects: AppObjectRepo): HasStoredViewPM | undefined =>\n getSingletonComponent(HasStoredViewPM.type, appObjects);\n}\n\nexport function makeHasStoredViewPM(appObject: AppObject): HasStoredViewPM {\n return new HasStoredViewPMImp(appObject);\n}\n\nclass HasStoredViewPMImp extends HasStoredViewPM {\n defaultVM = false;\n\n private get storedView() {\n return this.getCachedSingleton<StoredView>(StoredView.type);\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.storedView) return;\n this.doUpdateView(this.storedView.hasStoredView);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, HasStoredViewPM.type);\n\n if (this.storedView) {\n this.observeEntity(this.storedView);\n }\n }\n}\n"]}
@@ -10,6 +10,7 @@ function makeTestRig() {
10
10
  (0, SceneRoot_1.makeSceneRootEntity)(ao);
11
11
  const storedView = (0, Entities_1.makeStoredView)(ao);
12
12
  const pm = (0, HasStoredViewPM_1.makeHasStoredViewPM)(ao);
13
+ pm.addView(() => { });
13
14
  return { storedView, pm, appObjects };
14
15
  }
15
16
  describe("Has Stored View Presentation Manager", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"HasStoredViewPM.test.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,+CAAsD;AACtD,0CAA6C;AAC7C,uDAAyE;AAEzE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAChD,IAAA,+BAAmB,EAAC,EAAE,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,IAAA,yBAAc,EAAC,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAA,qCAAmB,EAAC,EAAE,CAAC,CAAC;IACnC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC;QACjC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;QAChC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,iCAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeSceneRootEntity } from \"../../SceneRoot\";\nimport { makeStoredView } from \"../Entities\";\nimport { HasStoredViewPM, makeHasStoredViewPM } from \"./HasStoredViewPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"Scene Root\");\n makeSceneRootEntity(ao);\n const storedView = makeStoredView(ao);\n const pm = makeHasStoredViewPM(ao);\n return { storedView, pm, appObjects };\n}\n\ndescribe(\"Has Stored View Presentation Manager\", () => {\n it(\"Initializes the VM\", () => {\n const { pm } = makeTestRig();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Sets the show based on the is rendering flag\", () => {\n const { pm, storedView } = makeTestRig();\n\n storedView.hasStoredView = false;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(false);\n\n storedView.hasStoredView = true;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Checks for equal vms\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n });\n\n it(\"Checks for a change in the VM\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n });\n\n it(\"Gets the PM\", () => {\n const { pm, appObjects } = makeTestRig();\n\n expect(HasStoredViewPM.get(appObjects)).toEqual(pm);\n });\n});\n"]}
1
+ {"version":3,"file":"HasStoredViewPM.test.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,+CAAsD;AACtD,0CAA6C;AAC7C,uDAAyE;AAEzE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAChD,IAAA,+BAAmB,EAAC,EAAE,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,IAAA,yBAAc,EAAC,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAA,qCAAmB,EAAC,EAAE,CAAC,CAAC;IACnC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC;QACjC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;QAChC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,iCAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeSceneRootEntity } from \"../../SceneRoot\";\nimport { makeStoredView } from \"../Entities\";\nimport { HasStoredViewPM, makeHasStoredViewPM } from \"./HasStoredViewPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"Scene Root\");\n makeSceneRootEntity(ao);\n const storedView = makeStoredView(ao);\n const pm = makeHasStoredViewPM(ao);\n pm.addView(() => {});\n return { storedView, pm, appObjects };\n}\n\ndescribe(\"Has Stored View Presentation Manager\", () => {\n it(\"Initializes the VM\", () => {\n const { pm } = makeTestRig();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Sets the show based on the is rendering flag\", () => {\n const { pm, storedView } = makeTestRig();\n\n storedView.hasStoredView = false;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(false);\n\n storedView.hasStoredView = true;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Checks for equal vms\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n });\n\n it(\"Checks for a change in the VM\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n });\n\n it(\"Gets the PM\", () => {\n const { pm, appObjects } = makeTestRig();\n\n expect(HasStoredViewPM.get(appObjects)).toEqual(pm);\n });\n});\n"]}
@@ -81,7 +81,7 @@ class SerializeStoredViewImp extends SerializeStoredView {
81
81
  }
82
82
  constructor(appObject) {
83
83
  super(appObject, SerializeStoredView.type);
84
- this.seriliziationVersion = 1;
84
+ this.serializationVersion = 1;
85
85
  const stateMachine = StateMachineEntity_1.StateMachineEntity.get(appObject.appObjectRepo);
86
86
  if (stateMachine) {
87
87
  stateMachine.registerSerializedSystem(this);
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeStoredView.js","sourceRoot":"","sources":["../../../../src/StoredView/UC/SerializeStoredView.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { Quaternion, Vector3 } from \"@vived/core\";\nimport {\n SerializedSystem,\n StateMachineEntity,\n} from \"../../StateMachine/Entities/StateMachineEntity\";\nimport { StoredView } from \"../Entities/StoredView\";\nimport { RestoreStoredViewUC } from \"./RestoreStoredViewUC\";\n\nexport abstract class SerializeStoredView\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeStoredView\";\n name: string = \"storedView\";\n abstract seriliziationVersion: number;\n abstract getSystemState(): object;\n abstract applySystemState(state: object, version: number): void;\n abstract applyDefaultState(transitionDuration: number): void;\n}\n\nexport function makeSerializeStoredView(\n appObject: AppObject,\n): SerializeStoredView {\n return new SerializeStoredViewImp(appObject);\n}\n\nclass SerializeStoredViewImp extends SerializeStoredView {\n seriliziationVersion = 1;\n\n private get storedView() {\n return this.getCachedSingleton<StoredView>(StoredView.type);\n }\n\n private get restoreStoredViewUC() {\n return this.getCachedSingleton<RestoreStoredViewUC>(\n RestoreStoredViewUC.type,\n );\n }\n\n getSystemState(): object {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return {};\n }\n\n const data: StoredViewDataV1 = {\n position: this.storedView.position.dto,\n rotation: this.storedView.rotation.dto,\n scale: this.storedView.scale,\n hasStoredView: this.storedView.hasStoredView,\n };\n\n return data;\n }\n\n applySystemState(serializedState: object, version: number): void {\n try {\n if (version === 1) {\n const castState = serializedState as StoredViewDataV1;\n this.applyV1Data(castState);\n } else {\n console.warn(\n `[SerializeStoredView] Unsupported version number ${version}. Defaulting`,\n );\n this.applyDefaultState();\n }\n } catch (e) {\n console.warn(\n `[SerializeStoredView] Caught when deserializing ${e}. Defaulting`,\n );\n this.applyDefaultState();\n }\n }\n\n applyDefaultState(): void {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return;\n }\n\n this.storedView.position = Vector3.Zero();\n this.storedView.rotation = Quaternion.Identity();\n this.storedView.scale = 1;\n this.storedView.hasStoredView = false;\n }\n\n private applyV1Data(data: StoredViewDataV1) {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return;\n }\n\n const pos = Vector3.FromDTO(data.position);\n const rot = Quaternion.FromDTO(data.rotation);\n\n this.storedView.position = pos;\n this.storedView.rotation = rot;\n this.storedView.scale = data.scale;\n this.storedView.hasStoredView = data.hasStoredView;\n\n if (data.hasStoredView) {\n this.restoreStoredViewUC?.restoreStoredView();\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeStoredView.type);\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 StoredViewDataV1 {\n position: { x: number; y: number; z: number };\n rotation: { x: number; y: number; z: number; w: number };\n scale: number;\n hasStoredView: boolean;\n}\n"]}
1
+ {"version":3,"file":"SerializeStoredView.js","sourceRoot":"","sources":["../../../../src/StoredView/UC/SerializeStoredView.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { Quaternion, Vector3 } from \"@vived/core\";\nimport {\n SerializedSystem,\n StateMachineEntity,\n} from \"../../StateMachine/Entities/StateMachineEntity\";\nimport { StoredView } from \"../Entities/StoredView\";\nimport { RestoreStoredViewUC } from \"./RestoreStoredViewUC\";\n\nexport abstract class SerializeStoredView\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeStoredView\";\n name: string = \"storedView\";\n abstract serializationVersion: number;\n abstract getSystemState(): object;\n abstract applySystemState(state: object, version: number): void;\n abstract applyDefaultState(transitionDuration: number): void;\n}\n\nexport function makeSerializeStoredView(\n appObject: AppObject,\n): SerializeStoredView {\n return new SerializeStoredViewImp(appObject);\n}\n\nclass SerializeStoredViewImp extends SerializeStoredView {\n serializationVersion = 1;\n\n private get storedView() {\n return this.getCachedSingleton<StoredView>(StoredView.type);\n }\n\n private get restoreStoredViewUC() {\n return this.getCachedSingleton<RestoreStoredViewUC>(\n RestoreStoredViewUC.type,\n );\n }\n\n getSystemState(): object {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return {};\n }\n\n const data: StoredViewDataV1 = {\n position: this.storedView.position.dto,\n rotation: this.storedView.rotation.dto,\n scale: this.storedView.scale,\n hasStoredView: this.storedView.hasStoredView,\n };\n\n return data;\n }\n\n applySystemState(serializedState: object, version: number): void {\n try {\n if (version === 1) {\n const castState = serializedState as StoredViewDataV1;\n this.applyV1Data(castState);\n } else {\n console.warn(\n `[SerializeStoredView] Unsupported version number ${version}. Defaulting`,\n );\n this.applyDefaultState();\n }\n } catch (e) {\n console.warn(\n `[SerializeStoredView] Caught when deserializing ${e}. Defaulting`,\n );\n this.applyDefaultState();\n }\n }\n\n applyDefaultState(): void {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return;\n }\n\n this.storedView.position = Vector3.Zero();\n this.storedView.rotation = Quaternion.Identity();\n this.storedView.scale = 1;\n this.storedView.hasStoredView = false;\n }\n\n private applyV1Data(data: StoredViewDataV1) {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return;\n }\n\n const pos = Vector3.FromDTO(data.position);\n const rot = Quaternion.FromDTO(data.rotation);\n\n this.storedView.position = pos;\n this.storedView.rotation = rot;\n this.storedView.scale = data.scale;\n this.storedView.hasStoredView = data.hasStoredView;\n\n if (data.hasStoredView) {\n this.restoreStoredViewUC?.restoreStoredView();\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeStoredView.type);\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 StoredViewDataV1 {\n position: { x: number; y: number; z: number };\n rotation: { x: number; y: number; z: number; w: number };\n scale: number;\n hasStoredView: boolean;\n}\n"]}
@@ -4,7 +4,7 @@ exports.StylusIsInUsePM = void 0;
4
4
  exports.makeStylusIsInUsePM = makeStylusIsInUsePM;
5
5
  const core_1 = require("@vived/core");
6
6
  const StylusEntity_1 = require("../Entity/StylusEntity");
7
- class StylusIsInUsePM extends core_1.AppObjectPM {
7
+ class StylusIsInUsePM extends core_1.AppObjectSingletonPM {
8
8
  }
9
9
  exports.StylusIsInUsePM = StylusIsInUsePM;
10
10
  StylusIsInUsePM.type = "StylusIsInUsePM";
@@ -13,25 +13,26 @@ function makeStylusIsInUsePM(appObject) {
13
13
  return new StylusIsInUsePMImp(appObject);
14
14
  }
15
15
  class StylusIsInUsePMImp extends StylusIsInUsePM {
16
+ get stylus() {
17
+ return this.getCachedLocalComponent(StylusEntity_1.StylusEntity.type);
18
+ }
16
19
  vmsAreEqual(a, b) {
17
20
  return a === b;
18
21
  }
19
22
  constructor(appObject) {
20
23
  super(appObject, StylusIsInUsePM.type);
21
- this.onStylusChange = () => {
24
+ this.defaultVM = false;
25
+ this.formVM = () => {
22
26
  if (!this.stylus)
23
27
  return;
24
28
  this.doUpdateView(this.stylus.isInUse);
25
29
  };
26
- this.stylus = appObject.getComponent(StylusEntity_1.StylusEntity.type);
27
30
  if (this.stylus) {
28
- this.stylus.addChangeObserver(this.onStylusChange);
29
- this.onStylusChange();
31
+ this.observeEntity(this.stylus);
30
32
  }
31
33
  else {
32
34
  this.warn("App Object does not have a Stylus Entity");
33
35
  }
34
- this.appObjects.registerSingleton(this);
35
36
  }
36
37
  }
37
38
  //# sourceMappingURL=StylusIsInUsePM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StylusIsInUsePM.js","sourceRoot":"","sources":["../../../../src/Stylus/PMs/StylusIsInUsePM.ts"],"names":[],"mappings":";;;AAeA,kDAEC;AAjBD,sCAKqB;AACrB,yDAAsD;AAEtD,MAAsB,eAAgB,SAAQ,kBAAoB;;AAAlE,0CAKC;AAJiB,oBAAI,GAAG,iBAAiB,CAAC;AAElC,mBAAG,GAAG,CAAC,UAAyB,EAA+B,EAAE,CACtE,IAAA,4BAAqB,EAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG5D,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QANzC,mBAAc,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\n AppObject,\n AppObjectPM,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { StylusEntity } from \"../Entity/StylusEntity\";\n\nexport abstract class StylusIsInUsePM extends AppObjectPM<boolean> {\n static readonly type = \"StylusIsInUsePM\";\n\n static get = (appObjects: AppObjectRepo): StylusIsInUsePM | undefined =>\n getSingletonComponent(StylusIsInUsePM.type, appObjects);\n}\n\nexport function makeStylusIsInUsePM(appObject: AppObject): StylusIsInUsePM {\n return new StylusIsInUsePMImp(appObject);\n}\n\nclass StylusIsInUsePMImp extends StylusIsInUsePM {\n private stylus?: StylusEntity;\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n onStylusChange = () => {\n if (!this.stylus) return;\n this.doUpdateView(this.stylus.isInUse);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusIsInUsePM.type);\n\n this.stylus = appObject.getComponent<StylusEntity>(StylusEntity.type);\n if (this.stylus) {\n this.stylus.addChangeObserver(this.onStylusChange);\n this.onStylusChange();\n } else {\n this.warn(\"App Object does not have a Stylus Entity\");\n }\n\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusIsInUsePM.js","sourceRoot":"","sources":["../../../../src/Stylus/PMs/StylusIsInUsePM.ts"],"names":[],"mappings":";;;AAeA,kDAEC;AAjBD,sCAKqB;AACrB,yDAAsD;AAEtD,MAAsB,eAAgB,SAAQ,2BAA6B;;AAA3E,0CAKC;AAJiB,oBAAI,GAAG,iBAAiB,CAAC;AAElC,mBAAG,GAAG,CAAC,UAAyB,EAA+B,EAAE,CACtE,IAAA,4BAAqB,EAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG5D,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,uBAAuB,CAAe,2BAAY,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAhBzC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n AppObject,\n AppObjectSingletonPM,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { StylusEntity } from \"../Entity/StylusEntity\";\n\nexport abstract class StylusIsInUsePM extends AppObjectSingletonPM<boolean> {\n static readonly type = \"StylusIsInUsePM\";\n\n static get = (appObjects: AppObjectRepo): StylusIsInUsePM | undefined =>\n getSingletonComponent(StylusIsInUsePM.type, appObjects);\n}\n\nexport function makeStylusIsInUsePM(appObject: AppObject): StylusIsInUsePM {\n return new StylusIsInUsePMImp(appObject);\n}\n\nclass StylusIsInUsePMImp extends StylusIsInUsePM {\n defaultVM = false;\n\n private get stylus() {\n return this.getCachedLocalComponent<StylusEntity>(StylusEntity.type);\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.stylus) return;\n this.doUpdateView(this.stylus.isInUse);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusIsInUsePM.type);\n\n if (this.stylus) {\n this.observeEntity(this.stylus);\n } else {\n this.warn(\"App Object does not have a Stylus Entity\");\n }\n }\n}\n"]}
@@ -6,11 +6,11 @@ const StylusEntity_1 = require("../Entity/StylusEntity");
6
6
  const StylusIsInUsePM_1 = require("./StylusIsInUsePM");
7
7
  function makeTestRig() {
8
8
  const appObjects = (0, core_1.makeAppObjectRepo)();
9
- const registerSingletonSpy = jest.spyOn(appObjects, "registerSingleton");
10
9
  const stylusAO = appObjects.getOrCreate("Stylus");
11
10
  const stylusEntity = (0, StylusEntity_1.makeStylusEntity)(stylusAO);
12
11
  const pm = (0, StylusIsInUsePM_1.makeStylusIsInUsePM)(stylusAO);
13
- return { pm, stylusEntity, registerSingletonSpy, appObjects };
12
+ pm.addView(() => { });
13
+ return { pm, stylusEntity, appObjects };
14
14
  }
15
15
  describe("Stylus is in use", () => {
16
16
  it("Initializes the VM", () => {
@@ -34,10 +34,6 @@ describe("Stylus is in use", () => {
34
34
  const lastVM = pm.lastVM;
35
35
  expect(lastVM).toEqual(false);
36
36
  });
37
- it("Registers as a singleton", () => {
38
- const { pm, registerSingletonSpy } = makeTestRig();
39
- expect(registerSingletonSpy).toHaveBeenCalledWith(pm);
40
- });
41
37
  it("Gets the singleton", () => {
42
38
  const { pm, appObjects } = makeTestRig();
43
39
  expect(StylusIsInUsePM_1.StylusIsInUsePM.get(appObjects)).toEqual(pm);
@@ -1 +1 @@
1
- {"version":3,"file":"StylusIsInUsePM.test.js","sourceRoot":"","sources":["../../../../src/Stylus/PMs/StylusIsInUsePM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAAkD;AAClD,yDAA0D;AAC1D,uDAAyE;AAEzE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,+BAAgB,EAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAChE,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,EAAE,CAAC;QACrD,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,iBAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,EAAE,CAAC;QACrD,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,iBAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElE,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,cAAO,CAAC,IAAI,EAAE,CAAC;QACtD,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,iBAAU,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,EAAE,EAAE,oBAAoB,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,iCAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Quaternion, Vector3 } from \"@vived/core\";\nimport { makeStylusEntity } from \"../Entity/StylusEntity\";\nimport { makeStylusIsInUsePM, StylusIsInUsePM } from \"./StylusIsInUsePM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\n\n const stylusAO = appObjects.getOrCreate(\"Stylus\");\n const stylusEntity = makeStylusEntity(stylusAO);\n const pm = makeStylusIsInUsePM(stylusAO);\n\n return { pm, stylusEntity, registerSingletonSpy, appObjects };\n}\n\ndescribe(\"Stylus is in use\", () => {\n it(\"Initializes the VM\", () => {\n const { pm } = makeTestRig();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Updates is in use to true if the stylus has moved\", () => {\n const { pm, stylusEntity } = makeTestRig();\n stylusEntity.transform.worldPosition = Vector3.One();\n stylusEntity.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(true);\n });\n\n it(\"Updates is in use back to false\", () => {\n const { pm, stylusEntity } = makeTestRig();\n stylusEntity.transform.worldPosition = Vector3.One();\n stylusEntity.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n\n stylusEntity.transform.worldPosition = Vector3.Zero();\n stylusEntity.transform.worldRotation = Quaternion.Identity();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Registers as a singleton\", () => {\n const { pm, registerSingletonSpy } = makeTestRig();\n\n expect(registerSingletonSpy).toHaveBeenCalledWith(pm);\n });\n\n it(\"Gets the singleton\", () => {\n const { pm, appObjects } = makeTestRig();\n\n expect(StylusIsInUsePM.get(appObjects)).toEqual(pm);\n });\n});\n"]}
1
+ {"version":3,"file":"StylusIsInUsePM.test.js","sourceRoot":"","sources":["../../../../src/Stylus/PMs/StylusIsInUsePM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAAkD;AAClD,yDAA0D;AAC1D,uDAAyE;AAEzE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IAEvC,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,+BAAgB,EAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IACzC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAErB,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,EAAE,CAAC;QACrD,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,iBAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,EAAE,CAAC;QACrD,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,iBAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElE,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,cAAO,CAAC,IAAI,EAAE,CAAC;QACtD,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,iBAAU,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,iCAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Quaternion, Vector3 } from \"@vived/core\";\nimport { makeStylusEntity } from \"../Entity/StylusEntity\";\nimport { makeStylusIsInUsePM, StylusIsInUsePM } from \"./StylusIsInUsePM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const stylusAO = appObjects.getOrCreate(\"Stylus\");\n const stylusEntity = makeStylusEntity(stylusAO);\n const pm = makeStylusIsInUsePM(stylusAO);\n pm.addView(() => {});\n\n return { pm, stylusEntity, appObjects };\n}\n\ndescribe(\"Stylus is in use\", () => {\n it(\"Initializes the VM\", () => {\n const { pm } = makeTestRig();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Updates is in use to true if the stylus has moved\", () => {\n const { pm, stylusEntity } = makeTestRig();\n stylusEntity.transform.worldPosition = Vector3.One();\n stylusEntity.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(true);\n });\n\n it(\"Updates is in use back to false\", () => {\n const { pm, stylusEntity } = makeTestRig();\n stylusEntity.transform.worldPosition = Vector3.One();\n stylusEntity.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n\n stylusEntity.transform.worldPosition = Vector3.Zero();\n stylusEntity.transform.worldRotation = Quaternion.Identity();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Gets the singleton\", () => {\n const { pm, appObjects } = makeTestRig();\n\n expect(StylusIsInUsePM.get(appObjects)).toEqual(pm);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EmulateStylusUC.test.js","sourceRoot":"","sources":["../../../../src/Stylus/UCs/EmulateStylusUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon\";\nimport { makeMouseInput } from \"../../MouseInput\";\nimport { makeTouchInput } from \"../../TouchController\";\nimport { makeStylusEntity } from \"../Entity/StylusEntity\";\nimport { EmulateStylusUC, makeEmulateStylusUC } from \"./EmulateStylusUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\n\n const mouseInput = makeMouseInput(appObjects.getOrCreate(\"Mouse\"));\n const inputElement = document.createElement(\"div\");\n mouseInput.setEventElement(inputElement);\n\n const touchInout = makeTouchInput(appObjects.getOrCreate(\"Touch\"));\n touchInout.setEventElement(inputElement);\n\n const ao = appObjects.getOrCreate(\"Stylus\");\n const stylus = makeStylusEntity(ao);\n const uc = makeEmulateStylusUC(ao);\n\n const mockSceneRay = makeMockPixelToSceneRayUC(appObjects);\n mockSceneRay.pixelToSceneRay = jest\n .fn()\n .mockReturnValue(\n ParametricLine.FromPointDirection(\n new Vector3(1, 1, -1),\n Vector3.Forward()\n )\n );\n\n return {\n uc,\n appObjects,\n registerSingletonSpy,\n mouseInput,\n inputElement,\n stylus,\n touchInout,\n };\n}\n\ndescribe(\"Emulate Stylus UC\", () => {\n it(\"Registers as a singleton\", () => {\n const { uc, registerSingletonSpy } = makeTestRig();\n\n expect(registerSingletonSpy).toHaveBeenCalledWith(uc);\n });\n\n it(\"Gets the singleton\", () => {\n const { uc, appObjects } = makeTestRig();\n\n expect(EmulateStylusUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Can be started and stopped\", () => {\n const { uc } = makeTestRig();\n\n expect(uc.isEmulating).toEqual(false);\n\n uc.startEmulating();\n\n expect(uc.isEmulating).toEqual(true);\n\n uc.stopEmulating();\n\n expect(uc.isEmulating).toEqual(false);\n });\n\n it(\"Steals the input element from the mouse input\", () => {\n const { uc, mouseInput } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(mouseInput, \"clearInputElement\");\n\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalled();\n });\n\n it(\"Only steals once\", () => {\n const { uc, mouseInput } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(mouseInput, \"clearInputElement\");\n\n uc.startEmulating();\n uc.startEmulating();\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Clears the input element from the touch input\", () => {\n const { uc, touchInout } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(touchInout, \"clearInputElement\");\n\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalled();\n });\n\n it(\"Only clears once\", () => {\n const { uc, touchInout } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(touchInout, \"clearInputElement\");\n\n uc.startEmulating();\n uc.startEmulating();\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Returns the mouse input element when stopped\", () => {\n const { uc, mouseInput, inputElement } = makeTestRig();\n\n const setElementSpy = jest.spyOn(mouseInput, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledWith(inputElement);\n });\n\n it(\"Only returns to the mouse once\", () => {\n const { uc, mouseInput } = makeTestRig();\n\n const setElementSpy = jest.spyOn(mouseInput, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Returns the touch input element when stopped\", () => {\n const { uc, touchInout, inputElement } = makeTestRig();\n\n const setElementSpy = jest.spyOn(touchInout, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledWith(inputElement);\n });\n\n it(\"Only returns to the touch once\", () => {\n const { uc, touchInout } = makeTestRig();\n\n const setElementSpy = jest.spyOn(touchInout, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Sends mouse down to the stylus\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n const e = new MouseEvent(\"mousedown\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).toHaveBeenCalledWith(1, true);\n });\n\n it(\"Stops sending mouse down after stopped\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n uc.stopEmulating();\n\n const e = new MouseEvent(\"mousedown\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).not.toHaveBeenCalled();\n });\n\n it(\"Sends mouse up to the stylus\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n const e = new MouseEvent(\"mouseup\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).toHaveBeenCalledWith(1, false);\n });\n\n it(\"Stops sending mouse up after stopped\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n uc.stopEmulating();\n\n const e = new MouseEvent(\"mouseup\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).not.toHaveBeenCalled();\n });\n\n it(\"Rotates the stylus on mouse move\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.transform.worldRotation = Quaternion.Identity();\n\n uc.startEmulating();\n\n const e = new MouseEvent(\"mousemove\", { clientX: 10, clientY: 10 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops rotating the stylus on mouse move\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.transform.worldRotation = Quaternion.Identity();\n\n uc.startEmulating();\n uc.stopEmulating();\n\n const e = new MouseEvent(\"mousemove\", { clientX: 10, clientY: 10 });\n\n inputElement.dispatchEvent(e);\n inputElement.dispatchEvent(e);\n inputElement.dispatchEvent(e);\n\n expect(stylus.transform.worldRotation).toEqual(Quaternion.Identity());\n });\n\n it(\"Bumps to the left when A is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyA\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toBeLessThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping to the left when A is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyA\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toEqual(0);\n });\n\n it(\"Bumps to the right when D is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyD\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toBeGreaterThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping to the right when D is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyD\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toEqual(0);\n });\n\n it(\"Bumps down when S is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyS\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toBeLessThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping when S is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyS\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toEqual(0);\n });\n\n it(\"Bumps up when W is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyW\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toBeGreaterThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping when W is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyW\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toEqual(0);\n });\n});\n"]}
1
+ {"version":3,"file":"EmulateStylusUC.test.js","sourceRoot":"","sources":["../../../../src/Stylus/UCs/EmulateStylusUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon\";\nimport { makeMouseInput } from \"../../MouseInput\";\nimport { makeTouchInput } from \"../../TouchController\";\nimport { makeStylusEntity } from \"../Entity/StylusEntity\";\nimport { EmulateStylusUC, makeEmulateStylusUC } from \"./EmulateStylusUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\n\n const mouseInput = makeMouseInput(appObjects.getOrCreate(\"Mouse\"));\n const inputElement = document.createElement(\"div\");\n mouseInput.setEventElement(inputElement);\n\n const touchInout = makeTouchInput(appObjects.getOrCreate(\"Touch\"));\n touchInout.setEventElement(inputElement);\n\n const ao = appObjects.getOrCreate(\"Stylus\");\n const stylus = makeStylusEntity(ao);\n const uc = makeEmulateStylusUC(ao);\n\n const mockSceneRay = makeMockPixelToSceneRayUC(appObjects);\n mockSceneRay.pixelToSceneRay = jest\n .fn()\n .mockReturnValue(\n ParametricLine.FromPointDirection(\n new Vector3(1, 1, -1),\n Vector3.Forward(),\n ),\n );\n\n return {\n uc,\n appObjects,\n registerSingletonSpy,\n mouseInput,\n inputElement,\n stylus,\n touchInout,\n };\n}\n\ndescribe(\"Emulate Stylus UC\", () => {\n it(\"Registers as a singleton\", () => {\n const { uc, registerSingletonSpy } = makeTestRig();\n\n expect(registerSingletonSpy).toHaveBeenCalledWith(uc);\n });\n\n it(\"Gets the singleton\", () => {\n const { uc, appObjects } = makeTestRig();\n\n expect(EmulateStylusUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Can be started and stopped\", () => {\n const { uc } = makeTestRig();\n\n expect(uc.isEmulating).toEqual(false);\n\n uc.startEmulating();\n\n expect(uc.isEmulating).toEqual(true);\n\n uc.stopEmulating();\n\n expect(uc.isEmulating).toEqual(false);\n });\n\n it(\"Steals the input element from the mouse input\", () => {\n const { uc, mouseInput } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(mouseInput, \"clearInputElement\");\n\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalled();\n });\n\n it(\"Only steals once\", () => {\n const { uc, mouseInput } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(mouseInput, \"clearInputElement\");\n\n uc.startEmulating();\n uc.startEmulating();\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Clears the input element from the touch input\", () => {\n const { uc, touchInout } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(touchInout, \"clearInputElement\");\n\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalled();\n });\n\n it(\"Only clears once\", () => {\n const { uc, touchInout } = makeTestRig();\n\n const clearInputElementSpy = jest.spyOn(touchInout, \"clearInputElement\");\n\n uc.startEmulating();\n uc.startEmulating();\n uc.startEmulating();\n\n expect(clearInputElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Returns the mouse input element when stopped\", () => {\n const { uc, mouseInput, inputElement } = makeTestRig();\n\n const setElementSpy = jest.spyOn(mouseInput, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledWith(inputElement);\n });\n\n it(\"Only returns to the mouse once\", () => {\n const { uc, mouseInput } = makeTestRig();\n\n const setElementSpy = jest.spyOn(mouseInput, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Returns the touch input element when stopped\", () => {\n const { uc, touchInout, inputElement } = makeTestRig();\n\n const setElementSpy = jest.spyOn(touchInout, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledWith(inputElement);\n });\n\n it(\"Only returns to the touch once\", () => {\n const { uc, touchInout } = makeTestRig();\n\n const setElementSpy = jest.spyOn(touchInout, \"setEventElement\");\n\n uc.startEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n uc.stopEmulating();\n\n expect(setElementSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"Sends mouse down to the stylus\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n const e = new MouseEvent(\"mousedown\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).toHaveBeenCalledWith(1, true);\n });\n\n it(\"Stops sending mouse down after stopped\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n uc.stopEmulating();\n\n const e = new MouseEvent(\"mousedown\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).not.toHaveBeenCalled();\n });\n\n it(\"Sends mouse up to the stylus\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n const e = new MouseEvent(\"mouseup\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).toHaveBeenCalledWith(1, false);\n });\n\n it(\"Stops sending mouse up after stopped\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.updateButtonState = jest.fn();\n\n uc.startEmulating();\n uc.stopEmulating();\n\n const e = new MouseEvent(\"mouseup\", { button: 1 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.updateButtonState).not.toHaveBeenCalled();\n });\n\n it(\"Rotates the stylus on mouse move\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.transform.worldRotation = Quaternion.Identity();\n\n uc.startEmulating();\n\n const e = new MouseEvent(\"mousemove\", { clientX: 10, clientY: 10 });\n inputElement.dispatchEvent(e);\n\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops rotating the stylus on mouse move\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n stylus.transform.worldRotation = Quaternion.Identity();\n\n uc.startEmulating();\n uc.stopEmulating();\n\n const e = new MouseEvent(\"mousemove\", { clientX: 10, clientY: 10 });\n\n inputElement.dispatchEvent(e);\n inputElement.dispatchEvent(e);\n inputElement.dispatchEvent(e);\n\n expect(stylus.transform.worldRotation).toEqual(Quaternion.Identity());\n });\n\n it(\"Bumps to the left when A is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyA\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toBeLessThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping to the left when A is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyA\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toEqual(0);\n });\n\n it(\"Bumps to the right when D is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyD\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toBeGreaterThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping to the right when D is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyD\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.x).toEqual(0);\n });\n\n it(\"Bumps down when S is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyS\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toBeLessThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping when S is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyS\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toEqual(0);\n });\n\n it(\"Bumps up when W is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyW\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toBeGreaterThan(0);\n expect(stylus.transform.worldRotation).not.toEqual(Quaternion.Identity());\n });\n\n it(\"Stops bumping when W is pressed\", () => {\n const { uc, inputElement, stylus } = makeTestRig();\n\n uc.startEmulating();\n stylus.transform.worldPosition = Vector3.Zero();\n\n uc.stopEmulating();\n\n const downEvent = new KeyboardEvent(\"keydown\", { code: \"KeyW\" });\n inputElement.dispatchEvent(downEvent);\n\n expect(stylus.transform.worldPosition.z).toEqual(0);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BumpTransformScaleAboutPixelPoint.test.js","sourceRoot":"","sources":["../../../../src/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockScenePixelPickUC,\n PixelToSceneRayUC,\n ScenePixelPick,\n} from \"../../Babylon\";\nimport { makeTransform3D } from \"../Entities\";\nimport { makeBumpTransformScaleAboutPixelPointUC } from \"./BumpTransformScaleAboutPixelPoint\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { ParametricLine, ParametricPlane, Vector2, Vector3 } from \"@vived/core\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"AO\");\n const transform = makeTransform3D(ao);\n const bumpUC = makeBumpTransformScaleAboutPixelPointUC(ao);\n\n const mockDispatch = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n mockDispatch.doDispatch = doDispatchMock;\n\n const mockPick = makeMockScenePixelPickUC(appObjects);\n mockPick.scenePixelPick = jest.fn();\n const mockPixelRay = makeMockPixelToSceneRayUC(\n appObjects\n ) as PixelToSceneRayUC;\n mockPixelRay.pixelToSceneRay = (pos: Vector2) => {\n return ParametricLine.FromPointDirection(\n new Vector3(pos.x, pos.y, -2),\n Vector3.Forward()\n );\n };\n\n return {\n bumpUC,\n transform,\n doDispatchMock,\n mockPick,\n appObjects,\n };\n}\n\ndescribe(\"Bumping the transform scale use case\", () => {\n it(\"Bumps the scale smaller with an out\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"OUT\", Vector2.Zero());\n\n expect(transform.worldScale.x).toBeLessThan(1);\n });\n\n it(\"Bumps the scale larger with an in\", () => {\n const { bumpUC, transform } = makeTestRig();\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldScale.x).toBeGreaterThan(1);\n });\n\n it(\"Scales around the origin if there is no pick\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n transform.worldPosition = Vector3.Zero();\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldPosition).toEqual(Vector3.Zero());\n });\n\n it(\"Scales around the pick point\", () => {\n const { bumpUC, mockPick, transform } = makeTestRig();\n\n transform.worldPosition = Vector3.Zero();\n\n const pick: ScenePixelPick = {\n hit: true,\n sceneRay: ParametricLine.Forward(),\n worldPickPoint: new Vector3(1, 2, 3),\n };\n\n (mockPick.scenePixelPick as jest.Mock).mockReturnValue(pick);\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldPosition.x).toBeCloseTo(-0.1);\n expect(transform.worldPosition.y).toBeCloseTo(-0.2);\n expect(transform.worldPosition.z).toBeCloseTo(-0.3);\n });\n\n it(\"Dispatches state change\", () => {\n const { bumpUC, doDispatchMock } = makeTestRig();\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Limits the minimum\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n bumpUC.minScale = 0.9;\n\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"OUT\", Vector2.Zero());\n bumpUC.bump(\"OUT\", Vector2.Zero());\n bumpUC.bump(\"OUT\", Vector2.Zero());\n bumpUC.bump(\"OUT\", Vector2.Zero());\n\n expect(transform.worldScale.x).toEqual(0.9);\n });\n\n it(\"Limits the maximum\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n bumpUC.maxScale = 1.1;\n\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"IN\", Vector2.Zero());\n bumpUC.bump(\"IN\", Vector2.Zero());\n bumpUC.bump(\"IN\", Vector2.Zero());\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldScale.x).toEqual(1.1);\n });\n\n it(\"Does not update if disabled\", () => {\n const { bumpUC, transform } = makeTestRig();\n transform.worldScale = Vector3.One();\n bumpUC.enabled = false;\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldScale).toEqual(Vector3.One());\n });\n\n it(\"Scales around the pick point on the plane if the plane is supplied\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n transform.worldPosition = Vector3.Zero();\n\n const pickPlane = ParametricPlane.FromPointNormal(\n new Vector3(0, 0, -1),\n Vector3.Forward()\n );\n bumpUC.pickPlane = pickPlane;\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldPosition.x).toBeCloseTo(0);\n expect(transform.worldPosition.y).toBeCloseTo(0);\n expect(transform.worldPosition.z).toBeCloseTo(0.1);\n });\n});\n"]}
1
+ {"version":3,"file":"BumpTransformScaleAboutPixelPoint.test.js","sourceRoot":"","sources":["../../../../src/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockScenePixelPickUC,\n PixelToSceneRayUC,\n ScenePixelPick,\n} from \"../../Babylon\";\nimport { makeTransform3D } from \"../Entities\";\nimport { makeBumpTransformScaleAboutPixelPointUC } from \"./BumpTransformScaleAboutPixelPoint\";\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\nimport { ParametricLine, ParametricPlane, Vector2, Vector3 } from \"@vived/core\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"AO\");\n const transform = makeTransform3D(ao);\n const bumpUC = makeBumpTransformScaleAboutPixelPointUC(ao);\n\n const mockDispatch = makeMockDispatchStateChange(appObjects);\n const doDispatchMock = jest.fn();\n mockDispatch.doDispatch = doDispatchMock;\n\n const mockPick = makeMockScenePixelPickUC(appObjects);\n mockPick.scenePixelPick = jest.fn();\n const mockPixelRay = makeMockPixelToSceneRayUC(\n appObjects,\n ) as PixelToSceneRayUC;\n mockPixelRay.pixelToSceneRay = (pos: Vector2) => {\n return ParametricLine.FromPointDirection(\n new Vector3(pos.x, pos.y, -2),\n Vector3.Forward(),\n );\n };\n\n return {\n bumpUC,\n transform,\n doDispatchMock,\n mockPick,\n appObjects,\n };\n}\n\ndescribe(\"Bumping the transform scale use case\", () => {\n it(\"Bumps the scale smaller with an out\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"OUT\", Vector2.Zero());\n\n expect(transform.worldScale.x).toBeLessThan(1);\n });\n\n it(\"Bumps the scale larger with an in\", () => {\n const { bumpUC, transform } = makeTestRig();\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldScale.x).toBeGreaterThan(1);\n });\n\n it(\"Scales around the origin if there is no pick\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n transform.worldPosition = Vector3.Zero();\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldPosition).toEqual(Vector3.Zero());\n });\n\n it(\"Scales around the pick point\", () => {\n const { bumpUC, mockPick, transform } = makeTestRig();\n\n transform.worldPosition = Vector3.Zero();\n\n const pick: ScenePixelPick = {\n hit: true,\n sceneRay: ParametricLine.Forward(),\n worldPickPoint: new Vector3(1, 2, 3),\n };\n\n (mockPick.scenePixelPick as jest.Mock).mockReturnValue(pick);\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldPosition.x).toBeCloseTo(-0.1);\n expect(transform.worldPosition.y).toBeCloseTo(-0.2);\n expect(transform.worldPosition.z).toBeCloseTo(-0.3);\n });\n\n it(\"Dispatches state change\", () => {\n const { bumpUC, doDispatchMock } = makeTestRig();\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n expect(doDispatchMock).toHaveBeenCalled();\n });\n\n it(\"Limits the minimum\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n bumpUC.minScale = 0.9;\n\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"OUT\", Vector2.Zero());\n bumpUC.bump(\"OUT\", Vector2.Zero());\n bumpUC.bump(\"OUT\", Vector2.Zero());\n bumpUC.bump(\"OUT\", Vector2.Zero());\n\n expect(transform.worldScale.x).toEqual(0.9);\n });\n\n it(\"Limits the maximum\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n bumpUC.maxScale = 1.1;\n\n transform.worldScale = Vector3.One();\n bumpUC.bump(\"IN\", Vector2.Zero());\n bumpUC.bump(\"IN\", Vector2.Zero());\n bumpUC.bump(\"IN\", Vector2.Zero());\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldScale.x).toEqual(1.1);\n });\n\n it(\"Does not update if disabled\", () => {\n const { bumpUC, transform } = makeTestRig();\n transform.worldScale = Vector3.One();\n bumpUC.enabled = false;\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldScale).toEqual(Vector3.One());\n });\n\n it(\"Scales around the pick point on the plane if the plane is supplied\", () => {\n const { bumpUC, transform } = makeTestRig();\n\n transform.worldPosition = Vector3.Zero();\n\n const pickPlane = ParametricPlane.FromPointNormal(\n new Vector3(0, 0, -1),\n Vector3.Forward(),\n );\n bumpUC.pickPlane = pickPlane;\n\n bumpUC.bump(\"IN\", Vector2.Zero());\n\n expect(transform.worldPosition.x).toBeCloseTo(0);\n expect(transform.worldPosition.y).toBeCloseTo(0);\n expect(transform.worldPosition.z).toBeCloseTo(0.1);\n });\n});\n"]}