@vived/app 5.3.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/dist/cjs/Babylon/Adapters/showBabylonInspectorAdapter.test.js +3 -0
  2. package/dist/cjs/Babylon/Adapters/showBabylonInspectorAdapter.test.js.map +1 -1
  3. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  4. package/dist/cjs/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
  5. package/dist/cjs/Babylon/PM/ShowBabylonInspectorPM.js +9 -6
  6. package/dist/cjs/Babylon/PM/ShowBabylonInspectorPM.js.map +1 -1
  7. package/dist/cjs/BaseApp/PM/IsAuthoringPM.js +6 -9
  8. package/dist/cjs/BaseApp/PM/IsAuthoringPM.js.map +1 -1
  9. package/dist/cjs/BaseApp/PM/IsAuthoringPM.test.js +2 -6
  10. package/dist/cjs/BaseApp/PM/IsAuthoringPM.test.js.map +1 -1
  11. package/dist/cjs/BaseApp/PM/IsReviewingPM.js +6 -9
  12. package/dist/cjs/BaseApp/PM/IsReviewingPM.js.map +1 -1
  13. package/dist/cjs/BaseApp/PM/IsReviewingPM.test.js +2 -6
  14. package/dist/cjs/BaseApp/PM/IsReviewingPM.test.js.map +1 -1
  15. package/dist/cjs/BaseApp/PM/SlideTextPM.js +6 -5
  16. package/dist/cjs/BaseApp/PM/SlideTextPM.js.map +1 -1
  17. package/dist/cjs/BaseApp/PM/SlideTextPM.test.js +2 -6
  18. package/dist/cjs/BaseApp/PM/SlideTextPM.test.js.map +1 -1
  19. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js +1 -0
  20. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  21. package/dist/cjs/BaseApp/UC/SerializeBaseAppState.js +1 -1
  22. package/dist/cjs/BaseApp/UC/SerializeBaseAppState.js.map +1 -1
  23. package/dist/cjs/Callouts/Factories/calloutFactory.test.js +6 -0
  24. package/dist/cjs/Callouts/Factories/calloutFactory.test.js.map +1 -1
  25. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js +8 -9
  26. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  27. package/dist/cjs/Callouts/UC/SerializeCallouts.js +1 -1
  28. package/dist/cjs/Callouts/UC/SerializeCallouts.js.map +1 -1
  29. package/dist/cjs/Callouts/UC/TryAddCallout.test.js.map +1 -1
  30. package/dist/cjs/Challenge/UCs/SerializeChallenge.js +1 -1
  31. package/dist/cjs/Challenge/UCs/SerializeChallenge.js.map +1 -1
  32. package/dist/cjs/Challenge/UCs/ShowChallengeHelpUC.test.js +3 -2
  33. package/dist/cjs/Challenge/UCs/ShowChallengeHelpUC.test.js.map +1 -1
  34. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.js +6 -5
  35. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.js.map +1 -1
  36. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.test.js +2 -6
  37. package/dist/cjs/ChannelModel/PMs/ActiveModelPM.test.js.map +1 -1
  38. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.js +5 -3
  39. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.js.map +1 -1
  40. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.test.js +1 -0
  41. package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.test.js.map +1 -1
  42. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.js +3 -7
  43. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.js.map +1 -1
  44. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.test.js +1 -0
  45. package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.test.js.map +1 -1
  46. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.js +3 -9
  47. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.js.map +1 -1
  48. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js +1 -0
  49. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js.map +1 -1
  50. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.js +3 -7
  51. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.js.map +1 -1
  52. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js +1 -0
  53. package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js.map +1 -1
  54. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js +3 -9
  55. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js.map +1 -1
  56. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js +1 -0
  57. package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js.map +1 -1
  58. package/dist/cjs/ChannelModel/UC/LoadChannelModelUC.test.js +6 -6
  59. package/dist/cjs/ChannelModel/UC/LoadChannelModelUC.test.js.map +1 -1
  60. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js +1 -1
  61. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  62. package/dist/cjs/ChannelModel/UC/SerializeActiveModel.js +1 -1
  63. package/dist/cjs/ChannelModel/UC/SerializeActiveModel.js.map +1 -1
  64. package/dist/cjs/Dispatcher/Entities/AppDispatcher.js +7 -0
  65. package/dist/cjs/Dispatcher/Entities/AppDispatcher.js.map +1 -1
  66. package/dist/cjs/Dispatcher/Entities/AppDispatcher.test.js +31 -0
  67. package/dist/cjs/Dispatcher/Entities/AppDispatcher.test.js.map +1 -1
  68. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js +3 -1
  69. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
  70. package/dist/cjs/Dispatcher/Mocks/GetAssetBlobURLUCMock.js +1 -1
  71. package/dist/cjs/Dispatcher/Mocks/GetAssetBlobURLUCMock.js.map +1 -1
  72. package/dist/cjs/Dispatcher/Mocks/GetLinkedAssetsUCMock.js +1 -1
  73. package/dist/cjs/Dispatcher/Mocks/GetLinkedAssetsUCMock.js.map +1 -1
  74. package/dist/cjs/Dispatcher/Mocks/MockDispatcher.js +2 -2
  75. package/dist/cjs/Dispatcher/Mocks/MockDispatcher.js.map +1 -1
  76. package/dist/cjs/Dispatcher/Mocks/MockGetAssetFolderURL.js +1 -1
  77. package/dist/cjs/Dispatcher/Mocks/MockGetAssetFolderURL.js.map +1 -1
  78. package/dist/cjs/Dispatcher/Mocks/MockShowAlert.js +1 -1
  79. package/dist/cjs/Dispatcher/Mocks/MockShowAlert.js.map +1 -1
  80. package/dist/cjs/Dispatcher/Mocks/MockShowConfirm.js +1 -1
  81. package/dist/cjs/Dispatcher/Mocks/MockShowConfirm.js.map +1 -1
  82. package/dist/cjs/Dispatcher/Mocks/MockShowMarkdown.js +1 -1
  83. package/dist/cjs/Dispatcher/Mocks/MockShowMarkdown.js.map +1 -1
  84. package/dist/cjs/Dispatcher/Mocks/MockShowSpinner.js +1 -1
  85. package/dist/cjs/Dispatcher/Mocks/MockShowSpinner.js.map +1 -1
  86. package/dist/cjs/Dispatcher/Mocks/MockSubmitResult.js +5 -5
  87. package/dist/cjs/Dispatcher/Mocks/MockSubmitResult.js.map +1 -1
  88. package/dist/cjs/Dispatcher/Mocks/ShowSelectModelUCMock.js +1 -1
  89. package/dist/cjs/Dispatcher/Mocks/ShowSelectModelUCMock.js.map +1 -1
  90. package/dist/cjs/Dispatcher/UC/AppIsReadyUC.test.js +3 -1
  91. package/dist/cjs/Dispatcher/UC/AppIsReadyUC.test.js.map +1 -1
  92. package/dist/cjs/Dispatcher/UC/DispatchStartZSpaceUC.test.js +2 -1
  93. package/dist/cjs/Dispatcher/UC/DispatchStartZSpaceUC.test.js.map +1 -1
  94. package/dist/cjs/Dispatcher/UC/DispatchStateChangeUC.test.js +1 -0
  95. package/dist/cjs/Dispatcher/UC/DispatchStateChangeUC.test.js.map +1 -1
  96. package/dist/cjs/Dispatcher/UC/DispatchStopZSpaceUC.test.js +2 -1
  97. package/dist/cjs/Dispatcher/UC/DispatchStopZSpaceUC.test.js.map +1 -1
  98. package/dist/cjs/Dispatcher/UC/GetAssetBlobURLUC.test.js +3 -1
  99. package/dist/cjs/Dispatcher/UC/GetAssetBlobURLUC.test.js.map +1 -1
  100. package/dist/cjs/Dispatcher/UC/GetAssetFolderURLUC.test.js +3 -1
  101. package/dist/cjs/Dispatcher/UC/GetAssetFolderURLUC.test.js.map +1 -1
  102. package/dist/cjs/Dispatcher/UC/GetAssetMetaUC.test.js +3 -1
  103. package/dist/cjs/Dispatcher/UC/GetAssetMetaUC.test.js.map +1 -1
  104. package/dist/cjs/Dispatcher/UC/GetAssetsForOwnerUC.test.js +3 -1
  105. package/dist/cjs/Dispatcher/UC/GetAssetsForOwnerUC.test.js.map +1 -1
  106. package/dist/cjs/Dispatcher/UC/GetLinkedAssetsUC.test.js +3 -1
  107. package/dist/cjs/Dispatcher/UC/GetLinkedAssetsUC.test.js.map +1 -1
  108. package/dist/cjs/Dispatcher/UC/GoToNextStateUC.test.js +3 -1
  109. package/dist/cjs/Dispatcher/UC/GoToNextStateUC.test.js.map +1 -1
  110. package/dist/cjs/Dispatcher/UC/GoToPreviousStateUC.test.js +3 -1
  111. package/dist/cjs/Dispatcher/UC/GoToPreviousStateUC.test.js.map +1 -1
  112. package/dist/cjs/Dispatcher/UC/HasNextStateUC.test.js +3 -1
  113. package/dist/cjs/Dispatcher/UC/HasNextStateUC.test.js.map +1 -1
  114. package/dist/cjs/Dispatcher/UC/HasPreviousStateUC.test.js +3 -1
  115. package/dist/cjs/Dispatcher/UC/HasPreviousStateUC.test.js.map +1 -1
  116. package/dist/cjs/Dispatcher/UC/IsAssetFetchedUC.test.js +3 -1
  117. package/dist/cjs/Dispatcher/UC/IsAssetFetchedUC.test.js.map +1 -1
  118. package/dist/cjs/Dispatcher/UC/IsZSpaceAvailableUC.test.js +3 -1
  119. package/dist/cjs/Dispatcher/UC/IsZSpaceAvailableUC.test.js.map +1 -1
  120. package/dist/cjs/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js +3 -1
  121. package/dist/cjs/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js.map +1 -1
  122. package/dist/cjs/Dispatcher/UC/RestoreCurrentStateUC.test.js +3 -1
  123. package/dist/cjs/Dispatcher/UC/RestoreCurrentStateUC.test.js.map +1 -1
  124. package/dist/cjs/Dispatcher/UC/StateIsCompleteUC.test.js +3 -1
  125. package/dist/cjs/Dispatcher/UC/StateIsCompleteUC.test.js.map +1 -1
  126. package/dist/cjs/Dispatcher/UC/SubmitActivityAssetUC.test.js +5 -3
  127. package/dist/cjs/Dispatcher/UC/SubmitActivityAssetUC.test.js.map +1 -1
  128. package/dist/cjs/Dispatcher/UC/SubmitResultResultUC.test.js +11 -5
  129. package/dist/cjs/Dispatcher/UC/SubmitResultResultUC.test.js.map +1 -1
  130. package/dist/cjs/Enablement/PM/EnabledStatePM.js +5 -9
  131. package/dist/cjs/Enablement/PM/EnabledStatePM.js.map +1 -1
  132. package/dist/cjs/Enablement/PM/EnabledStatePM.test.js +1 -0
  133. package/dist/cjs/Enablement/PM/EnabledStatePM.test.js.map +1 -1
  134. package/dist/cjs/Environment/UCs/SerializeEnvironment.js +1 -1
  135. package/dist/cjs/Environment/UCs/SerializeEnvironment.js.map +1 -1
  136. package/dist/cjs/Hideable/Factories/setupHideable.test.js +6 -0
  137. package/dist/cjs/Hideable/Factories/setupHideable.test.js.map +1 -1
  138. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js +1 -1
  139. package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
  140. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  141. package/dist/cjs/HoverLabel/UseCases/SerializeAllowHoverLabel.js +1 -1
  142. package/dist/cjs/HoverLabel/UseCases/SerializeAllowHoverLabel.js.map +1 -1
  143. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  144. package/dist/cjs/Label/Controller/submitCustomLabel.test.js +3 -0
  145. package/dist/cjs/Label/Controller/submitCustomLabel.test.js.map +1 -1
  146. package/dist/cjs/Label/Controller/updateCustomLabel.test.js +3 -0
  147. package/dist/cjs/Label/Controller/updateCustomLabel.test.js.map +1 -1
  148. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js +0 -7
  149. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  150. package/dist/cjs/Label/UC/SerializeCustomLabels.js +1 -1
  151. package/dist/cjs/Label/UC/SerializeCustomLabels.js.map +1 -1
  152. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js +0 -7
  153. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  154. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  155. package/dist/cjs/LabelDrop/UseCases/SerializeLabelDrop.js +1 -1
  156. package/dist/cjs/LabelDrop/UseCases/SerializeLabelDrop.js.map +1 -1
  157. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  158. package/dist/cjs/Landmarks/PM/LandmarkSizePM.js +5 -8
  159. package/dist/cjs/Landmarks/PM/LandmarkSizePM.js.map +1 -1
  160. package/dist/cjs/Landmarks/UseCases/SerializeLandmarks.js +1 -1
  161. package/dist/cjs/Landmarks/UseCases/SerializeLandmarks.js.map +1 -1
  162. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +2 -0
  163. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  164. package/dist/cjs/ObjectPick/UseCases/SerializeObjectPick.js +1 -1
  165. package/dist/cjs/ObjectPick/UseCases/SerializeObjectPick.js.map +1 -1
  166. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  167. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
  168. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  169. package/dist/cjs/OverlayColor/UC/SerializeOverlayColoredObjects.js +1 -1
  170. package/dist/cjs/OverlayColor/UC/SerializeOverlayColoredObjects.js.map +1 -1
  171. package/dist/cjs/Question/UC/SerializeQuestionChallenge.js +1 -1
  172. package/dist/cjs/Question/UC/SerializeQuestionChallenge.js.map +1 -1
  173. package/dist/cjs/Question/UC/SubmitQuestionAnswerUC.test.js +1 -0
  174. package/dist/cjs/Question/UC/SubmitQuestionAnswerUC.test.js.map +1 -1
  175. package/dist/cjs/RequestHandler/Entities/AppHandler.js +4 -0
  176. package/dist/cjs/RequestHandler/Entities/AppHandler.js.map +1 -1
  177. package/dist/cjs/RequestHandler/Entities/AppHandler.test.js +27 -0
  178. package/dist/cjs/RequestHandler/Entities/AppHandler.test.js.map +1 -1
  179. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.js +28 -29
  180. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.js.map +1 -1
  181. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js +128 -0
  182. package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js.map +1 -0
  183. package/dist/cjs/RequestHandler/Mocks/MockAppHandlerEntity.js +1 -0
  184. package/dist/cjs/RequestHandler/Mocks/MockAppHandlerEntity.js.map +1 -1
  185. package/dist/cjs/SceneRoot/UC/SerializeSceneRoot.js +1 -1
  186. package/dist/cjs/SceneRoot/UC/SerializeSceneRoot.js.map +1 -1
  187. package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
  188. package/dist/cjs/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
  189. package/dist/cjs/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
  190. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.js +21 -0
  191. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.js.map +1 -0
  192. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.test.js +34 -0
  193. package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.test.js.map +1 -0
  194. package/dist/cjs/StateMachine/Controller/index.js +1 -1
  195. package/dist/cjs/StateMachine/Controller/index.js.map +1 -1
  196. package/dist/cjs/StateMachine/Entities/StateMachineEntity.js +26 -4
  197. package/dist/cjs/StateMachine/Entities/StateMachineEntity.js.map +1 -1
  198. package/dist/cjs/StateMachine/Entities/StateMachineEntity.test.js +23 -4
  199. package/dist/cjs/StateMachine/Entities/StateMachineEntity.test.js.map +1 -1
  200. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  201. package/dist/cjs/StoredView/PM/HasStoredViewPM.js +6 -10
  202. package/dist/cjs/StoredView/PM/HasStoredViewPM.js.map +1 -1
  203. package/dist/cjs/StoredView/PM/HasStoredViewPM.test.js +1 -0
  204. package/dist/cjs/StoredView/PM/HasStoredViewPM.test.js.map +1 -1
  205. package/dist/cjs/StoredView/UC/SerializeStoredView.js +1 -1
  206. package/dist/cjs/StoredView/UC/SerializeStoredView.js.map +1 -1
  207. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.js +7 -6
  208. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.js.map +1 -1
  209. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.test.js +2 -6
  210. package/dist/cjs/Stylus/PMs/StylusIsInUsePM.test.js.map +1 -1
  211. package/dist/cjs/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
  212. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  213. package/dist/cjs/Transform3D/UC/PinchTransform.test.js.map +1 -1
  214. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  215. package/dist/cjs/Transparency/UCs/SerializeTransparentObjects.js +1 -1
  216. package/dist/cjs/Transparency/UCs/SerializeTransparentObjects.js.map +1 -1
  217. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.js +6 -5
  218. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.js.map +1 -1
  219. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.test.js +4 -8
  220. package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.test.js.map +1 -1
  221. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.js +6 -5
  222. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.js.map +1 -1
  223. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.test.js +1 -0
  224. package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.test.js.map +1 -1
  225. package/dist/esm/Babylon/Adapters/showBabylonInspectorAdapter.test.js +3 -0
  226. package/dist/esm/Babylon/Adapters/showBabylonInspectorAdapter.test.js.map +1 -1
  227. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  228. package/dist/esm/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
  229. package/dist/esm/Babylon/PM/ShowBabylonInspectorPM.js +9 -6
  230. package/dist/esm/Babylon/PM/ShowBabylonInspectorPM.js.map +1 -1
  231. package/dist/esm/BaseApp/PM/IsAuthoringPM.js +7 -10
  232. package/dist/esm/BaseApp/PM/IsAuthoringPM.js.map +1 -1
  233. package/dist/esm/BaseApp/PM/IsAuthoringPM.test.js +2 -6
  234. package/dist/esm/BaseApp/PM/IsAuthoringPM.test.js.map +1 -1
  235. package/dist/esm/BaseApp/PM/IsReviewingPM.js +7 -10
  236. package/dist/esm/BaseApp/PM/IsReviewingPM.js.map +1 -1
  237. package/dist/esm/BaseApp/PM/IsReviewingPM.test.js +2 -6
  238. package/dist/esm/BaseApp/PM/IsReviewingPM.test.js.map +1 -1
  239. package/dist/esm/BaseApp/PM/SlideTextPM.js +7 -6
  240. package/dist/esm/BaseApp/PM/SlideTextPM.js.map +1 -1
  241. package/dist/esm/BaseApp/PM/SlideTextPM.test.js +2 -6
  242. package/dist/esm/BaseApp/PM/SlideTextPM.test.js.map +1 -1
  243. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js +1 -0
  244. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  245. package/dist/esm/BaseApp/UC/SerializeBaseAppState.js +1 -1
  246. package/dist/esm/BaseApp/UC/SerializeBaseAppState.js.map +1 -1
  247. package/dist/esm/Callouts/Factories/calloutFactory.test.js +6 -0
  248. package/dist/esm/Callouts/Factories/calloutFactory.test.js.map +1 -1
  249. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js +8 -9
  250. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  251. package/dist/esm/Callouts/UC/SerializeCallouts.js +1 -1
  252. package/dist/esm/Callouts/UC/SerializeCallouts.js.map +1 -1
  253. package/dist/esm/Callouts/UC/TryAddCallout.test.js.map +1 -1
  254. package/dist/esm/Challenge/UCs/SerializeChallenge.js +1 -1
  255. package/dist/esm/Challenge/UCs/SerializeChallenge.js.map +1 -1
  256. package/dist/esm/Challenge/UCs/ShowChallengeHelpUC.test.js +3 -2
  257. package/dist/esm/Challenge/UCs/ShowChallengeHelpUC.test.js.map +1 -1
  258. package/dist/esm/ChannelModel/PMs/ActiveModelPM.js +7 -6
  259. package/dist/esm/ChannelModel/PMs/ActiveModelPM.js.map +1 -1
  260. package/dist/esm/ChannelModel/PMs/ActiveModelPM.test.js +2 -6
  261. package/dist/esm/ChannelModel/PMs/ActiveModelPM.test.js.map +1 -1
  262. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.js +5 -3
  263. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.js.map +1 -1
  264. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.test.js +1 -0
  265. package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.test.js.map +1 -1
  266. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.js +3 -7
  267. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.js.map +1 -1
  268. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.test.js +1 -0
  269. package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.test.js.map +1 -1
  270. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.js +3 -9
  271. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.js.map +1 -1
  272. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js +1 -0
  273. package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js.map +1 -1
  274. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.js +3 -7
  275. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.js.map +1 -1
  276. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js +1 -0
  277. package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js.map +1 -1
  278. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js +3 -9
  279. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js.map +1 -1
  280. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js +1 -0
  281. package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js.map +1 -1
  282. package/dist/esm/ChannelModel/UC/LoadChannelModelUC.test.js +6 -6
  283. package/dist/esm/ChannelModel/UC/LoadChannelModelUC.test.js.map +1 -1
  284. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js +1 -1
  285. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  286. package/dist/esm/ChannelModel/UC/SerializeActiveModel.js +1 -1
  287. package/dist/esm/ChannelModel/UC/SerializeActiveModel.js.map +1 -1
  288. package/dist/esm/Dispatcher/Entities/AppDispatcher.js +7 -0
  289. package/dist/esm/Dispatcher/Entities/AppDispatcher.js.map +1 -1
  290. package/dist/esm/Dispatcher/Entities/AppDispatcher.test.js +31 -0
  291. package/dist/esm/Dispatcher/Entities/AppDispatcher.test.js.map +1 -1
  292. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js +3 -1
  293. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
  294. package/dist/esm/Dispatcher/Mocks/GetAssetBlobURLUCMock.js +1 -1
  295. package/dist/esm/Dispatcher/Mocks/GetAssetBlobURLUCMock.js.map +1 -1
  296. package/dist/esm/Dispatcher/Mocks/GetLinkedAssetsUCMock.js +1 -1
  297. package/dist/esm/Dispatcher/Mocks/GetLinkedAssetsUCMock.js.map +1 -1
  298. package/dist/esm/Dispatcher/Mocks/MockDispatcher.js +2 -2
  299. package/dist/esm/Dispatcher/Mocks/MockDispatcher.js.map +1 -1
  300. package/dist/esm/Dispatcher/Mocks/MockGetAssetFolderURL.js +1 -1
  301. package/dist/esm/Dispatcher/Mocks/MockGetAssetFolderURL.js.map +1 -1
  302. package/dist/esm/Dispatcher/Mocks/MockShowAlert.js +1 -1
  303. package/dist/esm/Dispatcher/Mocks/MockShowAlert.js.map +1 -1
  304. package/dist/esm/Dispatcher/Mocks/MockShowConfirm.js +1 -1
  305. package/dist/esm/Dispatcher/Mocks/MockShowConfirm.js.map +1 -1
  306. package/dist/esm/Dispatcher/Mocks/MockShowMarkdown.js +1 -1
  307. package/dist/esm/Dispatcher/Mocks/MockShowMarkdown.js.map +1 -1
  308. package/dist/esm/Dispatcher/Mocks/MockShowSpinner.js +1 -1
  309. package/dist/esm/Dispatcher/Mocks/MockShowSpinner.js.map +1 -1
  310. package/dist/esm/Dispatcher/Mocks/MockSubmitResult.js +5 -5
  311. package/dist/esm/Dispatcher/Mocks/MockSubmitResult.js.map +1 -1
  312. package/dist/esm/Dispatcher/Mocks/ShowSelectModelUCMock.js +1 -1
  313. package/dist/esm/Dispatcher/Mocks/ShowSelectModelUCMock.js.map +1 -1
  314. package/dist/esm/Dispatcher/UC/AppIsReadyUC.test.js +3 -1
  315. package/dist/esm/Dispatcher/UC/AppIsReadyUC.test.js.map +1 -1
  316. package/dist/esm/Dispatcher/UC/DispatchStartZSpaceUC.test.js +2 -1
  317. package/dist/esm/Dispatcher/UC/DispatchStartZSpaceUC.test.js.map +1 -1
  318. package/dist/esm/Dispatcher/UC/DispatchStateChangeUC.test.js +1 -0
  319. package/dist/esm/Dispatcher/UC/DispatchStateChangeUC.test.js.map +1 -1
  320. package/dist/esm/Dispatcher/UC/DispatchStopZSpaceUC.test.js +2 -1
  321. package/dist/esm/Dispatcher/UC/DispatchStopZSpaceUC.test.js.map +1 -1
  322. package/dist/esm/Dispatcher/UC/GetAssetBlobURLUC.test.js +3 -1
  323. package/dist/esm/Dispatcher/UC/GetAssetBlobURLUC.test.js.map +1 -1
  324. package/dist/esm/Dispatcher/UC/GetAssetFolderURLUC.test.js +3 -1
  325. package/dist/esm/Dispatcher/UC/GetAssetFolderURLUC.test.js.map +1 -1
  326. package/dist/esm/Dispatcher/UC/GetAssetMetaUC.test.js +3 -1
  327. package/dist/esm/Dispatcher/UC/GetAssetMetaUC.test.js.map +1 -1
  328. package/dist/esm/Dispatcher/UC/GetAssetsForOwnerUC.test.js +3 -1
  329. package/dist/esm/Dispatcher/UC/GetAssetsForOwnerUC.test.js.map +1 -1
  330. package/dist/esm/Dispatcher/UC/GetLinkedAssetsUC.test.js +3 -1
  331. package/dist/esm/Dispatcher/UC/GetLinkedAssetsUC.test.js.map +1 -1
  332. package/dist/esm/Dispatcher/UC/GoToNextStateUC.test.js +3 -1
  333. package/dist/esm/Dispatcher/UC/GoToNextStateUC.test.js.map +1 -1
  334. package/dist/esm/Dispatcher/UC/GoToPreviousStateUC.test.js +3 -1
  335. package/dist/esm/Dispatcher/UC/GoToPreviousStateUC.test.js.map +1 -1
  336. package/dist/esm/Dispatcher/UC/HasNextStateUC.test.js +3 -1
  337. package/dist/esm/Dispatcher/UC/HasNextStateUC.test.js.map +1 -1
  338. package/dist/esm/Dispatcher/UC/HasPreviousStateUC.test.js +3 -1
  339. package/dist/esm/Dispatcher/UC/HasPreviousStateUC.test.js.map +1 -1
  340. package/dist/esm/Dispatcher/UC/IsAssetFetchedUC.test.js +3 -1
  341. package/dist/esm/Dispatcher/UC/IsAssetFetchedUC.test.js.map +1 -1
  342. package/dist/esm/Dispatcher/UC/IsZSpaceAvailableUC.test.js +3 -1
  343. package/dist/esm/Dispatcher/UC/IsZSpaceAvailableUC.test.js.map +1 -1
  344. package/dist/esm/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js +3 -1
  345. package/dist/esm/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js.map +1 -1
  346. package/dist/esm/Dispatcher/UC/RestoreCurrentStateUC.test.js +3 -1
  347. package/dist/esm/Dispatcher/UC/RestoreCurrentStateUC.test.js.map +1 -1
  348. package/dist/esm/Dispatcher/UC/StateIsCompleteUC.test.js +3 -1
  349. package/dist/esm/Dispatcher/UC/StateIsCompleteUC.test.js.map +1 -1
  350. package/dist/esm/Dispatcher/UC/SubmitActivityAssetUC.test.js +5 -3
  351. package/dist/esm/Dispatcher/UC/SubmitActivityAssetUC.test.js.map +1 -1
  352. package/dist/esm/Dispatcher/UC/SubmitResultResultUC.test.js +11 -5
  353. package/dist/esm/Dispatcher/UC/SubmitResultResultUC.test.js.map +1 -1
  354. package/dist/esm/Enablement/PM/EnabledStatePM.js +5 -9
  355. package/dist/esm/Enablement/PM/EnabledStatePM.js.map +1 -1
  356. package/dist/esm/Enablement/PM/EnabledStatePM.test.js +1 -0
  357. package/dist/esm/Enablement/PM/EnabledStatePM.test.js.map +1 -1
  358. package/dist/esm/Environment/UCs/SerializeEnvironment.js +1 -1
  359. package/dist/esm/Environment/UCs/SerializeEnvironment.js.map +1 -1
  360. package/dist/esm/Hideable/Factories/setupHideable.test.js +6 -0
  361. package/dist/esm/Hideable/Factories/setupHideable.test.js.map +1 -1
  362. package/dist/esm/Hideable/UCs/SerializeHideableObjects.js +1 -1
  363. package/dist/esm/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
  364. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  365. package/dist/esm/HoverLabel/UseCases/SerializeAllowHoverLabel.js +1 -1
  366. package/dist/esm/HoverLabel/UseCases/SerializeAllowHoverLabel.js.map +1 -1
  367. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  368. package/dist/esm/Label/Controller/submitCustomLabel.test.js +3 -0
  369. package/dist/esm/Label/Controller/submitCustomLabel.test.js.map +1 -1
  370. package/dist/esm/Label/Controller/updateCustomLabel.test.js +3 -0
  371. package/dist/esm/Label/Controller/updateCustomLabel.test.js.map +1 -1
  372. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js +0 -7
  373. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  374. package/dist/esm/Label/UC/SerializeCustomLabels.js +1 -1
  375. package/dist/esm/Label/UC/SerializeCustomLabels.js.map +1 -1
  376. package/dist/esm/Label/UC/SetCustomLabelUC.test.js +0 -7
  377. package/dist/esm/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  378. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
  379. package/dist/esm/LabelDrop/UseCases/SerializeLabelDrop.js +1 -1
  380. package/dist/esm/LabelDrop/UseCases/SerializeLabelDrop.js.map +1 -1
  381. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  382. package/dist/esm/Landmarks/PM/LandmarkSizePM.js +5 -8
  383. package/dist/esm/Landmarks/PM/LandmarkSizePM.js.map +1 -1
  384. package/dist/esm/Landmarks/UseCases/SerializeLandmarks.js +1 -1
  385. package/dist/esm/Landmarks/UseCases/SerializeLandmarks.js.map +1 -1
  386. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +2 -0
  387. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  388. package/dist/esm/ObjectPick/UseCases/SerializeObjectPick.js +1 -1
  389. package/dist/esm/ObjectPick/UseCases/SerializeObjectPick.js.map +1 -1
  390. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  391. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
  392. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  393. package/dist/esm/OverlayColor/UC/SerializeOverlayColoredObjects.js +1 -1
  394. package/dist/esm/OverlayColor/UC/SerializeOverlayColoredObjects.js.map +1 -1
  395. package/dist/esm/Question/UC/SerializeQuestionChallenge.js +1 -1
  396. package/dist/esm/Question/UC/SerializeQuestionChallenge.js.map +1 -1
  397. package/dist/esm/Question/UC/SubmitQuestionAnswerUC.test.js +1 -0
  398. package/dist/esm/Question/UC/SubmitQuestionAnswerUC.test.js.map +1 -1
  399. package/dist/esm/RequestHandler/Entities/AppHandler.js +4 -0
  400. package/dist/esm/RequestHandler/Entities/AppHandler.js.map +1 -1
  401. package/dist/esm/RequestHandler/Entities/AppHandler.test.js +27 -0
  402. package/dist/esm/RequestHandler/Entities/AppHandler.test.js.map +1 -1
  403. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.js +28 -29
  404. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.js.map +1 -1
  405. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js +126 -0
  406. package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js.map +1 -0
  407. package/dist/esm/RequestHandler/Mocks/MockAppHandlerEntity.js +1 -0
  408. package/dist/esm/RequestHandler/Mocks/MockAppHandlerEntity.js.map +1 -1
  409. package/dist/esm/SceneRoot/UC/SerializeSceneRoot.js +1 -1
  410. package/dist/esm/SceneRoot/UC/SerializeSceneRoot.js.map +1 -1
  411. package/dist/esm/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
  412. package/dist/esm/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
  413. package/dist/esm/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
  414. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.js +17 -0
  415. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.js.map +1 -0
  416. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.test.js +32 -0
  417. package/dist/esm/StateMachine/Controller/clickRestorePreviousState.test.js.map +1 -0
  418. package/dist/esm/StateMachine/Controller/index.js +1 -1
  419. package/dist/esm/StateMachine/Controller/index.js.map +1 -1
  420. package/dist/esm/StateMachine/Entities/StateMachineEntity.js +26 -4
  421. package/dist/esm/StateMachine/Entities/StateMachineEntity.js.map +1 -1
  422. package/dist/esm/StateMachine/Entities/StateMachineEntity.test.js +23 -4
  423. package/dist/esm/StateMachine/Entities/StateMachineEntity.test.js.map +1 -1
  424. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  425. package/dist/esm/StoredView/PM/HasStoredViewPM.js +7 -11
  426. package/dist/esm/StoredView/PM/HasStoredViewPM.js.map +1 -1
  427. package/dist/esm/StoredView/PM/HasStoredViewPM.test.js +1 -0
  428. package/dist/esm/StoredView/PM/HasStoredViewPM.test.js.map +1 -1
  429. package/dist/esm/StoredView/UC/SerializeStoredView.js +1 -1
  430. package/dist/esm/StoredView/UC/SerializeStoredView.js.map +1 -1
  431. package/dist/esm/Stylus/PMs/StylusIsInUsePM.js +8 -7
  432. package/dist/esm/Stylus/PMs/StylusIsInUsePM.js.map +1 -1
  433. package/dist/esm/Stylus/PMs/StylusIsInUsePM.test.js +2 -6
  434. package/dist/esm/Stylus/PMs/StylusIsInUsePM.test.js.map +1 -1
  435. package/dist/esm/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
  436. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  437. package/dist/esm/Transform3D/UC/PinchTransform.test.js.map +1 -1
  438. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  439. package/dist/esm/Transparency/UCs/SerializeTransparentObjects.js +1 -1
  440. package/dist/esm/Transparency/UCs/SerializeTransparentObjects.js.map +1 -1
  441. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.js +7 -6
  442. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.js.map +1 -1
  443. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.test.js +4 -8
  444. package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.test.js.map +1 -1
  445. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.js +7 -6
  446. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.js.map +1 -1
  447. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.test.js +1 -0
  448. package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.test.js.map +1 -1
  449. package/dist/types/Babylon/PM/ShowBabylonInspectorPM.d.ts +3 -2
  450. package/dist/types/Babylon/PM/ShowBabylonInspectorPM.d.ts.map +1 -1
  451. package/dist/types/BaseApp/PM/IsAuthoringPM.d.ts +2 -2
  452. package/dist/types/BaseApp/PM/IsAuthoringPM.d.ts.map +1 -1
  453. package/dist/types/BaseApp/PM/IsReviewingPM.d.ts +2 -2
  454. package/dist/types/BaseApp/PM/IsReviewingPM.d.ts.map +1 -1
  455. package/dist/types/BaseApp/PM/SlideTextPM.d.ts +2 -2
  456. package/dist/types/BaseApp/PM/SlideTextPM.d.ts.map +1 -1
  457. package/dist/types/BaseApp/UC/SerializeBaseAppState.d.ts +1 -1
  458. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts +1 -1
  459. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts.map +1 -1
  460. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts +1 -1
  461. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts.map +1 -1
  462. package/dist/types/Callouts/UC/SerializeCallouts.d.ts +1 -1
  463. package/dist/types/Challenge/UCs/SerializeChallenge.d.ts +1 -1
  464. package/dist/types/ChannelModel/PMs/ActiveModelPM.d.ts +4 -3
  465. package/dist/types/ChannelModel/PMs/ActiveModelPM.d.ts.map +1 -1
  466. package/dist/types/ChannelModel/UC/SerializeActiveModel.d.ts +2 -2
  467. package/dist/types/Dispatcher/Entities/AppDispatcher.d.ts +1 -0
  468. package/dist/types/Dispatcher/Entities/AppDispatcher.d.ts.map +1 -1
  469. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts +1 -0
  470. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts.map +1 -1
  471. package/dist/types/Dispatcher/Mocks/GetAssetBlobURLUCMock.d.ts +1 -1
  472. package/dist/types/Dispatcher/Mocks/GetAssetBlobURLUCMock.d.ts.map +1 -1
  473. package/dist/types/Dispatcher/Mocks/GetLinkedAssetsUCMock.d.ts +1 -1
  474. package/dist/types/Dispatcher/Mocks/GetLinkedAssetsUCMock.d.ts.map +1 -1
  475. package/dist/types/Dispatcher/Mocks/MockDispatcher.d.ts +2 -2
  476. package/dist/types/Dispatcher/Mocks/MockDispatcher.d.ts.map +1 -1
  477. package/dist/types/Dispatcher/Mocks/MockGetAssetFolderURL.d.ts +1 -1
  478. package/dist/types/Dispatcher/Mocks/MockGetAssetFolderURL.d.ts.map +1 -1
  479. package/dist/types/Dispatcher/Mocks/MockShowAlert.d.ts +1 -1
  480. package/dist/types/Dispatcher/Mocks/MockShowAlert.d.ts.map +1 -1
  481. package/dist/types/Dispatcher/Mocks/MockShowConfirm.d.ts +1 -1
  482. package/dist/types/Dispatcher/Mocks/MockShowConfirm.d.ts.map +1 -1
  483. package/dist/types/Dispatcher/Mocks/MockShowMarkdown.d.ts +1 -1
  484. package/dist/types/Dispatcher/Mocks/MockShowMarkdown.d.ts.map +1 -1
  485. package/dist/types/Dispatcher/Mocks/MockShowSpinner.d.ts +1 -1
  486. package/dist/types/Dispatcher/Mocks/MockShowSpinner.d.ts.map +1 -1
  487. package/dist/types/Dispatcher/Mocks/MockSubmitResult.d.ts +5 -5
  488. package/dist/types/Dispatcher/Mocks/MockSubmitResult.d.ts.map +1 -1
  489. package/dist/types/Dispatcher/Mocks/ShowSelectModelUCMock.d.ts +4 -1
  490. package/dist/types/Dispatcher/Mocks/ShowSelectModelUCMock.d.ts.map +1 -1
  491. package/dist/types/Environment/UCs/SerializeEnvironment.d.ts +1 -1
  492. package/dist/types/Hideable/UCs/SerializeHideableObjects.d.ts +2 -2
  493. package/dist/types/HoverLabel/UseCases/SerializeAllowHoverLabel.d.ts +1 -1
  494. package/dist/types/Label/UC/SerializeCustomLabels.d.ts +1 -2
  495. package/dist/types/Label/UC/SerializeCustomLabels.d.ts.map +1 -1
  496. package/dist/types/LabelDrop/UseCases/SerializeLabelDrop.d.ts +1 -1
  497. package/dist/types/Landmarks/UseCases/SerializeLandmarks.d.ts +1 -1
  498. package/dist/types/ObjectPick/UseCases/SerializeObjectPick.d.ts +1 -1
  499. package/dist/types/OverlayColor/UC/SerializeOverlayColoredObjects.d.ts +2 -2
  500. package/dist/types/Question/UC/SerializeQuestionChallenge.d.ts +1 -1
  501. package/dist/types/RequestHandler/Entities/AppHandler.d.ts +1 -0
  502. package/dist/types/RequestHandler/Entities/AppHandler.d.ts.map +1 -1
  503. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.d.ts +19 -20
  504. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.d.ts.map +1 -1
  505. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.test.d.ts +2 -0
  506. package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.test.d.ts.map +1 -0
  507. package/dist/types/RequestHandler/Mocks/MockAppHandlerEntity.d.ts +1 -0
  508. package/dist/types/RequestHandler/Mocks/MockAppHandlerEntity.d.ts.map +1 -1
  509. package/dist/types/SceneRoot/UC/SerializeSceneRoot.d.ts +1 -1
  510. package/dist/types/StateMachine/Controller/clickRestorePreviousState.d.ts +7 -0
  511. package/dist/types/StateMachine/Controller/clickRestorePreviousState.d.ts.map +1 -0
  512. package/dist/types/StateMachine/Controller/clickRestorePreviousState.test.d.ts +2 -0
  513. package/dist/types/StateMachine/Controller/clickRestorePreviousState.test.d.ts.map +1 -0
  514. package/dist/types/StateMachine/Controller/index.d.ts +1 -1
  515. package/dist/types/StateMachine/Controller/index.d.ts.map +1 -1
  516. package/dist/types/StateMachine/Entities/StateMachineEntity.d.ts +87 -2
  517. package/dist/types/StateMachine/Entities/StateMachineEntity.d.ts.map +1 -1
  518. package/dist/types/StoredView/PM/HasStoredViewPM.d.ts +2 -2
  519. package/dist/types/StoredView/PM/HasStoredViewPM.d.ts.map +1 -1
  520. package/dist/types/StoredView/UC/SerializeStoredView.d.ts +1 -1
  521. package/dist/types/Stylus/PMs/StylusIsInUsePM.d.ts +2 -2
  522. package/dist/types/Stylus/PMs/StylusIsInUsePM.d.ts.map +1 -1
  523. package/dist/types/Transform3D/UC/MoveTransformUC.d.ts +3 -3
  524. package/dist/types/Transform3D/UC/MoveTransformUC.d.ts.map +1 -1
  525. package/dist/types/Transform3D/UC/PanTransformUC.d.ts +3 -3
  526. package/dist/types/Transform3D/UC/PanTransformUC.d.ts.map +1 -1
  527. package/dist/types/Transform3D/UC/TryMoveTransformUC.d.ts +1 -1
  528. package/dist/types/Transform3D/UC/TryMoveTransformUC.d.ts.map +1 -1
  529. package/dist/types/Transform3D/UC/TryPanTransformUC.d.ts +2 -2
  530. package/dist/types/Transform3D/UC/TryPanTransformUC.d.ts.map +1 -1
  531. package/dist/types/Transparency/UCs/SerializeTransparentObjects.d.ts +2 -2
  532. package/dist/types/zSpace/PM/ZSpaceIsEnabledPM.d.ts +2 -2
  533. package/dist/types/zSpace/PM/ZSpaceIsEnabledPM.d.ts.map +1 -1
  534. package/dist/types/zSpace/PM/ZSpaceIsSupportedPM.d.ts +2 -2
  535. package/dist/types/zSpace/PM/ZSpaceIsSupportedPM.d.ts.map +1 -1
  536. package/package.json +4 -3
  537. package/src/Dispatcher/README.md +652 -0
  538. package/src/RequestHandler/README.md +790 -0
  539. package/src/StateMachine/README.md +430 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TryAddCallout.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/TryAddCallout.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n makeAppObjectRepo,\n ParametricLine,\n Vector2,\n Vector3,\n} from \"@vived/core\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { makeToolRepo } from \"../../Tools\";\nimport { CreateCalloutUcMock } from \"../Mocks/CreateCalloutUcMock\";\nimport { CreateCalloutUC } from \"./CreateCalloutUC\";\nimport { makeTryAddCalloutUC } from \"./TryAddCallout\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const createCalloutAO = appObjects.getOrCreate(\"createCalloutAO\");\n\n const mockSceneRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({\n worldPickPoint: new Vector3(1, 2, 3),\n hit: true,\n normal: new Vector3(4, 5, 6),\n objectPickMeta: {\n appObjectID: \"appObj1\",\n },\n });\n\n mockSceneRayPick.sceneRayPick = mockPick;\n\n const calloutAO = appObjects.getOrCreate(\"appObj1\");\n const mockCreate = new CreateCalloutUcMock(calloutAO);\n mockCreate.fromPick.mockReturnValue(appObjects.getOrCreate(\"appObj2\"));\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const tryAddUC = makeTryAddCalloutUC(createCalloutAO);\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\n toolRepo.makeTool(\"CALLOUT\");\n toolRepo.makeTool(\"OTHER\");\n toolRepo.triggerTool(\"CALLOUT\");\n\n return {\n tryAddUC,\n mockPick,\n mockCreate,\n calloutAO,\n appObjects,\n mockPixelToRay,\n toolRepo,\n };\n}\n\ndescribe(\"Try Add Callout UC\", () => {\n it(\"Forms the pixel into a ray and passed it to the initialize with ray\", () => {\n const { mockPixelToRay, tryAddUC } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n tryAddUC.initializeWithRay = jest.fn();\n\n tryAddUC.initializeWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8)\n );\n expect(tryAddUC.initializeWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Forms the pixel into a ray and passed it to the move with ray\", () => {\n const { mockPixelToRay, tryAddUC } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n tryAddUC.moveWithRay = jest.fn();\n\n tryAddUC.moveWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8)\n );\n expect(tryAddUC.moveWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Returns false if not allowed\", () => {\n const { tryAddUC } = makeTestRig();\n\n tryAddUC.allow = () => {\n return false;\n };\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Returns false if the pick is not on anything\", () => {\n const { mockPick, tryAddUC } = makeTestRig();\n\n mockPick.mockReturnValue(undefined);\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Returns false if it can't find the app object\", () => {\n const { tryAddUC, appObjects } = makeTestRig();\n appObjects.remove(\"appObj1\");\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Returns false if it can't find Create UC on the app object\", () => {\n const { tryAddUC, calloutAO } = makeTestRig();\n calloutAO.removeComponent(CreateCalloutUC.type);\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Does not allow if the tool is not Callout\", () => {\n const { tryAddUC, toolRepo } = makeTestRig();\n\n toolRepo.triggerTool(\"OTHER\");\n\n expect(tryAddUC.allow()).toEqual(false);\n\n toolRepo.triggerTool(\"CALLOUT\");\n\n expect(tryAddUC.allow()).toEqual(true);\n });\n});\n"]}
