@vived/app 4.1.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModel.d.ts +42 -0
  2. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModel.js +99 -0
  3. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModelRepo.d.ts +12 -0
  4. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModelRepo.js +45 -0
  5. package/lib/AppObjectComponents/ChannelModel/index.d.ts +2 -0
  6. package/lib/AppObjectComponents/ChannelModel/index.js +14 -0
  7. package/lib/AppObjectComponents/Dispatcher/Entities/AppDispatcher.d.ts +16 -0
  8. package/lib/AppObjectComponents/Dispatcher/Entities/AppDispatcher.js +40 -0
  9. package/lib/AppObjectComponents/Dispatcher/Factories/makeBasicDispatcher.d.ts +5 -0
  10. package/lib/AppObjectComponents/Dispatcher/Factories/makeBasicDispatcher.js +25 -0
  11. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStartZSpaceUC.d.ts +10 -0
  12. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStartZSpaceUC.js +44 -0
  13. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStopZSpaceUC.d.ts +10 -0
  14. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStopZSpaceUC.js +44 -0
  15. package/lib/AppObjectComponents/Dispatcher/UC/GoToNextStateUC.d.ts +10 -0
  16. package/lib/AppObjectComponents/Dispatcher/UC/GoToNextStateUC.js +44 -0
  17. package/lib/AppObjectComponents/Dispatcher/UC/GoToPreviousStateUC.d.ts +10 -0
  18. package/lib/AppObjectComponents/Dispatcher/UC/GoToPreviousStateUC.js +44 -0
  19. package/lib/AppObjectComponents/Dispatcher/UC/HasNextStateUC.d.ts +10 -0
  20. package/lib/AppObjectComponents/Dispatcher/UC/HasNextStateUC.js +54 -0
  21. package/lib/AppObjectComponents/Dispatcher/UC/HasPreviousStateUC.d.ts +10 -0
  22. package/lib/AppObjectComponents/Dispatcher/UC/HasPreviousStateUC.js +54 -0
  23. package/lib/AppObjectComponents/Dispatcher/UC/IsZSpaceAvailableUC.d.ts +10 -0
  24. package/lib/AppObjectComponents/Dispatcher/UC/IsZSpaceAvailableUC.js +54 -0
  25. package/lib/AppObjectComponents/Dispatcher/index.d.ts +9 -0
  26. package/lib/AppObjectComponents/Dispatcher/index.js +21 -0
  27. package/lib/AppObjectComponents/Enablement/Entities/EnablablementEntity.d.ts +16 -0
  28. package/lib/AppObjectComponents/Enablement/Entities/EnablablementEntity.js +28 -0
  29. package/lib/AppObjectComponents/Enablement/PM/EnablableStatePM.d.ts +14 -0
  30. package/lib/AppObjectComponents/Enablement/PM/EnablableStatePM.js +41 -0
  31. package/lib/AppObjectComponents/Enablement/index.d.ts +2 -0
  32. package/lib/AppObjectComponents/Enablement/index.js +14 -0
  33. package/lib/AppObjectComponents/Hideable/Entities/Hideable.d.ts +10 -0
  34. package/lib/AppObjectComponents/Hideable/Entities/Hideable.js +31 -0
  35. package/lib/AppObjectComponents/Hideable/PresentationManagers/IsHiddenPM.d.ts +12 -0
  36. package/lib/AppObjectComponents/Hideable/PresentationManagers/IsHiddenPM.js +43 -0
  37. package/lib/AppObjectComponents/Hideable/index.d.ts +2 -0
  38. package/lib/AppObjectComponents/Hideable/index.js +14 -0
  39. package/lib/AppObjectComponents/Label/Entities/Label.d.ts +17 -0
  40. package/lib/AppObjectComponents/Label/Entities/Label.js +58 -0
  41. package/lib/AppObjectComponents/Label/PresentationManagers/LabelPM.d.ts +19 -0
  42. package/lib/AppObjectComponents/Label/PresentationManagers/LabelPM.js +62 -0
  43. package/lib/AppObjectComponents/Label/index.d.ts +2 -0
  44. package/lib/AppObjectComponents/Label/index.js +14 -0
  45. package/lib/AppObjectComponents/Mesh/Entities/Mesh.d.ts +21 -0
  46. package/lib/AppObjectComponents/Mesh/Entities/Mesh.js +45 -0
  47. package/lib/AppObjectComponents/Mesh/index.d.ts +1 -0
  48. package/lib/{Components/Tools/Factory → AppObjectComponents/Mesh}/index.js +1 -2
  49. package/lib/AppObjectComponents/OverlayColor/Entities/OverlayColor.d.ts +25 -0
  50. package/lib/AppObjectComponents/OverlayColor/Entities/OverlayColor.js +59 -0
  51. package/lib/AppObjectComponents/OverlayColor/PresentationManagers/OverlayColorPM.d.ts +13 -0
  52. package/lib/AppObjectComponents/OverlayColor/PresentationManagers/OverlayColorPM.js +43 -0
  53. package/lib/AppObjectComponents/OverlayColor/index.d.ts +2 -0
  54. package/lib/AppObjectComponents/OverlayColor/index.js +14 -0
  55. package/lib/AppObjectComponents/SceneRoot/Entities/SceneRoot.d.ts +31 -0
  56. package/lib/AppObjectComponents/SceneRoot/Entities/SceneRoot.js +106 -0
  57. package/lib/AppObjectComponents/SceneRoot/UC/SerializeSceneRoot.d.ts +31 -0
  58. package/lib/AppObjectComponents/SceneRoot/UC/SerializeSceneRoot.js +109 -0
  59. package/lib/AppObjectComponents/SceneRoot/index.d.ts +2 -0
  60. package/lib/AppObjectComponents/SceneRoot/index.js +14 -0
  61. package/lib/AppObjectComponents/StoredView/Entities/StoredView.d.ts +13 -0
  62. package/lib/AppObjectComponents/StoredView/Entities/StoredView.js +64 -0
  63. package/lib/AppObjectComponents/StoredView/UC/SerializeStoredView.d.ts +27 -0
  64. package/lib/AppObjectComponents/StoredView/UC/SerializeStoredView.js +82 -0
  65. package/lib/AppObjectComponents/StoredView/index.d.ts +2 -0
  66. package/lib/AppObjectComponents/StoredView/index.js +14 -0
  67. package/lib/AppObjectComponents/Transform3D/Entities/Transform3D.d.ts +45 -0
  68. package/lib/AppObjectComponents/Transform3D/Entities/Transform3D.js +226 -0
  69. package/lib/AppObjectComponents/Transform3D/PresentationManagers/CanBeStuckPM.d.ts +12 -0
  70. package/lib/AppObjectComponents/Transform3D/PresentationManagers/CanBeStuckPM.js +46 -0
  71. package/lib/AppObjectComponents/Transform3D/PresentationManagers/Transform3DPM.d.ts +19 -0
  72. package/lib/AppObjectComponents/Transform3D/PresentationManagers/Transform3DPM.js +60 -0
  73. package/lib/AppObjectComponents/Transform3D/UseCases/PeelTransform3D.d.ts +20 -0
  74. package/lib/AppObjectComponents/Transform3D/UseCases/PeelTransform3D.js +67 -0
  75. package/lib/AppObjectComponents/Transform3D/UseCases/StickTransform3D.d.ts +14 -0
  76. package/lib/AppObjectComponents/Transform3D/UseCases/StickTransform3D.js +53 -0
  77. package/lib/AppObjectComponents/Transform3D/index.d.ts +5 -0
  78. package/lib/AppObjectComponents/Transform3D/index.js +17 -0
  79. package/lib/AppObjectComponents/index.d.ts +10 -0
  80. package/lib/AppObjectComponents/index.js +22 -0
  81. package/lib/Components/Babylon/Mocks/MockPixelToSceneRayUC.d.ts +5 -0
  82. package/lib/Components/Babylon/Mocks/MockPixelToSceneRayUC.js +11 -0
  83. package/lib/Components/Babylon/Mocks/MockSceneRayPickUC.d.ts +5 -0
  84. package/lib/Components/Babylon/Mocks/MockSceneRayPickUC.js +11 -0
  85. package/lib/Components/Dispatcher/UC/RestoreCurrentStateUC.d.ts +10 -0
  86. package/lib/Components/Dispatcher/UC/RestoreCurrentStateUC.js +35 -0
  87. package/lib/Components/Dispatcher/UC/index.d.ts +1 -0
  88. package/lib/Components/Dispatcher/UC/index.js +1 -0
  89. package/lib/Components/Selection/Controller/MouseHoverOnAppObject.d.ts +11 -0
  90. package/lib/Components/Selection/Controller/MouseHoverOnAppObject.js +42 -0
  91. package/lib/Components/Selection/Controller/MousePressOnAppObject.d.ts +18 -0
  92. package/lib/Components/Selection/Controller/MousePressOnAppObject.js +81 -0
  93. package/lib/Components/Selection/Controller/MouseSelectAppObject.d.ts +11 -0
  94. package/lib/Components/Selection/Controller/MouseSelectAppObject.js +46 -0
  95. package/lib/Components/Selection/Controller/StylusHoverOnAppObject.d.ts +11 -0
  96. package/lib/Components/Selection/Controller/StylusHoverOnAppObject.js +42 -0
  97. package/lib/Components/Selection/Controller/StylusPressOnAppObject.d.ts +18 -0
  98. package/lib/Components/Selection/Controller/StylusPressOnAppObject.js +77 -0
  99. package/lib/Components/Selection/Controller/StylusSelectAppObject.d.ts +11 -0
  100. package/lib/Components/Selection/Controller/StylusSelectAppObject.js +44 -0
  101. package/lib/Components/Selection/Controller/TapToSelectAppObject.d.ts +16 -0
  102. package/lib/Components/Selection/Controller/TapToSelectAppObject.js +69 -0
  103. package/lib/Components/Selection/Controller/TouchPressOnAppObject.d.ts +18 -0
  104. package/lib/Components/Selection/Controller/TouchPressOnAppObject.js +78 -0
  105. package/lib/Components/Selection/Controller/index.d.ts +8 -0
  106. package/lib/Components/Selection/Controller/index.js +20 -0
  107. package/lib/Components/Selection/Entities/Selectable.d.ts +15 -0
  108. package/lib/Components/Selection/Entities/Selectable.js +48 -0
  109. package/lib/Components/Selection/Entities/Selection.d.ts +18 -0
  110. package/lib/Components/Selection/Entities/Selection.js +122 -0
  111. package/lib/Components/Selection/Entities/index.d.ts +2 -0
  112. package/lib/Components/Selection/Entities/index.js +14 -0
  113. package/lib/Components/Selection/PM/SelectableStatePM.d.ts +16 -0
  114. package/lib/Components/Selection/PM/SelectableStatePM.js +51 -0
  115. package/lib/Components/Selection/PM/SelectedObjectPM.d.ts +6 -0
  116. package/lib/Components/Selection/PM/SelectedObjectPM.js +41 -0
  117. package/lib/Components/Selection/PM/index.d.ts +2 -0
  118. package/lib/Components/Selection/PM/index.js +14 -0
  119. package/lib/Components/Selection/UC/HoverAppObjectUC.d.ts +11 -0
  120. package/lib/Components/Selection/UC/HoverAppObjectUC.js +59 -0
  121. package/lib/Components/Selection/UC/PressAppObjectUC.d.ts +11 -0
  122. package/lib/Components/Selection/UC/PressAppObjectUC.js +60 -0
  123. package/lib/Components/Selection/UC/SelectAppObjectUC.d.ts +11 -0
  124. package/lib/Components/Selection/UC/SelectAppObjectUC.js +59 -0
  125. package/lib/Components/Selection/UC/index.d.ts +3 -0
  126. package/lib/Components/Selection/UC/index.js +15 -0
  127. package/lib/Components/Selection/index.d.ts +4 -0
  128. package/lib/Components/Selection/index.js +16 -0
  129. package/lib/Components/index.d.ts +1 -0
  130. package/lib/Components/index.js +1 -0
  131. package/lib/Controllers/HoverLabelMouse.d.ts +10 -0
  132. package/lib/Controllers/HoverLabelMouse.js +23 -0
  133. package/lib/Controllers/HoverLabelTouch.d.ts +14 -0
  134. package/lib/Controllers/HoverLabelTouch.js +41 -0
  135. package/lib/Controllers/ToolHotkeys.d.ts +6 -0
  136. package/lib/Controllers/ToolHotkeys.js +25 -0
  137. package/lib/Controllers/index.d.ts +3 -0
  138. package/lib/Controllers/index.js +15 -0
  139. package/lib/Entities/AppBoundary.d.ts +6 -0
  140. package/lib/Entities/AppBoundary.js +2 -0
  141. package/lib/Entities/AppDispatcher.d.ts +63 -0
  142. package/lib/Entities/AppDispatcher.js +336 -0
  143. package/lib/Entities/AppHandler.d.ts +20 -0
  144. package/lib/Entities/AppHandler.js +94 -0
  145. package/lib/Entities/Babylon.d.ts +48 -0
  146. package/lib/Entities/Babylon.js +146 -0
  147. package/lib/Entities/BaseApp.d.ts +9 -0
  148. package/lib/Entities/BaseApp.js +30 -0
  149. package/lib/Entities/DevicePreview.d.ts +11 -0
  150. package/lib/Entities/DevicePreview.js +49 -0
  151. package/lib/Entities/FocusCamera.d.ts +70 -0
  152. package/lib/Entities/FocusCamera.js +272 -0
  153. package/lib/Entities/FramedScreen.d.ts +15 -0
  154. package/lib/Entities/FramedScreen.js +58 -0
  155. package/lib/Entities/FramedScreenContainer.d.ts +12 -0
  156. package/lib/Entities/FramedScreenContainer.js +41 -0
  157. package/lib/Entities/HoverLabels.d.ts +42 -0
  158. package/lib/Entities/HoverLabels.js +82 -0
  159. package/lib/Entities/KeyboardInput.d.ts +13 -0
  160. package/lib/Entities/KeyboardInput.js +68 -0
  161. package/lib/Entities/Memoized/MemoizedAngle.d.ts +9 -0
  162. package/lib/Entities/Memoized/MemoizedAngle.js +22 -0
  163. package/lib/Entities/Memoized/MemoizedBoolean.d.ts +8 -0
  164. package/lib/Entities/Memoized/MemoizedBoolean.js +22 -0
  165. package/lib/Entities/Memoized/MemoizedColor.d.ts +9 -0
  166. package/lib/Entities/Memoized/MemoizedColor.js +23 -0
  167. package/lib/Entities/Memoized/MemoizedNumber.d.ts +8 -0
  168. package/lib/Entities/Memoized/MemoizedNumber.js +22 -0
  169. package/lib/Entities/Memoized/MemoizedQuaternion.d.ts +9 -0
  170. package/lib/Entities/Memoized/MemoizedQuaternion.js +23 -0
  171. package/lib/Entities/Memoized/MemoizedString.d.ts +8 -0
  172. package/lib/Entities/Memoized/MemoizedString.js +22 -0
  173. package/lib/Entities/Memoized/MemoizedVector2.d.ts +9 -0
  174. package/lib/Entities/Memoized/MemoizedVector2.js +23 -0
  175. package/lib/Entities/Memoized/MemoizedVector3.d.ts +9 -0
  176. package/lib/Entities/Memoized/MemoizedVector3.js +23 -0
  177. package/lib/Entities/MeshModel.d.ts +68 -0
  178. package/lib/Entities/MeshModel.js +174 -0
  179. package/lib/Entities/ModelObject.d.ts +10 -0
  180. package/lib/Entities/ModelObject.js +42 -0
  181. package/lib/Entities/MouseInput.d.ts +21 -0
  182. package/lib/Entities/MouseInput.js +127 -0
  183. package/lib/Entities/ObservableEntityRepo.d.ts +20 -0
  184. package/lib/Entities/ObservableEntityRepo.js +80 -0
  185. package/lib/Entities/QuestionChallenge.d.ts +21 -0
  186. package/lib/Entities/QuestionChallenge.js +103 -0
  187. package/lib/Entities/QuestionChallengeAnswer.d.ts +32 -0
  188. package/lib/Entities/QuestionChallengeAnswer.js +51 -0
  189. package/lib/Entities/SceneModel.d.ts +85 -0
  190. package/lib/Entities/SceneModel.js +202 -0
  191. package/lib/Entities/SceneModelMesh.d.ts +40 -0
  192. package/lib/Entities/SceneModelMesh.js +75 -0
  193. package/lib/Entities/SceneModelRepo.d.ts +11 -0
  194. package/lib/Entities/SceneModelRepo.js +48 -0
  195. package/lib/Entities/SceneObject.d.ts +23 -0
  196. package/lib/Entities/SceneObject.js +79 -0
  197. package/lib/Entities/SceneObjectsRepo.d.ts +12 -0
  198. package/lib/Entities/SceneObjectsRepo.js +58 -0
  199. package/lib/Entities/SceneRoot.d.ts +29 -0
  200. package/lib/Entities/SceneRoot.js +145 -0
  201. package/lib/Entities/StateMachine.d.ts +29 -0
  202. package/lib/Entities/StateMachine.js +98 -0
  203. package/lib/Entities/Tool.d.ts +81 -0
  204. package/lib/Entities/Tool.js +94 -0
  205. package/lib/Entities/ToolRepository.d.ts +46 -0
  206. package/lib/Entities/ToolRepository.js +118 -0
  207. package/lib/Entities/TouchInput.d.ts +28 -0
  208. package/lib/Entities/TouchInput.js +144 -0
  209. package/lib/Entities/UndoRedo.d.ts +22 -0
  210. package/lib/Entities/UndoRedo.js +61 -0
  211. package/lib/PresentationManagers/DevicePreviewPM.d.ts +14 -0
  212. package/lib/PresentationManagers/DevicePreviewPM.js +30 -0
  213. package/lib/PresentationManagers/FocusCameraPM.d.ts +15 -0
  214. package/lib/PresentationManagers/FocusCameraPM.js +31 -0
  215. package/lib/PresentationManagers/FocusCameraPosRotPM.d.ts +13 -0
  216. package/lib/PresentationManagers/FocusCameraPosRotPM.js +28 -0
  217. package/lib/PresentationManagers/FramedScreenContainerPM.d.ts +18 -0
  218. package/lib/PresentationManagers/FramedScreenContainerPM.js +55 -0
  219. package/lib/PresentationManagers/HasRedoPM.d.ts +9 -0
  220. package/lib/PresentationManagers/HasRedoPM.js +22 -0
  221. package/lib/PresentationManagers/HasUndoPM.d.ts +9 -0
  222. package/lib/PresentationManagers/HasUndoPM.js +22 -0
  223. package/lib/PresentationManagers/HoverLabels/AllowHoverLabelPM.d.ts +9 -0
  224. package/lib/PresentationManagers/HoverLabels/AllowHoverLabelPM.js +19 -0
  225. package/lib/PresentationManagers/HoverLabels/HoverLabelPM.d.ts +17 -0
  226. package/lib/PresentationManagers/HoverLabels/HoverLabelPM.js +32 -0
  227. package/lib/PresentationManagers/HoverLabels/index.d.ts +2 -0
  228. package/lib/PresentationManagers/HoverLabels/index.js +14 -0
  229. package/lib/PresentationManagers/IsAuthoringPM.d.ts +9 -0
  230. package/lib/PresentationManagers/IsAuthoringPM.js +20 -0
  231. package/lib/PresentationManagers/PresentationManager.d.ts +8 -0
  232. package/lib/PresentationManagers/PresentationManager.js +16 -0
  233. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengeAnswerPM.d.ts +24 -0
  234. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengeAnswerPM.js +65 -0
  235. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengePM.d.ts +17 -0
  236. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengePM.js +46 -0
  237. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengeAnswerPM.d.ts +17 -0
  238. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengeAnswerPM.js +51 -0
  239. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengePM.d.ts +15 -0
  240. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengePM.js +34 -0
  241. package/lib/PresentationManagers/QuestionChallenge/index.d.ts +4 -0
  242. package/lib/PresentationManagers/QuestionChallenge/index.js +16 -0
  243. package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.d.ts +15 -0
  244. package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.js +34 -0
  245. package/lib/PresentationManagers/SceneModel/SceneModelPM.d.ts +15 -0
  246. package/lib/PresentationManagers/SceneModel/SceneModelPM.js +36 -0
  247. package/lib/PresentationManagers/SceneModel/index.d.ts +1 -0
  248. package/lib/PresentationManagers/SceneModel/index.js +13 -0
  249. package/lib/PresentationManagers/SceneObject/SceneObjectPM.d.ts +22 -0
  250. package/lib/PresentationManagers/SceneObject/SceneObjectPM.js +57 -0
  251. package/lib/PresentationManagers/SceneObject/index.d.ts +1 -0
  252. package/lib/PresentationManagers/SceneObject/index.js +13 -0
  253. package/lib/PresentationManagers/ShowBabylonInspectorPM.d.ts +9 -0
  254. package/lib/PresentationManagers/ShowBabylonInspectorPM.js +24 -0
  255. package/lib/PresentationManagers/ToolPM.d.ts +17 -0
  256. package/lib/PresentationManagers/ToolPM.js +35 -0
  257. package/lib/PresentationManagers/TransformNodePM.d.ts +14 -0
  258. package/lib/PresentationManagers/TransformNodePM.js +23 -0
  259. package/lib/PresentationManagers/index.d.ts +13 -0
  260. package/lib/PresentationManagers/index.js +25 -0
  261. package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.d.ts +17 -0
  262. package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.js +64 -0
  263. package/lib/UseCases/FocusCamera/LerpFocusCamera.d.ts +36 -0
  264. package/lib/UseCases/FocusCamera/LerpFocusCamera.js +71 -0
  265. package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.d.ts +11 -0
  266. package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.js +36 -0
  267. package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.d.ts +11 -0
  268. package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.js +36 -0
  269. package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.d.ts +11 -0
  270. package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.js +26 -0
  271. package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.d.ts +11 -0
  272. package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.js +33 -0
  273. package/lib/UseCases/FocusCamera/SerializeFocusCamera.d.ts +22 -0
  274. package/lib/UseCases/FocusCamera/SerializeFocusCamera.js +81 -0
  275. package/lib/UseCases/FocusCamera/index.d.ts +7 -0
  276. package/lib/UseCases/FocusCamera/index.js +19 -0
  277. package/lib/UseCases/Handlers/DisposeAppBase.d.ts +8 -0
  278. package/lib/UseCases/Handlers/DisposeAppBase.js +24 -0
  279. package/lib/UseCases/Handlers/SetAppStateBase.d.ts +10 -0
  280. package/lib/UseCases/Handlers/SetAppStateBase.js +32 -0
  281. package/lib/UseCases/Handlers/SetDevicePreviewBase.d.ts +10 -0
  282. package/lib/UseCases/Handlers/SetDevicePreviewBase.js +32 -0
  283. package/lib/UseCases/Handlers/SetIsAuthoringBase.d.ts +10 -0
  284. package/lib/UseCases/Handlers/SetIsAuthoringBase.js +32 -0
  285. package/lib/UseCases/Handlers/ShowBabylonInspectorBase.d.ts +10 -0
  286. package/lib/UseCases/Handlers/ShowBabylonInspectorBase.js +32 -0
  287. package/lib/UseCases/Handlers/StartAppBase.d.ts +10 -0
  288. package/lib/UseCases/Handlers/StartAppBase.js +32 -0
  289. package/lib/UseCases/Handlers/StartZSpaceBase.d.ts +10 -0
  290. package/lib/UseCases/Handlers/StartZSpaceBase.js +35 -0
  291. package/lib/UseCases/Handlers/StopAppBase.d.ts +8 -0
  292. package/lib/UseCases/Handlers/StopAppBase.js +24 -0
  293. package/lib/UseCases/Handlers/StopZSpaceBase.d.ts +8 -0
  294. package/lib/UseCases/Handlers/StopZSpaceBase.js +24 -0
  295. package/lib/UseCases/Handlers/index.d.ts +9 -0
  296. package/lib/UseCases/Handlers/index.js +21 -0
  297. package/lib/UseCases/HoverLabels/SerializeAllowHoverLabel.d.ts +14 -0
  298. package/lib/UseCases/HoverLabels/SerializeAllowHoverLabel.js +35 -0
  299. package/lib/UseCases/HoverLabels/trySetHoverLabel.d.ts +3 -0
  300. package/lib/UseCases/HoverLabels/trySetHoverLabel.js +12 -0
  301. package/lib/UseCases/LerpVector3.d.ts +26 -0
  302. package/lib/UseCases/LerpVector3.js +66 -0
  303. package/lib/UseCases/QuestionChallenge/SerializeQuestionChallenge.d.ts +25 -0
  304. package/lib/UseCases/QuestionChallenge/SerializeQuestionChallenge.js +70 -0
  305. package/lib/UseCases/QuestionChallenge/index.d.ts +4 -0
  306. package/lib/UseCases/QuestionChallenge/index.js +16 -0
  307. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerFeedback.d.ts +2 -0
  308. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerFeedback.js +16 -0
  309. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerText.d.ts +2 -0
  310. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerText.js +16 -0
  311. package/lib/UseCases/QuestionChallenge/toggleQuesionChallengeAnswerIsCorrect.d.ts +2 -0
  312. package/lib/UseCases/QuestionChallenge/toggleQuesionChallengeAnswerIsCorrect.js +16 -0
  313. package/lib/UseCases/SceneModel/SerializeActiveModel.d.ts +18 -0
  314. package/lib/UseCases/SceneModel/SerializeActiveModel.js +74 -0
  315. package/lib/UseCases/SceneModel/SetMeshesEnabledHook.d.ts +7 -0
  316. package/lib/UseCases/SceneModel/SetMeshesEnabledHook.js +22 -0
  317. package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.d.ts +2 -0
  318. package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.js +13 -0
  319. package/lib/UseCases/SceneModel/index.d.ts +5 -0
  320. package/lib/UseCases/SceneModel/index.js +17 -0
  321. package/lib/UseCases/SceneModel/loadNewModel.d.ts +2 -0
  322. package/lib/UseCases/SceneModel/loadNewModel.js +84 -0
  323. package/lib/UseCases/SceneModel/modelDataLoader.d.ts +3 -0
  324. package/lib/UseCases/SceneModel/modelDataLoader.js +33 -0
  325. package/lib/UseCases/SceneObjects/PeelSceneObject.d.ts +18 -0
  326. package/lib/UseCases/SceneObjects/PeelSceneObject.js +61 -0
  327. package/lib/UseCases/SceneObjects/index.d.ts +1 -0
  328. package/lib/UseCases/SceneObjects/index.js +13 -0
  329. package/lib/UseCases/SceneRoot/SerializeSceneRoot.d.ts +33 -0
  330. package/lib/UseCases/SceneRoot/SerializeSceneRoot.js +67 -0
  331. package/lib/UseCases/SceneRoot/index.d.ts +2 -0
  332. package/lib/UseCases/SceneRoot/index.js +14 -0
  333. package/lib/UseCases/SceneRoot/setupSceneRoot.d.ts +2 -0
  334. package/lib/UseCases/SceneRoot/setupSceneRoot.js +11 -0
  335. package/lib/UseCases/index.d.ts +7 -0
  336. package/lib/UseCases/index.js +19 -0
  337. package/lib/UseCases/setDevicePreview.d.ts +2 -0
  338. package/lib/UseCases/setDevicePreview.js +14 -0
  339. package/lib/UseCases/setupStandardAppObjects.d.ts +2 -0
  340. package/lib/UseCases/setupStandardAppObjects.js +10 -0
  341. package/package.json +1 -1
  342. package/lib/Components/App/UC/submitError.d.ts +0 -2
  343. package/lib/Components/App/UC/submitError.js +0 -28
  344. package/lib/Components/App/UC/submitFatal.d.ts +0 -2
  345. package/lib/Components/App/UC/submitFatal.js +0 -28
  346. package/lib/Components/App/UC/submitLog.d.ts +0 -2
  347. package/lib/Components/App/UC/submitLog.js +0 -28
  348. package/lib/Components/App/UC/submitWarning.d.ts +0 -2
  349. package/lib/Components/App/UC/submitWarning.js +0 -28
  350. package/lib/Components/Camera/Factory/CameraFactoryImp.d.ts +0 -4
  351. package/lib/Components/Camera/Factory/CameraFactoryImp.js +0 -25
  352. package/lib/Components/Dispatcher/Mocks/MockLogUC.d.ts +0 -10
  353. package/lib/Components/Dispatcher/Mocks/MockLogUC.js +0 -14
  354. package/lib/Components/Tools/Factory/index.d.ts +0 -2
  355. package/lib/Components/Tools/Factory/setupTool.d.ts +0 -3
  356. package/lib/Components/Tools/Factory/setupTool.js +0 -12
  357. package/lib/Components/Tools/Factory/setupToolRepo.d.ts +0 -4
  358. package/lib/Components/Tools/Factory/setupToolRepo.js +0 -13
