@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.
- package/dist/cjs/Babylon/Adapters/showBabylonInspectorAdapter.test.js +3 -0
- package/dist/cjs/Babylon/Adapters/showBabylonInspectorAdapter.test.js.map +1 -1
- package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
- package/dist/cjs/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
- package/dist/cjs/Babylon/PM/ShowBabylonInspectorPM.js +9 -6
- package/dist/cjs/Babylon/PM/ShowBabylonInspectorPM.js.map +1 -1
- package/dist/cjs/BaseApp/PM/IsAuthoringPM.js +6 -9
- package/dist/cjs/BaseApp/PM/IsAuthoringPM.js.map +1 -1
- package/dist/cjs/BaseApp/PM/IsAuthoringPM.test.js +2 -6
- package/dist/cjs/BaseApp/PM/IsAuthoringPM.test.js.map +1 -1
- package/dist/cjs/BaseApp/PM/IsReviewingPM.js +6 -9
- package/dist/cjs/BaseApp/PM/IsReviewingPM.js.map +1 -1
- package/dist/cjs/BaseApp/PM/IsReviewingPM.test.js +2 -6
- package/dist/cjs/BaseApp/PM/IsReviewingPM.test.js.map +1 -1
- package/dist/cjs/BaseApp/PM/SlideTextPM.js +6 -5
- package/dist/cjs/BaseApp/PM/SlideTextPM.js.map +1 -1
- package/dist/cjs/BaseApp/PM/SlideTextPM.test.js +2 -6
- package/dist/cjs/BaseApp/PM/SlideTextPM.test.js.map +1 -1
- package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js +1 -0
- package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
- package/dist/cjs/BaseApp/UC/SerializeBaseAppState.js +1 -1
- package/dist/cjs/BaseApp/UC/SerializeBaseAppState.js.map +1 -1
- package/dist/cjs/Callouts/Factories/calloutFactory.test.js +6 -0
- package/dist/cjs/Callouts/Factories/calloutFactory.test.js.map +1 -1
- package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js +8 -9
- package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
- package/dist/cjs/Callouts/UC/SerializeCallouts.js +1 -1
- package/dist/cjs/Callouts/UC/SerializeCallouts.js.map +1 -1
- package/dist/cjs/Callouts/UC/TryAddCallout.test.js.map +1 -1
- package/dist/cjs/Challenge/UCs/SerializeChallenge.js +1 -1
- package/dist/cjs/Challenge/UCs/SerializeChallenge.js.map +1 -1
- package/dist/cjs/Challenge/UCs/ShowChallengeHelpUC.test.js +3 -2
- package/dist/cjs/Challenge/UCs/ShowChallengeHelpUC.test.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ActiveModelPM.js +6 -5
- package/dist/cjs/ChannelModel/PMs/ActiveModelPM.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ActiveModelPM.test.js +2 -6
- package/dist/cjs/ChannelModel/PMs/ActiveModelPM.test.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.js +5 -3
- package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.test.js +1 -0
- package/dist/cjs/ChannelModel/PMs/ModelHasCalloutsPM.test.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.js +3 -7
- package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.test.js +1 -0
- package/dist/cjs/ChannelModel/PMs/ModelHasLandmarksPM.test.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.js +3 -9
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js +1 -0
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.js +3 -7
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js +1 -0
- package/dist/cjs/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js +3 -9
- package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js.map +1 -1
- package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js +1 -0
- package/dist/cjs/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js.map +1 -1
- package/dist/cjs/ChannelModel/UC/LoadChannelModelUC.test.js +6 -6
- package/dist/cjs/ChannelModel/UC/LoadChannelModelUC.test.js.map +1 -1
- package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js +1 -1
- package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
- package/dist/cjs/ChannelModel/UC/SerializeActiveModel.js +1 -1
- package/dist/cjs/ChannelModel/UC/SerializeActiveModel.js.map +1 -1
- package/dist/cjs/Dispatcher/Entities/AppDispatcher.js +7 -0
- package/dist/cjs/Dispatcher/Entities/AppDispatcher.js.map +1 -1
- package/dist/cjs/Dispatcher/Entities/AppDispatcher.test.js +31 -0
- package/dist/cjs/Dispatcher/Entities/AppDispatcher.test.js.map +1 -1
- package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js +3 -1
- package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/GetAssetBlobURLUCMock.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/GetAssetBlobURLUCMock.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/GetLinkedAssetsUCMock.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/GetLinkedAssetsUCMock.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockDispatcher.js +2 -2
- package/dist/cjs/Dispatcher/Mocks/MockDispatcher.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockGetAssetFolderURL.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockGetAssetFolderURL.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowAlert.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowAlert.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowConfirm.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowConfirm.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowMarkdown.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowMarkdown.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowSpinner.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockShowSpinner.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/MockSubmitResult.js +5 -5
- package/dist/cjs/Dispatcher/Mocks/MockSubmitResult.js.map +1 -1
- package/dist/cjs/Dispatcher/Mocks/ShowSelectModelUCMock.js +1 -1
- package/dist/cjs/Dispatcher/Mocks/ShowSelectModelUCMock.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/AppIsReadyUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/AppIsReadyUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/DispatchStartZSpaceUC.test.js +2 -1
- package/dist/cjs/Dispatcher/UC/DispatchStartZSpaceUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/DispatchStateChangeUC.test.js +1 -0
- package/dist/cjs/Dispatcher/UC/DispatchStateChangeUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/DispatchStopZSpaceUC.test.js +2 -1
- package/dist/cjs/Dispatcher/UC/DispatchStopZSpaceUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/GetAssetBlobURLUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/GetAssetBlobURLUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/GetAssetFolderURLUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/GetAssetFolderURLUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/GetAssetMetaUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/GetAssetMetaUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/GetAssetsForOwnerUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/GetAssetsForOwnerUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/GetLinkedAssetsUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/GetLinkedAssetsUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/GoToNextStateUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/GoToNextStateUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/GoToPreviousStateUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/GoToPreviousStateUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/HasNextStateUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/HasNextStateUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/HasPreviousStateUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/HasPreviousStateUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/IsAssetFetchedUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/IsAssetFetchedUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/IsZSpaceAvailableUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/IsZSpaceAvailableUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/RestoreCurrentStateUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/RestoreCurrentStateUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/StateIsCompleteUC.test.js +3 -1
- package/dist/cjs/Dispatcher/UC/StateIsCompleteUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/SubmitActivityAssetUC.test.js +5 -3
- package/dist/cjs/Dispatcher/UC/SubmitActivityAssetUC.test.js.map +1 -1
- package/dist/cjs/Dispatcher/UC/SubmitResultResultUC.test.js +11 -5
- package/dist/cjs/Dispatcher/UC/SubmitResultResultUC.test.js.map +1 -1
- package/dist/cjs/Enablement/PM/EnabledStatePM.js +5 -9
- package/dist/cjs/Enablement/PM/EnabledStatePM.js.map +1 -1
- package/dist/cjs/Enablement/PM/EnabledStatePM.test.js +1 -0
- package/dist/cjs/Enablement/PM/EnabledStatePM.test.js.map +1 -1
- package/dist/cjs/Environment/UCs/SerializeEnvironment.js +1 -1
- package/dist/cjs/Environment/UCs/SerializeEnvironment.js.map +1 -1
- package/dist/cjs/Hideable/Factories/setupHideable.test.js +6 -0
- package/dist/cjs/Hideable/Factories/setupHideable.test.js.map +1 -1
- package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js +1 -1
- package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
- package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
- package/dist/cjs/HoverLabel/UseCases/SerializeAllowHoverLabel.js +1 -1
- package/dist/cjs/HoverLabel/UseCases/SerializeAllowHoverLabel.js.map +1 -1
- package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
- package/dist/cjs/Label/Controller/submitCustomLabel.test.js +3 -0
- package/dist/cjs/Label/Controller/submitCustomLabel.test.js.map +1 -1
- package/dist/cjs/Label/Controller/updateCustomLabel.test.js +3 -0
- package/dist/cjs/Label/Controller/updateCustomLabel.test.js.map +1 -1
- package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js +0 -7
- package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
- package/dist/cjs/Label/UC/SerializeCustomLabels.js +1 -1
- package/dist/cjs/Label/UC/SerializeCustomLabels.js.map +1 -1
- package/dist/cjs/Label/UC/SetCustomLabelUC.test.js +0 -7
- package/dist/cjs/Label/UC/SetCustomLabelUC.test.js.map +1 -1
- package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
- package/dist/cjs/LabelDrop/UseCases/SerializeLabelDrop.js +1 -1
- package/dist/cjs/LabelDrop/UseCases/SerializeLabelDrop.js.map +1 -1
- package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
- package/dist/cjs/Landmarks/PM/LandmarkSizePM.js +5 -8
- package/dist/cjs/Landmarks/PM/LandmarkSizePM.js.map +1 -1
- package/dist/cjs/Landmarks/UseCases/SerializeLandmarks.js +1 -1
- package/dist/cjs/Landmarks/UseCases/SerializeLandmarks.js.map +1 -1
- package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +2 -0
- package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
- package/dist/cjs/ObjectPick/UseCases/SerializeObjectPick.js +1 -1
- package/dist/cjs/ObjectPick/UseCases/SerializeObjectPick.js.map +1 -1
- package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
- package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
- package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
- package/dist/cjs/OverlayColor/UC/SerializeOverlayColoredObjects.js +1 -1
- package/dist/cjs/OverlayColor/UC/SerializeOverlayColoredObjects.js.map +1 -1
- package/dist/cjs/Question/UC/SerializeQuestionChallenge.js +1 -1
- package/dist/cjs/Question/UC/SerializeQuestionChallenge.js.map +1 -1
- package/dist/cjs/Question/UC/SubmitQuestionAnswerUC.test.js +1 -0
- package/dist/cjs/Question/UC/SubmitQuestionAnswerUC.test.js.map +1 -1
- package/dist/cjs/RequestHandler/Entities/AppHandler.js +4 -0
- package/dist/cjs/RequestHandler/Entities/AppHandler.js.map +1 -1
- package/dist/cjs/RequestHandler/Entities/AppHandler.test.js +27 -0
- package/dist/cjs/RequestHandler/Entities/AppHandler.test.js.map +1 -1
- package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.js +28 -29
- package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.js.map +1 -1
- package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js +128 -0
- package/dist/cjs/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js.map +1 -0
- package/dist/cjs/RequestHandler/Mocks/MockAppHandlerEntity.js +1 -0
- package/dist/cjs/RequestHandler/Mocks/MockAppHandlerEntity.js.map +1 -1
- package/dist/cjs/SceneRoot/UC/SerializeSceneRoot.js +1 -1
- package/dist/cjs/SceneRoot/UC/SerializeSceneRoot.js.map +1 -1
- package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
- package/dist/cjs/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
- package/dist/cjs/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
- package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.js +21 -0
- package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.js.map +1 -0
- package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.test.js +34 -0
- package/dist/cjs/StateMachine/Controller/clickRestorePreviousState.test.js.map +1 -0
- package/dist/cjs/StateMachine/Controller/index.js +1 -1
- package/dist/cjs/StateMachine/Controller/index.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/StateMachineEntity.js +26 -4
- package/dist/cjs/StateMachine/Entities/StateMachineEntity.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/StateMachineEntity.test.js +23 -4
- package/dist/cjs/StateMachine/Entities/StateMachineEntity.test.js.map +1 -1
- package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
- package/dist/cjs/StoredView/PM/HasStoredViewPM.js +6 -10
- package/dist/cjs/StoredView/PM/HasStoredViewPM.js.map +1 -1
- package/dist/cjs/StoredView/PM/HasStoredViewPM.test.js +1 -0
- package/dist/cjs/StoredView/PM/HasStoredViewPM.test.js.map +1 -1
- package/dist/cjs/StoredView/UC/SerializeStoredView.js +1 -1
- package/dist/cjs/StoredView/UC/SerializeStoredView.js.map +1 -1
- package/dist/cjs/Stylus/PMs/StylusIsInUsePM.js +7 -6
- package/dist/cjs/Stylus/PMs/StylusIsInUsePM.js.map +1 -1
- package/dist/cjs/Stylus/PMs/StylusIsInUsePM.test.js +2 -6
- package/dist/cjs/Stylus/PMs/StylusIsInUsePM.test.js.map +1 -1
- package/dist/cjs/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
- package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
- package/dist/cjs/Transform3D/UC/PinchTransform.test.js.map +1 -1
- package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
- package/dist/cjs/Transparency/UCs/SerializeTransparentObjects.js +1 -1
- package/dist/cjs/Transparency/UCs/SerializeTransparentObjects.js.map +1 -1
- package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.js +6 -5
- package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.js.map +1 -1
- package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.test.js +4 -8
- package/dist/cjs/zSpace/PM/ZSpaceIsEnabledPM.test.js.map +1 -1
- package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.js +6 -5
- package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.js.map +1 -1
- package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.test.js +1 -0
- package/dist/cjs/zSpace/PM/ZSpaceIsSupportedPM.test.js.map +1 -1
- package/dist/esm/Babylon/Adapters/showBabylonInspectorAdapter.test.js +3 -0
- package/dist/esm/Babylon/Adapters/showBabylonInspectorAdapter.test.js.map +1 -1
- package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
- package/dist/esm/Babylon/Mocks/ShowBabylonInspectorPmMock.js.map +1 -1
- package/dist/esm/Babylon/PM/ShowBabylonInspectorPM.js +9 -6
- package/dist/esm/Babylon/PM/ShowBabylonInspectorPM.js.map +1 -1
- package/dist/esm/BaseApp/PM/IsAuthoringPM.js +7 -10
- package/dist/esm/BaseApp/PM/IsAuthoringPM.js.map +1 -1
- package/dist/esm/BaseApp/PM/IsAuthoringPM.test.js +2 -6
- package/dist/esm/BaseApp/PM/IsAuthoringPM.test.js.map +1 -1
- package/dist/esm/BaseApp/PM/IsReviewingPM.js +7 -10
- package/dist/esm/BaseApp/PM/IsReviewingPM.js.map +1 -1
- package/dist/esm/BaseApp/PM/IsReviewingPM.test.js +2 -6
- package/dist/esm/BaseApp/PM/IsReviewingPM.test.js.map +1 -1
- package/dist/esm/BaseApp/PM/SlideTextPM.js +7 -6
- package/dist/esm/BaseApp/PM/SlideTextPM.js.map +1 -1
- package/dist/esm/BaseApp/PM/SlideTextPM.test.js +2 -6
- package/dist/esm/BaseApp/PM/SlideTextPM.test.js.map +1 -1
- package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js +1 -0
- package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
- package/dist/esm/BaseApp/UC/SerializeBaseAppState.js +1 -1
- package/dist/esm/BaseApp/UC/SerializeBaseAppState.js.map +1 -1
- package/dist/esm/Callouts/Factories/calloutFactory.test.js +6 -0
- package/dist/esm/Callouts/Factories/calloutFactory.test.js.map +1 -1
- package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js +8 -9
- package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
- package/dist/esm/Callouts/UC/SerializeCallouts.js +1 -1
- package/dist/esm/Callouts/UC/SerializeCallouts.js.map +1 -1
- package/dist/esm/Callouts/UC/TryAddCallout.test.js.map +1 -1
- package/dist/esm/Challenge/UCs/SerializeChallenge.js +1 -1
- package/dist/esm/Challenge/UCs/SerializeChallenge.js.map +1 -1
- package/dist/esm/Challenge/UCs/ShowChallengeHelpUC.test.js +3 -2
- package/dist/esm/Challenge/UCs/ShowChallengeHelpUC.test.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ActiveModelPM.js +7 -6
- package/dist/esm/ChannelModel/PMs/ActiveModelPM.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ActiveModelPM.test.js +2 -6
- package/dist/esm/ChannelModel/PMs/ActiveModelPM.test.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.js +5 -3
- package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.test.js +1 -0
- package/dist/esm/ChannelModel/PMs/ModelHasCalloutsPM.test.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.js +3 -7
- package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.test.js +1 -0
- package/dist/esm/ChannelModel/PMs/ModelHasLandmarksPM.test.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.js +3 -9
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js +1 -0
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreHiddenPM.test.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.js +3 -7
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js +1 -0
- package/dist/esm/ChannelModel/PMs/ModelObjectsAreStickablePM.test.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js +3 -9
- package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.js.map +1 -1
- package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js +1 -0
- package/dist/esm/ChannelModel/PMs/ModelObjectsHaveOverlayPM.test.js.map +1 -1
- package/dist/esm/ChannelModel/UC/LoadChannelModelUC.test.js +6 -6
- package/dist/esm/ChannelModel/UC/LoadChannelModelUC.test.js.map +1 -1
- package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js +1 -1
- package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
- package/dist/esm/ChannelModel/UC/SerializeActiveModel.js +1 -1
- package/dist/esm/ChannelModel/UC/SerializeActiveModel.js.map +1 -1
- package/dist/esm/Dispatcher/Entities/AppDispatcher.js +7 -0
- package/dist/esm/Dispatcher/Entities/AppDispatcher.js.map +1 -1
- package/dist/esm/Dispatcher/Entities/AppDispatcher.test.js +31 -0
- package/dist/esm/Dispatcher/Entities/AppDispatcher.test.js.map +1 -1
- package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js +3 -1
- package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/GetAssetBlobURLUCMock.js +1 -1
- package/dist/esm/Dispatcher/Mocks/GetAssetBlobURLUCMock.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/GetLinkedAssetsUCMock.js +1 -1
- package/dist/esm/Dispatcher/Mocks/GetLinkedAssetsUCMock.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockDispatcher.js +2 -2
- package/dist/esm/Dispatcher/Mocks/MockDispatcher.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockGetAssetFolderURL.js +1 -1
- package/dist/esm/Dispatcher/Mocks/MockGetAssetFolderURL.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowAlert.js +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowAlert.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowConfirm.js +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowConfirm.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowMarkdown.js +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowMarkdown.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowSpinner.js +1 -1
- package/dist/esm/Dispatcher/Mocks/MockShowSpinner.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/MockSubmitResult.js +5 -5
- package/dist/esm/Dispatcher/Mocks/MockSubmitResult.js.map +1 -1
- package/dist/esm/Dispatcher/Mocks/ShowSelectModelUCMock.js +1 -1
- package/dist/esm/Dispatcher/Mocks/ShowSelectModelUCMock.js.map +1 -1
- package/dist/esm/Dispatcher/UC/AppIsReadyUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/AppIsReadyUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/DispatchStartZSpaceUC.test.js +2 -1
- package/dist/esm/Dispatcher/UC/DispatchStartZSpaceUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/DispatchStateChangeUC.test.js +1 -0
- package/dist/esm/Dispatcher/UC/DispatchStateChangeUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/DispatchStopZSpaceUC.test.js +2 -1
- package/dist/esm/Dispatcher/UC/DispatchStopZSpaceUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/GetAssetBlobURLUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/GetAssetBlobURLUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/GetAssetFolderURLUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/GetAssetFolderURLUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/GetAssetMetaUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/GetAssetMetaUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/GetAssetsForOwnerUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/GetAssetsForOwnerUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/GetLinkedAssetsUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/GetLinkedAssetsUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/GoToNextStateUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/GoToNextStateUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/GoToPreviousStateUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/GoToPreviousStateUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/HasNextStateUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/HasNextStateUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/HasPreviousStateUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/HasPreviousStateUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/IsAssetFetchedUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/IsAssetFetchedUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/IsZSpaceAvailableUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/IsZSpaceAvailableUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/RegisterExternalStylesheetsUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/RestoreCurrentStateUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/RestoreCurrentStateUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/StateIsCompleteUC.test.js +3 -1
- package/dist/esm/Dispatcher/UC/StateIsCompleteUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/SubmitActivityAssetUC.test.js +5 -3
- package/dist/esm/Dispatcher/UC/SubmitActivityAssetUC.test.js.map +1 -1
- package/dist/esm/Dispatcher/UC/SubmitResultResultUC.test.js +11 -5
- package/dist/esm/Dispatcher/UC/SubmitResultResultUC.test.js.map +1 -1
- package/dist/esm/Enablement/PM/EnabledStatePM.js +5 -9
- package/dist/esm/Enablement/PM/EnabledStatePM.js.map +1 -1
- package/dist/esm/Enablement/PM/EnabledStatePM.test.js +1 -0
- package/dist/esm/Enablement/PM/EnabledStatePM.test.js.map +1 -1
- package/dist/esm/Environment/UCs/SerializeEnvironment.js +1 -1
- package/dist/esm/Environment/UCs/SerializeEnvironment.js.map +1 -1
- package/dist/esm/Hideable/Factories/setupHideable.test.js +6 -0
- package/dist/esm/Hideable/Factories/setupHideable.test.js.map +1 -1
- package/dist/esm/Hideable/UCs/SerializeHideableObjects.js +1 -1
- package/dist/esm/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
- package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
- package/dist/esm/HoverLabel/UseCases/SerializeAllowHoverLabel.js +1 -1
- package/dist/esm/HoverLabel/UseCases/SerializeAllowHoverLabel.js.map +1 -1
- package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
- package/dist/esm/Label/Controller/submitCustomLabel.test.js +3 -0
- package/dist/esm/Label/Controller/submitCustomLabel.test.js.map +1 -1
- package/dist/esm/Label/Controller/updateCustomLabel.test.js +3 -0
- package/dist/esm/Label/Controller/updateCustomLabel.test.js.map +1 -1
- package/dist/esm/Label/UC/ClearCustomLabelUC.test.js +0 -7
- package/dist/esm/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
- package/dist/esm/Label/UC/SerializeCustomLabels.js +1 -1
- package/dist/esm/Label/UC/SerializeCustomLabels.js.map +1 -1
- package/dist/esm/Label/UC/SetCustomLabelUC.test.js +0 -7
- package/dist/esm/Label/UC/SetCustomLabelUC.test.js.map +1 -1
- package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js.map +1 -1
- package/dist/esm/LabelDrop/UseCases/SerializeLabelDrop.js +1 -1
- package/dist/esm/LabelDrop/UseCases/SerializeLabelDrop.js.map +1 -1
- package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
- package/dist/esm/Landmarks/PM/LandmarkSizePM.js +5 -8
- package/dist/esm/Landmarks/PM/LandmarkSizePM.js.map +1 -1
- package/dist/esm/Landmarks/UseCases/SerializeLandmarks.js +1 -1
- package/dist/esm/Landmarks/UseCases/SerializeLandmarks.js.map +1 -1
- package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +2 -0
- package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
- package/dist/esm/ObjectPick/UseCases/SerializeObjectPick.js +1 -1
- package/dist/esm/ObjectPick/UseCases/SerializeObjectPick.js.map +1 -1
- package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
- package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +1 -0
- package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
- package/dist/esm/OverlayColor/UC/SerializeOverlayColoredObjects.js +1 -1
- package/dist/esm/OverlayColor/UC/SerializeOverlayColoredObjects.js.map +1 -1
- package/dist/esm/Question/UC/SerializeQuestionChallenge.js +1 -1
- package/dist/esm/Question/UC/SerializeQuestionChallenge.js.map +1 -1
- package/dist/esm/Question/UC/SubmitQuestionAnswerUC.test.js +1 -0
- package/dist/esm/Question/UC/SubmitQuestionAnswerUC.test.js.map +1 -1
- package/dist/esm/RequestHandler/Entities/AppHandler.js +4 -0
- package/dist/esm/RequestHandler/Entities/AppHandler.js.map +1 -1
- package/dist/esm/RequestHandler/Entities/AppHandler.test.js +27 -0
- package/dist/esm/RequestHandler/Entities/AppHandler.test.js.map +1 -1
- package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.js +28 -29
- package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.js.map +1 -1
- package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js +126 -0
- package/dist/esm/RequestHandler/Factories/RequestHandlerFeatureFactory.test.js.map +1 -0
- package/dist/esm/RequestHandler/Mocks/MockAppHandlerEntity.js +1 -0
- package/dist/esm/RequestHandler/Mocks/MockAppHandlerEntity.js.map +1 -1
- package/dist/esm/SceneRoot/UC/SerializeSceneRoot.js +1 -1
- package/dist/esm/SceneRoot/UC/SerializeSceneRoot.js.map +1 -1
- package/dist/esm/Selection/Controller/MouseHoverOnAppObject.test.js.map +1 -1
- package/dist/esm/Selection/Controller/MousePressOnAppObject.test.js.map +1 -1
- package/dist/esm/Selection/Controller/MouseSelectAppObject.test.js.map +1 -1
- package/dist/esm/StateMachine/Controller/clickRestorePreviousState.js +17 -0
- package/dist/esm/StateMachine/Controller/clickRestorePreviousState.js.map +1 -0
- package/dist/esm/StateMachine/Controller/clickRestorePreviousState.test.js +32 -0
- package/dist/esm/StateMachine/Controller/clickRestorePreviousState.test.js.map +1 -0
- package/dist/esm/StateMachine/Controller/index.js +1 -1
- package/dist/esm/StateMachine/Controller/index.js.map +1 -1
- package/dist/esm/StateMachine/Entities/StateMachineEntity.js +26 -4
- package/dist/esm/StateMachine/Entities/StateMachineEntity.js.map +1 -1
- package/dist/esm/StateMachine/Entities/StateMachineEntity.test.js +23 -4
- package/dist/esm/StateMachine/Entities/StateMachineEntity.test.js.map +1 -1
- package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
- package/dist/esm/StoredView/PM/HasStoredViewPM.js +7 -11
- package/dist/esm/StoredView/PM/HasStoredViewPM.js.map +1 -1
- package/dist/esm/StoredView/PM/HasStoredViewPM.test.js +1 -0
- package/dist/esm/StoredView/PM/HasStoredViewPM.test.js.map +1 -1
- package/dist/esm/StoredView/UC/SerializeStoredView.js +1 -1
- package/dist/esm/StoredView/UC/SerializeStoredView.js.map +1 -1
- package/dist/esm/Stylus/PMs/StylusIsInUsePM.js +8 -7
- package/dist/esm/Stylus/PMs/StylusIsInUsePM.js.map +1 -1
- package/dist/esm/Stylus/PMs/StylusIsInUsePM.test.js +2 -6
- package/dist/esm/Stylus/PMs/StylusIsInUsePM.test.js.map +1 -1
- package/dist/esm/Stylus/UCs/EmulateStylusUC.test.js.map +1 -1
- package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
- package/dist/esm/Transform3D/UC/PinchTransform.test.js.map +1 -1
- package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
- package/dist/esm/Transparency/UCs/SerializeTransparentObjects.js +1 -1
- package/dist/esm/Transparency/UCs/SerializeTransparentObjects.js.map +1 -1
- package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.js +7 -6
- package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.js.map +1 -1
- package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.test.js +4 -8
- package/dist/esm/zSpace/PM/ZSpaceIsEnabledPM.test.js.map +1 -1
- package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.js +7 -6
- package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.js.map +1 -1
- package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.test.js +1 -0
- package/dist/esm/zSpace/PM/ZSpaceIsSupportedPM.test.js.map +1 -1
- package/dist/types/Babylon/PM/ShowBabylonInspectorPM.d.ts +3 -2
- package/dist/types/Babylon/PM/ShowBabylonInspectorPM.d.ts.map +1 -1
- package/dist/types/BaseApp/PM/IsAuthoringPM.d.ts +2 -2
- package/dist/types/BaseApp/PM/IsAuthoringPM.d.ts.map +1 -1
- package/dist/types/BaseApp/PM/IsReviewingPM.d.ts +2 -2
- package/dist/types/BaseApp/PM/IsReviewingPM.d.ts.map +1 -1
- package/dist/types/BaseApp/PM/SlideTextPM.d.ts +2 -2
- package/dist/types/BaseApp/PM/SlideTextPM.d.ts.map +1 -1
- package/dist/types/BaseApp/UC/SerializeBaseAppState.d.ts +1 -1
- package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts +1 -1
- package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts.map +1 -1
- package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts +1 -1
- package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts.map +1 -1
- package/dist/types/Callouts/UC/SerializeCallouts.d.ts +1 -1
- package/dist/types/Challenge/UCs/SerializeChallenge.d.ts +1 -1
- package/dist/types/ChannelModel/PMs/ActiveModelPM.d.ts +4 -3
- package/dist/types/ChannelModel/PMs/ActiveModelPM.d.ts.map +1 -1
- package/dist/types/ChannelModel/UC/SerializeActiveModel.d.ts +2 -2
- package/dist/types/Dispatcher/Entities/AppDispatcher.d.ts +1 -0
- package/dist/types/Dispatcher/Entities/AppDispatcher.d.ts.map +1 -1
- package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts +1 -0
- package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/GetAssetBlobURLUCMock.d.ts +1 -1
- package/dist/types/Dispatcher/Mocks/GetAssetBlobURLUCMock.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/GetLinkedAssetsUCMock.d.ts +1 -1
- package/dist/types/Dispatcher/Mocks/GetLinkedAssetsUCMock.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/MockDispatcher.d.ts +2 -2
- package/dist/types/Dispatcher/Mocks/MockDispatcher.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/MockGetAssetFolderURL.d.ts +1 -1
- package/dist/types/Dispatcher/Mocks/MockGetAssetFolderURL.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowAlert.d.ts +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowAlert.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowConfirm.d.ts +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowConfirm.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowMarkdown.d.ts +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowMarkdown.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowSpinner.d.ts +1 -1
- package/dist/types/Dispatcher/Mocks/MockShowSpinner.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/MockSubmitResult.d.ts +5 -5
- package/dist/types/Dispatcher/Mocks/MockSubmitResult.d.ts.map +1 -1
- package/dist/types/Dispatcher/Mocks/ShowSelectModelUCMock.d.ts +4 -1
- package/dist/types/Dispatcher/Mocks/ShowSelectModelUCMock.d.ts.map +1 -1
- package/dist/types/Environment/UCs/SerializeEnvironment.d.ts +1 -1
- package/dist/types/Hideable/UCs/SerializeHideableObjects.d.ts +2 -2
- package/dist/types/HoverLabel/UseCases/SerializeAllowHoverLabel.d.ts +1 -1
- package/dist/types/Label/UC/SerializeCustomLabels.d.ts +1 -2
- package/dist/types/Label/UC/SerializeCustomLabels.d.ts.map +1 -1
- package/dist/types/LabelDrop/UseCases/SerializeLabelDrop.d.ts +1 -1
- package/dist/types/Landmarks/UseCases/SerializeLandmarks.d.ts +1 -1
- package/dist/types/ObjectPick/UseCases/SerializeObjectPick.d.ts +1 -1
- package/dist/types/OverlayColor/UC/SerializeOverlayColoredObjects.d.ts +2 -2
- package/dist/types/Question/UC/SerializeQuestionChallenge.d.ts +1 -1
- package/dist/types/RequestHandler/Entities/AppHandler.d.ts +1 -0
- package/dist/types/RequestHandler/Entities/AppHandler.d.ts.map +1 -1
- package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.d.ts +19 -20
- package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.d.ts.map +1 -1
- package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.test.d.ts +2 -0
- package/dist/types/RequestHandler/Factories/RequestHandlerFeatureFactory.test.d.ts.map +1 -0
- package/dist/types/RequestHandler/Mocks/MockAppHandlerEntity.d.ts +1 -0
- package/dist/types/RequestHandler/Mocks/MockAppHandlerEntity.d.ts.map +1 -1
- package/dist/types/SceneRoot/UC/SerializeSceneRoot.d.ts +1 -1
- package/dist/types/StateMachine/Controller/clickRestorePreviousState.d.ts +7 -0
- package/dist/types/StateMachine/Controller/clickRestorePreviousState.d.ts.map +1 -0
- package/dist/types/StateMachine/Controller/clickRestorePreviousState.test.d.ts +2 -0
- package/dist/types/StateMachine/Controller/clickRestorePreviousState.test.d.ts.map +1 -0
- package/dist/types/StateMachine/Controller/index.d.ts +1 -1
- package/dist/types/StateMachine/Controller/index.d.ts.map +1 -1
- package/dist/types/StateMachine/Entities/StateMachineEntity.d.ts +87 -2
- package/dist/types/StateMachine/Entities/StateMachineEntity.d.ts.map +1 -1
- package/dist/types/StoredView/PM/HasStoredViewPM.d.ts +2 -2
- package/dist/types/StoredView/PM/HasStoredViewPM.d.ts.map +1 -1
- package/dist/types/StoredView/UC/SerializeStoredView.d.ts +1 -1
- package/dist/types/Stylus/PMs/StylusIsInUsePM.d.ts +2 -2
- package/dist/types/Stylus/PMs/StylusIsInUsePM.d.ts.map +1 -1
- package/dist/types/Transform3D/UC/MoveTransformUC.d.ts +3 -3
- package/dist/types/Transform3D/UC/MoveTransformUC.d.ts.map +1 -1
- package/dist/types/Transform3D/UC/PanTransformUC.d.ts +3 -3
- package/dist/types/Transform3D/UC/PanTransformUC.d.ts.map +1 -1
- package/dist/types/Transform3D/UC/TryMoveTransformUC.d.ts +1 -1
- package/dist/types/Transform3D/UC/TryMoveTransformUC.d.ts.map +1 -1
- package/dist/types/Transform3D/UC/TryPanTransformUC.d.ts +2 -2
- package/dist/types/Transform3D/UC/TryPanTransformUC.d.ts.map +1 -1
- package/dist/types/Transparency/UCs/SerializeTransparentObjects.d.ts +2 -2
- package/dist/types/zSpace/PM/ZSpaceIsEnabledPM.d.ts +2 -2
- package/dist/types/zSpace/PM/ZSpaceIsEnabledPM.d.ts.map +1 -1
- package/dist/types/zSpace/PM/ZSpaceIsSupportedPM.d.ts +2 -2
- package/dist/types/zSpace/PM/ZSpaceIsSupportedPM.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/Dispatcher/README.md +652 -0
- package/src/RequestHandler/README.md +790 -0
- package/src/StateMachine/README.md +430 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MousePressOnAppObject.test.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MousePressOnAppObject.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon\";\nimport { MouseInputEvent } from \"../../MouseInput\";\nimport { MockMouseInput } from \"../../MouseInput/Mocks/MockMouseInput\";\nimport { makeZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { PressAppObjectUCMock } from \"../Mocks/PressAppObjectUCMock\";\nimport { MousePressOnAppObject } from \"./MousePressOnAppObject\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const zSpaceAO = appObjects.getOrCreate(\"zSpace\");\n const zSpace = makeZSpaceEntity(zSpaceAO);\n zSpace.emulate = false;\n\n const selectionAO = appObjects.getOrCreate(\"selection\");\n const mockUC = new PressAppObjectUCMock(selectionAO);\n\n const mockPixelToSceneUC = makeMockPixelToSceneRayUC(appObjects);\n\n const mockPixelToRay = jest.fn().mockReturnValue(ParametricLine.Forward());\n mockPixelToSceneUC.pixelToSceneRay = mockPixelToRay;\n\n const mockMouseInput = new MockMouseInput(selectionAO);\n mockMouseInput.registerController = jest.fn();\n\n const controller = new MousePressOnAppObject(selectionAO);\n\n const mockAllow = jest.fn();\n mockAllow.mockReturnValue(true);\n controller.allow = mockAllow;\n\n return {\n mockMouseInput,\n appObjects,\n zSpace,\n controller,\n mockUC,\n mockAllow,\n };\n}\n\ndescribe(\"Mouse Press Scene Object On App Controller\", () => {\n it(\"Sends a ray to the UC when the left button is pressed\", () => {\n const { mockUC, controller } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(2, 3),\n event: new MouseEvent(\"buttondown\"),\n };\n\n controller.onDown(event);\n\n expect(mockUC.tryPressAppObject).toHaveBeenCalledWith(\n ParametricLine.Forward()
|
|
1
|
+
{"version":3,"file":"MousePressOnAppObject.test.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MousePressOnAppObject.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon\";\nimport { MouseInputEvent } from \"../../MouseInput\";\nimport { MockMouseInput } from \"../../MouseInput/Mocks/MockMouseInput\";\nimport { makeZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { PressAppObjectUCMock } from \"../Mocks/PressAppObjectUCMock\";\nimport { MousePressOnAppObject } from \"./MousePressOnAppObject\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const zSpaceAO = appObjects.getOrCreate(\"zSpace\");\n const zSpace = makeZSpaceEntity(zSpaceAO);\n zSpace.emulate = false;\n\n const selectionAO = appObjects.getOrCreate(\"selection\");\n const mockUC = new PressAppObjectUCMock(selectionAO);\n\n const mockPixelToSceneUC = makeMockPixelToSceneRayUC(appObjects);\n\n const mockPixelToRay = jest.fn().mockReturnValue(ParametricLine.Forward());\n mockPixelToSceneUC.pixelToSceneRay = mockPixelToRay;\n\n const mockMouseInput = new MockMouseInput(selectionAO);\n mockMouseInput.registerController = jest.fn();\n\n const controller = new MousePressOnAppObject(selectionAO);\n\n const mockAllow = jest.fn();\n mockAllow.mockReturnValue(true);\n controller.allow = mockAllow;\n\n return {\n mockMouseInput,\n appObjects,\n zSpace,\n controller,\n mockUC,\n mockAllow,\n };\n}\n\ndescribe(\"Mouse Press Scene Object On App Controller\", () => {\n it(\"Sends a ray to the UC when the left button is pressed\", () => {\n const { mockUC, controller } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(2, 3),\n event: new MouseEvent(\"buttondown\"),\n };\n\n controller.onDown(event);\n\n expect(mockUC.tryPressAppObject).toHaveBeenCalledWith(\n ParametricLine.Forward(),\n );\n });\n\n it(\"Does not send a ray to the UC when the left button is not pressed\", () => {\n const { controller, mockUC } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: -1,\n position: new Vector2(2, 3),\n event: new MouseEvent(\"buttondown\"),\n };\n\n controller.onDown(event);\n\n expect(mockUC.tryPressAppObject).not.toHaveBeenCalled();\n });\n\n it(\"Warns if it is added to an app object that does not have a UC\", () => {\n const { appObjects } = makeTestRig();\n\n const anotherAppObj = appObjects.getOrCreate(\"newAppObj\");\n console.warn = jest.fn();\n\n new MousePressOnAppObject(anotherAppObj);\n\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Does not register itself if the object does not have a UC\", () => {\n const { appObjects, mockMouseInput } = makeTestRig();\n\n const anotherAppObj = appObjects.getOrCreate(\"newAppObj\");\n console.warn = jest.fn();\n (mockMouseInput.registerController as jest.MockedFunction<any>).mockClear();\n\n new MousePressOnAppObject(anotherAppObj);\n\n expect(mockMouseInput.registerController).not.toHaveBeenCalled();\n });\n\n it(\"Sets pressID to null when the left button is released\", () => {\n const { mockUC, controller } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(2, 3),\n event: new MouseEvent(\"buttonup\"),\n };\n\n controller.onUp(event);\n\n expect(mockUC.pressAppObject).toHaveBeenCalled();\n });\n\n it(\"Sets pressID to null when the mouse moves more than 5 pixels while pressed\", () => {\n const { controller, mockUC } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(0, 0),\n event: new MouseEvent(\"buttondown\"),\n };\n const event2: MouseInputEvent = {\n button: 0,\n position: new Vector2(0, MousePressOnAppObject.maxTapDistancePx + 1),\n event: new MouseEvent(\"buttonmove\"),\n };\n\n controller.onDown(event);\n controller.onMove(event2);\n\n expect(mockUC.pressAppObject).toHaveBeenCalled();\n });\n\n it(\"Does not set pressID to null when the mouse moves less than 5 pixels while pressed\", () => {\n const { controller, mockUC } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(0, 0),\n event: new MouseEvent(\"buttondown\"),\n };\n const event2: MouseInputEvent = {\n button: 0,\n position: new Vector2(0, MousePressOnAppObject.maxTapDistancePx - 1),\n event: new MouseEvent(\"buttonmove\"),\n };\n\n controller.onDown(event);\n controller.onMove(event2);\n\n expect(mockUC.pressAppObject).not.toHaveBeenCalled();\n });\n\n it(\"Does not send a ray to the UC if zSpace mouse emulate is on\", () => {\n const { mockUC, controller, zSpace } = makeTestRig();\n\n zSpace.emulate = true;\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(2, 3),\n event: new MouseEvent(\"buttondown\"),\n };\n\n controller.onDown(event);\n\n expect(mockUC.pressAppObject).not.toHaveBeenCalledWith();\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MouseSelectAppObject.test.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseSelectAppObject.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon\";\nimport { MouseInputEvent } from \"../../MouseInput\";\nimport { MockMouseInput } from \"../../MouseInput/Mocks/MockMouseInput\";\nimport { makeZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { SelectAppObjectUCMock } from \"../Mocks/SelectAppObjectUCMock\";\nimport { MouseSelectAppObject } from \"./MouseSelectAppObject\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const zSpaceAO = appObjects.getOrCreate(\"zSpace\");\n const zSpace = makeZSpaceEntity(zSpaceAO);\n zSpace.emulate = false;\n\n const selectionAO = appObjects.getOrCreate(\"selection\");\n const mockUC = new SelectAppObjectUCMock(selectionAO);\n\n const mockPixelToSceneUC = makeMockPixelToSceneRayUC(appObjects);\n const mockPixelToRay = jest.fn().mockReturnValue(ParametricLine.Forward());\n mockPixelToSceneUC.pixelToSceneRay = mockPixelToRay;\n\n const mockMouseInput = new MockMouseInput(selectionAO);\n mockMouseInput.registerController = jest.fn();\n\n const controller = new MouseSelectAppObject(selectionAO);\n\n const mockAllow = jest.fn();\n mockAllow.mockReturnValue(true);\n controller.allow = mockAllow;\n\n return {\n mockMouseInput,\n appObjects,\n zSpace,\n controller,\n mockUC,\n mockAllow,\n };\n}\n\ndescribe(\"Select Scene Object Mouse Controller\", () => {\n it(\"Sends a ray to the UC on select\", () => {\n const { mockUC, controller } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(5, 6),\n event: new MouseEvent(\"\"),\n };\n\n controller.onClick(event);\n\n expect(mockUC.trySelectAppObject).toHaveBeenCalledWith(\n ParametricLine.Forward()
|
|
1
|
+
{"version":3,"file":"MouseSelectAppObject.test.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseSelectAppObject.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine, Vector2 } from \"@vived/core\";\nimport { makeMockPixelToSceneRayUC } from \"../../Babylon\";\nimport { MouseInputEvent } from \"../../MouseInput\";\nimport { MockMouseInput } from \"../../MouseInput/Mocks/MockMouseInput\";\nimport { makeZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { SelectAppObjectUCMock } from \"../Mocks/SelectAppObjectUCMock\";\nimport { MouseSelectAppObject } from \"./MouseSelectAppObject\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const zSpaceAO = appObjects.getOrCreate(\"zSpace\");\n const zSpace = makeZSpaceEntity(zSpaceAO);\n zSpace.emulate = false;\n\n const selectionAO = appObjects.getOrCreate(\"selection\");\n const mockUC = new SelectAppObjectUCMock(selectionAO);\n\n const mockPixelToSceneUC = makeMockPixelToSceneRayUC(appObjects);\n const mockPixelToRay = jest.fn().mockReturnValue(ParametricLine.Forward());\n mockPixelToSceneUC.pixelToSceneRay = mockPixelToRay;\n\n const mockMouseInput = new MockMouseInput(selectionAO);\n mockMouseInput.registerController = jest.fn();\n\n const controller = new MouseSelectAppObject(selectionAO);\n\n const mockAllow = jest.fn();\n mockAllow.mockReturnValue(true);\n controller.allow = mockAllow;\n\n return {\n mockMouseInput,\n appObjects,\n zSpace,\n controller,\n mockUC,\n mockAllow,\n };\n}\n\ndescribe(\"Select Scene Object Mouse Controller\", () => {\n it(\"Sends a ray to the UC on select\", () => {\n const { mockUC, controller } = makeTestRig();\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(5, 6),\n event: new MouseEvent(\"\"),\n };\n\n controller.onClick(event);\n\n expect(mockUC.trySelectAppObject).toHaveBeenCalledWith(\n ParametricLine.Forward(),\n );\n });\n\n it(\"Does not send a ray to the UC on click if not allowed\", () => {\n const { controller, mockAllow, mockUC } = makeTestRig();\n\n const evt: MouseInputEvent = {\n position: new Vector2(2, 3),\n button: 0,\n event: new MouseEvent(\"buttondown\"),\n };\n\n mockAllow.mockReturnValue(false);\n\n controller.onClick(evt);\n\n expect(mockUC.trySelectAppObject).not.toHaveBeenCalled();\n });\n\n it(\"Warns if it is added to an app object that does not have a UC\", () => {\n const { appObjects } = makeTestRig();\n\n const anotherAppObj = appObjects.getOrCreate(\"newAppObj\");\n console.warn = jest.fn();\n\n new MouseSelectAppObject(anotherAppObj);\n\n expect(console.warn).toHaveBeenCalled();\n });\n\n it(\"Does not register itself if the object does not have a UC\", () => {\n const { appObjects, mockMouseInput } = makeTestRig();\n\n const anotherAppObj = appObjects.getOrCreate(\"newAppObj\");\n console.warn = jest.fn();\n (mockMouseInput.registerController as jest.MockedFunction<any>).mockClear();\n\n new MouseSelectAppObject(anotherAppObj);\n\n expect(mockMouseInput.registerController).not.toHaveBeenCalled();\n });\n\n it(\"Does not send a ray to the UC if zSpace mouse emulate is on\", () => {\n const { mockUC, controller, zSpace } = makeTestRig();\n\n zSpace.emulate = true;\n\n const event: MouseInputEvent = {\n button: 0,\n position: new Vector2(5, 6),\n event: new MouseEvent(\"\"),\n };\n\n controller.onClick(event);\n\n expect(mockUC.trySelectAppObject).not.toHaveBeenCalled();\n });\n});\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StateMachineEntity } from "../Entities";
|
|
2
|
+
export function clickRestorePreviousState(appObjects) {
|
|
3
|
+
const entity = StateMachineEntity.get(appObjects);
|
|
4
|
+
if (entity) {
|
|
5
|
+
entity.restoreLastState();
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
appObjects.submitError("clickRestorePreviousState", "Unable to find StateMachineEntity");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Use clickRestorePreviousState instead
|
|
13
|
+
*/
|
|
14
|
+
export function clickRestoreScene(appObjects) {
|
|
15
|
+
clickRestorePreviousState(appObjects);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=clickRestorePreviousState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clickRestorePreviousState.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controller/clickRestorePreviousState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,UAAyB;IACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,WAAW,CACpB,2BAA2B,EAC3B,mCAAmC,CACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAyB;IACzD,yBAAyB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\nimport { StateMachineEntity } from \"../Entities\";\n\nexport function clickRestorePreviousState(appObjects: AppObjectRepo) {\n const entity = StateMachineEntity.get(appObjects);\n if (entity) {\n entity.restoreLastState();\n } else {\n appObjects.submitError(\n \"clickRestorePreviousState\",\n \"Unable to find StateMachineEntity\",\n );\n }\n}\n\n/**\n * @deprecated Use clickRestorePreviousState instead\n */\nexport function clickRestoreScene(appObjects: AppObjectRepo) {\n clickRestorePreviousState(appObjects);\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { makeAppObjectRepo } from "@vived/core";
|
|
2
|
+
import { makeMockStateMachine } from "../Mocks";
|
|
3
|
+
import { clickRestorePreviousState, clickRestoreScene, } from "./clickRestorePreviousState";
|
|
4
|
+
function makeTestRig() {
|
|
5
|
+
const appObjects = makeAppObjectRepo();
|
|
6
|
+
const stateMachine = makeMockStateMachine(appObjects);
|
|
7
|
+
return { appObjects, stateMachine };
|
|
8
|
+
}
|
|
9
|
+
describe("Click Restore Previous State", () => {
|
|
10
|
+
it("Calls restore on the entity", () => {
|
|
11
|
+
const { appObjects, stateMachine } = makeTestRig();
|
|
12
|
+
stateMachine.restoreLastState = jest.fn();
|
|
13
|
+
clickRestorePreviousState(appObjects);
|
|
14
|
+
expect(stateMachine.restoreLastState).toHaveBeenCalled();
|
|
15
|
+
});
|
|
16
|
+
it("Logs an error if the state machine cannot be found", () => {
|
|
17
|
+
const appObjects = makeAppObjectRepo();
|
|
18
|
+
appObjects.submitWarning = jest.fn();
|
|
19
|
+
appObjects.submitError = jest.fn();
|
|
20
|
+
clickRestorePreviousState(appObjects);
|
|
21
|
+
expect(appObjects.submitError).toHaveBeenCalled();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe("Click Restore Scene (Deprecated)", () => {
|
|
25
|
+
it("Calls the new clickRestorePreviousState function", () => {
|
|
26
|
+
const { appObjects, stateMachine } = makeTestRig();
|
|
27
|
+
stateMachine.restoreLastState = jest.fn();
|
|
28
|
+
clickRestoreScene(appObjects);
|
|
29
|
+
expect(stateMachine.restoreLastState).toHaveBeenCalled();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=clickRestorePreviousState.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clickRestorePreviousState.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controller/clickRestorePreviousState.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtC,CAAC;AAED,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1C,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;QAEvC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACrC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEnC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1C,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAE9B,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeMockStateMachine } from \"../Mocks\";\nimport {\n clickRestorePreviousState,\n clickRestoreScene,\n} from \"./clickRestorePreviousState\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const stateMachine = makeMockStateMachine(appObjects);\n\n return { appObjects, stateMachine };\n}\n\ndescribe(\"Click Restore Previous State\", () => {\n it(\"Calls restore on the entity\", () => {\n const { appObjects, stateMachine } = makeTestRig();\n\n stateMachine.restoreLastState = jest.fn();\n clickRestorePreviousState(appObjects);\n\n expect(stateMachine.restoreLastState).toHaveBeenCalled();\n });\n\n it(\"Logs an error if the state machine cannot be found\", () => {\n const appObjects = makeAppObjectRepo();\n\n appObjects.submitWarning = jest.fn();\n appObjects.submitError = jest.fn();\n\n clickRestorePreviousState(appObjects);\n expect(appObjects.submitError).toHaveBeenCalled();\n });\n});\n\ndescribe(\"Click Restore Scene (Deprecated)\", () => {\n it(\"Calls the new clickRestorePreviousState function\", () => {\n const { appObjects, stateMachine } = makeTestRig();\n\n stateMachine.restoreLastState = jest.fn();\n clickRestoreScene(appObjects);\n\n expect(stateMachine.restoreLastState).toHaveBeenCalled();\n });\n});\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./clickRestorePreviousState";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controller/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controller/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC","sourcesContent":["export * from \"./clickRestorePreviousState\";\n"]}
|
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
import { getSingletonComponent } from "@vived/core";
|
|
2
2
|
import { AppObjectEntity } from "@vived/core";
|
|
3
|
+
/**
|
|
4
|
+
* Central entity for managing application state across multiple systems.
|
|
5
|
+
* Coordinates saving, restoring, and transitioning between states with support for:
|
|
6
|
+
* - Multiple independent system states
|
|
7
|
+
* - Versioned serialization
|
|
8
|
+
* - Smooth transitions between states
|
|
9
|
+
* - Backwards compatibility with legacy state formats
|
|
10
|
+
*/
|
|
3
11
|
export class StateMachineEntity extends AppObjectEntity {
|
|
4
12
|
}
|
|
5
13
|
StateMachineEntity.type = "StateMachineEntity";
|
|
14
|
+
/**
|
|
15
|
+
* Retrieves the singleton StateMachineEntity instance from the app object repository.
|
|
16
|
+
* @param appObjects - The app object repository to search
|
|
17
|
+
* @returns The StateMachineEntity if found, undefined otherwise
|
|
18
|
+
*/
|
|
6
19
|
StateMachineEntity.get = (appObjects) => getSingletonComponent(StateMachineEntity.type, appObjects);
|
|
20
|
+
/**
|
|
21
|
+
* Factory function to create a new StateMachineEntity instance.
|
|
22
|
+
* @param appObject - The app object to attach the entity to
|
|
23
|
+
* @returns A new StateMachineEntity instance
|
|
24
|
+
*/
|
|
7
25
|
export function makeStateMachineEntity(appObject) {
|
|
8
26
|
return new StateMachineImp(appObject);
|
|
9
27
|
}
|
|
@@ -19,7 +37,7 @@ class StateMachineImp extends StateMachineEntity {
|
|
|
19
37
|
constructor(appObject) {
|
|
20
38
|
super(appObject, StateMachineEntity.type);
|
|
21
39
|
this.serializedSystems = new Map();
|
|
22
|
-
this.
|
|
40
|
+
this.serializationVersion = 2;
|
|
23
41
|
this.restoreDurationS = 1;
|
|
24
42
|
this.transitionEaseFunction = (normalizedTime) => {
|
|
25
43
|
return normalizedTime; // default to a linear function
|
|
@@ -56,14 +74,14 @@ class StateMachineImp extends StateMachineEntity {
|
|
|
56
74
|
if (!state)
|
|
57
75
|
return;
|
|
58
76
|
const systemState = {
|
|
59
|
-
|
|
77
|
+
serializationVersion: system.serializationVersion,
|
|
60
78
|
name: system.name,
|
|
61
79
|
state,
|
|
62
80
|
};
|
|
63
81
|
serializedStates.push(systemState);
|
|
64
82
|
});
|
|
65
83
|
return {
|
|
66
|
-
version: this.
|
|
84
|
+
version: this.serializationVersion,
|
|
67
85
|
systems: serializedStates,
|
|
68
86
|
};
|
|
69
87
|
};
|
|
@@ -87,7 +105,11 @@ class StateMachineImp extends StateMachineEntity {
|
|
|
87
105
|
this.serializedSystems.forEach((system) => {
|
|
88
106
|
const systemState = systemStateLookup.get(system.name);
|
|
89
107
|
if (systemState) {
|
|
90
|
-
|
|
108
|
+
// Support both old misspelling and new correct spelling for backwards compatibility
|
|
109
|
+
const version = systemState.serializationVersion ??
|
|
110
|
+
systemState.seriliziationVersion ??
|
|
111
|
+
1;
|
|
112
|
+
system.applySystemState(systemState.state, version, duration);
|
|
91
113
|
}
|
|
92
114
|
});
|
|
93
115
|
this.lastState = states;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateMachineEntity.js","sourceRoot":"","sources":["../../../../src/StateMachine/Entities/StateMachineEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA6B9C,MAAM,OAAgB,kBAAmB,SAAQ,eAAe;;AAC9C,uBAAI,GAAG,oBAAoB,CAAC;AAqBrC,sBAAG,GAAG,CAAC,UAAyB,EAAkC,EAAE,CACzE,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG/D,MAAM,UAAU,sBAAsB,CACpC,SAAoB;IAEpB,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,eAAgB,SAAQ,kBAAkB;IA8B9C,gBAAgB;QACd,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAyFD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QA7HpC,sBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAC;QACxD,wBAAmB,GAAG,CAAC,CAAC;QAGhC,qBAAgB,GAAG,CAAC,CAAC;QAEd,2BAAsB,GAAuC,CAClE,cAAsB,EACtB,EAAE;YACF,OAAO,cAAc,CAAC,CAAC,+BAA+B;QACxD,CAAC,CAAC;QAEF,gCAA2B,GAAG,CAAC,KAAa,EAAE,WAAmB,CAAC,EAAE,EAAE;YACpE,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAqB,CAAC;oBACvD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC/B,MAAM,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBACtE,IAAI,CAAC,IAAI,CACP,sCAAsC,KAAK,eAAe,YAAY,EAAE,CACzE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAUF,6BAAwB,GAAG,CAAC,gBAAkC,EAAQ,EAAE;YACtE,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,IAAI,CACP,4CAA4C,gBAAgB,CAAC,IAAI,EAAE,CACpE,CAAC;gBAEF,OAAO;YACT,CAAC;YAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACpE,OAAO;QACT,CAAC,CAAC;QAEF,wBAAmB,GAAG,GAAqB,EAAE;YAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;YAE5D,MAAM,gBAAgB,GAAkB,EAAE,CAAC;YAE3C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzB,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;gBAEtC,IAAI,CAAC,KAAK;oBAAE,OAAO;gBAEnB,MAAM,WAAW,GAAgB;oBAC/B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;oBACjD,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK;iBACN,CAAC;gBAEF,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,mBAAmB;gBACjC,OAAO,EAAE,gBAAgB;aAC1B,CAAC;QACJ,CAAC,CAAC;QAEF,wBAAmB,GAAG,CAAC,MAAwB,EAAE,QAAgB,EAAQ,EAAE;YACzE,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;gBACzD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;oBACrC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjD,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,IAAI,CAAC,mCAAmC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,6BAA6B;gBAC7B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBACxC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBACxC,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACvD,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,CAAC,gBAAgB,CACrB,WAAW,CAAC,KAAK,EACjB,WAAW,CAAC,oBAAoB,EAChC,QAAQ,CACT,CAAC;oBACJ,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBAExB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YACD,wDAAwD;iBACnD,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,6CAA6C,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;QACH,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,QAAgB,EAAQ,EAAE;YAC3C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;IAIF,CAAC;CACF","sourcesContent":["import { getSingletonComponent } from \"@vived/core\";\nimport { AppObject } from \"@vived/core\";\nimport { AppObjectEntity } from \"@vived/core\";\nimport { AppObjectRepo } from \"@vived/core\";\n\nexport interface SerializedStates {\n version: number;\n systems: SystemState[];\n}\n\nexport interface SystemState {\n name: string;\n seriliziationVersion: number;\n state: object;\n}\n\nexport interface SerializedSystem {\n name: string;\n seriliziationVersion: number;\n\n getSystemState(): object | undefined;\n\n applySystemState(\n state: object,\n version: number,\n transitionDuration: number,\n ): void;\n\n applyDefaultState(transitionDuration: number): void;\n}\n\nexport abstract class StateMachineEntity extends AppObjectEntity {\n static readonly type = \"StateMachineEntity\";\n\n abstract restoreDurationS: number;\n abstract transitionEaseFunction: (normalizedTime: number) => number;\n\n abstract getSerializedStates(): SerializedStates;\n abstract setSerializedStates(\n state: SerializedStates,\n transitionTime: number,\n ): void;\n\n abstract applySerializedStatesString: (\n state: string,\n duration?: number,\n ) => void;\n abstract restoreLastState(): void;\n\n abstract setDefaultState(transitionTime: number): void;\n\n abstract registerSerializedSystem(serializedSystem: SerializedSystem): void;\n\n static get = (appObjects: AppObjectRepo): StateMachineEntity | undefined =>\n getSingletonComponent(StateMachineEntity.type, appObjects);\n}\n\nexport function makeStateMachineEntity(\n appObject: AppObject,\n): StateMachineEntity {\n return new StateMachineImp(appObject);\n}\n\nclass StateMachineImp extends StateMachineEntity {\n private serializedSystems = new Map<string, SerializedSystem>();\n private serilizationVersion = 2;\n\n private lastState?: SerializedStates;\n restoreDurationS = 1;\n\n public transitionEaseFunction: (normalizedTime: number) => number = (\n normalizedTime: number,\n ) => {\n return normalizedTime; // default to a linear function\n };\n\n applySerializedStatesString = (state: string, duration: number = 0) => {\n if (state === \"\") {\n this.setDefaultState(duration);\n } else {\n try {\n const stateObj = JSON.parse(state) as SerializedStates;\n this.setSerializedStates(stateObj, duration);\n } catch (e) {\n this.setDefaultState(duration);\n const errorMessage = e instanceof Error ? e.message : \"unknown error\";\n this.warn(\n `Failed to deserialize state string ${state} with Error ${errorMessage}`,\n );\n }\n }\n };\n\n restoreLastState(): void {\n if (this.lastState) {\n this.setSerializedStates(this.lastState, this.restoreDurationS);\n } else {\n this.setDefaultState(this.restoreDurationS);\n }\n }\n\n registerSerializedSystem = (serializedSystem: SerializedSystem): void => {\n if (this.serializedSystems.has(serializedSystem.name)) {\n this.warn(\n `Duplicate stateable systems encountered: ${serializedSystem.name}`,\n );\n\n return;\n }\n\n this.serializedSystems.set(serializedSystem.name, serializedSystem);\n return;\n };\n\n getSerializedStates = (): SerializedStates => {\n const systems = Array.from(this.serializedSystems.values());\n\n const serializedStates: SystemState[] = [];\n\n systems.forEach((system) => {\n const state = system.getSystemState();\n\n if (!state) return;\n\n const systemState: SystemState = {\n seriliziationVersion: system.seriliziationVersion,\n name: system.name,\n state,\n };\n\n serializedStates.push(systemState);\n });\n\n return {\n version: this.serilizationVersion,\n systems: serializedStates,\n };\n };\n\n setSerializedStates = (states: SerializedStates, duration: number): void => {\n if (states.version === 2) {\n const systemStateLookup = new Map<string, SystemState>();\n states.systems.forEach((systemState) => {\n if (this.serializedSystems.has(systemState.name)) {\n systemStateLookup.set(systemState.name, systemState);\n } else {\n this.warn(`Unable to find serializedSystem ${systemState.name}`);\n }\n });\n\n // Apply default states first\n this.serializedSystems.forEach((system) => {\n if (!systemStateLookup.has(system.name)) {\n system.applyDefaultState(duration);\n }\n });\n\n this.serializedSystems.forEach((system) => {\n const systemState = systemStateLookup.get(system.name);\n if (systemState) {\n system.applySystemState(\n systemState.state,\n systemState.seriliziationVersion,\n duration,\n );\n }\n });\n\n this.lastState = states;\n\n this.notifyOnChange();\n return;\n }\n // Here is where we will add support for future versions\n else {\n this.warn(`Unsupported serialized state encountered: ${states.version}`);\n return;\n }\n };\n\n setDefaultState = (duration: number): void => {\n this.serializedSystems.forEach((system) => {\n system.applyDefaultState(duration);\n });\n this.lastState = undefined;\n this.notifyOnChange();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StateMachineEntity.type);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"StateMachineEntity.js","sourceRoot":"","sources":["../../../../src/StateMachine/Entities/StateMachineEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import { getSingletonComponent } from \"@vived/core\";\nimport { AppObject } from \"@vived/core\";\nimport { AppObjectEntity } from \"@vived/core\";\nimport { AppObjectRepo } from \"@vived/core\";\n\n/**\n * Represents a collection of serialized system states with versioning.\n * This is the top-level structure used to save and restore application state.\n */\nexport interface SerializedStates {\n /** Version number of the serialization format */\n version: number;\n /** Array of individual system states */\n systems: SystemState[];\n}\n\n/**\n * Represents the serialized state of a single system.\n */\nexport interface SystemState {\n /** Unique name identifying the system */\n name: string;\n /**\n * Version number of this system's serialization format.\n * Note: Property name corrected from 'seriliziationVersion' but backwards compatible.\n */\n serializationVersion: number;\n /** The serialized state data for this system */\n state: object;\n}\n\n/**\n * Interface for systems that can save and restore their state.\n * Implementing classes must handle serialization and deserialization of their state.\n */\nexport interface SerializedSystem {\n /** Unique name identifying this system */\n name: string;\n /** Version number of this system's serialization format */\n serializationVersion: number;\n\n /**\n * Gets the current state of this system for serialization.\n * @returns The serialized state object, or undefined if state cannot be captured\n */\n getSystemState(): object | undefined;\n\n /**\n * Applies a previously serialized state to this system.\n * @param state - The state object to apply\n * @param version - The serialization version of the state data\n * @param transitionDuration - Duration in seconds for transitioning to the new state\n */\n applySystemState(\n state: object,\n version: number,\n transitionDuration: number,\n ): void;\n\n /**\n * Resets this system to its default state.\n * @param transitionDuration - Duration in seconds for transitioning to default state\n */\n applyDefaultState(transitionDuration: number): void;\n}\n\n/**\n * Central entity for managing application state across multiple systems.\n * Coordinates saving, restoring, and transitioning between states with support for:\n * - Multiple independent system states\n * - Versioned serialization\n * - Smooth transitions between states\n * - Backwards compatibility with legacy state formats\n */\nexport abstract class StateMachineEntity extends AppObjectEntity {\n static readonly type = \"StateMachineEntity\";\n\n /** Duration in seconds for restoring the last saved state */\n abstract restoreDurationS: number;\n /**\n * Easing function for state transitions.\n * Takes normalized time (0-1) and returns eased value (0-1).\n */\n abstract transitionEaseFunction: (normalizedTime: number) => number;\n\n /**\n * Captures the current state of all registered systems.\n * @returns Serialized states object containing all system states\n */\n abstract getSerializedStates(): SerializedStates;\n\n /**\n * Applies a collection of serialized states to registered systems.\n * @param state - The serialized states to apply\n * @param transitionTime - Duration in seconds for state transition\n */\n abstract setSerializedStates(\n state: SerializedStates,\n transitionTime: number,\n ): void;\n\n /**\n * Parses and applies a JSON string of serialized states.\n * Falls back to default state if parsing fails.\n * @param state - JSON string of SerializedStates\n * @param duration - Optional transition duration in seconds (default: 0)\n */\n abstract applySerializedStatesString: (\n state: string,\n duration?: number,\n ) => void;\n\n /**\n * Restores the most recently applied state.\n * If no state has been saved, applies default state instead.\n */\n abstract restoreLastState(): void;\n\n /**\n * Resets all registered systems to their default states.\n * @param transitionTime - Duration in seconds for state transition\n */\n abstract setDefaultState(transitionTime: number): void;\n\n /**\n * Registers a system to participate in state management.\n * @param serializedSystem - The system to register\n */\n abstract registerSerializedSystem(serializedSystem: SerializedSystem): void;\n\n /**\n * Retrieves the singleton StateMachineEntity instance from the app object repository.\n * @param appObjects - The app object repository to search\n * @returns The StateMachineEntity if found, undefined otherwise\n */\n static get = (appObjects: AppObjectRepo): StateMachineEntity | undefined =>\n getSingletonComponent(StateMachineEntity.type, appObjects);\n}\n\n/**\n * Factory function to create a new StateMachineEntity instance.\n * @param appObject - The app object to attach the entity to\n * @returns A new StateMachineEntity instance\n */\nexport function makeStateMachineEntity(\n appObject: AppObject,\n): StateMachineEntity {\n return new StateMachineImp(appObject);\n}\n\nclass StateMachineImp extends StateMachineEntity {\n private serializedSystems = new Map<string, SerializedSystem>();\n private serializationVersion = 2;\n\n private lastState?: SerializedStates;\n restoreDurationS = 1;\n\n public transitionEaseFunction: (normalizedTime: number) => number = (\n normalizedTime: number,\n ) => {\n return normalizedTime; // default to a linear function\n };\n\n applySerializedStatesString = (state: string, duration: number = 0) => {\n if (state === \"\") {\n this.setDefaultState(duration);\n } else {\n try {\n const stateObj = JSON.parse(state) as SerializedStates;\n this.setSerializedStates(stateObj, duration);\n } catch (e) {\n this.setDefaultState(duration);\n const errorMessage = e instanceof Error ? e.message : \"unknown error\";\n this.warn(\n `Failed to deserialize state string ${state} with Error ${errorMessage}`,\n );\n }\n }\n };\n\n restoreLastState(): void {\n if (this.lastState) {\n this.setSerializedStates(this.lastState, this.restoreDurationS);\n } else {\n this.setDefaultState(this.restoreDurationS);\n }\n }\n\n registerSerializedSystem = (serializedSystem: SerializedSystem): void => {\n if (this.serializedSystems.has(serializedSystem.name)) {\n this.warn(\n `Duplicate stateable systems encountered: ${serializedSystem.name}`,\n );\n\n return;\n }\n\n this.serializedSystems.set(serializedSystem.name, serializedSystem);\n return;\n };\n\n getSerializedStates = (): SerializedStates => {\n const systems = Array.from(this.serializedSystems.values());\n\n const serializedStates: SystemState[] = [];\n\n systems.forEach((system) => {\n const state = system.getSystemState();\n\n if (!state) return;\n\n const systemState: SystemState = {\n serializationVersion: system.serializationVersion,\n name: system.name,\n state,\n };\n\n serializedStates.push(systemState);\n });\n\n return {\n version: this.serializationVersion,\n systems: serializedStates,\n };\n };\n\n setSerializedStates = (states: SerializedStates, duration: number): void => {\n if (states.version === 2) {\n const systemStateLookup = new Map<string, SystemState>();\n states.systems.forEach((systemState) => {\n if (this.serializedSystems.has(systemState.name)) {\n systemStateLookup.set(systemState.name, systemState);\n } else {\n this.warn(`Unable to find serializedSystem ${systemState.name}`);\n }\n });\n\n // Apply default states first\n this.serializedSystems.forEach((system) => {\n if (!systemStateLookup.has(system.name)) {\n system.applyDefaultState(duration);\n }\n });\n\n this.serializedSystems.forEach((system) => {\n const systemState = systemStateLookup.get(system.name);\n if (systemState) {\n // Support both old misspelling and new correct spelling for backwards compatibility\n const version =\n systemState.serializationVersion ??\n (systemState as any).seriliziationVersion ??\n 1;\n system.applySystemState(systemState.state, version, duration);\n }\n });\n\n this.lastState = states;\n\n this.notifyOnChange();\n return;\n }\n // Here is where we will add support for future versions\n else {\n this.warn(`Unsupported serialized state encountered: ${states.version}`);\n return;\n }\n };\n\n setDefaultState = (duration: number): void => {\n this.serializedSystems.forEach((system) => {\n system.applyDefaultState(duration);\n });\n this.lastState = undefined;\n this.notifyOnChange();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StateMachineEntity.type);\n }\n}\n"]}
|
|
@@ -28,7 +28,7 @@ describe("State Machine Entity", () => {
|
|
|
28
28
|
expect(state.systems).toHaveLength(2);
|
|
29
29
|
const serializeState = state.systems[0];
|
|
30
30
|
expect(serializeState.name).toEqual("state1");
|
|
31
|
-
expect(serializeState.
|
|
31
|
+
expect(serializeState.serializationVersion).toEqual(1);
|
|
32
32
|
expect(serializeState.state).toEqual({ foo: "bar" });
|
|
33
33
|
});
|
|
34
34
|
it("Skips a serialized state that returns undefined", () => {
|
|
@@ -48,6 +48,25 @@ describe("State Machine Entity", () => {
|
|
|
48
48
|
foo: "bar1",
|
|
49
49
|
}, 1, 3);
|
|
50
50
|
});
|
|
51
|
+
it("Set serialized state with old misspelled property name for backwards compatibility", () => {
|
|
52
|
+
const { stateMachine, mockSerializedSystem1 } = makeTestRig();
|
|
53
|
+
const state = {
|
|
54
|
+
version: 2,
|
|
55
|
+
systems: [
|
|
56
|
+
{
|
|
57
|
+
name: "state1",
|
|
58
|
+
seriliziationVersion: 1,
|
|
59
|
+
state: {
|
|
60
|
+
foo: "bar1",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
stateMachine.setSerializedStates(state, 3);
|
|
66
|
+
expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith({
|
|
67
|
+
foo: "bar1",
|
|
68
|
+
}, 1, 3);
|
|
69
|
+
});
|
|
51
70
|
it("Submits an warning if trying to deserialize data with a bad version number", () => {
|
|
52
71
|
const { stateMachine } = makeTestRig();
|
|
53
72
|
stateMachine.warn = jest.fn();
|
|
@@ -147,14 +166,14 @@ function makeSerializedState() {
|
|
|
147
166
|
systems: [
|
|
148
167
|
{
|
|
149
168
|
name: "state1",
|
|
150
|
-
|
|
169
|
+
serializationVersion: 1,
|
|
151
170
|
state: {
|
|
152
171
|
foo: "bar1",
|
|
153
172
|
},
|
|
154
173
|
},
|
|
155
174
|
{
|
|
156
175
|
name: "state2",
|
|
157
|
-
|
|
176
|
+
serializationVersion: 1,
|
|
158
177
|
state: {
|
|
159
178
|
foo: "bar2",
|
|
160
179
|
},
|
|
@@ -164,7 +183,7 @@ function makeSerializedState() {
|
|
|
164
183
|
}
|
|
165
184
|
class MockSerializedSystem {
|
|
166
185
|
constructor() {
|
|
167
|
-
this.
|
|
186
|
+
this.serializationVersion = 1;
|
|
168
187
|
this.name = "mockSystem";
|
|
169
188
|
this.getSystemState = () => {
|
|
170
189
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateMachineEntity.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Entities/StateMachineEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeStateMachineEntity,\n SerializedStates,\n SerializedSystem,\n StateMachineEntity,\n} from \"./StateMachineEntity\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appAO = appObjects.getOrCreate(\"App\");\n\n const stateMachine = makeStateMachineEntity(appAO);\n const stateAppliedObserver = jest.fn();\n stateMachine.addChangeObserver(stateAppliedObserver);\n\n const mockSerializedSystem1 = new MockSerializedSystem();\n mockSerializedSystem1.name = \"state1\";\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n const mockSerializedSystem2 = new MockSerializedSystem();\n mockSerializedSystem2.name = \"state2\";\n stateMachine.registerSerializedSystem(mockSerializedSystem2);\n\n return {\n stateMachine,\n mockSerializedSystem1,\n mockSerializedSystem2,\n stateAppliedObserver,\n appObjects,\n };\n}\n\ndescribe(\"State Machine Entity\", () => {\n it(\"Gets a serialized state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(2);\n\n const serializeState = state.systems[0] as any;\n expect(serializeState.name).toEqual(\"state1\");\n expect(serializeState.seriliziationVersion).toEqual(1);\n expect(serializeState.state).toEqual({ foo: \"bar\" });\n });\n\n it(\"Skips a serialized state that returns undefined\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n mockSerializedSystem1.getSystemState = () => {\n return undefined;\n };\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(1);\n });\n\n it(\"Set serialized state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n const state = makeSerializedState();\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith(\n {\n foo: \"bar1\",\n },\n 1,\n 3,\n );\n });\n\n it(\"Submits an warning if trying to deserialize data with a bad version number\", () => {\n const { stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n const state: SerializedStates = {\n version: -1,\n systems: [],\n };\n\n stateMachine.setSerializedStates(state, 0);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets an empty state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Logs an error if adding two systems with the same name\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets the default state and warns when passing in junk\", () => {\n const { mockSerializedSystem1, stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.applySerializedStatesString(\"your mom goes to college\", 5);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(5);\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Set to default if a system is not in the saved state \", () => {\n const { stateMachine } = makeTestRig();\n const state = makeSerializedState();\n\n const secondSystem = new MockSerializedSystem();\n secondSystem.name = \"second system\";\n stateMachine.registerSerializedSystem(secondSystem);\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(secondSystem.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Notifies after a state has been applied\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Notifies after an empty state has been set\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Gets the entity\", () => {\n const { stateMachine, appObjects } = makeTestRig();\n\n expect(StateMachineEntity.get(appObjects)).toEqual(stateMachine);\n });\n\n it(\"Set serialized state in the order that they are added\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n const system1Order =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n const system2Order =\n mockSerializedSystem2.applySystemState.mock.invocationCallOrder[0];\n\n expect(system1Order).toBeLessThan(system2Order);\n });\n\n it(\"Sets the default before setting states\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n state.systems = [state.systems[0]]; // Removed state 2 data\n\n stateMachine.setSerializedStates(state, 3);\n\n const setSystemOrder =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n\n const setDefaultOrder =\n mockSerializedSystem2.applyDefaultState.mock.invocationCallOrder[0];\n\n expect(setDefaultOrder).toBeLessThan(setSystemOrder);\n });\n\n it(\"Restores the last state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n stateMachine.setSerializedStates = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setSerializedStates).toHaveBeenCalledWith(\n state,\n stateMachine.restoreDurationS,\n );\n });\n\n it(\"Sets it to default if restore is called before a state is set\", () => {\n const { stateMachine } = makeTestRig();\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n\n it(\"Sets it to default if restore is called after a state is set and the default is set\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n stateMachine.setDefaultState(5);\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n});\n\nfunction makeSerializedState(): SerializedStates {\n return {\n version: 2,\n systems: [\n {\n name: \"state1\",\n seriliziationVersion: 1,\n state: {\n foo: \"bar1\",\n },\n },\n {\n name: \"state2\",\n seriliziationVersion: 1,\n state: {\n foo: \"bar2\",\n },\n },\n ],\n };\n}\n\nclass MockSerializedSystem implements SerializedSystem {\n seriliziationVersion = 1;\n\n public name = \"mockSystem\";\n\n getSystemState = (): object | undefined => {\n return {\n foo: \"bar\",\n };\n };\n\n applyDefaultState = jest.fn();\n\n applySystemState = jest.fn();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"StateMachineEntity.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Entities/StateMachineEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n makeStateMachineEntity,\n SerializedStates,\n SerializedSystem,\n StateMachineEntity,\n} from \"./StateMachineEntity\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appAO = appObjects.getOrCreate(\"App\");\n\n const stateMachine = makeStateMachineEntity(appAO);\n const stateAppliedObserver = jest.fn();\n stateMachine.addChangeObserver(stateAppliedObserver);\n\n const mockSerializedSystem1 = new MockSerializedSystem();\n mockSerializedSystem1.name = \"state1\";\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n const mockSerializedSystem2 = new MockSerializedSystem();\n mockSerializedSystem2.name = \"state2\";\n stateMachine.registerSerializedSystem(mockSerializedSystem2);\n\n return {\n stateMachine,\n mockSerializedSystem1,\n mockSerializedSystem2,\n stateAppliedObserver,\n appObjects,\n };\n}\n\ndescribe(\"State Machine Entity\", () => {\n it(\"Gets a serialized state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(2);\n\n const serializeState = state.systems[0] as any;\n expect(serializeState.name).toEqual(\"state1\");\n expect(serializeState.serializationVersion).toEqual(1);\n expect(serializeState.state).toEqual({ foo: \"bar\" });\n });\n\n it(\"Skips a serialized state that returns undefined\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n mockSerializedSystem1.getSystemState = () => {\n return undefined;\n };\n\n const state = stateMachine.getSerializedStates();\n\n expect(state.version).toEqual(2);\n expect(state.systems).toHaveLength(1);\n });\n\n it(\"Set serialized state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n const state = makeSerializedState();\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith(\n {\n foo: \"bar1\",\n },\n 1,\n 3,\n );\n });\n\n it(\"Set serialized state with old misspelled property name for backwards compatibility\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n const state: SerializedStates = {\n version: 2,\n systems: [\n {\n name: \"state1\",\n seriliziationVersion: 1,\n state: {\n foo: \"bar1\",\n },\n } as any,\n ],\n };\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(mockSerializedSystem1.applySystemState).toHaveBeenCalledWith(\n {\n foo: \"bar1\",\n },\n 1,\n 3,\n );\n });\n\n it(\"Submits an warning if trying to deserialize data with a bad version number\", () => {\n const { stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n const state: SerializedStates = {\n version: -1,\n systems: [],\n };\n\n stateMachine.setSerializedStates(state, 0);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets an empty state\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Logs an error if adding two systems with the same name\", () => {\n const { stateMachine, mockSerializedSystem1 } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.registerSerializedSystem(mockSerializedSystem1);\n\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Sets the default state and warns when passing in junk\", () => {\n const { mockSerializedSystem1, stateMachine } = makeTestRig();\n stateMachine.warn = jest.fn();\n stateMachine.applySerializedStatesString(\"your mom goes to college\", 5);\n\n expect(mockSerializedSystem1.applyDefaultState).toHaveBeenCalledWith(5);\n expect(stateMachine.warn).toHaveBeenCalled();\n });\n\n it(\"Set to default if a system is not in the saved state \", () => {\n const { stateMachine } = makeTestRig();\n const state = makeSerializedState();\n\n const secondSystem = new MockSerializedSystem();\n secondSystem.name = \"second system\";\n stateMachine.registerSerializedSystem(secondSystem);\n\n stateMachine.setSerializedStates(state, 3);\n\n expect(secondSystem.applyDefaultState).toHaveBeenCalledWith(3);\n });\n\n it(\"Notifies after a state has been applied\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Notifies after an empty state has been set\", () => {\n const { stateMachine, stateAppliedObserver } = makeTestRig();\n\n stateMachine.setDefaultState(3);\n\n expect(stateAppliedObserver).toHaveBeenCalled();\n });\n\n it(\"Gets the entity\", () => {\n const { stateMachine, appObjects } = makeTestRig();\n\n expect(StateMachineEntity.get(appObjects)).toEqual(stateMachine);\n });\n\n it(\"Set serialized state in the order that they are added\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n const system1Order =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n const system2Order =\n mockSerializedSystem2.applySystemState.mock.invocationCallOrder[0];\n\n expect(system1Order).toBeLessThan(system2Order);\n });\n\n it(\"Sets the default before setting states\", () => {\n const { stateMachine, mockSerializedSystem1, mockSerializedSystem2 } =\n makeTestRig();\n\n const state = makeSerializedState();\n state.systems = [state.systems[0]]; // Removed state 2 data\n\n stateMachine.setSerializedStates(state, 3);\n\n const setSystemOrder =\n mockSerializedSystem1.applySystemState.mock.invocationCallOrder[0];\n\n const setDefaultOrder =\n mockSerializedSystem2.applyDefaultState.mock.invocationCallOrder[0];\n\n expect(setDefaultOrder).toBeLessThan(setSystemOrder);\n });\n\n it(\"Restores the last state\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n\n stateMachine.setSerializedStates = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setSerializedStates).toHaveBeenCalledWith(\n state,\n stateMachine.restoreDurationS,\n );\n });\n\n it(\"Sets it to default if restore is called before a state is set\", () => {\n const { stateMachine } = makeTestRig();\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n\n it(\"Sets it to default if restore is called after a state is set and the default is set\", () => {\n const { stateMachine } = makeTestRig();\n\n const state = makeSerializedState();\n stateMachine.setSerializedStates(state, 3);\n stateMachine.setDefaultState(5);\n\n stateMachine.setDefaultState = jest.fn();\n\n stateMachine.restoreLastState();\n\n expect(stateMachine.setDefaultState).toHaveBeenCalled();\n });\n});\n\nfunction makeSerializedState(): SerializedStates {\n return {\n version: 2,\n systems: [\n {\n name: \"state1\",\n serializationVersion: 1,\n state: {\n foo: \"bar1\",\n },\n },\n {\n name: \"state2\",\n serializationVersion: 1,\n state: {\n foo: \"bar2\",\n },\n },\n ],\n };\n}\n\nclass MockSerializedSystem implements SerializedSystem {\n serializationVersion = 1;\n\n public name = \"mockSystem\";\n\n getSystemState = (): object | undefined => {\n return {\n foo: \"bar\",\n };\n };\n\n applyDefaultState = jest.fn();\n\n applySystemState = jest.fn();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TryStickAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Stick/UCs/TryStickAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport {\n makeMockScenePixelPickUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon\";\nimport { makeToolRepo, ToolState } from \"../../Tools\";\nimport { StickUCMock } from \"../Mocks/StickUCMock\";\nimport {\n makeTryStickAppObjectUC,\n TryStickAppObjectUC,\n} from \"./TryStickAppObjectUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingleton = jest.spyOn(appObjects, \"registerSingleton\");\n\n const ao = appObjects.getOrCreate(\"AO\");\n const uc = makeTryStickAppObjectUC(ao);\n\n const stickableObj = appObjects.getOrCreate(\"stickableObj\");\n const mockHideUC = new StickUCMock(stickableObj);\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"stickableObj\" });\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelPick = makeMockScenePixelPickUC(appObjects);\n mockPixelPick.scenePixelPick = jest\n .fn()\n .mockReturnValue({ appObjectID: \"stickableObj\" });\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"Tool\"));\n const peelTool = toolRepo.makeTool(\"PEEL\");\n peelTool.state = ToolState.ACTIVE;\n\n return {\n appObjects,\n ao,\n mockHideUC,\n uc,\n registerSingleton,\n mockPick,\n mockPixelPick,\n peelTool,\n };\n}\n\ndescribe(\"Try Stick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TryStickAppObjectUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Registers as the singleton\", () => {\n const { registerSingleton, uc } = makeTestRig();\n\n expect(registerSingleton).toHaveBeenCalledWith(uc);\n });\n\n it(\"Picks with the ray\", () => {\n const { uc, mockPick } = makeTestRig();\n\n const pickRay = ParametricLine.FromPointDirection(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6)
|
|
1
|
+
{"version":3,"file":"TryStickAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Stick/UCs/TryStickAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\nimport {\n makeMockScenePixelPickUC,\n makeMockSceneRayPickUC,\n} from \"../../Babylon\";\nimport { makeToolRepo, ToolState } from \"../../Tools\";\nimport { StickUCMock } from \"../Mocks/StickUCMock\";\nimport {\n makeTryStickAppObjectUC,\n TryStickAppObjectUC,\n} from \"./TryStickAppObjectUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const registerSingleton = jest.spyOn(appObjects, \"registerSingleton\");\n\n const ao = appObjects.getOrCreate(\"AO\");\n const uc = makeTryStickAppObjectUC(ao);\n\n const stickableObj = appObjects.getOrCreate(\"stickableObj\");\n const mockHideUC = new StickUCMock(stickableObj);\n\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"stickableObj\" });\n mockRayPick.sceneRayPick = mockPick;\n\n const mockPixelPick = makeMockScenePixelPickUC(appObjects);\n mockPixelPick.scenePixelPick = jest\n .fn()\n .mockReturnValue({ appObjectID: \"stickableObj\" });\n\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"Tool\"));\n const peelTool = toolRepo.makeTool(\"PEEL\");\n peelTool.state = ToolState.ACTIVE;\n\n return {\n appObjects,\n ao,\n mockHideUC,\n uc,\n registerSingleton,\n mockPick,\n mockPixelPick,\n peelTool,\n };\n}\n\ndescribe(\"Try Stick UC\", () => {\n it(\"Gets the singleton\", () => {\n const { appObjects, uc } = makeTestRig();\n\n expect(TryStickAppObjectUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"Registers as the singleton\", () => {\n const { registerSingleton, uc } = makeTestRig();\n\n expect(registerSingleton).toHaveBeenCalledWith(uc);\n });\n\n it(\"Picks with the ray\", () => {\n const { uc, mockPick } = makeTestRig();\n\n const pickRay = ParametricLine.FromPointDirection(\n new Vector3(1, 2, 3),\n new Vector3(4, 5, 6),\n );\n\n uc.tryWithRay(pickRay);\n\n expect(mockPick).toHaveBeenCalledWith(pickRay);\n });\n\n it(\"Calls the UC\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(mockHideUC.doStick).toHaveBeenCalled();\n });\n\n it(\"Does not call on ray pick if not allowed\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.allow = () => {\n return false;\n };\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(mockHideUC.doStick).not.toHaveBeenCalled();\n });\n\n it(\"Doesn't warn if the picked object does not have the UC\", () => {\n const { uc, mockPick, appObjects } = makeTestRig();\n\n appObjects.submitWarning = jest.fn();\n appObjects.getOrCreate(\"SomeOtherObject\");\n mockPick.mockReturnValue({\n appObjectID: \"SomeOtherObject\",\n });\n\n uc.tryWithRay(ParametricLine.Forward());\n\n expect(appObjects.submitWarning).not.toHaveBeenCalled();\n });\n\n it(\"Picks with a pixel\", () => {\n const { uc, mockPixelPick } = makeTestRig();\n\n const pickPixel = new Vector2(1, 2);\n\n uc.tryWithPixel(pickPixel);\n\n expect(mockPixelPick.scenePixelPick).toHaveBeenCalledWith(pickPixel);\n });\n\n it(\"Calls the UC with a pixel pick\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.tryWithPixel(Vector2.One());\n\n expect(mockHideUC.doStick).toHaveBeenCalled();\n });\n\n it(\"Does not call on pixel pick if not allowed\", () => {\n const { uc, mockHideUC } = makeTestRig();\n\n uc.allow = () => {\n return false;\n };\n\n uc.tryWithPixel(Vector2.One());\n\n expect(mockHideUC.doStick).not.toHaveBeenCalled();\n });\n\n it(\"Allows if the peel tool is active\", () => {\n const { uc, peelTool } = makeTestRig();\n\n peelTool.state = ToolState.ACTIVE;\n\n expect(uc.allow()).toEqual(true);\n\n peelTool.state = ToolState.ENABLED;\n\n expect(uc.allow()).toEqual(false);\n });\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AppObjectSingletonPM, getSingletonComponent, } from "@vived/core";
|
|
2
2
|
import { StoredView } from "../Entities";
|
|
3
|
-
export class HasStoredViewPM extends
|
|
3
|
+
export class HasStoredViewPM extends AppObjectSingletonPM {
|
|
4
4
|
}
|
|
5
5
|
HasStoredViewPM.type = "HasStoredViewPM";
|
|
6
6
|
HasStoredViewPM.get = (appObjects) => getSingletonComponent(HasStoredViewPM.type, appObjects);
|
|
@@ -16,19 +16,15 @@ class HasStoredViewPMImp extends HasStoredViewPM {
|
|
|
16
16
|
}
|
|
17
17
|
constructor(appObject) {
|
|
18
18
|
super(appObject, HasStoredViewPM.type);
|
|
19
|
-
this.
|
|
19
|
+
this.defaultVM = false;
|
|
20
|
+
this.formVM = () => {
|
|
20
21
|
if (!this.storedView)
|
|
21
22
|
return;
|
|
22
23
|
this.doUpdateView(this.storedView.hasStoredView);
|
|
23
24
|
};
|
|
24
|
-
this.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.storedView?.removeOnDisposeObserver(this.dispose);
|
|
28
|
-
};
|
|
29
|
-
this.storedView?.addChangeObserver(this.onRepoChange);
|
|
30
|
-
this.onRepoChange();
|
|
31
|
-
this.appObjects.registerSingleton(this);
|
|
25
|
+
if (this.storedView) {
|
|
26
|
+
this.observeEntity(this.storedView);
|
|
27
|
+
}
|
|
32
28
|
}
|
|
33
29
|
}
|
|
34
30
|
//# sourceMappingURL=HasStoredViewPM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HasStoredViewPM.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"HasStoredViewPM.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EAEpB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAgB,eAAgB,SAAQ,oBAA6B;;AACzD,oBAAI,GAAG,iBAAiB,CAAC;AAElC,mBAAG,GAAG,CAAC,UAAyB,EAA+B,EAAE,CACtE,qBAAqB,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAG5D,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAa,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAhBzC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n AppObject,\n AppObjectSingletonPM,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { StoredView } from \"../Entities\";\n\nexport abstract class HasStoredViewPM extends AppObjectSingletonPM<boolean> {\n static readonly type = \"HasStoredViewPM\";\n\n static get = (appObjects: AppObjectRepo): HasStoredViewPM | undefined =>\n getSingletonComponent(HasStoredViewPM.type, appObjects);\n}\n\nexport function makeHasStoredViewPM(appObject: AppObject): HasStoredViewPM {\n return new HasStoredViewPMImp(appObject);\n}\n\nclass HasStoredViewPMImp extends HasStoredViewPM {\n defaultVM = false;\n\n private get storedView() {\n return this.getCachedSingleton<StoredView>(StoredView.type);\n }\n\n vmsAreEqual(a: boolean, b: boolean): boolean {\n return a === b;\n }\n\n formVM = (): void => {\n if (!this.storedView) return;\n this.doUpdateView(this.storedView.hasStoredView);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, HasStoredViewPM.type);\n\n if (this.storedView) {\n this.observeEntity(this.storedView);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HasStoredViewPM.test.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAChD,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC;QACjC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;QAChC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeSceneRootEntity } from \"../../SceneRoot\";\nimport { makeStoredView } from \"../Entities\";\nimport { HasStoredViewPM, makeHasStoredViewPM } from \"./HasStoredViewPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"Scene Root\");\n makeSceneRootEntity(ao);\n const storedView = makeStoredView(ao);\n const pm = makeHasStoredViewPM(ao);\n return { storedView, pm, appObjects };\n}\n\ndescribe(\"Has Stored View Presentation Manager\", () => {\n it(\"Initializes the VM\", () => {\n const { pm } = makeTestRig();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Sets the show based on the is rendering flag\", () => {\n const { pm, storedView } = makeTestRig();\n\n storedView.hasStoredView = false;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(false);\n\n storedView.hasStoredView = true;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Checks for equal vms\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n });\n\n it(\"Checks for a change in the VM\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n });\n\n it(\"Gets the PM\", () => {\n const { pm, appObjects } = makeTestRig();\n\n expect(HasStoredViewPM.get(appObjects)).toEqual(pm);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"HasStoredViewPM.test.js","sourceRoot":"","sources":["../../../../src/StoredView/PM/HasStoredViewPM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAChD,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACnC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC;QACjC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;QAChC,UAAU,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeSceneRootEntity } from \"../../SceneRoot\";\nimport { makeStoredView } from \"../Entities\";\nimport { HasStoredViewPM, makeHasStoredViewPM } from \"./HasStoredViewPM\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const ao = appObjects.getOrCreate(\"Scene Root\");\n makeSceneRootEntity(ao);\n const storedView = makeStoredView(ao);\n const pm = makeHasStoredViewPM(ao);\n pm.addView(() => {});\n return { storedView, pm, appObjects };\n}\n\ndescribe(\"Has Stored View Presentation Manager\", () => {\n it(\"Initializes the VM\", () => {\n const { pm } = makeTestRig();\n const lastVM = pm.lastVM;\n\n expect(lastVM).toEqual(false);\n });\n\n it(\"Sets the show based on the is rendering flag\", () => {\n const { pm, storedView } = makeTestRig();\n\n storedView.hasStoredView = false;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(false);\n\n storedView.hasStoredView = true;\n storedView.notifyOnChange();\n\n expect(pm.lastVM).toEqual(true);\n });\n\n it(\"Checks for equal vms\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, true)).toEqual(true);\n expect(pm.vmsAreEqual(false, false)).toEqual(true);\n });\n\n it(\"Checks for a change in the VM\", () => {\n const { pm } = makeTestRig();\n expect(pm.vmsAreEqual(true, false)).toEqual(false);\n expect(pm.vmsAreEqual(false, true)).toEqual(false);\n });\n\n it(\"Gets the PM\", () => {\n const { pm, appObjects } = makeTestRig();\n\n expect(HasStoredViewPM.get(appObjects)).toEqual(pm);\n });\n});\n"]}
|
|
@@ -76,7 +76,7 @@ class SerializeStoredViewImp extends SerializeStoredView {
|
|
|
76
76
|
}
|
|
77
77
|
constructor(appObject) {
|
|
78
78
|
super(appObject, SerializeStoredView.type);
|
|
79
|
-
this.
|
|
79
|
+
this.serializationVersion = 1;
|
|
80
80
|
const stateMachine = StateMachineEntity.get(appObject.appObjectRepo);
|
|
81
81
|
if (stateMachine) {
|
|
82
82
|
stateMachine.registerSerializedSystem(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializeStoredView.js","sourceRoot":"","sources":["../../../../src/StoredView/UC/SerializeStoredView.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { Quaternion, Vector3 } from \"@vived/core\";\nimport {\n SerializedSystem,\n StateMachineEntity,\n} from \"../../StateMachine/Entities/StateMachineEntity\";\nimport { StoredView } from \"../Entities/StoredView\";\nimport { RestoreStoredViewUC } from \"./RestoreStoredViewUC\";\n\nexport abstract class SerializeStoredView\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeStoredView\";\n name: string = \"storedView\";\n abstract
|
|
1
|
+
{"version":3,"file":"SerializeStoredView.js","sourceRoot":"","sources":["../../../../src/StoredView/UC/SerializeStoredView.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { Quaternion, Vector3 } from \"@vived/core\";\nimport {\n SerializedSystem,\n StateMachineEntity,\n} from \"../../StateMachine/Entities/StateMachineEntity\";\nimport { StoredView } from \"../Entities/StoredView\";\nimport { RestoreStoredViewUC } from \"./RestoreStoredViewUC\";\n\nexport abstract class SerializeStoredView\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeStoredView\";\n name: string = \"storedView\";\n abstract serializationVersion: number;\n abstract getSystemState(): object;\n abstract applySystemState(state: object, version: number): void;\n abstract applyDefaultState(transitionDuration: number): void;\n}\n\nexport function makeSerializeStoredView(\n appObject: AppObject,\n): SerializeStoredView {\n return new SerializeStoredViewImp(appObject);\n}\n\nclass SerializeStoredViewImp extends SerializeStoredView {\n serializationVersion = 1;\n\n private get storedView() {\n return this.getCachedSingleton<StoredView>(StoredView.type);\n }\n\n private get restoreStoredViewUC() {\n return this.getCachedSingleton<RestoreStoredViewUC>(\n RestoreStoredViewUC.type,\n );\n }\n\n getSystemState(): object {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return {};\n }\n\n const data: StoredViewDataV1 = {\n position: this.storedView.position.dto,\n rotation: this.storedView.rotation.dto,\n scale: this.storedView.scale,\n hasStoredView: this.storedView.hasStoredView,\n };\n\n return data;\n }\n\n applySystemState(serializedState: object, version: number): void {\n try {\n if (version === 1) {\n const castState = serializedState as StoredViewDataV1;\n this.applyV1Data(castState);\n } else {\n console.warn(\n `[SerializeStoredView] Unsupported version number ${version}. Defaulting`,\n );\n this.applyDefaultState();\n }\n } catch (e) {\n console.warn(\n `[SerializeStoredView] Caught when deserializing ${e}. Defaulting`,\n );\n this.applyDefaultState();\n }\n }\n\n applyDefaultState(): void {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return;\n }\n\n this.storedView.position = Vector3.Zero();\n this.storedView.rotation = Quaternion.Identity();\n this.storedView.scale = 1;\n this.storedView.hasStoredView = false;\n }\n\n private applyV1Data(data: StoredViewDataV1) {\n if (!this.storedView) {\n console.warn(\"[SerializeStoredView] No stored view entity\");\n return;\n }\n\n const pos = Vector3.FromDTO(data.position);\n const rot = Quaternion.FromDTO(data.rotation);\n\n this.storedView.position = pos;\n this.storedView.rotation = rot;\n this.storedView.scale = data.scale;\n this.storedView.hasStoredView = data.hasStoredView;\n\n if (data.hasStoredView) {\n this.restoreStoredViewUC?.restoreStoredView();\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeStoredView.type);\n\n const stateMachine = StateMachineEntity.get(appObject.appObjectRepo);\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\"Unable to find StateMachineEntity\");\n }\n }\n}\n\nexport interface StoredViewDataV1 {\n position: { x: number; y: number; z: number };\n rotation: { x: number; y: number; z: number; w: number };\n scale: number;\n hasStoredView: boolean;\n}\n"]}
|