1
+ {"version":3,"file":"TryAddCallout.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/TryAddCallout.test.ts"],"names":[],"mappings":";;AAAA,sCAKqB;AACrB,+CAG6B;AAC7B,uCAA2C;AAC3C,sEAAmE;AACnE,uDAAoD;AACpD,mDAAsD;AAEtD,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAElE,MAAM,gBAAgB,GAAG,IAAA,8BAAsB,EAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QACzC,cAAc,EAAE,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpC,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,cAAc,EAAE;YACd,WAAW,EAAE,SAAS;SACvB;KACF,CAAC,CAAC;IAEH,gBAAgB,CAAC,YAAY,GAAG,QAAQ,CAAC;IAEzC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,yCAAmB,CAAC,SAAS,CAAC,CAAC;IACtD,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvE,MAAM,cAAc,GAAG,IAAA,iCAAyB,EAAC,UAAU,CAAC,CAAC;IAC7D,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAE3C,MAAM,QAAQ,GAAG,IAAA,mCAAmB,EAAC,eAAe,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,SAAS;QACT,UAAU;QACV,cAAc;QACd,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,OAAO,GAAG,qBAAc,CAAC,YAAY,CACzC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACrB,CAAC;QACD,cAAc,CAAC,eAA6B,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEvE,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEvC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,oBAAoB,CACzD,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAClB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,OAAO,GAAG,qBAAc,CAAC,YAAY,CACzC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACrB,CAAC;QACD,cAAc,CAAC,eAA6B,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEvE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEjC,QAAQ,CAAC,aAAa,CAAC,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,oBAAoB,CACzD,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAClB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnC,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE;YACpB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,SAAS,CAAC,eAAe,CAAC,iCAAe,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,qBAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAExC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import {\n makeAppObjectRepo,\n ParametricLine,\n Vector2,\n Vector3,\n} from \"@vived/core\";\nimport {\n makeMockPixelToSceneRayUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon/Mocks\";\nimport { makeToolRepo } from \"../../Tools\";\nimport { CreateCalloutUcMock } from \"../Mocks/CreateCalloutUcMock\";\nimport { CreateCalloutUC } from \"./CreateCalloutUC\";\nimport { makeTryAddCalloutUC } from \"./TryAddCallout\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const createCalloutAO = appObjects.getOrCreate(\"createCalloutAO\");\n\n const mockSceneRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({\n worldPickPoint: new Vector3(1, 2, 3),\n hit: true,\n normal: new Vector3(4, 5, 6),\n objectPickMeta: {\n appObjectID: \"appObj1\",\n },\n });\n\n mockSceneRayPick.sceneRayPick = mockPick;\n\n const calloutAO = appObjects.getOrCreate(\"appObj1\");\n const mockCreate = new CreateCalloutUcMock(calloutAO);\n mockCreate.fromPick.mockReturnValue(appObjects.getOrCreate(\"appObj2\"));\n\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\n mockPixelToRay.pixelToSceneRay = jest.fn();\n\n const tryAddUC = makeTryAddCalloutUC(createCalloutAO);\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\n toolRepo.makeTool(\"CALLOUT\");\n toolRepo.makeTool(\"OTHER\");\n toolRepo.triggerTool(\"CALLOUT\");\n\n return {\n tryAddUC,\n mockPick,\n mockCreate,\n calloutAO,\n appObjects,\n mockPixelToRay,\n toolRepo,\n };\n}\n\ndescribe(\"Try Add Callout UC\", () => {\n it(\"Forms the pixel into a ray and passed it to the initialize with ray\", () => {\n const { mockPixelToRay, tryAddUC } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n tryAddUC.initializeWithRay = jest.fn();\n\n tryAddUC.initializeWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8),\n );\n expect(tryAddUC.initializeWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Forms the pixel into a ray and passed it to the move with ray\", () => {\n const { mockPixelToRay, tryAddUC } = makeTestRig();\n\n const mockRay = ParametricLine.FromTwoPoint(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n (mockPixelToRay.pixelToSceneRay as jest.Mock).mockReturnValue(mockRay);\n\n tryAddUC.moveWithRay = jest.fn();\n\n tryAddUC.moveWithPixel(new Vector2(7, 8));\n\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\n new Vector2(7, 8),\n );\n expect(tryAddUC.moveWithRay).toHaveBeenCalledWith(mockRay);\n });\n\n it(\"Returns false if not allowed\", () => {\n const { tryAddUC } = makeTestRig();\n\n tryAddUC.allow = () => {\n return false;\n };\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Returns false if the pick is not on anything\", () => {\n const { mockPick, tryAddUC } = makeTestRig();\n\n mockPick.mockReturnValue(undefined);\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Returns false if it can't find the app object\", () => {\n const { tryAddUC, appObjects } = makeTestRig();\n appObjects.remove(\"appObj1\");\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Returns false if it can't find Create UC on the app object\", () => {\n const { tryAddUC, calloutAO } = makeTestRig();\n calloutAO.removeComponent(CreateCalloutUC.type);\n\n expect(tryAddUC.initializeWithRay(ParametricLine.Forward())).toEqual(false);\n });\n\n it(\"Does not allow if the tool is not Callout\", () => {\n const { tryAddUC, toolRepo } = makeTestRig();\n\n toolRepo.triggerTool(\"OTHER\");\n\n expect(tryAddUC.allow()).toEqual(false);\n\n toolRepo.triggerTool(\"CALLOUT\");\n\n expect(tryAddUC.allow()).toEqual(true);\n });\n});\n"]}
@@ -38,7 +38,7 @@ class SerializeChallengeUC extends core_1.AppObjectUC {
38
38
  constructor(appObject) {
39
39
  super(appObject, SerializeChallengeUC.type);
40
40
  this.name = "challenge";
41
- this.seriliziationVersion = 1;
41
+ this.serializationVersion = 1;
42
42
  const stateMachine = StateMachine_1.StateMachineEntity.get(appObject.appObjectRepo);
43
43
  if (stateMachine) {
44
44
  stateMachine.registerSerializedSystem(this);
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeChallenge.js","sourceRoot":"","sources":["../../../../src/Challenge/UCs/SerializeChallenge.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,qDAA0E;AAC1E,iEAA8D;AAE9D,MAAa,oBACX,SAAQ,kBAAW;IAQnB,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAkB,iCAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACnD,MAAM,KAAK,GAAsB;YAC/B,SAAS;SACV,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,OAAe;QAC7C,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,KAA0B,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAwB;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAC5C,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QArC9C,SAAI,GAAG,WAAW,CAAC;QACnB,yBAAoB,GAAG,CAAC,CAAC;QAsCvB,MAAM,YAAY,GAAG,iCAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;;AAnDH,oDAoDC;AAhDiB,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { SerializedSystem, StateMachineEntity } from \"../../StateMachine\";\nimport { ChallengeEntity } from \"../Entities/ChallengeEntity\";\n\nexport class SerializeChallengeUC\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeChallengeUC\";\n\n name = \"challenge\";\n seriliziationVersion = 1;\n\n private get challenge() {\n return this.getCachedSingleton<ChallengeEntity>(ChallengeEntity.type);\n }\n\n getSystemState(): object {\n if (!this.challenge) return {};\n\n const challenge = this.challenge.selectedChallenge;\n const state: SerializedStateV1 = {\n challenge,\n };\n\n return state;\n }\n\n applySystemState(state: object, version: number): void {\n if (version === 1) {\n this.applyVersion1(state as SerializedStateV1);\n } else {\n this.applyDefaultState();\n }\n }\n\n private applyVersion1(state: SerializedStateV1) {\n if (!this.challenge) return;\n this.challenge.selectedChallenge = state.challenge;\n }\n\n applyDefaultState(): void {\n if (!this.challenge) return;\n this.challenge.selectedChallenge = \"NONE\";\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeChallengeUC.type);\n\n const stateMachine = StateMachineEntity.get(appObject.appObjectRepo);\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.error(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface SerializedStateV1 {\n challenge: string;\n}\n"]}
1
+ {"version":3,"file":"SerializeChallenge.js","sourceRoot":"","sources":["../../../../src/Challenge/UCs/SerializeChallenge.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,qDAA0E;AAC1E,iEAA8D;AAE9D,MAAa,oBACX,SAAQ,kBAAW;IAQnB,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAkB,iCAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACnD,MAAM,KAAK,GAAsB;YAC/B,SAAS;SACV,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,OAAe;QAC7C,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,KAA0B,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAwB;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAC5C,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QArC9C,SAAI,GAAG,WAAW,CAAC;QACnB,yBAAoB,GAAG,CAAC,CAAC;QAsCvB,MAAM,YAAY,GAAG,iCAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;;AAnDH,oDAoDC;AAhDiB,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { SerializedSystem, StateMachineEntity } from \"../../StateMachine\";\nimport { ChallengeEntity } from \"../Entities/ChallengeEntity\";\n\nexport class SerializeChallengeUC\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeChallengeUC\";\n\n name = \"challenge\";\n serializationVersion = 1;\n\n private get challenge() {\n return this.getCachedSingleton<ChallengeEntity>(ChallengeEntity.type);\n }\n\n getSystemState(): object {\n if (!this.challenge) return {};\n\n const challenge = this.challenge.selectedChallenge;\n const state: SerializedStateV1 = {\n challenge,\n };\n\n return state;\n }\n\n applySystemState(state: object, version: number): void {\n if (version === 1) {\n this.applyVersion1(state as SerializedStateV1);\n } else {\n this.applyDefaultState();\n }\n }\n\n private applyVersion1(state: SerializedStateV1) {\n if (!this.challenge) return;\n this.challenge.selectedChallenge = state.challenge;\n }\n\n applyDefaultState(): void {\n if (!this.challenge) return;\n this.challenge.selectedChallenge = \"NONE\";\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeChallengeUC.type);\n\n const stateMachine = StateMachineEntity.get(appObject.appObjectRepo);\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.error(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface SerializedStateV1 {\n challenge: string;\n}\n"]}
@@ -12,10 +12,11 @@ function makeTestRig() {
12
12
  const challengeEntity = (0, ChallengeEntity_1.makeChallengeEntity)(ao);
13
13
  const mockChallenge = new ChallengeMock_1.ChallengeMock("CHALLENGE1");
14
14
  challengeEntity.registerChallenge(mockChallenge);
15
- const mockAlert = (0, MockShowAlert_1.makeMockShowAlert)(appObjects).showAlert;
15
+ const mockShowAlert = (0, MockShowAlert_1.makeMockShowAlert)(appObjects);
16
+ mockShowAlert.showAlert = jest.fn();
16
17
  const uc = (0, ShowChallengeHelpUC_1.makeShowChallengeHelpUC)(ao);
17
18
  return {
18
- mockAlert,
19
+ mockAlert: mockShowAlert.showAlert,
19
20
  uc,
20
21
  challengeEntity,
21
22
  appObjects,
@@ -1 +1 @@
1
- {"version":3,"file":"ShowChallengeHelpUC.test.js","sourceRoot":"","sources":["../../../../src/Challenge/UCs/ShowChallengeHelpUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAEhD,wEAAyE;AACzE,iEAAkE;AAClE,0DAAuD;AACvD,+DAG+B;AAE/B,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,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,YAAY,CAAC,CAAC;IACtD,eAAe,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAEjD,MAAM,SAAS,GAAG,IAAA,iCAAiB,EAAC,UAAU,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,EAAE,GAAG,IAAA,6CAAuB,EAAC,EAAE,CAAC,CAAC;IAEvC,OAAO;QACL,SAAS;QACT,EAAE;QACF,eAAe;QACf,UAAU;QACV,oBAAoB;QACpB,aAAa;KACd,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,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,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QACxE,eAAe,CAAC,iBAAiB,GAAG,YAAY,CAAC;QAEjD,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAEvB,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAiB,CAAC;QAEvD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACxC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACpB,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAEvB,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ShowAlertDTO } from \"../../Dispatcher\";\nimport { makeMockShowAlert } from \"../../Dispatcher/Mocks/MockShowAlert\";\nimport { makeChallengeEntity } from \"../Entities/ChallengeEntity\";\nimport { ChallengeMock } from \"../Mocks/ChallengeMock\";\nimport {\n makeShowChallengeHelpUC,\n ShowChallengeHelpUC,\n} from \"./ShowChallengeHelpUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\n\n const ao = appObjects.getOrCreate(\"AO\");\n\n const challengeEntity = makeChallengeEntity(ao);\n const mockChallenge = new ChallengeMock(\"CHALLENGE1\");\n challengeEntity.registerChallenge(mockChallenge);\n\n const mockAlert = makeMockShowAlert(appObjects).showAlert;\n const uc = makeShowChallengeHelpUC(ao);\n\n return {\n mockAlert,\n uc,\n challengeEntity,\n appObjects,\n registerSingletonSpy,\n mockChallenge,\n };\n}\n\ndescribe(\"Show Challenge Help\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(ShowChallengeHelpUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Register the singleton\", () => {\n const { registerSingletonSpy, uc } = makeTestRig();\n expect(registerSingletonSpy).toHaveBeenCalledWith(uc);\n });\n\n it(\"Show help if the selected challenge has title and help\", () => {\n const { challengeEntity, mockAlert, uc, mockChallenge } = makeTestRig();\n challengeEntity.selectedChallenge = \"CHALLENGE1\";\n\n uc.showChallengeHelp();\n\n expect(mockAlert).toHaveBeenCalledTimes(1);\n const dto = mockAlert.mock.calls[0][0] as ShowAlertDTO;\n\n expect(dto.title).toEqual(mockChallenge.helpHeading);\n expect(dto.message).toEqual(mockChallenge.consumerHelpText);\n expect(dto.closeButtonLabel).toEqual(\"Close\");\n });\n\n it(\"Warns and does not display if there is no message or title\", () => {\n const { mockAlert, uc } = makeTestRig();\n uc.warn = jest.fn();\n uc.showChallengeHelp();\n\n expect(mockAlert).not.toHaveBeenCalled();\n expect(uc.warn).toHaveBeenCalled();\n });\n});\n"]}
1
+ {"version":3,"file":"ShowChallengeHelpUC.test.js","sourceRoot":"","sources":["../../../../src/Challenge/UCs/ShowChallengeHelpUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAEhD,wEAAyE;AACzE,iEAAkE;AAClE,0DAAuD;AACvD,+DAG+B;AAE/B,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,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,YAAY,CAAC,CAAC;IACtD,eAAe,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,IAAA,iCAAiB,EAAC,UAAU,CAAC,CAAC;IACpD,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACpC,MAAM,EAAE,GAAG,IAAA,6CAAuB,EAAC,EAAE,CAAC,CAAC;IAEvC,OAAO;QACL,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,EAAE;QACF,eAAe;QACf,UAAU;QACV,oBAAoB;QACpB,aAAa;KACd,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,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,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QACxE,eAAe,CAAC,iBAAiB,GAAG,YAAY,CAAC;QAEjD,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAEvB,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAI,SAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAiB,CAAC;QAEtE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACxC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACpB,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAEvB,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ShowAlertDTO } from \"../../Dispatcher\";\nimport { makeMockShowAlert } from \"../../Dispatcher/Mocks/MockShowAlert\";\nimport { makeChallengeEntity } from \"../Entities/ChallengeEntity\";\nimport { ChallengeMock } from \"../Mocks/ChallengeMock\";\nimport {\n makeShowChallengeHelpUC,\n ShowChallengeHelpUC,\n} from \"./ShowChallengeHelpUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\n\n const ao = appObjects.getOrCreate(\"AO\");\n\n const challengeEntity = makeChallengeEntity(ao);\n const mockChallenge = new ChallengeMock(\"CHALLENGE1\");\n challengeEntity.registerChallenge(mockChallenge);\n\n const mockShowAlert = makeMockShowAlert(appObjects);\n mockShowAlert.showAlert = jest.fn();\n const uc = makeShowChallengeHelpUC(ao);\n\n return {\n mockAlert: mockShowAlert.showAlert,\n uc,\n challengeEntity,\n appObjects,\n registerSingletonSpy,\n mockChallenge,\n };\n}\n\ndescribe(\"Show Challenge Help\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(ShowChallengeHelpUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Register the singleton\", () => {\n const { registerSingletonSpy, uc } = makeTestRig();\n expect(registerSingletonSpy).toHaveBeenCalledWith(uc);\n });\n\n it(\"Show help if the selected challenge has title and help\", () => {\n const { challengeEntity, mockAlert, uc, mockChallenge } = makeTestRig();\n challengeEntity.selectedChallenge = \"CHALLENGE1\";\n\n uc.showChallengeHelp();\n\n expect(mockAlert).toHaveBeenCalledTimes(1);\n const dto = (mockAlert as jest.Mock).mock.calls[0][0] as ShowAlertDTO;\n\n expect(dto.title).toEqual(mockChallenge.helpHeading);\n expect(dto.message).toEqual(mockChallenge.consumerHelpText);\n expect(dto.closeButtonLabel).toEqual(\"Close\");\n });\n\n it(\"Warns and does not display if there is no message or title\", () => {\n const { mockAlert, uc } = makeTestRig();\n uc.warn = jest.fn();\n uc.showChallengeHelp();\n\n expect(mockAlert).not.toHaveBeenCalled();\n expect(uc.warn).toHaveBeenCalled();\n });\n});\n"]}
@@ -4,7 +4,7 @@ exports.ActiveModelPM = void 0;
4
4
  exports.makeActiveModelPM = makeActiveModelPM;
5
5
  const core_1 = require("@vived/core");
6
6
  const Entities_1 = require("../Entities");
7
- class ActiveModelPM extends core_1.AppObjectPM {
7
+ class ActiveModelPM extends core_1.AppObjectSingletonPM {
8
8
  static get(appObjects) {
9
9
  return (0, core_1.getSingletonComponent)(ActiveModelPM.type, appObjects);
10
10
  }
@@ -23,14 +23,15 @@ class ActiveModelPMImp extends ActiveModelPM {
23
23
  }
24
24
  constructor(appObject) {
25
25
  super(appObject, ActiveModelPM.type);
26
- this.onEntityChange = () => {
26
+ this.defaultVM = "";
27
+ this.formVM = () => {
27
28
  if (!this.repo)
28
29
  return;
29
30
  this.doUpdateView(this.repo.activeModel);
30
31
  };
31
- this.repo?.addChangeObserver(this.onEntityChange);
32
- this.onEntityChange();
33
- this.appObjects.registerSingleton(this);
32
+ if (this.repo) {
33
+ this.observeEntity(this.repo);
34
+ }
34
35
  }
35
36
  }
36
37
  //# sourceMappingURL=ActiveModelPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveModelPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ActiveModelPM.ts"],"names":[],"mappings":";;;AAgBA,8CAEC;AAlBD,sCAKqB;AACrB,0CAA+C;AAE/C,MAAsB,aAAc,SAAQ,kBAAmB;IAG7D,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,IAAA,4BAAqB,EAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9E,CAAC;;AALH,sCAMC;AALiB,kBAAI,GAAG,eAAe,CAAC;AAOzC,SAAgB,iBAAiB,CAAC,SAAoB;IACpD,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,gBAAiB,SAAQ,aAAa;IAC1C,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAmB,2BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAS,EAAE,CAAS;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QANvC,mBAAc,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC;QAKA,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,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 { ChannelModelRepo } from \"../Entities\";\n\nexport abstract class ActiveModelPM extends AppObjectPM<string> {\n static readonly type = \"ActiveModelPM\";\n\n static get(appObjects: AppObjectRepo) {\n return getSingletonComponent<ActiveModelPM>(ActiveModelPM.type, appObjects);\n }\n}\n\nexport function makeActiveModelPM(appObject: AppObject) {\n return new ActiveModelPMImp(appObject);\n}\n\nclass ActiveModelPMImp extends ActiveModelPM {\n private get repo() {\n return this.getCachedSingleton<ChannelModelRepo>(ChannelModelRepo.type);\n }\n\n vmsAreEqual(a: string, b: string): boolean {\n return a === b;\n }\n\n onEntityChange = () => {\n if (!this.repo) return;\n this.doUpdateView(this.repo.activeModel);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ActiveModelPM.type);\n\n this.repo?.addChangeObserver(this.onEntityChange);\n this.onEntityChange();\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
1
+ {"version":3,"file":"ActiveModelPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ActiveModelPM.ts"],"names":[],"mappings":";;;AAgBA,8CAEC;AAlBD,sCAKqB;AACrB,0CAA+C;AAE/C,MAAsB,aAAc,SAAQ,2BAA4B;IAGtE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,IAAA,4BAAqB,EAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9E,CAAC;;AALH,sCAMC;AALiB,kBAAI,GAAG,eAAe,CAAC;AAOzC,SAAgB,iBAAiB,CAAC,SAAoB;IACpD,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,gBAAiB,SAAQ,aAAa;IAG1C,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAmB,2BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAS,EAAE,CAAS;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QAhBvC,cAAS,GAAG,EAAE,CAAC;QAUf,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n AppObject,\n AppObjectSingletonPM,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { ChannelModelRepo } from \"../Entities\";\n\nexport abstract class ActiveModelPM extends AppObjectSingletonPM<string> {\n static readonly type = \"ActiveModelPM\";\n\n static get(appObjects: AppObjectRepo) {\n return getSingletonComponent<ActiveModelPM>(ActiveModelPM.type, appObjects);\n }\n}\n\nexport function makeActiveModelPM(appObject: AppObject) {\n return new ActiveModelPMImp(appObject);\n}\n\nclass ActiveModelPMImp extends ActiveModelPM {\n defaultVM = \"\";\n\n private get repo() {\n return this.getCachedSingleton<ChannelModelRepo>(ChannelModelRepo.type);\n }\n\n vmsAreEqual(a: string, b: string): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.repo) return;\n this.doUpdateView(this.repo.activeModel);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ActiveModelPM.type);\n\n if (this.repo) {\n this.observeEntity(this.repo);\n }\n }\n}\n"]}
@@ -5,21 +5,17 @@ const Entities_1 = require("../Entities");
5
5
  const ActiveModelPM_1 = require("./ActiveModelPM");
6
6
  function makeTestRig() {
7
7
  const appObjects = (0, core_1.makeAppObjectRepo)();
8
- const registerSpy = jest.spyOn(appObjects, "registerSingleton");
9
8
  const demo = appObjects.getOrCreate("demo");
10
9
  const repo = (0, Entities_1.makeChannelModelRepo)(demo);
11
10
  const activeModelPM = (0, ActiveModelPM_1.makeActiveModelPM)(demo);
12
- return { repo, activeModelPM, appObjects, registerSpy };
11
+ activeModelPM.addView(() => { });
12
+ return { repo, activeModelPM, appObjects };
13
13
  }
14
14
  describe("Demo App Presentation Manager", () => {
15
15
  it("Gets the singleton", () => {
16
16
  const { activeModelPM, appObjects } = makeTestRig();
17
17
  expect(ActiveModelPM_1.ActiveModelPM.get(appObjects)).toEqual(activeModelPM);
18
18
  });
19
- it("Registers as the singleton", () => {
20
- const { activeModelPM, registerSpy } = makeTestRig();
21
- expect(registerSpy).toHaveBeenCalledWith(activeModelPM);
22
- });
23
19
  it("Initializes correctly", () => {
24
20
  const { activeModelPM } = makeTestRig();
25
21
  expect(activeModelPM.lastVM).toEqual("");
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveModelPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ActiveModelPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,0CAAmD;AACnD,mDAAmE;AAEnE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,CAAC;IAE9C,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1D,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEpD,MAAM,CAAC,6BAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;QAErD,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,CAAC;QAE9C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeChannelModelRepo } from \"../Entities\";\nimport { ActiveModelPM, makeActiveModelPM } from \"./ActiveModelPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\n const demo = appObjects.getOrCreate(\"demo\");\n const repo = makeChannelModelRepo(demo);\n const activeModelPM = makeActiveModelPM(demo);\n\n return { repo, activeModelPM, appObjects, registerSpy };\n}\n\ndescribe(\"Demo App Presentation Manager\", () => {\n it(\"Gets the singleton\", () => {\n const { activeModelPM, appObjects } = makeTestRig();\n\n expect(ActiveModelPM.get(appObjects)).toEqual(activeModelPM);\n });\n\n it(\"Registers as the singleton\", () => {\n const { activeModelPM, registerSpy } = makeTestRig();\n\n expect(registerSpy).toHaveBeenCalledWith(activeModelPM);\n });\n\n it(\"Initializes correctly\", () => {\n const { activeModelPM } = makeTestRig();\n\n expect(activeModelPM.lastVM).toEqual(\"\");\n });\n\n it(\"Updates when the entity changes\", () => {\n const { activeModelPM, repo } = makeTestRig();\n\n expect(activeModelPM.lastVM).toEqual(\"\");\n\n repo.activeModel = \"modelID\";\n\n expect(activeModelPM.lastVM).toEqual(\"modelID\");\n });\n\n it(\"Compares the VM\", () => {\n const { activeModelPM } = makeTestRig();\n\n expect(activeModelPM.vmsAreEqual(\"\", \"\")).toEqual(true);\n expect(activeModelPM.vmsAreEqual(\"modelID\", \"modelID\")).toEqual(true);\n\n expect(activeModelPM.vmsAreEqual(\"\", \"modelID\")).toEqual(false);\n expect(activeModelPM.vmsAreEqual(\"modelID\", \"\")).toEqual(false);\n });\n});\n"]}
1
+ {"version":3,"file":"ActiveModelPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ActiveModelPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,0CAAmD;AACnD,mDAAmE;AAEnE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEhC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAC7C,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEpD,MAAM,CAAC,6BAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,CAAC;QAE9C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeChannelModelRepo } from \"../Entities\";\nimport { ActiveModelPM, makeActiveModelPM } from \"./ActiveModelPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const demo = appObjects.getOrCreate(\"demo\");\n const repo = makeChannelModelRepo(demo);\n const activeModelPM = makeActiveModelPM(demo);\n activeModelPM.addView(() => {});\n\n return { repo, activeModelPM, appObjects };\n}\n\ndescribe(\"Demo App Presentation Manager\", () => {\n it(\"Gets the singleton\", () => {\n const { activeModelPM, appObjects } = makeTestRig();\n\n expect(ActiveModelPM.get(appObjects)).toEqual(activeModelPM);\n });\n\n it(\"Initializes correctly\", () => {\n const { activeModelPM } = makeTestRig();\n\n expect(activeModelPM.lastVM).toEqual(\"\");\n });\n\n it(\"Updates when the entity changes\", () => {\n const { activeModelPM, repo } = makeTestRig();\n\n expect(activeModelPM.lastVM).toEqual(\"\");\n\n repo.activeModel = \"modelID\";\n\n expect(activeModelPM.lastVM).toEqual(\"modelID\");\n });\n\n it(\"Compares the VM\", () => {\n const { activeModelPM } = makeTestRig();\n\n expect(activeModelPM.vmsAreEqual(\"\", \"\")).toEqual(true);\n expect(activeModelPM.vmsAreEqual(\"modelID\", \"modelID\")).toEqual(true);\n\n expect(activeModelPM.vmsAreEqual(\"\", \"modelID\")).toEqual(false);\n expect(activeModelPM.vmsAreEqual(\"modelID\", \"\")).toEqual(false);\n });\n});\n"]}
@@ -26,7 +26,8 @@ class ModelHasCalloutsPmImp extends ModelHasCalloutsPM {
26
26
  }
27
27
  constructor(appObject) {
28
28
  super(appObject, ModelHasCalloutsPM.type);
29
- this.onRepoChange = () => {
29
+ this.defaultVM = false;
30
+ this.formVM = () => {
30
31
  if (!this.channelModel)
31
32
  return;
32
33
  let hasCallouts = false;
@@ -40,8 +41,9 @@ class ModelHasCalloutsPmImp extends ModelHasCalloutsPM {
40
41
  });
41
42
  this.doUpdateView(hasCallouts);
42
43
  };
43
- this.channelModel?.addChangeObserver(this.onRepoChange);
44
- this.onRepoChange();
44
+ if (this.channelModel) {
45
+ this.observeEntity(this.channelModel);
46
+ }
45
47
  }
46
48
  }
47
49
  //# sourceMappingURL=ModelHasCalloutsPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelHasCalloutsPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasCalloutsPM.ts"],"names":[],"mappings":";;;AAiBA,wDAIC;AArBD,sCAAoE;AACpE,qEAAkE;AAClE,0CAAiD;AAEjD,MAAsB,kBAAmB,SAAQ,kBAAoB;IAGnE,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAAqB,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;;AAVH,gDAWC;AAViB,uBAAI,GAAG,oBAAoB,CAAC;AAY9C,SAAgB,sBAAsB,CACpC,SAAoB;IAEpB,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,qBAAsB,SAAQ,kBAAkB;IACpD,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,6BAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAoBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAnB5C,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,WAAW;oBAAE,OAAO;gBAExB,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;gBAEvE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC;QAKA,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { CalloutRepo } from \"../../Callouts/Entities/CalloutRepo\";\nimport { ChannelModelEntity } from \"../Entities\";\n\nexport abstract class ModelHasCalloutsPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelHasCalloutsPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelHasCalloutsPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelHasCalloutsPM>(ModelHasCalloutsPM.type);\n }\n}\n\nexport function makeModelHasCalloutsPM(\n appObject: AppObject,\n): ModelHasCalloutsPM {\n return new ModelHasCalloutsPmImp(appObject);\n}\n\nclass ModelHasCalloutsPmImp extends ModelHasCalloutsPM {\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n onRepoChange = () => {\n if (!this.channelModel) return;\n\n let hasCallouts = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (hasCallouts) return;\n\n const repo = obj.appObject.getComponent<CalloutRepo>(CalloutRepo.type);\n\n if (repo && repo.getAll().length > 0) {\n hasCallouts = true;\n }\n });\n\n this.doUpdateView(hasCallouts);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelHasCalloutsPM.type);\n\n this.channelModel?.addChangeObserver(this.onRepoChange);\n this.onRepoChange();\n }\n}\n"]}
1
+ {"version":3,"file":"ModelHasCalloutsPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasCalloutsPM.ts"],"names":[],"mappings":";;;AAiBA,wDAIC;AArBD,sCAAoE;AACpE,qEAAkE;AAClE,0CAAiD;AAEjD,MAAsB,kBAAmB,SAAQ,kBAAoB;IAGnE,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAAqB,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;;AAVH,gDAWC;AAViB,uBAAI,GAAG,oBAAoB,CAAC;AAY9C,SAAgB,sBAAsB,CACpC,SAAoB;IAEpB,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,qBAAsB,SAAQ,kBAAkB;IAGpD,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,6BAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAoBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QA/B5C,cAAS,GAAG,KAAK,CAAC;QAYlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,WAAW;oBAAE,OAAO;gBAExB,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;gBAEvE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { CalloutRepo } from \"../../Callouts/Entities/CalloutRepo\";\nimport { ChannelModelEntity } from \"../Entities\";\n\nexport abstract class ModelHasCalloutsPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelHasCalloutsPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelHasCalloutsPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelHasCalloutsPM>(ModelHasCalloutsPM.type);\n }\n}\n\nexport function makeModelHasCalloutsPM(\n appObject: AppObject,\n): ModelHasCalloutsPM {\n return new ModelHasCalloutsPmImp(appObject);\n}\n\nclass ModelHasCalloutsPmImp extends ModelHasCalloutsPM {\n defaultVM = false;\n\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.channelModel) return;\n\n let hasCallouts = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (hasCallouts) return;\n\n const repo = obj.appObject.getComponent<CalloutRepo>(CalloutRepo.type);\n\n if (repo && repo.getAll().length > 0) {\n hasCallouts = true;\n }\n });\n\n this.doUpdateView(hasCallouts);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelHasCalloutsPM.type);\n\n if (this.channelModel) {\n this.observeEntity(this.channelModel);\n }\n }\n}\n"]}
@@ -9,6 +9,7 @@ function makeTestRig() {
9
9
  const appObj = appObjects.getOrCreate("appObj");
10
10
  const model = (0, Entities_1.makeChannelModelEntity)(appObj);
11
11
  const pm = (0, ModelHasCalloutsPM_1.makeModelHasCalloutsPM)(appObj);
12
+ pm.addView(() => { });
12
13
  const modelObj = model.addModelObject();
13
14
  const repo = (0, CalloutRepo_1.makeCalloutRepoEntity)(modelObj.appObject);
14
15
  repo.addChangeObserver(modelObj.notifyOnChange);
@@ -1 +1 @@
1
- {"version":3,"file":"ModelHasCalloutsPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasCalloutsPM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeCalloutRepoEntity } from \"../../Callouts/Entities/CalloutRepo\";\nimport { makeChannelModelEntity } from \"../Entities\";\nimport {\n makeModelHasCalloutsPM,\n ModelHasCalloutsPM,\n} from \"./ModelHasCalloutsPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const model = makeChannelModelEntity(appObj);\n const pm = makeModelHasCalloutsPM(appObj);\n\n const modelObj = model.addModelObject();\n const repo = makeCalloutRepoEntity(modelObj.appObject);\n repo.addChangeObserver(modelObj.notifyOnChange);\n\n return { appObj, appObjects, pm, repo };\n}\n\ndescribe(\"Model Objects have Callouts PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates when a callout is added\", () => {\n const { pm, repo } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n repo.makeCallout();\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Updates when a callout is removed\", () => {\n const { pm, repo } = makeTestRig();\n\n repo.makeCallout(\"calloutID\");\n\n expect(pm.lastVM).toEqual(true);\n\n repo.deleteCallout(\"calloutID\");\n\n expect(pm.lastVM).toEqual(false);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n\n it(\"Gets by ID\", () => {\n const { appObjects, pm } = makeTestRig();\n\n expect(ModelHasCalloutsPM.get(\"appObj\", appObjects)).toEqual(pm);\n });\n});\n"]}
1
+ {"version":3,"file":"ModelHasCalloutsPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasCalloutsPM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeCalloutRepoEntity } from \"../../Callouts/Entities/CalloutRepo\";\nimport { makeChannelModelEntity } from \"../Entities\";\nimport {\n makeModelHasCalloutsPM,\n ModelHasCalloutsPM,\n} from \"./ModelHasCalloutsPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const model = makeChannelModelEntity(appObj);\n const pm = makeModelHasCalloutsPM(appObj);\n pm.addView(() => {});\n\n const modelObj = model.addModelObject();\n const repo = makeCalloutRepoEntity(modelObj.appObject);\n repo.addChangeObserver(modelObj.notifyOnChange);\n\n return { appObj, appObjects, pm, repo };\n}\n\ndescribe(\"Model Objects have Callouts PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates when a callout is added\", () => {\n const { pm, repo } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n repo.makeCallout();\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Updates when a callout is removed\", () => {\n const { pm, repo } = makeTestRig();\n\n repo.makeCallout(\"calloutID\");\n\n expect(pm.lastVM).toEqual(true);\n\n repo.deleteCallout(\"calloutID\");\n\n expect(pm.lastVM).toEqual(false);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n\n it(\"Gets by ID\", () => {\n const { appObjects, pm } = makeTestRig();\n\n expect(ModelHasCalloutsPM.get(\"appObj\", appObjects)).toEqual(pm);\n });\n});\n"]}
@@ -26,7 +26,8 @@ class ModelHasLandmarksPMImp extends ModelHasLandmarksPM {
26
26
  }