@@ -0,0 +1,11 @@
1
+ import { ObservableEntityRepo } from "./ObservableEntityRepo";
2
+ import { SceneModel, SceneModelDTO } from "./SceneModel";
3
+ export declare abstract class SceneModelRepo extends ObservableEntityRepo<SceneModel> {
4
+ abstract get activeModel(): SceneModel | undefined;
5
+ abstract activeModelID: string;
6
+ abstract isLoadingSceneModel: boolean;
7
+ abstract modelLoader(modelID: string): Promise<void>;
8
+ abstract dataLoader(dataID: string): Promise<SceneModelDTO>;
9
+ abstract clearActiveModel(): void;
10
+ }
11
+ export declare function makeSceneModelRepo(): SceneModelRepo;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSceneModelRepo = exports.SceneModelRepo = void 0;
4
+ const MemoizedBoolean_1 = require("./Memoized/MemoizedBoolean");
5
+ const MemoizedString_1 = require("./Memoized/MemoizedString");
6
+ const ObservableEntityRepo_1 = require("./ObservableEntityRepo");
7
+ class SceneModelRepo extends ObservableEntityRepo_1.ObservableEntityRepo {
8
+ }
9
+ exports.SceneModelRepo = SceneModelRepo;
10
+ function makeSceneModelRepo() {
11
+ return new SceneModelRepoImp();
12
+ }
13
+ exports.makeSceneModelRepo = makeSceneModelRepo;
14
+ class SceneModelRepoImp extends SceneModelRepo {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.memoizedActiveModelID = new MemoizedString_1.MemoizedString("", this.notify);
18
+ this.memoizedIsLoading = new MemoizedBoolean_1.MemoizedBoolean(false, this.notify);
19
+ }
20
+ modelLoader( /*modelID: string*/) {
21
+ return Promise.reject(new Error(`SceneModelRepo function modelLoader has not been injected`));
22
+ }
23
+ dataLoader( /*dataID: string*/) {
24
+ return Promise.reject(new Error(`SceneModelRepo function dataLoader has not been injected`));
25
+ }
26
+ get activeModelID() {
27
+ return this.memoizedActiveModelID.val;
28
+ }
29
+ set activeModelID(id) {
30
+ if (!this.has(id)) {
31
+ console.warn("[SceneModelRepo] Unknown Model ID ", id);
32
+ return;
33
+ }
34
+ this.memoizedActiveModelID.val = id;
35
+ }
36
+ get isLoadingSceneModel() {
37
+ return this.memoizedIsLoading.val;
38
+ }
39
+ set isLoadingSceneModel(val) {
40
+ this.memoizedIsLoading.val = val;
41
+ }
42
+ clearActiveModel() {
43
+ this.memoizedActiveModelID.val = "";
44
+ }
45
+ get activeModel() {
46
+ return this.get(this.memoizedActiveModelID.val);
47
+ }
48
+ }
@@ -0,0 +1,23 @@
1
+ import { ObservableEntity } from "./ObservableEntity";
2
+ import { TransformNode } from "./TransformNode";
3
+ export declare abstract class SceneObject extends ObservableEntity {
4
+ abstract readonly id: string;
5
+ abstract get shown(): boolean;
6
+ abstract set shown(shown: boolean);
7
+ abstract get enabled(): boolean;
8
+ abstract set enabled(enabled: boolean);
9
+ abstract get selected(): boolean;
10
+ abstract set selected(selected: boolean);
11
+ abstract get hovered(): boolean;
12
+ abstract set hovered(hovered: boolean);
13
+ abstract get pressed(): boolean;
14
+ abstract set pressed(pressed: boolean);
15
+ abstract get defaultLabel(): string;
16
+ abstract set defaultLabel(defaultLabel: string);
17
+ abstract get customLabel(): string;
18
+ abstract set customLabel(customLabel: string);
19
+ abstract get validationMessage(): string | null;
20
+ abstract transform: TransformNode;
21
+ abstract sceneTransform: unknown;
22
+ }
23
+ export declare function makeSceneObject(id: string): SceneObject;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSceneObject = exports.SceneObject = void 0;
4
+ const MemoizedBoolean_1 = require("./Memoized/MemoizedBoolean");
5
+ const MemoizedString_1 = require("./Memoized/MemoizedString");
6
+ const ObservableEntity_1 = require("./ObservableEntity");
7
+ const TransformNode_1 = require("./TransformNode");
8
+ class SceneObject extends ObservableEntity_1.ObservableEntity {
9
+ }
10
+ exports.SceneObject = SceneObject;
11
+ function makeSceneObject(id) {
12
+ return new SceneObjectImp(id);
13
+ }
14
+ exports.makeSceneObject = makeSceneObject;
15
+ class SceneObjectImp extends SceneObject {
16
+ constructor(id) {
17
+ super();
18
+ this.memoizedDefaultLabel = new MemoizedString_1.MemoizedString("", this.notify);
19
+ this.memoizedCustomLabel = new MemoizedString_1.MemoizedString("", this.notify);
20
+ this.memoizedShown = new MemoizedBoolean_1.MemoizedBoolean(true, this.notify);
21
+ this.memoizedEnabled = new MemoizedBoolean_1.MemoizedBoolean(true, this.notify);
22
+ this.memoizedSelected = new MemoizedBoolean_1.MemoizedBoolean(false, this.notify);
23
+ this.memoizedHovered = new MemoizedBoolean_1.MemoizedBoolean(false, this.notify);
24
+ this.memoizedPressed = new MemoizedBoolean_1.MemoizedBoolean(false, this.notify);
25
+ this.transform = TransformNode_1.makeTransformNode();
26
+ this.id = id;
27
+ this.transform.addObserver(this.notify);
28
+ }
29
+ get defaultLabel() {
30
+ return this.memoizedDefaultLabel.val;
31
+ }
32
+ set defaultLabel(defaultLabel) {
33
+ this.memoizedDefaultLabel.val = defaultLabel;
34
+ }
35
+ get customLabel() {
36
+ return this.memoizedCustomLabel.val;
37
+ }
38
+ set customLabel(customLabel) {
39
+ this.memoizedCustomLabel.val = customLabel;
40
+ }
41
+ get validationMessage() {
42
+ if (this.customLabel.length > 40) {
43
+ return "Object labels are limited to 40 characters";
44
+ }
45
+ else {
46
+ return null;
47
+ }
48
+ }
49
+ get shown() {
50
+ return this.memoizedShown.val;
51
+ }
52
+ set shown(shown) {
53
+ this.memoizedShown.val = shown;
54
+ }
55
+ get enabled() {
56
+ return this.memoizedEnabled.val;
57
+ }
58
+ set enabled(enabled) {
59
+ this.memoizedEnabled.val = enabled;
60
+ }
61
+ get selected() {
62
+ return this.memoizedSelected.val;
63
+ }
64
+ set selected(selected) {
65
+ this.memoizedSelected.val = selected;
66
+ }
67
+ get hovered() {
68
+ return this.memoizedHovered.val;
69
+ }
70
+ set hovered(hovered) {
71
+ this.memoizedHovered.val = hovered;
72
+ }
73
+ get pressed() {
74
+ return this.memoizedPressed.val;
75
+ }
76
+ set pressed(pressed) {
77
+ this.memoizedPressed.val = pressed;
78
+ }
79
+ }
@@ -0,0 +1,12 @@
1
+ import { ObservableEntityRepo } from "./ObservableEntityRepo";
2
+ import { SceneObject } from "./SceneObject";
3
+ export declare abstract class SceneObjectsRepo extends ObservableEntityRepo<SceneObject> {
4
+ abstract get pressedSceneObject(): string | null;
5
+ abstract set pressedSceneObject(sceneObjectId: string | null);
6
+ abstract get hoveredSceneObject(): string | null;
7
+ abstract set hoveredSceneObject(sceneObjectId: string | null);
8
+ abstract unselectAllSceneObjects: () => void;
9
+ abstract getSelectedSceneObjects: () => SceneObject[];
10
+ abstract selectSceneObject: (id: string) => void;
11
+ }
12
+ export declare function makeSceneObjectRepo(): SceneObjectsRepo;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSceneObjectRepo = exports.SceneObjectsRepo = void 0;
4
+ const ObservableEntityRepo_1 = require("./ObservableEntityRepo");
5
+ class SceneObjectsRepo extends ObservableEntityRepo_1.ObservableEntityRepo {
6
+ }
7
+ exports.SceneObjectsRepo = SceneObjectsRepo;
8
+ function makeSceneObjectRepo() {
9
+ return new SceneObjectsRepoImp();
10
+ }
11
+ exports.makeSceneObjectRepo = makeSceneObjectRepo;
12
+ class SceneObjectsRepoImp extends SceneObjectsRepo {
13
+ constructor() {
14
+ super(...arguments);
15
+ this._pressedSceneObject = null;
16
+ this._hoveredSceneObject = null;
17
+ this.unselectAllSceneObjects = () => {
18
+ this.getAll().forEach(sceneObject => {
19
+ sceneObject.selected = false;
20
+ });
21
+ };
22
+ this.getSelectedSceneObjects = () => {
23
+ const selectedObjects = [];
24
+ this.getAll().forEach(sceneObject => {
25
+ if (sceneObject.selected) {
26
+ selectedObjects.push(sceneObject);
27
+ }
28
+ });
29
+ return selectedObjects;
30
+ };
31
+ this.selectSceneObject = (id) => {
32
+ const sceneObject = this.get(id);
33
+ if (sceneObject) {
34
+ sceneObject.selected = true;
35
+ }
36
+ };
37
+ }
38
+ get pressedSceneObject() {
39
+ return this._pressedSceneObject;
40
+ }
41
+ set pressedSceneObject(sceneObjectId) {
42
+ if (sceneObjectId === this._pressedSceneObject) {
43
+ return;
44
+ }
45
+ this._pressedSceneObject = sceneObjectId;
46
+ this.notify();
47
+ }
48
+ get hoveredSceneObject() {
49
+ return this._hoveredSceneObject;
50
+ }
51
+ set hoveredSceneObject(sceneObjectId) {
52
+ if (sceneObjectId === this._hoveredSceneObject) {
53
+ return;
54
+ }
55
+ this._hoveredSceneObject = sceneObjectId;
56
+ this.notify();
57
+ }
58
+ }
@@ -0,0 +1,29 @@
1
+ import { Quaternion, Vector3 } from "../ValueObjects";
2
+ import { ObservableEntity } from "./ObservableEntity";
3
+ import { SceneObject } from "./SceneObject";
4
+ import { EaseFn } from "./TransformNode";
5
+ export declare const SCENE_ROOT_ID = "scene-root";
6
+ export interface DefaultSceneRootData {
7
+ position: [number, number, number];
8
+ rotation: [number, number, number, number];
9
+ scale: number;
10
+ minScale: number;
11
+ maxScale: number;
12
+ }
13
+ export declare abstract class SceneRoot extends ObservableEntity {
14
+ abstract defaultPosition: Vector3;
15
+ abstract defaultRoation: Quaternion;
16
+ abstract defaultScale: number;
17
+ abstract minScale: number;
18
+ abstract maxScale: number;
19
+ abstract id: string;
20
+ abstract sceneObject: SceneObject | undefined;
21
+ abstract position: Vector3;
22
+ abstract rotation: Quaternion;
23
+ abstract scale: number;
24
+ abstract applyDefaultData: (data: DefaultSceneRootData) => void;
25
+ abstract centerOnPoint: (point: Vector3, durationMS: number, easeFn: EaseFn, onCompleted?: () => void) => void;
26
+ abstract lerpToDefault: (durationMS: number, easeFn: EaseFn, onCompleted?: () => void) => void;
27
+ abstract bumpScaleAboutPoint: (amount: number, worldPoint: Vector3) => void;
28
+ }
29
+ export declare function makeSceneRoot(): SceneRoot;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSceneRoot = exports.SceneRoot = exports.SCENE_ROOT_ID = void 0;
4
+ const ValueObjects_1 = require("../ValueObjects");
5
+ const ObservableEntity_1 = require("./ObservableEntity");
6
+ exports.SCENE_ROOT_ID = "scene-root";
7
+ class SceneRoot extends ObservableEntity_1.ObservableEntity {
8
+ }
9
+ exports.SceneRoot = SceneRoot;
10
+ function makeSceneRoot() {
11
+ return new SceneRootImp();
12
+ }
13
+ exports.makeSceneRoot = makeSceneRoot;
14
+ class SceneRootImp extends SceneRoot {
15
+ constructor() {
16
+ super(...arguments);
17
+ this._defaultPosition = ValueObjects_1.Vector3.Zero();
18
+ this._defaultRoation = ValueObjects_1.Quaternion.Identity();
19
+ this._defaultScale = 1;
20
+ this._minScale = 0.01;
21
+ this._maxScale = 10;
22
+ this.applyDefaultData = (data) => {
23
+ this._defaultPosition = ValueObjects_1.Vector3.FromArray(data.position);
24
+ this._defaultRoation = ValueObjects_1.Quaternion.FromArray(data.rotation);
25
+ this._defaultScale = data.scale;
26
+ this._maxScale = data.maxScale;
27
+ this._minScale = data.minScale;
28
+ };
29
+ this.centerOnPoint = (point, durationMS, easeFn, onCompleted) => {
30
+ if (!this.sceneObject) {
31
+ console.warn("SceneRoot does not have a scene object");
32
+ return;
33
+ }
34
+ const finalPosition = ValueObjects_1.Vector3.Subtract(this.sceneObject.transform.worldPosition, point);
35
+ this.sceneObject.transform.lerp(durationMS, easeFn, finalPosition, undefined, undefined, onCompleted);
36
+ };
37
+ this.bumpScaleAboutPoint = (amount, worldPoint) => {
38
+ if (!this.sceneObject) {
39
+ console.warn("SceneRoot does not have a scene object");
40
+ return;
41
+ }
42
+ const localPickOffset = this.sceneObject.transform.worldPointToLocal(worldPoint);
43
+ const currentScale = this.sceneObject.transform.worldScale.x;
44
+ let newScale = currentScale + amount;
45
+ if (newScale < this.minScale) {
46
+ newScale = this.minScale;
47
+ }
48
+ else if (newScale > this.maxScale) {
49
+ newScale = this.maxScale;
50
+ }
51
+ this.sceneObject.transform.worldScale = new ValueObjects_1.Vector3(newScale, newScale, newScale);
52
+ const worldPickOffset = this.sceneObject.transform.localPointToWorld(localPickOffset);
53
+ const bump = ValueObjects_1.Vector3.Subtract(worldPoint, worldPickOffset);
54
+ this.sceneObject.transform.worldPosition = ValueObjects_1.Vector3.Add(bump, this.sceneObject.transform.worldPosition);
55
+ };
56
+ this.lerpToDefault = (durationMS, easeFn, onCompleted) => {
57
+ if (!this.sceneObject) {
58
+ console.warn("SceneRoot does not have a scene object");
59
+ return;
60
+ }
61
+ this.sceneObject.transform.lerp(durationMS, easeFn, this.defaultPosition, this.defaultRoation, new ValueObjects_1.Vector3(this.defaultScale, this.defaultScale, this.defaultScale), onCompleted);
62
+ };
63
+ }
64
+ get position() {
65
+ if (this.sceneObject) {
66
+ return this.sceneObject.transform.localPosition;
67
+ }
68
+ else {
69
+ console.warn("SceneRoot does not have a scene object");
70
+ return ValueObjects_1.Vector3.Zero();
71
+ }
72
+ }
73
+ set position(p) {
74
+ if (this.sceneObject) {
75
+ this.sceneObject.transform.localPosition = p;
76
+ }
77
+ else {
78
+ console.warn("SceneRoot does not have a scene object");
79
+ }
80
+ }
81
+ get rotation() {
82
+ if (this.sceneObject) {
83
+ return this.sceneObject.transform.localRotation;
84
+ }
85
+ else {
86
+ console.warn("SceneRoot does not have a scene object");
87
+ return ValueObjects_1.Quaternion.Identity();
88
+ }
89
+ }
90
+ set rotation(r) {
91
+ if (this.sceneObject) {
92
+ this.sceneObject.transform.localRotation = r;
93
+ }
94
+ else {
95
+ console.warn("SceneRoot does not have a scene object");
96
+ }
97
+ }
98
+ get scale() {
99
+ if (this.sceneObject) {
100
+ return this.sceneObject.transform.localScale.x;
101
+ }
102
+ else {
103
+ console.warn("SceneRoot does not have a scene object");
104
+ return 1;
105
+ }
106
+ }
107
+ set scale(s) {
108
+ if (this.sceneObject) {
109
+ this.sceneObject.transform.localScale = new ValueObjects_1.Vector3(s, s, s);
110
+ }
111
+ else {
112
+ console.warn("SceneRoot does not have a scene object");
113
+ }
114
+ }
115
+ get sceneObject() {
116
+ return this._sceneObject;
117
+ }
118
+ set sceneObject(so) {
119
+ if (this._sceneObject) {
120
+ this._sceneObject.removeObserver(this.notify);
121
+ }
122
+ this._sceneObject = so;
123
+ if (this._sceneObject) {
124
+ this._sceneObject.addObserver(this.notify);
125
+ }
126
+ }
127
+ get defaultPosition() {
128
+ return this._defaultPosition;
129
+ }
130
+ get defaultRoation() {
131
+ return this._defaultRoation;
132
+ }
133
+ get defaultScale() {
134
+ return this._defaultScale;
135
+ }
136
+ get minScale() {
137
+ return this._minScale;
138
+ }
139
+ get maxScale() {
140
+ return this._maxScale;
141
+ }
142
+ get id() {
143
+ return exports.SCENE_ROOT_ID;
144
+ }
145
+ }
@@ -0,0 +1,29 @@
1
+ import { Result } from "../ValueObjects";
2
+ export declare type OnStateHasBeenApplied = () => void;
3
+ export interface SerializedStates {
4
+ version: number;
5
+ systems: SystemState[];
6
+ }
7
+ export interface SystemState {
8
+ name: string;
9
+ seriliziationVersion: number;
10
+ state: object;
11
+ }
12
+ export interface SerializedSystem {
13
+ name: string;
14
+ seriliziationVersion: number;
15
+ getSystemState(): object;
16
+ applySystemState(state: object, version: number, transitionDuration: number): void;
17
+ applyDefaultState(transitionDuration: number): void;
18
+ }
19
+ export interface StateMachine {
20
+ transitionEaseFunction: (normalizedTime: number) => number;
21
+ getSerializedStates(): SerializedStates;
22
+ setSerializedStates(state: SerializedStates, transitionTime: number): Result<null, Error>;
23
+ applySerializedStatesString: (state: string, duration?: number) => void;
24
+ setDefaultState(transitionTime: number): void;
25
+ registerSerializedSystem(serializedSystem: SerializedSystem): Result<null, Error>;
26
+ addStateHasBeenAppliedObserver: (observer: OnStateHasBeenApplied) => void;
27
+ removeStateHasBeenAppliedObserver: (observer: OnStateHasBeenApplied) => void;
28
+ }
29
+ export declare function makeStateMachine(): StateMachine;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeStateMachine = void 0;
4
+ const ValueObjects_1 = require("../ValueObjects");
5
+ const ObserverList_1 = require("./ObserverList");
6
+ function makeStateMachine() {
7
+ return new StateMachineImp();
8
+ }
9
+ exports.makeStateMachine = makeStateMachine;
10
+ class StateMachineImp {
11
+ constructor() {
12
+ this.serializedSystems = new Map();
13
+ this.serilizationVersion = 2;
14
+ this.stateAppliedObservers = new ObserverList_1.ObserverList();
15
+ this.transitionEaseFunction = (normalizedTime) => {
16
+ return normalizedTime; // default to a linear function
17
+ };
18
+ this.applySerializedStatesString = (state, duration = 0) => {
19
+ if (state === "") {
20
+ this.setDefaultState(duration);
21
+ }
22
+ else {
23
+ try {
24
+ const stateObj = JSON.parse(state);
25
+ this.setSerializedStates(stateObj, duration);
26
+ }
27
+ catch (e) {
28
+ this.setDefaultState(duration);
29
+ console.warn("[StateMachine] Failed to deserialize state string: " + e);
30
+ }
31
+ }
32
+ };
33
+ this.registerSerializedSystem = (serializedSystem) => {
34
+ if (this.serializedSystems.has(serializedSystem.name)) {
35
+ const err = new Error(`[StateMachine] Duplicate stateable systems encountered: ${serializedSystem.name}`);
36
+ console.error(err.message);
37
+ return ValueObjects_1.reject(err);
38
+ }
39
+ this.serializedSystems.set(serializedSystem.name, serializedSystem);
40
+ return ValueObjects_1.resolve(null);
41
+ };
42
+ this.getSerializedStates = () => {
43
+ const systems = Array.from(this.serializedSystems.values());
44
+ const serializedStates = systems.map((system) => {
45
+ const state = system.getSystemState();
46
+ return {
47
+ seriliziationVersion: system.seriliziationVersion,
48
+ name: system.name,
49
+ state,
50
+ };
51
+ });
52
+ return {
53
+ version: this.serilizationVersion,
54
+ systems: serializedStates,
55
+ };
56
+ };
57
+ this.setSerializedStates = (state, duration) => {
58
+ if (state.version === 2) {
59
+ const appliedToSystems = [];
60
+ state.systems.forEach((systemState) => {
61
+ const seriliazableSystem = this.serializedSystems.get(systemState.name);
62
+ if (seriliazableSystem) {
63
+ seriliazableSystem.applySystemState(systemState.state, systemState.seriliziationVersion, duration);
64
+ }
65
+ else {
66
+ console.warn("Unable to find seriarializedSystem " + systemState.name);
67
+ }
68
+ appliedToSystems.push(systemState.name);
69
+ });
70
+ this.serializedSystems.forEach((system) => {
71
+ if (!appliedToSystems.includes(system.name)) {
72
+ system.applyDefaultState(duration);
73
+ }
74
+ });
75
+ this.stateAppliedObservers.notify();
76
+ return ValueObjects_1.resolve(null);
77
+ }
78
+ // Here is where we will add support for future versions
79
+ else {
80
+ const err = new Error(`[StateMachine] Unsupported sereialized state encountered: ${state.version}`);
81
+ console.error(err.message);
82
+ return ValueObjects_1.reject(err);
83
+ }
84
+ };
85
+ this.setDefaultState = (duration) => {
86
+ this.serializedSystems.forEach((system) => {
87
+ system.applyDefaultState(duration);
88
+ });
89
+ this.stateAppliedObservers.notify();
90
+ };
91
+ this.addStateHasBeenAppliedObserver = (observer) => {
92
+ this.stateAppliedObservers.add(observer);
93
+ };
94
+ this.removeStateHasBeenAppliedObserver = (observer) => {
95
+ this.stateAppliedObservers.remove(observer);
96
+ };
97
+ }
98
+ }
@@ -0,0 +1,81 @@
1
+ import { ObservableEntity } from "./ObservableEntity";
2
+ export declare enum ToolState {
3
+ HIDDEN = "HIDDEN",
4
+ DISABLED = "DISABLED",
5
+ ENABLED = "ENABLED",
6
+ ACTIVE = "ACTIVE"
7
+ }
8
+ export interface ToolData<ToolTypes> {
9
+ type: ToolTypes;
10
+ isDefault: boolean;
11
+ label: string;
12
+ shortcutLabel: string;
13
+ hotkeys: HotKey[];
14
+ }
15
+ export interface HotKey {
16
+ keyCode: string;
17
+ control?: boolean;
18
+ shift?: boolean;
19
+ meta?: boolean;
20
+ alt?: boolean;
21
+ }
22
+ export declare abstract class Tool<ToolTypes> extends ObservableEntity {
23
+ /**
24
+ * The tool's type
25
+ */
26
+ abstract readonly type: ToolTypes;
27
+ /**
28
+ * Gets label for this tool. This will be human readable
29
+ */
30
+ abstract get label(): string;
31
+ /**
32
+ * Sets label for this tool. This should be human readable. A change will notify
33
+ */
34
+ abstract set label(toolLabel: string);
35
+ /**
36
+ * Is this the default tool? The default tool is what is initiall set Active and
37
+ * is what will be set active if the currently active tool is hidden or disabled.
38
+ */
39
+ abstract readonly isDefault: boolean;
40
+ /**
41
+ * Gets the keyboard shorcut label. This will be displayed to the user via the tool tip
42
+ * Example 'z'
43
+ */
44
+ abstract get shortcutLabel(): string;
45
+ /**
46
+ * Sets the keyboard shorcut label. This will be displayed to the user via the tool tip
47
+ * Example 'z'. This will notify when changed
48
+ */
49
+ abstract set shortcutLabel(shorcut: string);
50
+ /**
51
+ * Get the current tool state
52
+ */
53
+ abstract get state(): ToolState;
54
+ /**
55
+ * Sets the current tool state. This will notify on change
56
+ */
57
+ abstract set state(val: ToolState);
58
+ /**
59
+ * The keyboard shortcuts for this tool
60
+ */
61
+ abstract readonly hotkeys: HotKey[];
62
+ /**
63
+ * Is this tool an action tool. In other words do you just click it and something should happen
64
+ */
65
+ abstract get isAction(): boolean;
66
+ /**
67
+ * If this is an action tool calling this will trigger any actions that have been registered
68
+ */
69
+ abstract triggerActions(): void;
70
+ /**
71
+ * Registers an action with this tool. This action will be called when this tool is triggered
72
+ * @param action The action to call when this tool is triggered
73
+ */
74
+ abstract registerAction(action: () => void): void;
75
+ /**
76
+ * Returns a true if the passed hotkey is in my hotkey list
77
+ * @param hotkey The Hotkey to chekc
78
+ */
79
+ abstract isMyHotkey(hotkey: HotKey): boolean;
80
+ }
81
+ export declare function makeTool<ToolTypes>(data: ToolData<ToolTypes>): Tool<ToolTypes>;