@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
@@ -0,0 +1,790 @@
1
+ # RequestHandler Feature
2
+
3
+ The RequestHandler feature provides a centralized request-response mechanism for handling app-level operations in VIVED applications. It implements a versioned request protocol that allows external systems to interact with the application through well-defined request types and payloads.
4
+
5
+ ## Overview
6
+
7
+ This feature acts as a command dispatcher that routes incoming requests to appropriate handlers (Use Cases) based on the request type. It supports payload versioning to maintain backward compatibility as the API evolves, and provides introspection capabilities to query supported request types and their versions.
8
+
9
+ ## Architecture
10
+
11
+ The RequestHandler feature follows Clean Architecture and Domain-Driven Design principles:
12
+
13
+ - **Entity**: `AppHandlerEntity` - Manages request handler registration and routing
14
+ - **Use Cases**: 10 specialized use cases handle different app-level operations
15
+ - **Factory**: `RequestHandlerFeatureFactory` - Sets up all feature components
16
+ - **Legacy Setup**: `setupAppHandlers()` - Function-based setup for backward compatibility
17
+
18
+ ## Configuration
19
+
20
+ The `RequestHandlerFeatureFactory` accepts an optional configuration object to control feature support and logging behavior. This allows you to disable features that your application doesn't need, reducing memory overhead and initialization time.
21
+
22
+ ### Configuration Options
23
+
24
+ Pass a configuration object when creating the factory:
25
+
26
+ ```typescript
27
+ import {
28
+ makeRequestHandlerFeatureFactory,
29
+ IRequestHandlerConfig,
30
+ } from "@vived/app";
31
+
32
+ const config: IRequestHandlerConfig = {
33
+ verbose: true, // Enable verbose logging
34
+ zSpaceSupported: false, // Disable zSpace-related handlers
35
+ themeSupported: true, // Enable theme color handlers (default)
36
+ babylonSupported: false, // Disable Babylon inspector handler
37
+ };
38
+
39
+ const factory = makeRequestHandlerFeatureFactory(appObjects, config);
40
+ ```
41
+
42
+ ### Available Configuration Options
43
+
44
+ | Property | Type | Default | Controls | Related Use Cases |
45
+ | ------------------ | --------- | ------- | -------------------------- | ------------------------- |
46
+ | `verbose` | `boolean` | `false` | Request logging to console | All requests |
47
+ | `zSpaceSupported` | `boolean` | `true` | zSpace XR functionality | START_ZSPACE, STOP_ZSPACE |
48
+ | `themeSupported` | `boolean` | `true` | Theme color management | SET_THEME_COLORS |
49
+ | `babylonSupported` | `boolean` | `true` | Babylon.js inspector | SHOW_BABYLON_INSPECTOR |
50
+
51
+ ### Verbose Logging
52
+
53
+ When `verbose` is enabled, all incoming requests are logged to the console:
54
+
55
+ ```typescript
56
+ const factory = makeRequestHandlerFeatureFactory(appObjects, { verbose: true });
57
+
58
+ // Now all requests will be logged
59
+ const request: Request = {
60
+ type: "START_APP",
61
+ version: 2,
62
+ payload: { container: document.getElementById("app") },
63
+ };
64
+ appHandler.handler(request);
65
+ // Console output: [AppHandler] Request received: { type: "START_APP", version: 2, payload: {...} }
66
+ ```
67
+
68
+ **When to Enable**:
69
+
70
+ - Debugging request flow issues
71
+ - Monitoring which requests are being sent
72
+ - Troubleshooting version mismatches
73
+ - Development and testing environments
74
+
75
+ **Note**: Disable verbose logging in production to avoid console clutter.
76
+
77
+ ### Feature Support Flags
78
+
79
+ Use configuration flags to disable optional features:
80
+
81
+ ```typescript
82
+ // Minimal configuration - only required features
83
+ const minimalConfig = {
84
+ zSpaceSupported: false,
85
+ themeSupported: false,
86
+ babylonSupported: false,
87
+ };
88
+
89
+ // Development configuration - all features with logging
90
+ const devConfig = {
91
+ verbose: true,
92
+ zSpaceSupported: true,
93
+ themeSupported: true,
94
+ babylonSupported: true,
95
+ };
96
+
97
+ // Production configuration - no debugging features
98
+ const prodConfig = {
99
+ verbose: false,
100
+ zSpaceSupported: true,
101
+ themeSupported: true,
102
+ babylonSupported: false,
103
+ };
104
+ ```
105
+
106
+ **When to Disable Features**:
107
+
108
+ - Your application doesn't use zSpace devices → set `zSpaceSupported: false`
109
+ - Your application has fixed styling → set `themeSupported: false`
110
+ - You're not using Babylon.js or don't need debugging tools → set `babylonSupported: false`
111
+
112
+ ## Sending Requests
113
+
114
+ Requests are sent using the standard VIVED core `Request` interface:
115
+
116
+ ```typescript
117
+ import { Request } from "@vived/core";
118
+
119
+ const request: Request = {
120
+ type: "REQUEST_TYPE",
121
+ version: 1,
122
+ payload: {
123
+ // Request-specific data
124
+ },
125
+ };
126
+
127
+ appHandler.handler(request);
128
+ ```
129
+
130
+ ## Supported Request Types
131
+
132
+ ### 1. START_APP
133
+
134
+ Starts the application rendering in a specified HTML container.
135
+
136
+ - **Request Type**: `START_APP`
137
+ - **Current Version**: 2
138
+ - **Payload**:
139
+ ```typescript
140
+ {
141
+ container: HTMLElement;
142
+ }
143
+ ```
144
+ - **Example**:
145
+ ```typescript
146
+ const request: Request = {
147
+ type: "START_APP",
148
+ version: 2,
149
+ payload: {
150
+ container: document.getElementById("app-container"),
151
+ },
152
+ };
153
+ appHandler.handler(request);
154
+ ```
155
+
156
+ ### 2. STOP_APP
157
+
158
+ Stops the application rendering.
159
+
160
+ - **Request Type**: `STOP_APP`
161
+ - **Current Version**: 1
162
+ - **Payload**: None
163
+ - **Example**:
164
+ ```typescript
165
+ const request: Request = {
166
+ type: "STOP_APP",
167
+ version: 1,
168
+ };
169
+ appHandler.handler(request);
170
+ ```
171
+
172
+ ### 3. DISPOSE_APP
173
+
174
+ Disposes of the application and cleans up resources.
175
+
176
+ - **Request Type**: `DISPOSE_APP`
177
+ - **Current Version**: 1
178
+ - **Payload**: None
179
+ - **Example**:
180
+ ```typescript
181
+ const request: Request = {
182
+ type: "DISPOSE_APP",
183
+ version: 1,
184
+ };
185
+ appHandler.handler(request);
186
+ ```
187
+
188
+ ### 4. SET_APP_STATE
189
+
190
+ Sets the application state, including slide navigation and state machine configuration.
191
+
192
+ - **Request Type**: `SET_APP_STATE`
193
+ - **Current Version**: 3
194
+ - **Payload**:
195
+ ```typescript
196
+ {
197
+ finalState?: SerializedStates; // State machine configuration
198
+ hasNextSlide: boolean; // Whether there's a next slide
199
+ hasPreviousSlide: boolean; // Whether there's a previous slide
200
+ hideNavigation: boolean; // Whether to hide slide navigation
201
+ duration?: number; // Transition duration in ms
202
+ }
203
+ ```
204
+ - **Example**:
205
+ ```typescript
206
+ const request: Request = {
207
+ type: "SET_APP_STATE",
208
+ version: 3,
209
+ payload: {
210
+ hasNextSlide: true,
211
+ hasPreviousSlide: false,
212
+ hideNavigation: false,
213
+ duration: 500,
214
+ },
215
+ };
216
+ appHandler.handler(request);
217
+ ```
218
+
219
+ ### 5. SET_IS_AUTHORING
220
+
221
+ Sets whether the application is in authoring mode.
222
+
223
+ - **Request Type**: `SET_IS_AUTHORING`
224
+ - **Current Version**: 1
225
+ - **Payload**:
226
+ ```typescript
227
+ {
228
+ isAuthoring: boolean;
229
+ }
230
+ ```
231
+ - **Example**:
232
+ ```typescript
233
+ const request: Request = {
234
+ type: "SET_IS_AUTHORING",
235
+ version: 1,
236
+ payload: {
237
+ isAuthoring: true,
238
+ },
239
+ };
240
+ appHandler.handler(request);
241
+ ```
242
+
243
+ ### 6. ENABLE_FEATURE
244
+
245
+ Enables a feature flag in the application.
246
+
247
+ - **Request Type**: `ENABLE_FEATURE`
248
+ - **Current Version**: 1
249
+ - **Payload**:
250
+ ```typescript
251
+ {
252
+ featureFlag: string;
253
+ }
254
+ ```
255
+ - **Example**:
256
+ ```typescript
257
+ const request: Request = {
258
+ type: "ENABLE_FEATURE",
259
+ version: 1,
260
+ payload: {
261
+ featureFlag: "NEW_FEATURE_NAME",
262
+ },
263
+ };
264
+ appHandler.handler(request);
265
+ ```
266
+
267
+ ### 7. SET_THEME_COLORS
268
+
269
+ Sets the theme colors for the application.
270
+
271
+ - **Request Type**: `SET_THEME_COLORS`
272
+ - **Current Version**: 1
273
+ - **Payload**:
274
+ ```typescript
275
+ {
276
+ colors: {
277
+ [colorType: string]: string; // Hex color values
278
+ }
279
+ }
280
+ ```
281
+ - **Example**:
282
+ ```typescript
283
+ const request: Request = {
284
+ type: "SET_THEME_COLORS",
285
+ version: 1,
286
+ payload: {
287
+ colors: {
288
+ primary: "#FF5733",
289
+ secondary: "#33C3FF",
290
+ },
291
+ },
292
+ };
293
+ appHandler.handler(request);
294
+ ```
295
+
296
+ ### 8. SHOW_BABYLON_INSPECTOR
297
+
298
+ Shows or hides the Babylon.js scene inspector for debugging.
299
+
300
+ - **Request Type**: `SHOW_BABYLON_INSPECTOR`
301
+ - **Current Version**: 1
302
+ - **Payload**:
303
+ ```typescript
304
+ {
305
+ showBabylonInspector: boolean;
306
+ }
307
+ ```
308
+ - **Example**:
309
+ ```typescript
310
+ const request: Request = {
311
+ type: "SHOW_BABYLON_INSPECTOR",
312
+ version: 1,
313
+ payload: {
314
+ showBabylonInspector: true,
315
+ },
316
+ };
317
+ appHandler.handler(request);
318
+ ```
319
+
320
+ ### 9. START_ZSPACE
321
+
322
+ Starts zSpace XR functionality.
323
+
324
+ - **Request Type**: `START_ZSPACE`
325
+ - **Current Version**: 3
326
+ - **Payload**:
327
+ ```typescript
328
+ {
329
+ session: XRSession | null;
330
+ emulate: boolean;
331
+ }
332
+ ```
333
+ - **Example**:
334
+ ```typescript
335
+ const request: Request = {
336
+ type: "START_ZSPACE",
337
+ version: 3,
338
+ payload: {
339
+ session: xrSession,
340
+ emulate: false,
341
+ },
342
+ };
343
+ appHandler.handler(request);
344
+ ```
345
+
346
+ ### 10. STOP_ZSPACE
347
+
348
+ Stops zSpace XR functionality.
349
+
350
+ - **Request Type**: `STOP_ZSPACE`
351
+ - **Current Version**: 1
352
+ - **Payload**: None
353
+ - **Example**:
354
+ ```typescript
355
+ const request: Request = {
356
+ type: "STOP_ZSPACE",
357
+ version: 1,
358
+ };
359
+ appHandler.handler(request);
360
+ ```
361
+
362
+ ## Introspection Requests
363
+
364
+ The RequestHandler provides two special introspection requests that allow external systems to discover supported request types and versions.
365
+
366
+ ### GET_APP_PAYLOAD_VERSION
367
+
368
+ Retrieves the current payload version for all registered request handlers.
369
+
370
+ - **Request Type**: `GET_APP_PAYLOAD_VERSION`
371
+ - **Version**: 2
372
+ - **Payload**:
373
+ ```typescript
374
+ {
375
+ callback: (versionMap: Map<string, number>) => void;
376
+ }
377
+ ```
378
+ - **Example**:
379
+ ```typescript
380
+ const request: Request = {
381
+ type: "GET_APP_PAYLOAD_VERSION",
382
+ version: 2,
383
+ payload: {
384
+ callback: (versionMap: Map<string, number>) => {
385
+ console.log("Supported request types:", versionMap);
386
+ // Map will contain entries like:
387
+ // "START_APP" => 2
388
+ // "STOP_APP" => 1
389
+ // etc.
390
+ },
391
+ },
392
+ };
393
+ appHandler.handler(request);
394
+ ```
395
+
396
+ ### GET_APP_HANDLER_VERSION
397
+
398
+ Retrieves the current version of the AppHandler system itself.
399
+
400
+ - **Request Type**: `GET_APP_HANDLER_VERSION`
401
+ - **Version**: 1
402
+ - **Payload**:
403
+ ```typescript
404
+ {
405
+ callback: (version: number) => void;
406
+ }
407
+ ```
408
+ - **Example**:
409
+ ```typescript
410
+ const request: Request = {
411
+ type: "GET_APP_HANDLER_VERSION",
412
+ version: 1,
413
+ payload: {
414
+ callback: (version: number) => {
415
+ console.log("AppHandler version:", version);
416
+ },
417
+ },
418
+ };
419
+ appHandler.handler(request);
420
+ ```
421
+
422
+ ## Creating Custom Request Handlers
423
+
424
+ You can extend the RequestHandler feature with custom request handlers by implementing the `RequestHandler` interface and registering it with the `AppHandlerEntity`.
425
+
426
+ ### Step 1: Implement RequestHandler Interface
427
+
428
+ ```typescript
429
+ import { AppObject, AppObjectUC } from "@vived/core";
430
+ import {
431
+ AppHandlerEntity,
432
+ RequestHandler,
433
+ UnsupportedRequestVersion,
434
+ UnableToParsePayload,
435
+ } from "@vived/app";
436
+
437
+ export abstract class MyCustomUC extends AppObjectUC implements RequestHandler {
438
+ static readonly type = "MyCustomUC";
439
+ readonly requestType = "MY_CUSTOM_REQUEST";
440
+ readonly payloadVersion = 1;
441
+
442
+ abstract action: (data: MyPayload) => void;
443
+ abstract handleRequest: (version: number, payload?: unknown) => void;
444
+ }
445
+
446
+ export function makeMyCustomUC(appObject: AppObject): MyCustomUC {
447
+ return new MyCustomUCImp(appObject);
448
+ }
449
+
450
+ class MyCustomUCImp extends MyCustomUC {
451
+ action = (data: MyPayload) => {
452
+ // Implement your custom logic here
453
+ console.log("Custom action executed:", data);
454
+ };
455
+
456
+ handleRequest = (version: number, payload: unknown) => {
457
+ if (version === this.payloadVersion) {
458
+ const data = this.castPayload(payload);
459
+ this.action(data);
460
+ } else {
461
+ throw new UnsupportedRequestVersion(this.requestType, version);
462
+ }
463
+ };
464
+
465
+ private castPayload(payload: unknown): MyPayload {
466
+ const castPayload = payload as MyPayload;
467
+ if (castPayload.myField === undefined) {
468
+ throw new UnableToParsePayload(
469
+ this.requestType,
470
+ this.payloadVersion,
471
+ JSON.stringify(payload),
472
+ );
473
+ }
474
+ return castPayload;
475
+ }
476
+
477
+ constructor(appObject: AppObject) {
478
+ super(appObject, MyCustomUC.type);
479
+
480
+ // Register this handler with AppHandlerEntity
481
+ const handler = appObject.getComponent<AppHandlerEntity>(
482
+ AppHandlerEntity.type,
483
+ );
484
+ if (!handler) {
485
+ this.warn(
486
+ "MyCustomUC requires AppHandlerEntity to be added to the app object first",
487
+ );
488
+ return;
489
+ }
490
+
491
+ handler.registerRequestHandler(this);
492
+ }
493
+ }
494
+
495
+ type MyPayload = {
496
+ myField: string;
497
+ };
498
+ ```
499
+
500
+ ### Step 2: Register Your Custom Handler
501
+
502
+ ```typescript
503
+ import { makeMyCustomUC } from "./MyCustomUC";
504
+
505
+ // After setting up RequestHandler feature
506
+ const handlerAO = appObjectRepo.getOrCreate("AppHandlers");
507
+ makeMyCustomUC(handlerAO);
508
+ ```
509
+
510
+ ### Step 3: Use Your Custom Handler
511
+
512
+ ```typescript
513
+ const request: Request = {
514
+ type: "MY_CUSTOM_REQUEST",
515
+ version: 1,
516
+ payload: {
517
+ myField: "custom data",
518
+ },
519
+ };
520
+ appHandler.handler(request);
521
+ ```
522
+
523
+ ## Overriding Default Use Case Behavior
524
+
525
+ If you need to customize the behavior of an existing request handler without creating a completely new one, you can inject a custom `action` function. All Use Cases expose their `action` property, which can be overridden after instantiation.
526
+
527
+ ### Example: Customizing START_APP Behavior
528
+
529
+ ```typescript
530
+ import { setupAppHandlers, StartAppBaseUC } from "@vived/app";
531
+ import { makeAppObjectRepo } from "@vived/core";
532
+
533
+ const appObjectRepo = makeAppObjectRepo();
534
+ const appHandler = setupAppHandlers(appObjectRepo);
535
+
536
+ // Get the existing StartAppUC
537
+ const handlerAO = appObjectRepo.get("AppHandlers");
538
+ const startAppUC = handlerAO?.getComponent<StartAppBaseUC>(StartAppBaseUC.type);
539
+
540
+ if (startAppUC) {
541
+ // Override the default action with custom behavior
542
+ startAppUC.action = (container: HTMLElement) => {
543
+ console.log("Custom start logic before rendering");
544
+
545
+ // Add your custom initialization here
546
+ myCustomSetup();
547
+
548
+ // Call the original behavior if needed, or replace entirely
549
+ const appRenderingUC = AppRenderingUC.get(appObjectRepo);
550
+ appRenderingUC?.startRendering(container);
551
+
552
+ console.log("Custom start logic after rendering");
553
+ };
554
+ }
555
+ ```
556
+
557
+ ### Example: Customizing DISPOSE_APP Behavior
558
+
559
+ ```typescript
560
+ import { DisposeAppBaseUC } from "@vived/app";
561
+
562
+ // Get the existing DisposeAppUC
563
+ const disposeAppUC = handlerAO?.getComponent<DisposeAppBaseUC>(
564
+ DisposeAppBaseUC.type,
565
+ );
566
+
567
+ if (disposeAppUC) {
568
+ // Inject custom disposal logic
569
+ disposeAppUC.action = () => {
570
+ console.log("Performing custom cleanup");
571
+
572
+ // Your custom cleanup logic
573
+ cleanupCustomResources();
574
+ removeEventListeners();
575
+
576
+ console.log("Cleanup complete");
577
+ };
578
+ }
579
+ ```
580
+
581
+ ### Example: Augmenting SET_APP_STATE Behavior
582
+
583
+ ```typescript
584
+ import { SetAppStateBaseUC, SetAppStateAction } from "@vived/app";
585
+
586
+ // Get the existing SetAppStateUC
587
+ const setAppStateUC = handlerAO?.getComponent<SetAppStateBaseUC>(
588
+ SetAppStateBaseUC.type,
589
+ );
590
+
591
+ if (setAppStateUC) {
592
+ // Store the original action
593
+ const originalAction = setAppStateUC.action;
594
+
595
+ // Create augmented action that calls original and adds custom logic
596
+ setAppStateUC.action = (data) => {
597
+ console.log("Before state change:", data);
598
+
599
+ // Call original behavior
600
+ originalAction(data);
601
+
602
+ // Add custom logic after
603
+ notifyStateChangeListeners(data);
604
+ console.log("After state change complete");
605
+ };
606
+ }
607
+ ```
608
+
609
+ ### When to Override vs Create New Handler
610
+
611
+ **Override the action function when:**
612
+
613
+ - You want to modify or extend existing request handler behavior
614
+ - You need to add logging, metrics, or side effects
615
+ - You want to wrap the default behavior with pre/post processing
616
+ - You're working within the same application context
617
+
618
+ **Create a new request handler when:**
619
+
620
+ - You need a completely different request type
621
+ - You require different payload structure or versioning
622
+ - You're adding new functionality rather than modifying existing
623
+
624
+ ### Important Notes
625
+
626
+ 1. **Override After Setup**: Always override the action after the RequestHandler feature has been fully initialized
627
+ 2. **Type Safety**: Use the proper types (e.g., `SetAppStateAction`) when defining your custom action
628
+ 3. **Original Behavior**: Store a reference to the original action if you want to call it as part of your custom logic
629
+ 4. **Validation**: The `handleRequest` method still performs version checking and payload validation before calling your custom action
630
+
631
+ ## Error Handling
632
+
633
+ The RequestHandler provides two main error types:
634
+
635
+ ### UnsupportedRequestVersion
636
+
637
+ Thrown when a request is sent with an unsupported version number.
638
+
639
+ ```typescript
640
+ try {
641
+ appHandler.handler(request);
642
+ } catch (error) {
643
+ if (error instanceof UnsupportedRequestVersion) {
644
+ console.error("Version not supported:", error.message);
645
+ }
646
+ }
647
+ ```
648
+
649
+ ### UnableToParsePayload
650
+
651
+ Thrown when the payload cannot be parsed or is missing required fields.
652
+
653
+ ```typescript
654
+ try {
655
+ appHandler.handler(request);
656
+ } catch (error) {
657
+ if (error instanceof UnableToParsePayload) {
658
+ console.error("Invalid payload:", error.message);
659
+ }
660
+ }
661
+ ```
662
+
663
+ ## Best Practices
664
+
665
+ 1. **Version Compatibility**: Always check supported versions using `GET_APP_PAYLOAD_VERSION` before sending requests to ensure compatibility.
666
+
667
+ 2. **Error Handling**: Wrap request handler calls in try-catch blocks to gracefully handle unsupported versions or invalid payloads.
668
+
669
+ 3. **Registration Order**: Ensure the `AppHandlerEntity` is created before registering any request handlers.
670
+
671
+ 4. **Single Responsibility**: Each request handler should handle one specific operation. Create separate handlers for different operations.
672
+
673
+ 5. **Payload Validation**: Always validate payloads thoroughly in the `castPayload` method to ensure type safety.
674
+
675
+ 6. **Versioning**: When updating request payloads, increment the version number and maintain backward compatibility where possible.
676
+
677
+ 7. **Action Injection**: To customize default behavior, inject a custom `action` function rather than creating an entirely new request handler. This maintains the existing request routing and validation logic.
678
+
679
+ 8. **Logging**: The system automatically logs warnings for:
680
+ - Unregistered request types
681
+ - Multiple handlers registered for the same type
682
+ - Handler execution errors
683
+
684
+ ## Dependencies
685
+
686
+ The RequestHandler feature depends on:
687
+
688
+ - `@vived/core`: Core application framework
689
+ - `BaseApp`: For app state and rendering control
690
+ - `StateMachine`: For state management (SET_APP_STATE)
691
+ - `UndoRedo`: For undo/redo stack management (SET_APP_STATE)
692
+ - `FeatureFlags`: For feature flag management (ENABLE_FEATURE)
693
+ - `ThemeColors`: For theme color management (SET_THEME_COLORS)
694
+ - `Babylon`: For scene inspector (SHOW_BABYLON_INSPECTOR)
695
+ - `XR`: For XR rendering (START_ZSPACE)
696
+ - `zSpace`: For zSpace device support (START_ZSPACE, STOP_ZSPACE)
697
+ - `Stylus`: For stylus emulation (START_ZSPACE)
698
+
699
+ ## Testing
700
+
701
+ The feature includes comprehensive unit tests. To run tests:
702
+
703
+ ```bash
704
+ npm run test:once RequestHandler
705
+ ```
706
+
707
+ Test coverage includes:
708
+
709
+ - Request routing and handler execution
710
+ - Version validation
711
+ - Payload parsing and validation
712
+ - Error handling
713
+ - Multiple handler registration warnings
714
+ - Introspection request handling
715
+
716
+ ## Example: Complete Usage
717
+
718
+ ```typescript
719
+ import { makeAppObjectRepo } from "@vived/core";
720
+ import { setupAppHandlers } from "@vived/app";
721
+
722
+ // Setup
723
+ const appObjectRepo = makeAppObjectRepo();
724
+ const appHandler = setupAppHandlers(appObjectRepo);
725
+
726
+ // Query supported versions
727
+ const versionRequest = {
728
+ type: "GET_APP_PAYLOAD_VERSION",
729
+ version: 2,
730
+ payload: {
731
+ callback: (versionMap: Map<string, number>) => {
732
+ console.log("Supported requests:", versionMap);
733
+ },
734
+ },
735
+ };
736
+ appHandler.handler(versionRequest);
737
+
738
+ // Start the app
739
+ const startRequest = {
740
+ type: "START_APP",
741
+ version: 2,
742
+ payload: {
743
+ container: document.getElementById("app-container"),
744
+ },
745
+ };
746
+ appHandler.handler(startRequest);
747
+
748
+ // Enable a feature
749
+ const featureRequest = {
750
+ type: "ENABLE_FEATURE",
751
+ version: 1,
752
+ payload: {
753
+ featureFlag: "ADVANCED_MODE",
754
+ },
755
+ };
756
+ appHandler.handler(featureRequest);
757
+
758
+ // Set app state
759
+ const stateRequest = {
760
+ type: "SET_APP_STATE",
761
+ version: 3,
762
+ payload: {
763
+ hasNextSlide: true,
764
+ hasPreviousSlide: false,
765
+ hideNavigation: false,
766
+ duration: 300,
767
+ },
768
+ };
769
+ appHandler.handler(stateRequest);
770
+
771
+ // Stop the app
772
+ const stopRequest = {
773
+ type: "STOP_APP",
774
+ version: 1,
775
+ };
776
+ appHandler.handler(stopRequest);
777
+ ```
778
+
779
+ ## Migration Notes
780
+
781
+ When upgrading to newer versions of the RequestHandler feature:
782
+
783
+ 1. Use the introspection requests to check supported versions
784
+ 2. Update your request payloads to match the latest version
785
+ 3. Test thoroughly with the new version before deploying
786
+ 4. Maintain fallback logic for older versions if needed
787
+
788
+ ## Support
789
+
790
+ For questions or issues with the RequestHandler feature, please refer to the VIVED documentation or contact the development team.