27
27
  constructor(appObject) {
28
28
  super(appObject, ModelHasLandmarksPM.type);
29
- this.onRepoChange = () => {
29
+ this.defaultVM = false;
30
+ this.formVM = () => {
30
31
  if (!this.channelModel)
31
32
  return;
32
33
  let hasLandmark = false;
@@ -40,13 +41,8 @@ class ModelHasLandmarksPMImp extends ModelHasLandmarksPM {
40
41
  });
41
42
  this.doUpdateView(hasLandmark);
42
43
  };
43
- this.dispose = () => {
44
- super.dispose();
45
- this.channelModel?.removeChangeObserver(this.onRepoChange);
46
- };
47
44
  if (this.channelModel) {
48
- this.channelModel.addChangeObserver(this.onRepoChange);
49
- this.onRepoChange();
45
+ this.observeEntity(this.channelModel);
50
46
  }
51
47
  else {
52
48
  this.error("App Object does not have a ChannelModelEntity");
@@ -1 +1 @@
1
- {"version":3,"file":"ModelHasLandmarksPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasLandmarksPM.ts"],"names":[],"mappings":";;;AAkBA,0DAIC;AAtBD,sCAAoE;AAEpE,+CAA+C;AAC/C,2DAA8D;AAE9D,MAAsB,mBAAoB,SAAQ,kBAAoB;IAGpE,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAAsB,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;;AAVH,kDAWC;AAViB,wBAAI,GAAG,qBAAqB,CAAC;AAY/C,SAAgB,uBAAuB,CACrC,SAAoB;IAEpB,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,sBAAuB,SAAQ,mBAAmB;IACtD,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAyBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAxB7C,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,WAAW;oBAAE,OAAO;gBAExB,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAe,wBAAY,CAAC,IAAI,CAAC,CAAC;gBAEzE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC;QAEF,YAAO,GAAG,GAAS,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { Hideable } from \"../../Hideable/Entities/Hideable\";\nimport { LandmarkRepo } from \"../../Landmarks\";\nimport { ChannelModelEntity } from \"../Entities/ChannelModel\";\n\nexport abstract class ModelHasLandmarksPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelHasLandmarksPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelHasLandmarksPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelHasLandmarksPM>(ModelHasLandmarksPM.type);\n }\n}\n\nexport function makeModelHasLandmarksPM(\n appObject: AppObject,\n): ModelHasLandmarksPM {\n return new ModelHasLandmarksPMImp(appObject);\n}\n\nclass ModelHasLandmarksPMImp extends ModelHasLandmarksPM {\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n onRepoChange = () => {\n if (!this.channelModel) return;\n\n let hasLandmark = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (hasLandmark) return;\n\n const repo = obj.appObject.getComponent<LandmarkRepo>(LandmarkRepo.type);\n\n if (repo && repo.getAll().length > 0) {\n hasLandmark = true;\n }\n });\n\n this.doUpdateView(hasLandmark);\n };\n\n dispose = (): void => {\n super.dispose();\n this.channelModel?.removeChangeObserver(this.onRepoChange);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelHasLandmarksPM.type);\n\n if (this.channelModel) {\n this.channelModel.addChangeObserver(this.onRepoChange);\n this.onRepoChange();\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ModelHasLandmarksPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasLandmarksPM.ts"],"names":[],"mappings":";;;AAkBA,0DAIC;AAtBD,sCAAoE;AAEpE,+CAA+C;AAC/C,2DAA8D;AAE9D,MAAsB,mBAAoB,SAAQ,kBAAoB;IAGpE,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAAsB,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;;AAVH,kDAWC;AAViB,wBAAI,GAAG,qBAAqB,CAAC;AAY/C,SAAgB,uBAAuB,CACrC,SAAoB;IAEpB,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,sBAAuB,SAAQ,mBAAmB;IAGtD,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAoBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QA/B7C,cAAS,GAAG,KAAK,CAAC;QAYlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,WAAW;oBAAE,OAAO;gBAExB,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAe,wBAAY,CAAC,IAAI,CAAC,CAAC;gBAEzE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { Hideable } from \"../../Hideable/Entities/Hideable\";\nimport { LandmarkRepo } from \"../../Landmarks\";\nimport { ChannelModelEntity } from \"../Entities/ChannelModel\";\n\nexport abstract class ModelHasLandmarksPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelHasLandmarksPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelHasLandmarksPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelHasLandmarksPM>(ModelHasLandmarksPM.type);\n }\n}\n\nexport function makeModelHasLandmarksPM(\n appObject: AppObject,\n): ModelHasLandmarksPM {\n return new ModelHasLandmarksPMImp(appObject);\n}\n\nclass ModelHasLandmarksPMImp extends ModelHasLandmarksPM {\n defaultVM = false;\n\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.channelModel) return;\n\n let hasLandmark = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (hasLandmark) return;\n\n const repo = obj.appObject.getComponent<LandmarkRepo>(LandmarkRepo.type);\n\n if (repo && repo.getAll().length > 0) {\n hasLandmark = true;\n }\n });\n\n this.doUpdateView(hasLandmark);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelHasLandmarksPM.type);\n\n if (this.channelModel) {\n this.observeEntity(this.channelModel);\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
@@ -10,6 +10,7 @@ function makeTestRig() {
10
10
  const ao = appObjects.getOrCreate("ChannelModel");
11
11
  const channelModel = (0, ChannelModel_1.makeChannelModelEntity)(ao);
12
12
  const pm = (0, ModelHasLandmarksPM_1.makeModelHasLandmarksPM)(ao);
13
+ pm.addView(() => { });
13
14
  const modelObj = channelModel.addModelObject("modelId");
14
15
  const landmarkRepo = (0, Landmarks_1.makeLandmarkRepoEntity)(modelObj.appObject);
15
16
  landmarkRepo.addChangeObserver(modelObj.notifyOnChange);
@@ -1 +1 @@
1
- {"version":3,"file":"ModelHasLandmarksPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasLandmarksPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,+CAAyD;AACzD,2DAAkE;AAClE,+DAAgE;AAEhE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,qCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,6CAAuB,EAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,IAAA,kCAAsB,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEhE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAExD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;AAClD,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhC,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeLandmarkRepoEntity } from \"../../Landmarks\";\nimport { makeChannelModelEntity } from \"../Entities/ChannelModel\";\nimport { makeModelHasLandmarksPM } from \"./ModelHasLandmarksPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelHasLandmarksPM(ao);\n\n const modelObj = channelModel.addModelObject(\"modelId\");\n\n const landmarkRepo = makeLandmarkRepoEntity(modelObj.appObject);\n\n landmarkRepo.addChangeObserver(modelObj.notifyOnChange);\n\n return { appObj, appObjects, pm, landmarkRepo };\n}\n\ndescribe(\"Model has landmarks PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a landmark is added\", () => {\n const { pm, landmarkRepo } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n landmarkRepo.createLandmark(\"SomeLandmark\");\n\n expect(pm.lastVM).toEqual(true);\n\n landmarkRepo.deleteLandmark(\"SomeLandmark\");\n\n expect(pm.lastVM).toEqual(false);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}
1
+ {"version":3,"file":"ModelHasLandmarksPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelHasLandmarksPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,+CAAyD;AACzD,2DAAkE;AAClE,+DAAgE;AAEhE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,qCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,6CAAuB,EAAC,EAAE,CAAC,CAAC;IACvC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAErB,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,IAAA,kCAAsB,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEhE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAExD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;AAClD,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhC,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeLandmarkRepoEntity } from \"../../Landmarks\";\nimport { makeChannelModelEntity } from \"../Entities/ChannelModel\";\nimport { makeModelHasLandmarksPM } from \"./ModelHasLandmarksPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelHasLandmarksPM(ao);\n pm.addView(() => {});\n\n const modelObj = channelModel.addModelObject(\"modelId\");\n\n const landmarkRepo = makeLandmarkRepoEntity(modelObj.appObject);\n\n landmarkRepo.addChangeObserver(modelObj.notifyOnChange);\n\n return { appObj, appObjects, pm, landmarkRepo };\n}\n\ndescribe(\"Model has landmarks PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a landmark is added\", () => {\n const { pm, landmarkRepo } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n landmarkRepo.createLandmark(\"SomeLandmark\");\n\n expect(pm.lastVM).toEqual(true);\n\n landmarkRepo.deleteLandmark(\"SomeLandmark\");\n\n expect(pm.lastVM).toEqual(false);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}
@@ -26,7 +26,8 @@ class ModelObjectsAreHiddenPMImp extends ModelObjectsAreHiddenPM {
26
26
  }
27
27
  constructor(appObject) {
28
28
  super(appObject, ModelObjectsAreHiddenPM.type);
29
- this.onRepoChange = () => {
29
+ this.defaultVM = false;
30
+ this.formVM = () => {
30
31
  if (!this.channelModel)
31
32
  return;
32
33
  let hidden = false;
@@ -39,15 +40,8 @@ class ModelObjectsAreHiddenPMImp extends ModelObjectsAreHiddenPM {
39
40
  });
40
41
  this.doUpdateView(hidden);
41
42
  };
42
- this.dispose = () => {
43
- super.dispose();
44
- this.channelModel?.removeChangeObserver(this.onRepoChange);
45
- this.channelModel?.removeOnDisposeObserver(this.dispose);
46
- };
47
43
  if (this.channelModel) {
48
- this.channelModel.addChangeObserver(this.onRepoChange);
49
- this.channelModel.addOnDisposeObserver(() => this.dispose());
50
- this.onRepoChange();
44
+ this.observeEntity(this.channelModel);
51
45
  }
52
46
  else {
53
47
  this.error("App Object does not have a ChannelModelEntity");
@@ -1 +1 @@
1
- {"version":3,"file":"ModelObjectsAreHiddenPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreHiddenPM.ts"],"names":[],"mappings":";;;AAiBA,kEAIC;AArBD,sCAAoE;AACpE,+DAA4D;AAC5D,2DAA8D;AAE9D,MAAsB,uBAAwB,SAAQ,kBAAoB;IAGxE,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAA0B,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;;AAVH,0DAWC;AAViB,4BAAI,GAAG,yBAAyB,CAAC;AAYnD,SAAgB,2BAA2B,CACzC,SAAoB;IAEpB,OAAO,IAAI,0BAA0B,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,0BAA2B,SAAQ,uBAAuB;IAC9D,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAwBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAvBjD,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,MAAM,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,MAAM;oBAAE,OAAO;gBAEnB,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAW,mBAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;oBAClE,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,YAAO,GAAG,GAAS,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { Hideable } from \"../../Hideable/Entities/Hideable\";\nimport { ChannelModelEntity } from \"../Entities/ChannelModel\";\n\nexport abstract class ModelObjectsAreHiddenPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelObjectsAreHiddenPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelObjectsAreHiddenPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelObjectsAreHiddenPM>(ModelObjectsAreHiddenPM.type);\n }\n}\n\nexport function makeModelObjectsAreHiddenPM(\n appObject: AppObject,\n): ModelObjectsAreHiddenPM {\n return new ModelObjectsAreHiddenPMImp(appObject);\n}\n\nclass ModelObjectsAreHiddenPMImp extends ModelObjectsAreHiddenPM {\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n onRepoChange = () => {\n if (!this.channelModel) return;\n\n let hidden = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (hidden) return;\n\n if (obj.appObject.getComponent<Hideable>(Hideable.type)?.isHidden) {\n hidden = true;\n }\n });\n\n this.doUpdateView(hidden);\n };\n\n dispose = (): void => {\n super.dispose();\n this.channelModel?.removeChangeObserver(this.onRepoChange);\n this.channelModel?.removeOnDisposeObserver(this.dispose);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelObjectsAreHiddenPM.type);\n\n if (this.channelModel) {\n this.channelModel.addChangeObserver(this.onRepoChange);\n this.channelModel.addOnDisposeObserver(() => this.dispose());\n this.onRepoChange();\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ModelObjectsAreHiddenPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreHiddenPM.ts"],"names":[],"mappings":";;;AAiBA,kEAIC;AArBD,sCAAoE;AACpE,+DAA4D;AAC5D,2DAA8D;AAE9D,MAAsB,uBAAwB,SAAQ,kBAAoB;IAGxE,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAA0B,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;;AAVH,0DAWC;AAViB,4BAAI,GAAG,yBAAyB,CAAC;AAYnD,SAAgB,2BAA2B,CACzC,SAAoB;IAEpB,OAAO,IAAI,0BAA0B,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,0BAA2B,SAAQ,uBAAuB;IAG9D,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAkBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QA7BjD,cAAS,GAAG,KAAK,CAAC;QAYlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,MAAM,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,MAAM;oBAAE,OAAO;gBAEnB,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAW,mBAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;oBAClE,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { Hideable } from \"../../Hideable/Entities/Hideable\";\nimport { ChannelModelEntity } from \"../Entities/ChannelModel\";\n\nexport abstract class ModelObjectsAreHiddenPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelObjectsAreHiddenPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelObjectsAreHiddenPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelObjectsAreHiddenPM>(ModelObjectsAreHiddenPM.type);\n }\n}\n\nexport function makeModelObjectsAreHiddenPM(\n appObject: AppObject,\n): ModelObjectsAreHiddenPM {\n return new ModelObjectsAreHiddenPMImp(appObject);\n}\n\nclass ModelObjectsAreHiddenPMImp extends ModelObjectsAreHiddenPM {\n defaultVM = false;\n\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.channelModel) return;\n\n let hidden = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (hidden) return;\n\n if (obj.appObject.getComponent<Hideable>(Hideable.type)?.isHidden) {\n hidden = true;\n }\n });\n\n this.doUpdateView(hidden);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelObjectsAreHiddenPM.type);\n\n if (this.channelModel) {\n this.observeEntity(this.channelModel);\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
@@ -10,6 +10,7 @@ function makeTestRig() {
10
10
  const ao = appObjects.getOrCreate("ChannelModel");
11
11
  const channelModel = (0, ChannelModel_1.makeChannelModelEntity)(ao);
12
12
  const pm = (0, ModelObjectsAreHiddenPM_1.makeModelObjectsAreHiddenPM)(ao);
13
+ pm.addView(() => { });
13
14
  const dm1 = channelModel.addModelObject("modelId");
14
15
  const dm2 = channelModel.addModelObject("modelId");
15
16
  const sm1Hideable = new Hideable_1.Hideable(dm1.appObject);
@@ -1 +1 @@
1
- {"version":3,"file":"ModelObjectsAreHiddenPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,+DAA4D;AAC5D,2DAAkE;AAClE,uEAAwE;AAExE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,qCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,qDAA2B,EAAC,EAAE,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEhD,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClD,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAElD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;QAE1C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Hideable } from \"../../Hideable/Entities/Hideable\";\nimport { makeChannelModelEntity } from \"../Entities/ChannelModel\";\nimport { makeModelObjectsAreHiddenPM } from \"./ModelObjectsAreHiddenPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelObjectsAreHiddenPM(ao);\n\n const dm1 = channelModel.addModelObject(\"modelId\");\n const dm2 = channelModel.addModelObject(\"modelId\");\n\n const sm1Hideable = new Hideable(dm1.appObject);\n const sm2Hideable = new Hideable(dm2.appObject);\n\n sm1Hideable.addChangeObserver(dm1.notifyOnChange);\n sm2Hideable.addChangeObserver(dm2.notifyOnChange);\n\n return { appObj, appObjects, sm2Hideable, pm, sm1Hideable };\n}\n\ndescribe(\"Dissectable Meshes Are Hidden PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a dissectable mesh changes it's visibility\", () => {\n const { pm, sm2Hideable } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n sm2Hideable.isHidden = true;\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}
1
+ {"version":3,"file":"ModelObjectsAreHiddenPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,+DAA4D;AAC5D,2DAAkE;AAClE,uEAAwE;AAExE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,qCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,qDAA2B,EAAC,EAAE,CAAC,CAAC;IAC3C,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAErB,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEhD,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClD,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAElD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;QAE1C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Hideable } from \"../../Hideable/Entities/Hideable\";\nimport { makeChannelModelEntity } from \"../Entities/ChannelModel\";\nimport { makeModelObjectsAreHiddenPM } from \"./ModelObjectsAreHiddenPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelObjectsAreHiddenPM(ao);\n pm.addView(() => {});\n\n const dm1 = channelModel.addModelObject(\"modelId\");\n const dm2 = channelModel.addModelObject(\"modelId\");\n\n const sm1Hideable = new Hideable(dm1.appObject);\n const sm2Hideable = new Hideable(dm2.appObject);\n\n sm1Hideable.addChangeObserver(dm1.notifyOnChange);\n sm2Hideable.addChangeObserver(dm2.notifyOnChange);\n\n return { appObj, appObjects, sm2Hideable, pm, sm1Hideable };\n}\n\ndescribe(\"Dissectable Meshes Are Hidden PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a dissectable mesh changes it's visibility\", () => {\n const { pm, sm2Hideable } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n sm2Hideable.isHidden = true;\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}
@@ -26,7 +26,8 @@ class ModelObjectsAreStickablePMImp extends ModelObjectsAreStickablePM {
26
26
  }
27
27
  constructor(appObject) {
28
28
  super(appObject, ModelObjectsAreStickablePM.type);
29
- this.onRepoChange = () => {
29
+ this.defaultVM = false;
30
+ this.formVM = () => {
30
31
  if (!this.channelModel)
31
32
  return;
32
33
  let stickable = false;
@@ -40,13 +41,8 @@ class ModelObjectsAreStickablePMImp extends ModelObjectsAreStickablePM {
40
41
  });
41
42
  this.doUpdateView(stickable);
42
43
  };
43
- this.dispose = () => {
44
- super.dispose();
45
- this.channelModel?.removeChangeObserver(this.onRepoChange);
46
- };
47
44
  if (this.channelModel) {
48
- this.channelModel.addChangeObserver(this.onRepoChange);
49
- this.onRepoChange();
45
+ this.observeEntity(this.channelModel);
50
46
  }
51
47
  else {
52
48
  this.error("App Object does not have a ChannelModelEntity");
@@ -1 +1 @@
1
- {"version":3,"file":"ModelObjectsAreStickablePM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreStickablePM.ts"],"names":[],"mappings":";;;AAmBA,wEAIC;AAvBD,sCAAoE;AACpE,8DAAiE;AACjE,0CAAiD;AAEjD,MAAsB,0BAA2B,SAAQ,kBAAoB;IAG3E,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CACZ,0BAA0B,CAAC,IAAI,CAChC,CAAC;IACN,CAAC;;AAZH,gEAaC;AAZiB,+BAAI,GAAG,4BAA4B,CAAC;AActD,SAAgB,8BAA8B,CAC5C,SAAoB;IAEpB,OAAO,IAAI,6BAA6B,CAAC,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,6BAA8B,SAAQ,0BAA0B;IACpE,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,6BAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IA0BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAzBpD,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,SAAS;oBAAE,OAAO;gBAEtB,IACE,GAAG,CAAC,SAAS,CAAC,YAAY,CAAkB,2BAAe,CAAC,IAAI,CAAC;oBAC/D,EAAE,UAAU,EACd,CAAC;oBACD,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,YAAO,GAAG,GAAS,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { StickableEntity } from \"../../Stick/Entities/Stickable\";\nimport { ChannelModelEntity } from \"../Entities\";\n\nexport abstract class ModelObjectsAreStickablePM extends AppObjectPM<boolean> {\n static readonly type = \"ModelObjectsAreStickablePM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelObjectsAreStickablePM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelObjectsAreStickablePM>(\n ModelObjectsAreStickablePM.type,\n );\n }\n}\n\nexport function makeModelObjectsAreStickablePM(\n appObject: AppObject,\n): ModelObjectsAreStickablePM {\n return new ModelObjectsAreStickablePMImp(appObject);\n}\n\nclass ModelObjectsAreStickablePMImp extends ModelObjectsAreStickablePM {\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n onRepoChange = () => {\n if (!this.channelModel) return;\n\n let stickable = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (stickable) return;\n\n if (\n obj.appObject.getComponent<StickableEntity>(StickableEntity.type)\n ?.canBeStuck\n ) {\n stickable = true;\n }\n });\n\n this.doUpdateView(stickable);\n };\n\n dispose = (): void => {\n super.dispose();\n this.channelModel?.removeChangeObserver(this.onRepoChange);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelObjectsAreStickablePM.type);\n\n if (this.channelModel) {\n this.channelModel.addChangeObserver(this.onRepoChange);\n this.onRepoChange();\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ModelObjectsAreStickablePM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreStickablePM.ts"],"names":[],"mappings":";;;AAmBA,wEAIC;AAvBD,sCAAoE;AACpE,8DAAiE;AACjE,0CAAiD;AAEjD,MAAsB,0BAA2B,SAAQ,kBAAoB;IAG3E,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CACZ,0BAA0B,CAAC,IAAI,CAChC,CAAC;IACN,CAAC;;AAZH,gEAaC;AAZiB,+BAAI,GAAG,4BAA4B,CAAC;AActD,SAAgB,8BAA8B,CAC5C,SAAoB;IAEpB,OAAO,IAAI,6BAA6B,CAAC,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,6BAA8B,SAAQ,0BAA0B;IAGpE,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,6BAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAqBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAhCpD,cAAS,GAAG,KAAK,CAAC;QAYlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,SAAS;oBAAE,OAAO;gBAEtB,IACE,GAAG,CAAC,SAAS,CAAC,YAAY,CAAkB,2BAAe,CAAC,IAAI,CAAC;oBAC/D,EAAE,UAAU,EACd,CAAC;oBACD,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { StickableEntity } from \"../../Stick/Entities/Stickable\";\nimport { ChannelModelEntity } from \"../Entities\";\n\nexport abstract class ModelObjectsAreStickablePM extends AppObjectPM<boolean> {\n static readonly type = \"ModelObjectsAreStickablePM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelObjectsAreStickablePM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelObjectsAreStickablePM>(\n ModelObjectsAreStickablePM.type,\n );\n }\n}\n\nexport function makeModelObjectsAreStickablePM(\n appObject: AppObject,\n): ModelObjectsAreStickablePM {\n return new ModelObjectsAreStickablePMImp(appObject);\n}\n\nclass ModelObjectsAreStickablePMImp extends ModelObjectsAreStickablePM {\n defaultVM = false;\n\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.channelModel) return;\n\n let stickable = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (stickable) return;\n\n if (\n obj.appObject.getComponent<StickableEntity>(StickableEntity.type)\n ?.canBeStuck\n ) {\n stickable = true;\n }\n });\n\n this.doUpdateView(stickable);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelObjectsAreStickablePM.type);\n\n if (this.channelModel) {\n this.observeEntity(this.channelModel);\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
@@ -12,6 +12,7 @@ function makeTestRig() {
12
12
  const ao = appObjects.getOrCreate("ChannelModel");
13
13
  const channelModel = (0, Entities_1.makeChannelModelEntity)(ao);
14
14
  const pm = (0, ModelObjectsAreStickablePM_1.makeModelObjectsAreStickablePM)(ao);
15
+ pm.addView(() => { });
15
16
  const modelObject1 = channelModel.addModelObject("modelId1");
16
17
  const modelObject2 = channelModel.addModelObject("modelId2");
17
18
  const sm1Transform = Transform3D_1.Transform3D.addIfMissing(modelObject1.appObject);
@@ -1 +1 @@
1
- {"version":3,"file":"ModelObjectsAreStickablePM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreStickablePM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAAsC;AACtC,8DAAqE;AACrE,wEAAqE;AACrE,0CAAqD;AACrD,6EAA8E;AAE9E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,iCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,2DAA8B,EAAC,EAAE,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,yBAAW,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAE,CAAC;IACvE,MAAM,YAAY,GAAG,yBAAW,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAE,CAAC;IAEvE,IAAA,+BAAmB,EAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAA,+BAAmB,EAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE5C,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC5D,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAE5D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAChE,CAAC;AAED,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,YAAY,CAAC,aAAa,GAAG,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Vector3 } from \"@vived/core\";\nimport { makeStickableEntity } from \"../../Stick/Entities/Stickable\";\nimport { Transform3D } from \"../../Transform3D/Entities/Transform3D\";\nimport { makeChannelModelEntity } from \"../Entities\";\nimport { makeModelObjectsAreStickablePM } from \"./ModelObjectsAreStickablePM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelObjectsAreStickablePM(ao);\n\n const modelObject1 = channelModel.addModelObject(\"modelId1\");\n const modelObject2 = channelModel.addModelObject(\"modelId2\");\n\n const sm1Transform = Transform3D.addIfMissing(modelObject1.appObject)!;\n const sm2Transform = Transform3D.addIfMissing(modelObject2.appObject)!;\n\n makeStickableEntity(modelObject1.appObject);\n makeStickableEntity(modelObject2.appObject);\n\n sm1Transform.addChangeObserver(modelObject1.notifyOnChange);\n sm2Transform.addChangeObserver(modelObject2.notifyOnChange);\n\n return { appObj, appObjects, pm, sm1Transform, sm2Transform };\n}\n\ndescribe(\"Model Objects are are stickable PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a dissectable mesh changes it's position\", () => {\n const { pm, sm1Transform } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n sm1Transform.localPosition = new Vector3(1, 2, 3);\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}
1
+ {"version":3,"file":"ModelObjectsAreStickablePM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsAreStickablePM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAAsC;AACtC,8DAAqE;AACrE,wEAAqE;AACrE,0CAAqD;AACrD,6EAA8E;AAE9E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,iCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,2DAA8B,EAAC,EAAE,CAAC,CAAC;IAC9C,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAErB,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,yBAAW,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAE,CAAC;IACvE,MAAM,YAAY,GAAG,yBAAW,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAE,CAAC;IAEvE,IAAA,+BAAmB,EAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAA,+BAAmB,EAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE5C,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC5D,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAE5D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAChE,CAAC;AAED,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,YAAY,CAAC,aAAa,GAAG,IAAI,cAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Vector3 } from \"@vived/core\";\nimport { makeStickableEntity } from \"../../Stick/Entities/Stickable\";\nimport { Transform3D } from \"../../Transform3D/Entities/Transform3D\";\nimport { makeChannelModelEntity } from \"../Entities\";\nimport { makeModelObjectsAreStickablePM } from \"./ModelObjectsAreStickablePM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelObjectsAreStickablePM(ao);\n pm.addView(() => {});\n\n const modelObject1 = channelModel.addModelObject(\"modelId1\");\n const modelObject2 = channelModel.addModelObject(\"modelId2\");\n\n const sm1Transform = Transform3D.addIfMissing(modelObject1.appObject)!;\n const sm2Transform = Transform3D.addIfMissing(modelObject2.appObject)!;\n\n makeStickableEntity(modelObject1.appObject);\n makeStickableEntity(modelObject2.appObject);\n\n sm1Transform.addChangeObserver(modelObject1.notifyOnChange);\n sm2Transform.addChangeObserver(modelObject2.notifyOnChange);\n\n return { appObj, appObjects, pm, sm1Transform, sm2Transform };\n}\n\ndescribe(\"Model Objects are are stickable PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a dissectable mesh changes it's position\", () => {\n const { pm, sm1Transform } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n sm1Transform.localPosition = new Vector3(1, 2, 3);\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}
@@ -26,7 +26,8 @@ class ModelObjectsHaveOverlayPMImp extends ModelObjectsHaveOverlayPM {
26
26
  }
27
27
  constructor(appObject) {
28
28
  super(appObject, ModelObjectsHaveOverlayPM.type);
29
- this.onRepoChange = () => {
29
+ this.defaultVM = false;
30
+ this.formVM = () => {
30
31
  if (!this.channelModel)
31
32
  return;
32
33
  let haveOverlay = false;
@@ -40,15 +41,8 @@ class ModelObjectsHaveOverlayPMImp extends ModelObjectsHaveOverlayPM {
40
41
  });
41
42
  this.doUpdateView(haveOverlay);
42
43
  };
43
- this.dispose = () => {
44
- super.dispose();
45
- this.channelModel?.removeChangeObserver(this.onRepoChange);
46
- this.channelModel?.removeOnDisposeObserver(this.dispose);
47
- };
48
44
  if (this.channelModel) {
49
- this.channelModel.addChangeObserver(this.onRepoChange);
50
- this.channelModel.addOnDisposeObserver(() => this.dispose());
51
- this.onRepoChange();
45
+ this.observeEntity(this.channelModel);
52
46
  }
53
47
  else {
54
48
  this.error("App Object does not have a ChannelModelEntity");
@@ -1 +1 @@
1
- {"version":3,"file":"ModelObjectsHaveOverlayPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsHaveOverlayPM.ts"],"names":[],"mappings":";;;AAiBA,sEAIC;AArBD,sCAAoE;AACpE,qDAAqE;AACrE,0CAAiD;AAEjD,MAAsB,yBAA0B,SAAQ,kBAAoB;IAG1E,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAA4B,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;;AAVH,8DAWC;AAViB,8BAAI,GAAG,2BAA2B,CAAC;AAYrD,SAAgB,6BAA6B,CAC3C,SAAoB;IAEpB,OAAO,IAAI,4BAA4B,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,4BAA6B,SAAQ,yBAAyB;IAClE,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,6BAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IA2BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC;QA1BnD,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,WAAW;oBAAE,OAAO;gBAExB,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CACxC,2BAAY,CAAC,IAAI,CAClB,CAAC;gBACF,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,gCAAiB,CAAC,IAAI,EAAE,CAAC;oBAC/D,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC;QAEF,YAAO,GAAG,GAAS,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { OverlayColor, OverlayColorEnums } from \"../../OverlayColor\";\nimport { ChannelModelEntity } from \"../Entities\";\n\nexport abstract class ModelObjectsHaveOverlayPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelObjectsHaveOverlayPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelObjectsHaveOverlayPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelObjectsHaveOverlayPM>(ModelObjectsHaveOverlayPM.type);\n }\n}\n\nexport function makeModelObjectsHaveOverlayPM(\n appObject: AppObject,\n): ModelObjectsHaveOverlayPM {\n return new ModelObjectsHaveOverlayPMImp(appObject);\n}\n\nclass ModelObjectsHaveOverlayPMImp extends ModelObjectsHaveOverlayPM {\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n onRepoChange = () => {\n if (!this.channelModel) return;\n\n let haveOverlay = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (haveOverlay) return;\n\n const overlay = obj.appObject.getComponent<OverlayColor>(\n OverlayColor.type,\n );\n if (overlay && overlay.overlayColor !== OverlayColorEnums.NONE) {\n haveOverlay = true;\n }\n });\n\n this.doUpdateView(haveOverlay);\n };\n\n dispose = (): void => {\n super.dispose();\n this.channelModel?.removeChangeObserver(this.onRepoChange);\n this.channelModel?.removeOnDisposeObserver(this.dispose);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelObjectsHaveOverlayPM.type);\n\n if (this.channelModel) {\n this.channelModel.addChangeObserver(this.onRepoChange);\n this.channelModel.addOnDisposeObserver(() => this.dispose());\n this.onRepoChange();\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ModelObjectsHaveOverlayPM.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsHaveOverlayPM.ts"],"names":[],"mappings":";;;AAiBA,sEAIC;AArBD,sCAAoE;AACpE,qDAAqE;AACrE,0CAAiD;AAEjD,MAAsB,yBAA0B,SAAQ,kBAAoB;IAG1E,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,OAAO,UAAU;aACd,GAAG,CAAC,QAAQ,CAAC;YACd,EAAE,YAAY,CAA4B,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;;AAVH,8DAWC;AAViB,8BAAI,GAAG,2BAA2B,CAAC;AAYrD,SAAgB,6BAA6B,CAC3C,SAAoB;IAEpB,OAAO,IAAI,4BAA4B,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,4BAA6B,SAAQ,yBAAyB;IAGlE,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,6BAAkB,CAAC,IAAI,CACxB,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAqBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAhCnD,cAAS,GAAG,KAAK,CAAC;QAYlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,IAAI,WAAW;oBAAE,OAAO;gBAExB,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CACxC,2BAAY,CAAC,IAAI,CAClB,CAAC;gBACF,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,gCAAiB,CAAC,IAAI,EAAE,CAAC;oBAC/D,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\nimport { OverlayColor, OverlayColorEnums } from \"../../OverlayColor\";\nimport { ChannelModelEntity } from \"../Entities\";\n\nexport abstract class ModelObjectsHaveOverlayPM extends AppObjectPM<boolean> {\n static readonly type = \"ModelObjectsHaveOverlayPM\";\n\n static get(\n appObjID: string,\n appObjects: AppObjectRepo,\n ): ModelObjectsHaveOverlayPM | undefined {\n return appObjects\n .get(appObjID)\n ?.getComponent<ModelObjectsHaveOverlayPM>(ModelObjectsHaveOverlayPM.type);\n }\n}\n\nexport function makeModelObjectsHaveOverlayPM(\n appObject: AppObject,\n): ModelObjectsHaveOverlayPM {\n return new ModelObjectsHaveOverlayPMImp(appObject);\n}\n\nclass ModelObjectsHaveOverlayPMImp extends ModelObjectsHaveOverlayPM {\n defaultVM = false;\n\n private get channelModel() {\n return this.getCachedLocalComponent<ChannelModelEntity>(\n ChannelModelEntity.type,\n );\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.channelModel) return;\n\n let haveOverlay = false;\n\n this.channelModel.modelObjects().forEach((obj) => {\n if (haveOverlay) return;\n\n const overlay = obj.appObject.getComponent<OverlayColor>(\n OverlayColor.type,\n );\n if (overlay && overlay.overlayColor !== OverlayColorEnums.NONE) {\n haveOverlay = true;\n }\n });\n\n this.doUpdateView(haveOverlay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ModelObjectsHaveOverlayPM.type);\n\n if (this.channelModel) {\n this.observeEntity(this.channelModel);\n } else {\n this.error(\"App Object does not have a ChannelModelEntity\");\n }\n }\n}\n"]}
@@ -10,6 +10,7 @@ function makeTestRig() {
10
10
  const ao = appObjects.getOrCreate("ChannelModel");
11
11
  const channelModel = (0, Entities_1.makeChannelModelEntity)(ao);
12
12
  const pm = (0, ModelObjectsHaveOverlayPM_1.makeModelObjectsHaveOverlayPM)(ao);
13
+ pm.addView(() => { });
13
14
  const dm1 = channelModel.addModelObject("modelId");
14
15
  const dm2 = channelModel.addModelObject("modelId");
15
16
  const overlay1 = new OverlayColor_1.OverlayColor(dm1.appObject);
@@ -1 +1 @@
1
- {"version":3,"file":"ModelObjectsHaveOverlayPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,qDAAqE;AACrE,0CAAqD;AACrD,2EAA4E;AAE5E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,iCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,yDAA6B,EAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,IAAI,2BAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,2BAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEjD,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE/C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,QAAQ,CAAC,YAAY,GAAG,gCAAiB,CAAC,KAAK,CAAC;QAEhD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { OverlayColor, OverlayColorEnums } from \"../../OverlayColor\";\nimport { makeChannelModelEntity } from \"../Entities\";\nimport { makeModelObjectsHaveOverlayPM } from \"./ModelObjectsHaveOverlayPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelObjectsHaveOverlayPM(ao);\n\n const dm1 = channelModel.addModelObject(\"modelId\");\n const dm2 = channelModel.addModelObject(\"modelId\");\n\n const overlay1 = new OverlayColor(dm1.appObject);\n const overlay2 = new OverlayColor(dm2.appObject);\n\n overlay1.addChangeObserver(dm1.notifyOnChange);\n overlay2.addChangeObserver(dm2.notifyOnChange);\n\n return { appObj, appObjects, overlay2, pm, overlay1 };\n}\n\ndescribe(\"Model Objects have overlay PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a dissectable mesh changes it's visibility\", () => {\n const { pm, overlay2 } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n overlay2.overlayColor = OverlayColorEnums.BLACK;\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}
1
+ {"version":3,"file":"ModelObjectsHaveOverlayPM.test.js","sourceRoot":"","sources":["../../../../src/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,qDAAqE;AACrE,0CAAqD;AACrD,2EAA4E;AAE5E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAA,iCAAsB,EAAC,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAA,yDAA6B,EAAC,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAErB,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,IAAI,2BAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,2BAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEjD,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE/C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAEvC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,QAAQ,CAAC,YAAY,GAAG,gCAAiB,CAAC,KAAK,CAAC;QAEhD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,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;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { OverlayColor, OverlayColorEnums } from \"../../OverlayColor\";\nimport { makeChannelModelEntity } from \"../Entities\";\nimport { makeModelObjectsHaveOverlayPM } from \"./ModelObjectsHaveOverlayPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObj = appObjects.getOrCreate(\"appObj\");\n\n const ao = appObjects.getOrCreate(\"ChannelModel\");\n const channelModel = makeChannelModelEntity(ao);\n const pm = makeModelObjectsHaveOverlayPM(ao);\n pm.addView(() => {});\n\n const dm1 = channelModel.addModelObject(\"modelId\");\n const dm2 = channelModel.addModelObject(\"modelId\");\n\n const overlay1 = new OverlayColor(dm1.appObject);\n const overlay2 = new OverlayColor(dm2.appObject);\n\n overlay1.addChangeObserver(dm1.notifyOnChange);\n overlay2.addChangeObserver(dm2.notifyOnChange);\n\n return { appObj, appObjects, overlay2, pm, overlay1 };\n}\n\ndescribe(\"Model Objects have overlay PM\", () => {\n it(\"Sets the last vm on construction\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.lastVM).not.toBeUndefined();\n });\n\n it(\"Updates the view when a dissectable mesh changes it's visibility\", () => {\n const { pm, overlay2 } = makeTestRig();\n\n expect(pm.lastVM).toEqual(false);\n\n overlay2.overlayColor = OverlayColorEnums.BLACK;\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Compares the VMs\", () => {\n const { pm } = makeTestRig();\n\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n });\n});\n"]}