@vived/app 6.7.1 → 6.9.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 (228) hide show
  1. package/README.md +145 -1
  2. package/dist/cjs/BaseApp/UC/RenderCanvasUC.js.map +1 -1
  3. package/dist/cjs/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
  4. package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
  5. package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -1
  6. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js +4 -3
  7. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
  8. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.test.js +35 -0
  9. package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.test.js.map +1 -0
  10. package/dist/cjs/Dispatcher/Factories/setupDispatchers.js +1 -0
  11. package/dist/cjs/Dispatcher/Factories/setupDispatchers.js.map +1 -1
  12. package/dist/cjs/Dispatcher/Factories/setupDispatchers.test.js +33 -0
  13. package/dist/cjs/Dispatcher/Factories/setupDispatchers.test.js.map +1 -0
  14. package/dist/cjs/EventSystem/Entities/EventEntity.js.map +1 -1
  15. package/dist/cjs/EventSystem/Entities/EventEntity.test.js +4 -1
  16. package/dist/cjs/EventSystem/Entities/EventEntity.test.js.map +1 -1
  17. package/dist/cjs/EventSystem/Entities/index.js.map +1 -1
  18. package/dist/cjs/EventSystem/EventSystem.integration.test.js.map +1 -1
  19. package/dist/cjs/EventSystem/Factories/EventSystemFeatureFactory.js.map +1 -1
  20. package/dist/cjs/EventSystem/Factories/EventSystemFeatureFactory.test.js.map +1 -1
  21. package/dist/cjs/EventSystem/Factories/index.js.map +1 -1
  22. package/dist/cjs/EventSystem/Mocks/MockEventEntity.js.map +1 -1
  23. package/dist/cjs/EventSystem/Mocks/index.js.map +1 -1
  24. package/dist/cjs/EventSystem/index.js.map +1 -1
  25. package/dist/cjs/EventSystem/types.js.map +1 -1
  26. package/dist/cjs/LabelDrop/Factories/LabelDropFeatureFactory.js.map +1 -1
  27. package/dist/cjs/LabelDrop/UseCases/SubmitLabelDropResultUC.js.map +1 -1
  28. package/dist/cjs/LabelDrop/UseCases/SubmitLabelDropResultUC.test.js.map +1 -1
  29. package/dist/cjs/LabelDrop/UseCases/index.js.map +1 -1
  30. package/dist/cjs/Procedure/Adapters/index.js.map +1 -1
  31. package/dist/cjs/Procedure/Adapters/procedureAdapter.js.map +1 -1
  32. package/dist/cjs/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
  33. package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
  34. package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
  35. package/dist/cjs/Procedure/Adapters/procedureHintAdapter.js.map +1 -1
  36. package/dist/cjs/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
  37. package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
  38. package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
  39. package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
  40. package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -1
  41. package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
  42. package/dist/cjs/Procedure/Entities/HintRegistry.js.map +1 -1
  43. package/dist/cjs/Procedure/Entities/HintRegistry.test.js.map +1 -1
  44. package/dist/cjs/Procedure/Entities/ProcedureEntity.js.map +1 -1
  45. package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js +1 -12
  46. package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
  47. package/dist/cjs/Procedure/Entities/index.js.map +1 -1
  48. package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
  49. package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js +3 -1
  50. package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
  51. package/dist/cjs/Procedure/Factories/index.js.map +1 -1
  52. package/dist/cjs/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
  53. package/dist/cjs/Procedure/Mocks/MockProcedurePM.js.map +1 -1
  54. package/dist/cjs/Procedure/Mocks/index.js.map +1 -1
  55. package/dist/cjs/Procedure/PM/ProcedurePM.js.map +1 -1
  56. package/dist/cjs/Procedure/PM/ProcedurePM.test.js +1 -1
  57. package/dist/cjs/Procedure/PM/ProcedurePM.test.js.map +1 -1
  58. package/dist/cjs/Procedure/PM/index.js.map +1 -1
  59. package/dist/cjs/Procedure/ProcedureEventSystem.integration.test.js.map +1 -1
  60. package/dist/cjs/Procedure/UCs/AddProcedureEventUC.js.map +1 -1
  61. package/dist/cjs/Procedure/UCs/AddProcedureEventUC.test.js +1 -4
  62. package/dist/cjs/Procedure/UCs/AddProcedureEventUC.test.js.map +1 -1
  63. package/dist/cjs/Procedure/UCs/MoveProcedureEventDownUC.js.map +1 -1
  64. package/dist/cjs/Procedure/UCs/MoveProcedureEventDownUC.test.js.map +1 -1
  65. package/dist/cjs/Procedure/UCs/MoveProcedureEventUpUC.js.map +1 -1
  66. package/dist/cjs/Procedure/UCs/MoveProcedureEventUpUC.test.js.map +1 -1
  67. package/dist/cjs/Procedure/UCs/RecordProcedureEventUC.js.map +1 -1
  68. package/dist/cjs/Procedure/UCs/RecordProcedureEventUC.test.js.map +1 -1
  69. package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.js.map +1 -1
  70. package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.test.js +22 -4
  71. package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.test.js.map +1 -1
  72. package/dist/cjs/Procedure/UCs/RemoveProcedureEventUC.js.map +1 -1
  73. package/dist/cjs/Procedure/UCs/RemoveProcedureEventUC.test.js.map +1 -1
  74. package/dist/cjs/Procedure/UCs/ResetProcedureProgressUC.js.map +1 -1
  75. package/dist/cjs/Procedure/UCs/ResetProcedureProgressUC.test.js.map +1 -1
  76. package/dist/cjs/Procedure/UCs/SerializeProcedure.js.map +1 -1
  77. package/dist/cjs/Procedure/UCs/SerializeProcedure.test.js +6 -1
  78. package/dist/cjs/Procedure/UCs/SerializeProcedure.test.js.map +1 -1
  79. package/dist/cjs/Procedure/UCs/SetProcedureIsQuizUC.js.map +1 -1
  80. package/dist/cjs/Procedure/UCs/SetProcedureIsQuizUC.test.js.map +1 -1
  81. package/dist/cjs/Procedure/UCs/SetProcedureOrderMattersUC.js.map +1 -1
  82. package/dist/cjs/Procedure/UCs/SetProcedureOrderMattersUC.test.js.map +1 -1
  83. package/dist/cjs/Procedure/UCs/SetProcedureShowHintsUC.js.map +1 -1
  84. package/dist/cjs/Procedure/UCs/SetProcedureShowHintsUC.test.js.map +1 -1
  85. package/dist/cjs/Procedure/UCs/SubmitProcedureQuizUC.js.map +1 -1
  86. package/dist/cjs/Procedure/UCs/SubmitProcedureQuizUC.test.js.map +1 -1
  87. package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.js.map +1 -1
  88. package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
  89. package/dist/cjs/Procedure/UCs/index.js.map +1 -1
  90. package/dist/cjs/Procedure/index.js.map +1 -1
  91. package/dist/cjs/Procedure/types.js.map +1 -1
  92. package/dist/cjs/RequestHandler/UC/SetThemeColorUC.test.js +9 -0
  93. package/dist/cjs/RequestHandler/UC/SetThemeColorUC.test.js.map +1 -1
  94. package/dist/cjs/ThemeColors/Entities/ThemeColors.js +24 -0
  95. package/dist/cjs/ThemeColors/Entities/ThemeColors.js.map +1 -1
  96. package/dist/cjs/ThemeColors/Entities/ThemeColors.test.js +20 -0
  97. package/dist/cjs/ThemeColors/Entities/ThemeColors.test.js.map +1 -1
  98. package/dist/cjs/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
  99. package/dist/cjs/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
  100. package/dist/cjs/index.js.map +1 -1
  101. package/dist/esm/BaseApp/UC/RenderCanvasUC.js.map +1 -1
  102. package/dist/esm/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
  103. package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
  104. package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -1
  105. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js +5 -4
  106. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
  107. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.test.js +33 -0
  108. package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.test.js.map +1 -0
  109. package/dist/esm/Dispatcher/Factories/setupDispatchers.js +2 -1
  110. package/dist/esm/Dispatcher/Factories/setupDispatchers.js.map +1 -1
  111. package/dist/esm/Dispatcher/Factories/setupDispatchers.test.js +31 -0
  112. package/dist/esm/Dispatcher/Factories/setupDispatchers.test.js.map +1 -0
  113. package/dist/esm/EventSystem/Entities/EventEntity.js.map +1 -1
  114. package/dist/esm/EventSystem/Entities/EventEntity.test.js +4 -1
  115. package/dist/esm/EventSystem/Entities/EventEntity.test.js.map +1 -1
  116. package/dist/esm/EventSystem/Entities/index.js.map +1 -1
  117. package/dist/esm/EventSystem/EventSystem.integration.test.js.map +1 -1
  118. package/dist/esm/EventSystem/Factories/EventSystemFeatureFactory.js.map +1 -1
  119. package/dist/esm/EventSystem/Factories/EventSystemFeatureFactory.test.js.map +1 -1
  120. package/dist/esm/EventSystem/Factories/index.js.map +1 -1
  121. package/dist/esm/EventSystem/Mocks/MockEventEntity.js.map +1 -1
  122. package/dist/esm/EventSystem/Mocks/index.js.map +1 -1
  123. package/dist/esm/EventSystem/index.js.map +1 -1
  124. package/dist/esm/EventSystem/types.js.map +1 -1
  125. package/dist/esm/LabelDrop/Factories/LabelDropFeatureFactory.js.map +1 -1
  126. package/dist/esm/LabelDrop/UseCases/SubmitLabelDropResultUC.js.map +1 -1
  127. package/dist/esm/LabelDrop/UseCases/SubmitLabelDropResultUC.test.js.map +1 -1
  128. package/dist/esm/LabelDrop/UseCases/index.js.map +1 -1
  129. package/dist/esm/Procedure/Adapters/index.js.map +1 -1
  130. package/dist/esm/Procedure/Adapters/procedureAdapter.js.map +1 -1
  131. package/dist/esm/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
  132. package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
  133. package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
  134. package/dist/esm/Procedure/Adapters/procedureHintAdapter.js.map +1 -1
  135. package/dist/esm/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
  136. package/dist/esm/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
  137. package/dist/esm/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
  138. package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
  139. package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -1
  140. package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
  141. package/dist/esm/Procedure/Entities/HintRegistry.js.map +1 -1
  142. package/dist/esm/Procedure/Entities/HintRegistry.test.js.map +1 -1
  143. package/dist/esm/Procedure/Entities/ProcedureEntity.js.map +1 -1
  144. package/dist/esm/Procedure/Entities/ProcedureEntity.test.js +1 -12
  145. package/dist/esm/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
  146. package/dist/esm/Procedure/Entities/index.js.map +1 -1
  147. package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
  148. package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js +5 -3
  149. package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
  150. package/dist/esm/Procedure/Factories/index.js.map +1 -1
  151. package/dist/esm/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
  152. package/dist/esm/Procedure/Mocks/MockProcedurePM.js.map +1 -1
  153. package/dist/esm/Procedure/Mocks/index.js.map +1 -1
  154. package/dist/esm/Procedure/PM/ProcedurePM.js.map +1 -1
  155. package/dist/esm/Procedure/PM/ProcedurePM.test.js +2 -2
  156. package/dist/esm/Procedure/PM/ProcedurePM.test.js.map +1 -1
  157. package/dist/esm/Procedure/PM/index.js.map +1 -1
  158. package/dist/esm/Procedure/ProcedureEventSystem.integration.test.js +2 -2
  159. package/dist/esm/Procedure/ProcedureEventSystem.integration.test.js.map +1 -1
  160. package/dist/esm/Procedure/UCs/AddProcedureEventUC.js.map +1 -1
  161. package/dist/esm/Procedure/UCs/AddProcedureEventUC.test.js +3 -6
  162. package/dist/esm/Procedure/UCs/AddProcedureEventUC.test.js.map +1 -1
  163. package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.js.map +1 -1
  164. package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.test.js +2 -2
  165. package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.test.js.map +1 -1
  166. package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.js.map +1 -1
  167. package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.test.js +2 -2
  168. package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.test.js.map +1 -1
  169. package/dist/esm/Procedure/UCs/RecordProcedureEventUC.js.map +1 -1
  170. package/dist/esm/Procedure/UCs/RecordProcedureEventUC.test.js +2 -2
  171. package/dist/esm/Procedure/UCs/RecordProcedureEventUC.test.js.map +1 -1
  172. package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.js.map +1 -1
  173. package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.test.js +22 -4
  174. package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.test.js.map +1 -1
  175. package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.js.map +1 -1
  176. package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.test.js +2 -2
  177. package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.test.js.map +1 -1
  178. package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.js.map +1 -1
  179. package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.test.js +2 -2
  180. package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.test.js.map +1 -1
  181. package/dist/esm/Procedure/UCs/SerializeProcedure.js.map +1 -1
  182. package/dist/esm/Procedure/UCs/SerializeProcedure.test.js +8 -3
  183. package/dist/esm/Procedure/UCs/SerializeProcedure.test.js.map +1 -1
  184. package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.js.map +1 -1
  185. package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.test.js +1 -1
  186. package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.test.js.map +1 -1
  187. package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.js.map +1 -1
  188. package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.test.js +1 -1
  189. package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.test.js.map +1 -1
  190. package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.js.map +1 -1
  191. package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.test.js +1 -1
  192. package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.test.js.map +1 -1
  193. package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.js.map +1 -1
  194. package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.test.js +2 -2
  195. package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.test.js.map +1 -1
  196. package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.js.map +1 -1
  197. package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js +1 -1
  198. package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
  199. package/dist/esm/Procedure/UCs/index.js.map +1 -1
  200. package/dist/esm/Procedure/index.js.map +1 -1
  201. package/dist/esm/Procedure/types.js.map +1 -1
  202. package/dist/esm/RequestHandler/UC/SetThemeColorUC.test.js +9 -0
  203. package/dist/esm/RequestHandler/UC/SetThemeColorUC.test.js.map +1 -1
  204. package/dist/esm/ThemeColors/Entities/ThemeColors.js +24 -0
  205. package/dist/esm/ThemeColors/Entities/ThemeColors.js.map +1 -1
  206. package/dist/esm/ThemeColors/Entities/ThemeColors.test.js +20 -0
  207. package/dist/esm/ThemeColors/Entities/ThemeColors.test.js.map +1 -1
  208. package/dist/esm/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
  209. package/dist/esm/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
  210. package/dist/esm/index.js.map +1 -1
  211. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts +3 -3
  212. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts.map +1 -1
  213. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.test.d.ts +2 -0
  214. package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.test.d.ts.map +1 -0
  215. package/dist/types/Dispatcher/Factories/setupDispatchers.d.ts.map +1 -1
  216. package/dist/types/Dispatcher/Factories/setupDispatchers.test.d.ts +2 -0
  217. package/dist/types/Dispatcher/Factories/setupDispatchers.test.d.ts.map +1 -0
  218. package/dist/types/Procedure/Entities/ProcedureEntity.d.ts.map +1 -1
  219. package/dist/types/Procedure/Mocks/MockProcedureEntity.d.ts.map +1 -1
  220. package/dist/types/Procedure/UCs/AddProcedureEventUC.d.ts.map +1 -1
  221. package/dist/types/Procedure/UCs/RecordProcedureSessionUC.d.ts.map +1 -1
  222. package/dist/types/Procedure/UCs/SetProcedureIsQuizUC.d.ts.map +1 -1
  223. package/dist/types/Procedure/UCs/SubmitProcedureQuizUC.d.ts.map +1 -1
  224. package/dist/types/Procedure/types.d.ts.map +1 -1
  225. package/dist/types/ThemeColors/Entities/ThemeColors.d.ts +12 -0
  226. package/dist/types/ThemeColors/Entities/ThemeColors.d.ts.map +1 -1
  227. package/package.json +1 -1
  228. package/src/Dispatcher/README.md +9 -6
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeColors.test.js","sourceRoot":"","sources":["../../../../src/ThemeColors/Entities/ThemeColors.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Color } from \"@vived/core\";\nimport { makeThemeColors, ThemeColorType } from \"./ThemeColors\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const themeColorsAo = appObjects.getOrCreate(\"ThemeColors\");\n const theme = makeThemeColors(themeColorsAo);\n\n const observer = jest.fn();\n theme.addChangeObserver(observer);\n\n return { theme, observer };\n}\n\ndescribe(\"Theme Colors Entity\", () => {\n it(\"Initialzes the color\", () => {\n const { theme } = makeTestRig();\n\n expect(theme.getColorForType(ThemeColorType.primary)).toEqual(\n Color.Hex(\"#00668A\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimary)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.primaryContainer)).toEqual(\n Color.Hex(\"#C4E7FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimaryContainer)).toEqual(\n Color.Hex(\"#001E2C\"),\n );\n expect(theme.getColorForType(ThemeColorType.primaryFixed)).toEqual(\n Color.Hex(\"#C4E7FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimaryFixed)).toEqual(\n Color.Hex(\"#001E2C\"),\n );\n expect(theme.getColorForType(ThemeColorType.primaryFixedDim)).toEqual(\n Color.Hex(\"#7BD0FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimaryFixedVariant)).toEqual(\n Color.Hex(\"#004C69\"),\n );\n expect(theme.getColorForType(ThemeColorType.secondary)).toEqual(\n Color.Hex(\"#4E616D\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSecondary)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.secondaryContainer)).toEqual(\n Color.Hex(\"#D1E5F4\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSecondaryContainer)).toEqual(\n Color.Hex(\"#0A1E28\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSecondaryFixed)).toEqual(\n Color.Hex(\"#0A1E28\"),\n );\n expect(theme.getColorForType(ThemeColorType.secondaryFixedDim)).toEqual(\n Color.Hex(\"#B5C9D7\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.onSecondaryFixedVariant),\n ).toEqual(Color.Hex(\"#374955\"));\n expect(theme.getColorForType(ThemeColorType.tertiary)).toEqual(\n Color.Hex(\"#605A7D\"),\n );\n expect(theme.getColorForType(ThemeColorType.onTertiary)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.tertiaryContainer)).toEqual(\n Color.Hex(\"#E6DEFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onTertiaryContainer)).toEqual(\n Color.Hex(\"#1D1736\"),\n );\n expect(theme.getColorForType(ThemeColorType.tertiaryFixed)).toEqual(\n Color.Hex(\"#E6DEFF\"),\n );\n\n expect(theme.getColorForType(ThemeColorType.onTertiaryFixed)).toEqual(\n Color.Hex(\"#1D1736\"),\n );\n expect(theme.getColorForType(ThemeColorType.tertiaryFixedDim)).toEqual(\n Color.Hex(\"#CAC1E9\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.onTertiaryFixedVariant),\n ).toEqual(Color.Hex(\"#484264\"));\n expect(theme.getColorForType(ThemeColorType.error)).toEqual(\n Color.Hex(\"#BA1A1A\"),\n );\n expect(theme.getColorForType(ThemeColorType.onError)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.errorContainer)).toEqual(\n Color.Hex(\"#FFDAD6\"),\n );\n expect(theme.getColorForType(ThemeColorType.onErrorContainer)).toEqual(\n Color.Hex(\"#410002\"),\n );\n expect(theme.getColorForType(ThemeColorType.outline)).toEqual(\n Color.Hex(\"#71787D\"),\n );\n expect(theme.getColorForType(ThemeColorType.background)).toEqual(\n Color.Hex(\"#FBFCFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onBackground)).toEqual(\n Color.Hex(\"#191C1E\"),\n );\n expect(theme.getColorForType(ThemeColorType.surface)).toEqual(\n Color.Hex(\"#F8F9FC\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSurface)).toEqual(\n Color.Hex(\"#191C1E\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceVariant)).toEqual(\n Color.Hex(\"#DCE3E9\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSurfaceVariant)).toEqual(\n Color.Hex(\"#41484D\"),\n );\n expect(theme.getColorForType(ThemeColorType.inverseSurface)).toEqual(\n Color.Hex(\"#2E3133\"),\n );\n expect(theme.getColorForType(ThemeColorType.inverseOnSurface)).toEqual(\n Color.Hex(\"#F0F1F3\"),\n );\n expect(theme.getColorForType(ThemeColorType.inversePrimary)).toEqual(\n Color.Hex(\"#7BD0FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.shadow)).toEqual(\n Color.Hex(\"#000000\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceTint)).toEqual(\n Color.Hex(\"#00668A\"),\n );\n expect(theme.getColorForType(ThemeColorType.outlineVariant)).toEqual(\n Color.Hex(\"#C0C7CD\"),\n );\n expect(theme.getColorForType(ThemeColorType.scrim)).toEqual(\n Color.Hex(\"#000000\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.surfaceContainerHighest),\n ).toEqual(Color.Hex(\"#E1E2E5\"));\n expect(theme.getColorForType(ThemeColorType.surfaceContainerHigh)).toEqual(\n Color.Hex(\"#E7E8EA\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceContainer)).toEqual(\n Color.Hex(\"#EDEEF0\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceContainerLow)).toEqual(\n Color.Hex(\"#F3F3F6\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.surfaceContainerLowest),\n ).toEqual(Color.Hex(\"#FFFFFF\"));\n expect(theme.getColorForType(ThemeColorType.surfaceBright)).toEqual(\n Color.Hex(\"#F8F9FC\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceDim)).toEqual(\n Color.Hex(\"#D9DADC\"),\n );\n });\n\n it(\"Sets the color for a type and notifies\", () => {\n const { theme, observer } = makeTestRig();\n\n const c = Color.RGB(10, 20, 30);\n\n theme.setColorForType(ThemeColorType.onBackground, c);\n theme.setColorForType(ThemeColorType.onBackground, c);\n theme.setColorForType(ThemeColorType.onBackground, c);\n theme.setColorForType(ThemeColorType.onBackground, c);\n\n expect(observer).toHaveBeenCalledTimes(1);\n expect(theme.getColorForType(ThemeColorType.onBackground)).toEqual(c);\n });\n\n it(\"Sets the color by hex for a type and notifies\", () => {\n const { theme, observer } = makeTestRig();\n\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n\n expect(observer).toHaveBeenCalledTimes(1);\n expect(theme.getColorForType(ThemeColorType.onBackground).hex).toEqual(\n \"#00668a\",\n );\n });\n\n it(\"Sets the colors by hex for a set of colors and notifies\", () => {\n const { theme, observer } = makeTestRig();\n\n const colorSet = new Map();\n colorSet.set(ThemeColorType.onBackground, \"00668a\");\n colorSet.set(ThemeColorType.onPrimary, \"00668b\");\n colorSet.set(ThemeColorType.onPrimaryContainer, \"00668c\");\n colorSet.set(ThemeColorType.onPrimaryFixedVariant, \"00668d\");\n\n theme.setColorHexForSet(colorSet);\n\n expect(observer).toHaveBeenCalledTimes(4);\n expect(theme.getColorForType(ThemeColorType.onBackground).hex).toEqual(\n \"#00668a\",\n );\n expect(theme.getColorForType(ThemeColorType.onPrimary).hex).toEqual(\n \"#00668b\",\n );\n expect(\n theme.getColorForType(ThemeColorType.onPrimaryContainer).hex,\n ).toEqual(\"#00668c\");\n expect(\n theme.getColorForType(ThemeColorType.onPrimaryFixedVariant).hex,\n ).toEqual(\"#00668d\");\n });\n});\n"]}
1
+ {"version":3,"file":"ThemeColors.test.js","sourceRoot":"","sources":["../../../../src/ThemeColors/Entities/ThemeColors.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Color } from \"@vived/core\";\nimport { makeThemeColors, ThemeColorType } from \"./ThemeColors\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n const themeColorsAo = appObjects.getOrCreate(\"ThemeColors\");\n const theme = makeThemeColors(themeColorsAo);\n\n const observer = jest.fn();\n theme.addChangeObserver(observer);\n\n return { theme, observer };\n}\n\ndescribe(\"Theme Colors Entity\", () => {\n it(\"Initialzes the color\", () => {\n const { theme } = makeTestRig();\n\n expect(theme.getColorForType(ThemeColorType.primary)).toEqual(\n Color.Hex(\"#00668A\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimary)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.primaryContainer)).toEqual(\n Color.Hex(\"#C4E7FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimaryContainer)).toEqual(\n Color.Hex(\"#001E2C\"),\n );\n expect(theme.getColorForType(ThemeColorType.primaryFixed)).toEqual(\n Color.Hex(\"#C4E7FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimaryFixed)).toEqual(\n Color.Hex(\"#001E2C\"),\n );\n expect(theme.getColorForType(ThemeColorType.primaryFixedDim)).toEqual(\n Color.Hex(\"#7BD0FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onPrimaryFixedVariant)).toEqual(\n Color.Hex(\"#004C69\"),\n );\n expect(theme.getColorForType(ThemeColorType.secondary)).toEqual(\n Color.Hex(\"#4E616D\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSecondary)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.secondaryContainer)).toEqual(\n Color.Hex(\"#D1E5F4\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSecondaryContainer)).toEqual(\n Color.Hex(\"#0A1E28\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSecondaryFixed)).toEqual(\n Color.Hex(\"#0A1E28\"),\n );\n expect(theme.getColorForType(ThemeColorType.secondaryFixedDim)).toEqual(\n Color.Hex(\"#B5C9D7\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.onSecondaryFixedVariant),\n ).toEqual(Color.Hex(\"#374955\"));\n expect(theme.getColorForType(ThemeColorType.tertiary)).toEqual(\n Color.Hex(\"#605A7D\"),\n );\n expect(theme.getColorForType(ThemeColorType.onTertiary)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.tertiaryContainer)).toEqual(\n Color.Hex(\"#E6DEFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onTertiaryContainer)).toEqual(\n Color.Hex(\"#1D1736\"),\n );\n expect(theme.getColorForType(ThemeColorType.tertiaryFixed)).toEqual(\n Color.Hex(\"#E6DEFF\"),\n );\n\n expect(theme.getColorForType(ThemeColorType.onTertiaryFixed)).toEqual(\n Color.Hex(\"#1D1736\"),\n );\n expect(theme.getColorForType(ThemeColorType.tertiaryFixedDim)).toEqual(\n Color.Hex(\"#CAC1E9\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.onTertiaryFixedVariant),\n ).toEqual(Color.Hex(\"#484264\"));\n expect(theme.getColorForType(ThemeColorType.error)).toEqual(\n Color.Hex(\"#BA1A1A\"),\n );\n expect(theme.getColorForType(ThemeColorType.onError)).toEqual(\n Color.Hex(\"#FFFFFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.errorContainer)).toEqual(\n Color.Hex(\"#FFDAD6\"),\n );\n expect(theme.getColorForType(ThemeColorType.onErrorContainer)).toEqual(\n Color.Hex(\"#410002\"),\n );\n expect(theme.getColorForType(ThemeColorType.outline)).toEqual(\n Color.Hex(\"#71787D\"),\n );\n expect(theme.getColorForType(ThemeColorType.background)).toEqual(\n Color.Hex(\"#FBFCFF\"),\n );\n expect(theme.getColorForType(ThemeColorType.onBackground)).toEqual(\n Color.Hex(\"#191C1E\"),\n );\n expect(theme.getColorForType(ThemeColorType.surface)).toEqual(\n Color.Hex(\"#F8F9FC\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSurface)).toEqual(\n Color.Hex(\"#191C1E\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceVariant)).toEqual(\n Color.Hex(\"#DCE3E9\"),\n );\n expect(theme.getColorForType(ThemeColorType.onSurfaceVariant)).toEqual(\n Color.Hex(\"#41484D\"),\n );\n expect(theme.getColorForType(ThemeColorType.inverseSurface)).toEqual(\n Color.Hex(\"#2E3133\"),\n );\n expect(theme.getColorForType(ThemeColorType.inverseOnSurface)).toEqual(\n Color.Hex(\"#F0F1F3\"),\n );\n expect(theme.getColorForType(ThemeColorType.inversePrimary)).toEqual(\n Color.Hex(\"#7BD0FF\"),\n );\n expect(theme.getColorForType(ThemeColorType.shadow)).toEqual(\n Color.Hex(\"#000000\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceTint)).toEqual(\n Color.Hex(\"#00668A\"),\n );\n expect(theme.getColorForType(ThemeColorType.outlineVariant)).toEqual(\n Color.Hex(\"#C0C7CD\"),\n );\n expect(theme.getColorForType(ThemeColorType.scrim)).toEqual(\n Color.Hex(\"#000000\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.surfaceContainerHighest),\n ).toEqual(Color.Hex(\"#E1E2E5\"));\n expect(theme.getColorForType(ThemeColorType.surfaceContainerHigh)).toEqual(\n Color.Hex(\"#E7E8EA\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceContainer)).toEqual(\n Color.Hex(\"#EDEEF0\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceContainerLow)).toEqual(\n Color.Hex(\"#F3F3F6\"),\n );\n expect(\n theme.getColorForType(ThemeColorType.surfaceContainerLowest),\n ).toEqual(Color.Hex(\"#FFFFFF\"));\n expect(theme.getColorForType(ThemeColorType.surfaceBright)).toEqual(\n Color.Hex(\"#F8F9FC\"),\n );\n expect(theme.getColorForType(ThemeColorType.surfaceDim)).toEqual(\n Color.Hex(\"#D9DADC\"),\n );\n });\n\n it(\"Initializes the status colors to the Host's light theme\", () => {\n const { theme } = makeTestRig();\n\n const expected: [ThemeColorType, string][] = [\n [ThemeColorType.success, \"#1F8A65\"],\n [ThemeColorType.onSuccess, \"#FFFFFF\"],\n [ThemeColorType.successContainer, \"#A8F2D0\"],\n [ThemeColorType.onSuccessContainer, \"#002013\"],\n [ThemeColorType.warning, \"#9A6700\"],\n [ThemeColorType.onWarning, \"#FFFFFF\"],\n [ThemeColorType.warningContainer, \"#FFDEA8\"],\n [ThemeColorType.onWarningContainer, \"#301A00\"],\n [ThemeColorType.info, \"#0060A9\"],\n [ThemeColorType.onInfo, \"#FFFFFF\"],\n [ThemeColorType.infoContainer, \"#D3E4FF\"],\n [ThemeColorType.onInfoContainer, \"#001C38\"],\n ];\n\n expected.forEach(([type, hex]) => {\n expect(theme.getColorForType(type)).toEqual(Color.Hex(hex));\n });\n });\n\n it(\"Sets the color for a type and notifies\", () => {\n const { theme, observer } = makeTestRig();\n\n const c = Color.RGB(10, 20, 30);\n\n theme.setColorForType(ThemeColorType.onBackground, c);\n theme.setColorForType(ThemeColorType.onBackground, c);\n theme.setColorForType(ThemeColorType.onBackground, c);\n theme.setColorForType(ThemeColorType.onBackground, c);\n\n expect(observer).toHaveBeenCalledTimes(1);\n expect(theme.getColorForType(ThemeColorType.onBackground)).toEqual(c);\n });\n\n it(\"Sets the color by hex for a type and notifies\", () => {\n const { theme, observer } = makeTestRig();\n\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n theme.setColorHexForType(ThemeColorType.onBackground, \"#00668a\");\n\n expect(observer).toHaveBeenCalledTimes(1);\n expect(theme.getColorForType(ThemeColorType.onBackground).hex).toEqual(\n \"#00668a\",\n );\n });\n\n it(\"Sets the colors by hex for a set of colors and notifies\", () => {\n const { theme, observer } = makeTestRig();\n\n const colorSet = new Map();\n colorSet.set(ThemeColorType.onBackground, \"00668a\");\n colorSet.set(ThemeColorType.onPrimary, \"00668b\");\n colorSet.set(ThemeColorType.onPrimaryContainer, \"00668c\");\n colorSet.set(ThemeColorType.onPrimaryFixedVariant, \"00668d\");\n\n theme.setColorHexForSet(colorSet);\n\n expect(observer).toHaveBeenCalledTimes(4);\n expect(theme.getColorForType(ThemeColorType.onBackground).hex).toEqual(\n \"#00668a\",\n );\n expect(theme.getColorForType(ThemeColorType.onPrimary).hex).toEqual(\n \"#00668b\",\n );\n expect(\n theme.getColorForType(ThemeColorType.onPrimaryContainer).hex,\n ).toEqual(\"#00668c\");\n expect(\n theme.getColorForType(ThemeColorType.onPrimaryFixedVariant).hex,\n ).toEqual(\"#00668d\");\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateTouchInoutBound.test.js","sourceRoot":"","sources":["../../../../src/TouchController/UC/UpdateTouchInoutBound.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,sCAAsC;AACtC,qDAG4B;AAC5B,0CAA+C;AAC/C,mEAAkE;AAElE,MAAM,cAAe,SAAQ,2BAAgB;IAA7C;;QAKE,oBAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5B,sBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9B,6BAAwB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACrC,uBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,qBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC/B,CAAC;IATC,IAAI,YAAY;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CAOF;AAED,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,2BAAgB,CAAC,IAAI,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,wCAAyB,EAAC,WAAW,CAAC,CAAC;IAE/D,MAAM,eAAe,GAAG,IAAI,+CAAuB,CAAC,WAAW,CAAC,CAAC;IAEjE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,wBAAwB;IAC/B,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC5B,UAAU,CAAC,aAAa,GAAG,QAAQ,CAAC;IACpC,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,wCAAyB,EAAC,WAAW,CAAC,CAAC;IAE/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC3E,CAAC;AAED,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAE1D,eAAe,CAAC,QAAQ,GAAG,IAAI,cAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,wBAAwB,EAAE,CAAC;QAExE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,+CAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACrE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5B,UAAU,CAAC,aAAa,GAAG,QAAQ,CAAC;QACpC,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;QAEnC,uDAAuD;QACvD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAErD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,+CAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,GACzD,wBAAwB,EAAE,CAAC;QAC7B,IAAI,+CAAuB,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,CAAC,GAAG,EAAE;YACV,eAAe,CAAC,QAAQ,GAAG,IAAI,cAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Vector2 } from \"@vived/core\";\r\nimport {\r\n makeFramedContainerPM,\r\n makeFramedScreenContainer,\r\n} from \"../../FramedScreen\";\r\nimport { TouchInputEntity } from \"../Entities\";\r\nimport { UpdateTouchInputBoundUC } from \"./UpdateTouchInputBound\";\r\n\r\nclass MockTouchInput extends TouchInputEntity {\r\n get eventElement(): HTMLElement | undefined {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n eventElementBounds?: DOMRect | undefined;\r\n setEventElement = jest.fn();\r\n clearInputElement = jest.fn();\r\n updateInputElementBounds = jest.fn();\r\n registerController = jest.fn();\r\n removeController = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appAO = appObjects.getOrCreate(\"App\");\r\n const mockTouchInput = new MockTouchInput(appAO, TouchInputEntity.type);\r\n\r\n const containerAO = appObjects.getOrCreate(\"Canvas\");\r\n const framedContainer = makeFramedScreenContainer(containerAO);\r\n\r\n const updateTouchHook = new UpdateTouchInputBoundUC(containerAO);\r\n\r\n return { updateTouchHook, mockTouchInput, framedContainer };\r\n}\r\n\r\nfunction makeRigWithoutTouchInput() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const mockWarn = jest.fn();\r\n const mockError = jest.fn();\r\n appObjects.submitWarning = mockWarn;\r\n appObjects.submitError = mockError;\r\n\r\n const containerAO = appObjects.getOrCreate(\"Canvas\");\r\n const framedContainer = makeFramedScreenContainer(containerAO);\r\n\r\n return { appObjects, containerAO, framedContainer, mockWarn, mockError };\r\n}\r\n\r\ndescribe(\"Update Touch Input Bounds UC Hook\", () => {\r\n it(\"Calls update input element when the framed container notifies\", () => {\r\n const { mockTouchInput, framedContainer } = makeTestRig();\r\n\r\n framedContainer.position = new Vector2(21, 35);\r\n expect(mockTouchInput.updateInputElementBounds).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Constructs silently when there is no touch input\", () => {\r\n const { containerAO, mockWarn, mockError } = makeRigWithoutTouchInput();\r\n\r\n expect(() => new UpdateTouchInputBoundUC(containerAO)).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n expect(mockError).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Constructs silently when there is no framed container\", () => {\r\n const appObjects = makeAppObjectRepo();\r\n const mockWarn = jest.fn();\r\n const mockError = jest.fn();\r\n appObjects.submitWarning = mockWarn;\r\n appObjects.submitError = mockError;\r\n\r\n // An AppObject that never got a FramedScreenContainer.\r\n const bareAO = appObjects.getOrCreate(\"NoContainer\");\r\n\r\n expect(() => new UpdateTouchInputBoundUC(bareAO)).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n expect(mockError).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Skips the update silently when there is no touch input\", () => {\r\n const { containerAO, framedContainer, mockWarn, mockError } =\r\n makeRigWithoutTouchInput();\r\n new UpdateTouchInputBoundUC(containerAO);\r\n\r\n expect(() => {\r\n framedContainer.position = new Vector2(21, 35);\r\n }).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n expect(mockError).not.toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"UpdateTouchInoutBound.test.js","sourceRoot":"","sources":["../../../../src/TouchController/UC/UpdateTouchInoutBound.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n makeFramedContainerPM,\n makeFramedScreenContainer,\n} from \"../../FramedScreen\";\nimport { TouchInputEntity } from \"../Entities\";\nimport { UpdateTouchInputBoundUC } from \"./UpdateTouchInputBound\";\n\nclass MockTouchInput extends TouchInputEntity {\n get eventElement(): HTMLElement | undefined {\n throw new Error(\"Method not implemented.\");\n }\n eventElementBounds?: DOMRect | undefined;\n setEventElement = jest.fn();\n clearInputElement = jest.fn();\n updateInputElementBounds = jest.fn();\n registerController = jest.fn();\n removeController = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appAO = appObjects.getOrCreate(\"App\");\n const mockTouchInput = new MockTouchInput(appAO, TouchInputEntity.type);\n\n const containerAO = appObjects.getOrCreate(\"Canvas\");\n const framedContainer = makeFramedScreenContainer(containerAO);\n\n const updateTouchHook = new UpdateTouchInputBoundUC(containerAO);\n\n return { updateTouchHook, mockTouchInput, framedContainer };\n}\n\nfunction makeRigWithoutTouchInput() {\n const appObjects = makeAppObjectRepo();\n\n const mockWarn = jest.fn();\n const mockError = jest.fn();\n appObjects.submitWarning = mockWarn;\n appObjects.submitError = mockError;\n\n const containerAO = appObjects.getOrCreate(\"Canvas\");\n const framedContainer = makeFramedScreenContainer(containerAO);\n\n return { appObjects, containerAO, framedContainer, mockWarn, mockError };\n}\n\ndescribe(\"Update Touch Input Bounds UC Hook\", () => {\n it(\"Calls update input element when the framed container notifies\", () => {\n const { mockTouchInput, framedContainer } = makeTestRig();\n\n framedContainer.position = new Vector2(21, 35);\n expect(mockTouchInput.updateInputElementBounds).toHaveBeenCalled();\n });\n\n it(\"Constructs silently when there is no touch input\", () => {\n const { containerAO, mockWarn, mockError } = makeRigWithoutTouchInput();\n\n expect(() => new UpdateTouchInputBoundUC(containerAO)).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n expect(mockError).not.toHaveBeenCalled();\n });\n\n it(\"Constructs silently when there is no framed container\", () => {\n const appObjects = makeAppObjectRepo();\n const mockWarn = jest.fn();\n const mockError = jest.fn();\n appObjects.submitWarning = mockWarn;\n appObjects.submitError = mockError;\n\n // An AppObject that never got a FramedScreenContainer.\n const bareAO = appObjects.getOrCreate(\"NoContainer\");\n\n expect(() => new UpdateTouchInputBoundUC(bareAO)).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n expect(mockError).not.toHaveBeenCalled();\n });\n\n it(\"Skips the update silently when there is no touch input\", () => {\n const { containerAO, framedContainer, mockWarn, mockError } =\n makeRigWithoutTouchInput();\n new UpdateTouchInputBoundUC(containerAO);\n\n expect(() => {\n framedContainer.position = new Vector2(21, 35);\n }).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n expect(mockError).not.toHaveBeenCalled();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateTouchInputBound.js","sourceRoot":"","sources":["../../../../src/TouchController/UC/UpdateTouchInputBound.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,qDAA2D;AAC3D,0CAA+C;AAE/C,MAAa,uBAAwB,SAAQ,kBAAW;IAGtD;;;;;OAKG;IACH,IAAY,SAAS;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,oCAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,uBAAuB,CACjC,oCAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAY,UAAU;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,2BAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAmB,2BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAMD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QALjD,sBAAiB,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAC;QAC9C,CAAC,CAAC;QAKA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;;AA7CH,0DA8CC;AA7CQ,4BAAI,GAAG,yBAAyB,AAA5B,CAA6B","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\r\nimport { FramedScreenContainer } from \"../../FramedScreen\";\r\nimport { TouchInputEntity } from \"../Entities\";\r\n\r\nexport class UpdateTouchInputBoundUC extends AppObjectUC {\r\n static type = \"UpdateTouchInputBoundUC\";\r\n\r\n /**\r\n * The container is optional - this UC is only useful on an AppObject that\r\n * has one. hasComponent is checked first because getCachedLocalComponent\r\n * throws when the component is absent, which would defeat the constructor's\r\n * guard rather than let it skip.\r\n */\r\n private get container(): FramedScreenContainer | undefined {\r\n if (!this.appObject.hasComponent(FramedScreenContainer.type)) {\r\n return undefined;\r\n }\r\n\r\n return this.getCachedLocalComponent<FramedScreenContainer>(\r\n FramedScreenContainer.type,\r\n );\r\n }\r\n\r\n /**\r\n * TouchInputEntity is optional - a composition may decline touch input.\r\n * hasSingleton is checked first because both the repo lookup and\r\n * getCachedSingleton complain when the type is absent (the latter throws).\r\n */\r\n private get touchInput(): TouchInputEntity | undefined {\r\n if (!this.appObjects.hasSingleton(TouchInputEntity.type)) {\r\n return undefined;\r\n }\r\n\r\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\r\n }\r\n\r\n onContainerChange = () => {\r\n this.touchInput?.updateInputElementBounds();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, UpdateTouchInputBoundUC.type);\r\n\r\n if (!this.container) {\r\n return;\r\n }\r\n\r\n this.container.addChangeObserver(this.onContainerChange);\r\n this.onContainerChange();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"UpdateTouchInputBound.js","sourceRoot":"","sources":["../../../../src/TouchController/UC/UpdateTouchInputBound.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,qDAA2D;AAC3D,0CAA+C;AAE/C,MAAa,uBAAwB,SAAQ,kBAAW;IAGtD;;;;;OAKG;IACH,IAAY,SAAS;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,oCAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,uBAAuB,CACjC,oCAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAY,UAAU;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,2BAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAmB,2BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAMD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QALjD,sBAAiB,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAC;QAC9C,CAAC,CAAC;QAKA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;;AA7CH,0DA8CC;AA7CQ,4BAAI,GAAG,yBAAyB,AAA5B,CAA6B","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\nimport { FramedScreenContainer } from \"../../FramedScreen\";\nimport { TouchInputEntity } from \"../Entities\";\n\nexport class UpdateTouchInputBoundUC extends AppObjectUC {\n static type = \"UpdateTouchInputBoundUC\";\n\n /**\n * The container is optional - this UC is only useful on an AppObject that\n * has one. hasComponent is checked first because getCachedLocalComponent\n * throws when the component is absent, which would defeat the constructor's\n * guard rather than let it skip.\n */\n private get container(): FramedScreenContainer | undefined {\n if (!this.appObject.hasComponent(FramedScreenContainer.type)) {\n return undefined;\n }\n\n return this.getCachedLocalComponent<FramedScreenContainer>(\n FramedScreenContainer.type,\n );\n }\n\n /**\n * TouchInputEntity is optional - a composition may decline touch input.\n * hasSingleton is checked first because both the repo lookup and\n * getCachedSingleton complain when the type is absent (the latter throws).\n */\n private get touchInput(): TouchInputEntity | undefined {\n if (!this.appObjects.hasSingleton(TouchInputEntity.type)) {\n return undefined;\n }\n\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\n }\n\n onContainerChange = () => {\n this.touchInput?.updateInputElementBounds();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, UpdateTouchInputBoundUC.type);\n\n if (!this.container) {\n return;\n }\n\n this.container.addChangeObserver(this.onContainerChange);\n this.onContainerChange();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,6CAA2B;AAC3B,6CAA2B;AAC3B,+CAA6B;AAC7B,iDAA+B;AAC/B,kDAAgC;AAChC,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,yCAAuB;AACvB,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B;AAC/B,8CAA4B;AAC5B,6CAA2B;AAC3B,mDAAiC;AACjC,8CAA4B;AAC5B,8CAA4B;AAC5B,iDAA+B;AAC/B,0CAAwB;AACxB,+CAA6B;AAC7B,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,oDAAkC;AAClC,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,8CAA4B;AAC5B,uCAAqB;AACrB,2CAAyB","sourcesContent":["export * from \"./Babylon\";\r\nexport * from \"./BaseApp\";\r\nexport * from \"./Callouts\";\r\nexport * from \"./Camera\";\r\nexport * from \"./Challenge\";\r\nexport * from \"./ChannelModel\";\r\nexport * from \"./Dispatcher\";\r\nexport * from \"./Enablement\";\r\nexport * from \"./Environment\";\r\nexport * from \"./EventSystem\";\r\nexport * from \"./FeatureFlags\";\r\nexport * from \"./FramedScreen\";\r\nexport * from \"./GLBModel\";\r\nexport * from \"./Hideable\";\r\nexport * from \"./HoverLabel\";\r\nexport * from \"./InspectorTab\";\r\nexport * from \"./KeyboardInput\";\r\nexport * from \"./Label\";\r\nexport * from \"./LabelDrop\";\r\nexport * from \"./Landmarks\";\r\nexport * from \"./Mesh\";\r\nexport * from \"./MouseInput\";\r\nexport * from \"./ObjectPick\";\r\nexport * from \"./OverlayColor\";\r\nexport * from \"./Procedure\";\r\nexport * from \"./Question\";\r\nexport * from \"./RequestHandler\";\r\nexport * from \"./SceneRoot\";\r\nexport * from \"./Selection\";\r\nexport * from \"./StateMachine\";\r\nexport * from \"./Stick\";\r\nexport * from \"./StoredView\";\r\nexport * from \"./Stylus\";\r\nexport * from \"./ThemeColors\";\r\nexport * from \"./Tools\";\r\nexport * from \"./TouchController\";\r\nexport * from \"./Transform3D\";\r\nexport * from \"./Transparency\";\r\nexport * from \"./UndoRedo\";\r\nexport * from \"./Workplane\";\r\nexport * from \"./XR\";\r\nexport * from \"./zSpace\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B;AAC7B,+CAA6B;AAC7B,gDAA8B;AAC9B,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,6CAA2B;AAC3B,6CAA2B;AAC3B,+CAA6B;AAC7B,iDAA+B;AAC/B,kDAAgC;AAChC,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,yCAAuB;AACvB,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B;AAC/B,8CAA4B;AAC5B,6CAA2B;AAC3B,mDAAiC;AACjC,8CAA4B;AAC5B,8CAA4B;AAC5B,iDAA+B;AAC/B,0CAAwB;AACxB,+CAA6B;AAC7B,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,oDAAkC;AAClC,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,8CAA4B;AAC5B,uCAAqB;AACrB,2CAAyB","sourcesContent":["export * from \"./Babylon\";\nexport * from \"./BaseApp\";\nexport * from \"./Callouts\";\nexport * from \"./Camera\";\nexport * from \"./Challenge\";\nexport * from \"./ChannelModel\";\nexport * from \"./Dispatcher\";\nexport * from \"./Enablement\";\nexport * from \"./Environment\";\nexport * from \"./EventSystem\";\nexport * from \"./FeatureFlags\";\nexport * from \"./FramedScreen\";\nexport * from \"./GLBModel\";\nexport * from \"./Hideable\";\nexport * from \"./HoverLabel\";\nexport * from \"./InspectorTab\";\nexport * from \"./KeyboardInput\";\nexport * from \"./Label\";\nexport * from \"./LabelDrop\";\nexport * from \"./Landmarks\";\nexport * from \"./Mesh\";\nexport * from \"./MouseInput\";\nexport * from \"./ObjectPick\";\nexport * from \"./OverlayColor\";\nexport * from \"./Procedure\";\nexport * from \"./Question\";\nexport * from \"./RequestHandler\";\nexport * from \"./SceneRoot\";\nexport * from \"./Selection\";\nexport * from \"./StateMachine\";\nexport * from \"./Stick\";\nexport * from \"./StoredView\";\nexport * from \"./Stylus\";\nexport * from \"./ThemeColors\";\nexport * from \"./Tools\";\nexport * from \"./TouchController\";\nexport * from \"./Transform3D\";\nexport * from \"./Transparency\";\nexport * from \"./UndoRedo\";\nexport * from \"./Workplane\";\nexport * from \"./XR\";\nexport * from \"./zSpace\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RenderCanvasUC.js","sourceRoot":"","sources":["../../../../src/BaseApp/UC/RenderCanvasUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent,\r\n} from \"@vived/core\";\r\nimport { BabylonRenderingUC } from \"../../Babylon\";\r\nimport { KeyboardInputEntity } from \"../../KeyboardInput\";\r\nimport { TouchInputEntity } from \"../../TouchController\";\r\nimport { MouseInputEntity } from \"../../MouseInput\";\r\n\r\nexport abstract class RenderCanvasUC extends AppObjectUC {\r\n static readonly type = \"RenderCanvasUC\";\r\n\r\n abstract submitCanvas(canvas: HTMLCanvasElement): void;\r\n abstract clearCanvas(): void;\r\n\r\n static get = (appObjects: AppObjectRepo): RenderCanvasUC | undefined =>\r\n getSingletonComponent(RenderCanvasUC.type, appObjects);\r\n}\r\n\r\nexport function makeRenderCanvasUC(appObject: AppObject): RenderCanvasUC {\r\n return new RenderCanvasUCImp(appObject);\r\n}\r\n\r\nclass RenderCanvasUCImp extends RenderCanvasUC {\r\n submitCanvas(canvas: HTMLCanvasElement): void {\r\n const appObjects = this.appObject.appObjectRepo;\r\n\r\n // The DOM input subsystems are optional. A composition may decline them\r\n // (input handled natively by the renderer, for example), so absence is a\r\n // supported state and is skipped silently. hasSingleton is checked first\r\n // because the entity getters warn when the lookup misses.\r\n if (appObjects.hasSingleton(KeyboardInputEntity.type)) {\r\n KeyboardInputEntity.get(appObjects)?.setEventElement(canvas);\r\n }\r\n\r\n if (appObjects.hasSingleton(TouchInputEntity.type)) {\r\n TouchInputEntity.get(appObjects)?.setEventElement(canvas);\r\n }\r\n\r\n if (appObjects.hasSingleton(MouseInputEntity.type)) {\r\n MouseInputEntity.get(appObjects)?.setEventElement(canvas);\r\n }\r\n\r\n const babylonRendering = BabylonRenderingUC.get(appObjects);\r\n if (babylonRendering) {\r\n babylonRendering.submitRenderCanvas(canvas);\r\n } else {\r\n this.warn(\"Unable to find BabylonRenderingUC\");\r\n }\r\n\r\n canvas.addEventListener(\r\n \"contextmenu\",\r\n (e) => {\r\n e.preventDefault();\r\n },\r\n false,\r\n );\r\n }\r\n\r\n clearCanvas(): void {\r\n const appObjects = this.appObject.appObjectRepo;\r\n\r\n // Optional input subsystems - see submitCanvas.\r\n if (appObjects.hasSingleton(KeyboardInputEntity.type)) {\r\n KeyboardInputEntity.get(appObjects)?.clearInputElement();\r\n }\r\n\r\n if (appObjects.hasSingleton(TouchInputEntity.type)) {\r\n TouchInputEntity.get(appObjects)?.clearInputElement();\r\n }\r\n\r\n if (appObjects.hasSingleton(MouseInputEntity.type)) {\r\n MouseInputEntity.get(appObjects)?.clearInputElement();\r\n }\r\n\r\n const babylonRendering = BabylonRenderingUC.get(appObjects);\r\n if (babylonRendering) {\r\n babylonRendering.clearRenderCanvas();\r\n } else {\r\n this.warn(\"Unable to find BabylonRenderingUC\");\r\n }\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, RenderCanvasUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RenderCanvasUC.js","sourceRoot":"","sources":["../../../../src/BaseApp/UC/RenderCanvasUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectRepo,\n AppObjectUC,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { BabylonRenderingUC } from \"../../Babylon\";\nimport { KeyboardInputEntity } from \"../../KeyboardInput\";\nimport { TouchInputEntity } from \"../../TouchController\";\nimport { MouseInputEntity } from \"../../MouseInput\";\n\nexport abstract class RenderCanvasUC extends AppObjectUC {\n static readonly type = \"RenderCanvasUC\";\n\n abstract submitCanvas(canvas: HTMLCanvasElement): void;\n abstract clearCanvas(): void;\n\n static get = (appObjects: AppObjectRepo): RenderCanvasUC | undefined =>\n getSingletonComponent(RenderCanvasUC.type, appObjects);\n}\n\nexport function makeRenderCanvasUC(appObject: AppObject): RenderCanvasUC {\n return new RenderCanvasUCImp(appObject);\n}\n\nclass RenderCanvasUCImp extends RenderCanvasUC {\n submitCanvas(canvas: HTMLCanvasElement): void {\n const appObjects = this.appObject.appObjectRepo;\n\n // The DOM input subsystems are optional. A composition may decline them\n // (input handled natively by the renderer, for example), so absence is a\n // supported state and is skipped silently. hasSingleton is checked first\n // because the entity getters warn when the lookup misses.\n if (appObjects.hasSingleton(KeyboardInputEntity.type)) {\n KeyboardInputEntity.get(appObjects)?.setEventElement(canvas);\n }\n\n if (appObjects.hasSingleton(TouchInputEntity.type)) {\n TouchInputEntity.get(appObjects)?.setEventElement(canvas);\n }\n\n if (appObjects.hasSingleton(MouseInputEntity.type)) {\n MouseInputEntity.get(appObjects)?.setEventElement(canvas);\n }\n\n const babylonRendering = BabylonRenderingUC.get(appObjects);\n if (babylonRendering) {\n babylonRendering.submitRenderCanvas(canvas);\n } else {\n this.warn(\"Unable to find BabylonRenderingUC\");\n }\n\n canvas.addEventListener(\n \"contextmenu\",\n (e) => {\n e.preventDefault();\n },\n false,\n );\n }\n\n clearCanvas(): void {\n const appObjects = this.appObject.appObjectRepo;\n\n // Optional input subsystems - see submitCanvas.\n if (appObjects.hasSingleton(KeyboardInputEntity.type)) {\n KeyboardInputEntity.get(appObjects)?.clearInputElement();\n }\n\n if (appObjects.hasSingleton(TouchInputEntity.type)) {\n TouchInputEntity.get(appObjects)?.clearInputElement();\n }\n\n if (appObjects.hasSingleton(MouseInputEntity.type)) {\n MouseInputEntity.get(appObjects)?.clearInputElement();\n }\n\n const babylonRendering = BabylonRenderingUC.get(appObjects);\n if (babylonRendering) {\n babylonRendering.clearRenderCanvas();\n } else {\n this.warn(\"Unable to find BabylonRenderingUC\");\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, RenderCanvasUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RenderCanvasUC.test.js","sourceRoot":"","sources":["../../../../src/BaseApp/UC/RenderCanvasUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeRenderCanvasUC, RenderCanvasUC } from \"./RenderCanvasUC\";\r\nimport { MockKeyboardInput } from \"../../KeyboardInput/Mocks/MockKeyboardInput\";\r\nimport { MockMouseInput } from \"../../MouseInput/Mocks/MockMouseInput\";\r\nimport { MockTouchInputEntity } from \"../../TouchController/Mock/MockTouchInput\";\r\nimport { makeMockBabylonRenderingUC } from \"../../Babylon\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const app = appObjects.getOrCreate(\"App\");\r\n const renderUC = makeRenderCanvasUC(app);\r\n const mockKeybaord = new MockKeyboardInput(app);\r\n const mockBabylon = makeMockBabylonRenderingUC(appObjects);\r\n const mockMouse = new MockMouseInput(app);\r\n const mockTouch = new MockTouchInputEntity(app);\r\n\r\n // Convert mouse input methods to jest mocks\r\n mockMouse.setEventElement = jest.fn();\r\n mockMouse.clearInputElement = jest.fn();\r\n\r\n // Convert babylon rendering methods to jest mocks\r\n mockBabylon.submitRenderCanvas = jest.fn();\r\n mockBabylon.clearRenderCanvas = jest.fn();\r\n\r\n const mockWarn = jest.fn();\r\n appObjects.submitWarning = mockWarn;\r\n\r\n return {\r\n appObjects,\r\n renderUC,\r\n mockBabylon,\r\n mockKeybaord,\r\n mockWarn,\r\n mockTouch,\r\n mockMouse,\r\n };\r\n}\r\n\r\ndescribe(\"Render Canvas UC\", () => {\r\n it(\"Submits the canvas to the keyboard input\", () => {\r\n const { mockKeybaord, renderUC } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n\r\n renderUC.submitCanvas(renderCanvas);\r\n\r\n expect(mockKeybaord.setEventElement).toHaveBeenCalledWith(renderCanvas);\r\n });\r\n\r\n it(\"Skips the keyboard input silently when it is absent and a canvas is submitted\", () => {\r\n const { mockKeybaord, renderUC, mockWarn } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n mockKeybaord.dispose();\r\n\r\n expect(() => renderUC.submitCanvas(renderCanvas)).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Clears the input element from keyboard input\", () => {\r\n const { mockKeybaord, renderUC } = makeTestRig();\r\n\r\n renderUC.clearCanvas();\r\n\r\n expect(mockKeybaord.clearInputElement).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Skips the keyboard input silently when it is absent and a canvas is cleared\", () => {\r\n const { mockKeybaord, renderUC, mockWarn } = makeTestRig();\r\n\r\n mockKeybaord.dispose();\r\n\r\n expect(() => renderUC.clearCanvas()).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Submits the canvas to the mouse input\", () => {\r\n const { mockMouse, renderUC } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n\r\n renderUC.submitCanvas(renderCanvas);\r\n\r\n expect(mockMouse.setEventElement).toHaveBeenCalledWith(renderCanvas);\r\n });\r\n\r\n it(\"Skips the mouse input silently when it is absent and a canvas is submitted\", () => {\r\n const { mockMouse, renderUC, mockWarn } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n mockMouse.dispose();\r\n\r\n expect(() => renderUC.submitCanvas(renderCanvas)).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Clears the input element from mouse input\", () => {\r\n const { mockMouse, renderUC } = makeTestRig();\r\n\r\n renderUC.clearCanvas();\r\n\r\n expect(mockMouse.clearInputElement).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Skips the mouse input silently when it is absent and a canvas is cleared\", () => {\r\n const { mockMouse, renderUC, mockWarn } = makeTestRig();\r\n\r\n mockMouse.dispose();\r\n\r\n expect(() => renderUC.clearCanvas()).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Submits the canvas to the touch input\", () => {\r\n const { mockTouch, renderUC } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n\r\n renderUC.submitCanvas(renderCanvas);\r\n\r\n expect(mockTouch.setEventElement).toHaveBeenCalledWith(renderCanvas);\r\n });\r\n\r\n it(\"Skips the touch input silently when it is absent and a canvas is submitted\", () => {\r\n const { mockTouch, renderUC, mockWarn } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n mockTouch.dispose();\r\n\r\n expect(() => renderUC.submitCanvas(renderCanvas)).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Clears the input element from touch input\", () => {\r\n const { mockTouch, renderUC } = makeTestRig();\r\n\r\n renderUC.clearCanvas();\r\n\r\n expect(mockTouch.clearInputElement).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Skips the touch input silently when it is absent and a canvas is cleared\", () => {\r\n const { mockTouch, renderUC, mockWarn } = makeTestRig();\r\n\r\n mockTouch.dispose();\r\n\r\n expect(() => renderUC.clearCanvas()).not.toThrow();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Submits the canvas to the babylon rendering\", () => {\r\n const { mockBabylon, renderUC } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n\r\n renderUC.submitCanvas(renderCanvas);\r\n\r\n expect(mockBabylon.submitRenderCanvas).toHaveBeenCalledWith(renderCanvas);\r\n });\r\n\r\n it(\"Warns if it can't find the babylon rendering when a canvas is submitted\", () => {\r\n const { mockBabylon, renderUC, mockWarn } = makeTestRig();\r\n const renderCanvas = document.createElement(\"canvas\");\r\n mockBabylon.dispose();\r\n renderUC.submitCanvas(renderCanvas);\r\n\r\n expect(mockWarn).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Clears the input element from babylon rendering\", () => {\r\n const { mockBabylon, renderUC } = makeTestRig();\r\n\r\n renderUC.clearCanvas();\r\n\r\n expect(mockBabylon.clearRenderCanvas).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Warns if it can't find the babylon rendering when a canvas is cleared\", () => {\r\n const { mockBabylon, renderUC, mockWarn } = makeTestRig();\r\n\r\n mockBabylon.dispose();\r\n renderUC.clearCanvas();\r\n\r\n expect(mockWarn).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { renderUC, appObjects } = makeTestRig();\r\n\r\n expect(RenderCanvasUC.get(appObjects)).toEqual(renderUC);\r\n });\r\n\r\n it(\"Warns and returns undefined if there is no UC\", () => {\r\n const { renderUC, appObjects, mockWarn } = makeTestRig();\r\n renderUC.dispose();\r\n\r\n expect(RenderCanvasUC.get(appObjects)).toBeUndefined();\r\n expect(mockWarn).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Warns if there are more than two UCs found\", () => {\r\n const { appObjects, mockWarn } = makeTestRig();\r\n const newAO = appObjects.getOrCreate(\"newAO\");\r\n\r\n makeRenderCanvasUC(newAO);\r\n\r\n expect(RenderCanvasUC.get(appObjects)).not.toBeUndefined();\r\n expect(mockWarn).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"RenderCanvasUC.test.js","sourceRoot":"","sources":["../../../../src/BaseApp/UC/RenderCanvasUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeRenderCanvasUC, RenderCanvasUC } from \"./RenderCanvasUC\";\nimport { MockKeyboardInput } from \"../../KeyboardInput/Mocks/MockKeyboardInput\";\nimport { MockMouseInput } from \"../../MouseInput/Mocks/MockMouseInput\";\nimport { MockTouchInputEntity } from \"../../TouchController/Mock/MockTouchInput\";\nimport { makeMockBabylonRenderingUC } from \"../../Babylon\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const app = appObjects.getOrCreate(\"App\");\n const renderUC = makeRenderCanvasUC(app);\n const mockKeybaord = new MockKeyboardInput(app);\n const mockBabylon = makeMockBabylonRenderingUC(appObjects);\n const mockMouse = new MockMouseInput(app);\n const mockTouch = new MockTouchInputEntity(app);\n\n // Convert mouse input methods to jest mocks\n mockMouse.setEventElement = jest.fn();\n mockMouse.clearInputElement = jest.fn();\n\n // Convert babylon rendering methods to jest mocks\n mockBabylon.submitRenderCanvas = jest.fn();\n mockBabylon.clearRenderCanvas = jest.fn();\n\n const mockWarn = jest.fn();\n appObjects.submitWarning = mockWarn;\n\n return {\n appObjects,\n renderUC,\n mockBabylon,\n mockKeybaord,\n mockWarn,\n mockTouch,\n mockMouse,\n };\n}\n\ndescribe(\"Render Canvas UC\", () => {\n it(\"Submits the canvas to the keyboard input\", () => {\n const { mockKeybaord, renderUC } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n\n renderUC.submitCanvas(renderCanvas);\n\n expect(mockKeybaord.setEventElement).toHaveBeenCalledWith(renderCanvas);\n });\n\n it(\"Skips the keyboard input silently when it is absent and a canvas is submitted\", () => {\n const { mockKeybaord, renderUC, mockWarn } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n mockKeybaord.dispose();\n\n expect(() => renderUC.submitCanvas(renderCanvas)).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n\n it(\"Clears the input element from keyboard input\", () => {\n const { mockKeybaord, renderUC } = makeTestRig();\n\n renderUC.clearCanvas();\n\n expect(mockKeybaord.clearInputElement).toHaveBeenCalled();\n });\n\n it(\"Skips the keyboard input silently when it is absent and a canvas is cleared\", () => {\n const { mockKeybaord, renderUC, mockWarn } = makeTestRig();\n\n mockKeybaord.dispose();\n\n expect(() => renderUC.clearCanvas()).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n\n it(\"Submits the canvas to the mouse input\", () => {\n const { mockMouse, renderUC } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n\n renderUC.submitCanvas(renderCanvas);\n\n expect(mockMouse.setEventElement).toHaveBeenCalledWith(renderCanvas);\n });\n\n it(\"Skips the mouse input silently when it is absent and a canvas is submitted\", () => {\n const { mockMouse, renderUC, mockWarn } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n mockMouse.dispose();\n\n expect(() => renderUC.submitCanvas(renderCanvas)).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n\n it(\"Clears the input element from mouse input\", () => {\n const { mockMouse, renderUC } = makeTestRig();\n\n renderUC.clearCanvas();\n\n expect(mockMouse.clearInputElement).toHaveBeenCalled();\n });\n\n it(\"Skips the mouse input silently when it is absent and a canvas is cleared\", () => {\n const { mockMouse, renderUC, mockWarn } = makeTestRig();\n\n mockMouse.dispose();\n\n expect(() => renderUC.clearCanvas()).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n\n it(\"Submits the canvas to the touch input\", () => {\n const { mockTouch, renderUC } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n\n renderUC.submitCanvas(renderCanvas);\n\n expect(mockTouch.setEventElement).toHaveBeenCalledWith(renderCanvas);\n });\n\n it(\"Skips the touch input silently when it is absent and a canvas is submitted\", () => {\n const { mockTouch, renderUC, mockWarn } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n mockTouch.dispose();\n\n expect(() => renderUC.submitCanvas(renderCanvas)).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n\n it(\"Clears the input element from touch input\", () => {\n const { mockTouch, renderUC } = makeTestRig();\n\n renderUC.clearCanvas();\n\n expect(mockTouch.clearInputElement).toHaveBeenCalled();\n });\n\n it(\"Skips the touch input silently when it is absent and a canvas is cleared\", () => {\n const { mockTouch, renderUC, mockWarn } = makeTestRig();\n\n mockTouch.dispose();\n\n expect(() => renderUC.clearCanvas()).not.toThrow();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n\n it(\"Submits the canvas to the babylon rendering\", () => {\n const { mockBabylon, renderUC } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n\n renderUC.submitCanvas(renderCanvas);\n\n expect(mockBabylon.submitRenderCanvas).toHaveBeenCalledWith(renderCanvas);\n });\n\n it(\"Warns if it can't find the babylon rendering when a canvas is submitted\", () => {\n const { mockBabylon, renderUC, mockWarn } = makeTestRig();\n const renderCanvas = document.createElement(\"canvas\");\n mockBabylon.dispose();\n renderUC.submitCanvas(renderCanvas);\n\n expect(mockWarn).toHaveBeenCalled();\n });\n\n it(\"Clears the input element from babylon rendering\", () => {\n const { mockBabylon, renderUC } = makeTestRig();\n\n renderUC.clearCanvas();\n\n expect(mockBabylon.clearRenderCanvas).toHaveBeenCalled();\n });\n\n it(\"Warns if it can't find the babylon rendering when a canvas is cleared\", () => {\n const { mockBabylon, renderUC, mockWarn } = makeTestRig();\n\n mockBabylon.dispose();\n renderUC.clearCanvas();\n\n expect(mockWarn).toHaveBeenCalled();\n });\n\n it(\"Gets the UC\", () => {\n const { renderUC, appObjects } = makeTestRig();\n\n expect(RenderCanvasUC.get(appObjects)).toEqual(renderUC);\n });\n\n it(\"Warns and returns undefined if there is no UC\", () => {\n const { renderUC, appObjects, mockWarn } = makeTestRig();\n renderUC.dispose();\n\n expect(RenderCanvasUC.get(appObjects)).toBeUndefined();\n expect(mockWarn).toHaveBeenCalled();\n });\n\n it(\"Warns if there are more than two UCs found\", () => {\n const { appObjects, mockWarn } = makeTestRig();\n const newAO = appObjects.getOrCreate(\"newAO\");\n\n makeRenderCanvasUC(newAO);\n\n expect(RenderCanvasUC.get(appObjects)).not.toBeUndefined();\n expect(mockWarn).toHaveBeenCalled();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeFeatureFactory.js","sourceRoot":"","sources":["../../../../src/Challenge/Factories/ChallengeFeatureFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,uBAAwB,SAAQ,aAAa;IAA1D;;QACE,gBAAW,GAAG,yBAAyB,CAAC;IAqD1C,CAAC;IAnDC;;;;;OAKG;IACH,aAAa;QACX,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ;QACN,yEAAyE;QACzE,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,QAAQ;QACN,MAAM;QACN,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,UAAU;QACR,uDAAuD;IACzD,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAA4B;IAE5B,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACzD,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import { DomainFactory, AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { makeChallengeEntity } from \"../Entities\";\r\nimport {\r\n makeChallengeAuthorHelpPM,\r\n makeChallengeConsumerHelpPM,\r\n makeSelectedChallengePM,\r\n} from \"../PMs\";\r\nimport {\r\n makeSetChallengeUC,\r\n makeShowChallengeHelpUC,\r\n makeTryChallengeAgainUC,\r\n SerializeChallengeUC,\r\n} from \"../UCs\";\r\n\r\n/**\r\n * Factory responsible for setting up the Challenge Feature domain components.\r\n *\r\n * This factory initializes all entities, use cases, and presentation models\r\n * required for the Challenge Feature functionality. It follows the domain-driven\r\n * design pattern by organizing components into their respective layers.\r\n *\r\n * The factory creates:\r\n * - 1 Entity: Challenge entity for managing challenge state and registration\r\n * - 4 Use Cases: SerializeChallengeUC (class constructor), makeSetChallengeUC,\r\n * makeShowChallengeHelpUC, makeTryChallengeAgainUC (factory functions)\r\n * - 3 Presentation Models: makeChallengeAuthorHelpPM, makeChallengeConsumerHelpPM,\r\n * makeSelectedChallengePM\r\n *\r\n * Challenge kinds are not registered here. Each kind self-registers with the\r\n * Challenge entity from its own feature factory, so a composition that declines\r\n * a kind simply never registers it.\r\n *\r\n * @extends DomainFactory\r\n */\r\nexport class ChallengeFeatureFactory extends DomainFactory {\r\n factoryName = \"ChallengeFeatureFactory\";\r\n\r\n /**\r\n * Sets up all entities required for the Challenge Feature.\r\n *\r\n * Initializes the Challenge entity that maintains the state and business\r\n * logic for challenge functionality and challenge registration.\r\n */\r\n setupEntities(): void {\r\n makeChallengeEntity(this.appObject);\r\n }\r\n\r\n /**\r\n * Sets up all use cases for the Challenge Feature.\r\n *\r\n * Initializes use cases that define the business operations and\r\n * workflows available in the challenge feature. This includes both\r\n * class constructor patterns (SerializeChallengeUC) and factory\r\n * function patterns (makeSetChallengeUC, makeShowChallengeHelpUC,\r\n * makeTryChallengeAgainUC).\r\n */\r\n setupUCs(): void {\r\n // UCs - mixed creation patterns (class constructor vs factory functions)\r\n new SerializeChallengeUC(this.appObject);\r\n makeSetChallengeUC(this.appObject);\r\n makeShowChallengeHelpUC(this.appObject);\r\n makeTryChallengeAgainUC(this.appObject);\r\n }\r\n\r\n /**\r\n * Sets up all presentation models for the Challenge Feature.\r\n *\r\n * Initializes presentation models that handle the view logic and\r\n * state management for UI components related to challenge help and\r\n * selection functionality.\r\n */\r\n setupPMs(): void {\r\n // PMs\r\n makeChallengeAuthorHelpPM(this.appObject);\r\n makeChallengeConsumerHelpPM(this.appObject);\r\n makeSelectedChallengePM(this.appObject);\r\n }\r\n\r\n /**\r\n * Performs final setup operations after all components are initialized.\r\n *\r\n * Nothing to do. Challenge kinds register themselves with the Challenge\r\n * entity from their own feature factories, so this factory has no external\r\n * wiring left to perform. Required by DomainFactory.\r\n */\r\n finalSetup(): void {\r\n // Intentionally empty - challenge kinds self-register.\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new ChallengeFeatureFactory\r\n *\r\n * Creates and returns a new instance of ChallengeFeatureFactory that can be\r\n * used to set up all Challenge Feature domain components.\r\n *\r\n * @param appObjectRepo The AppObjectRepo to create the Challenge AppObject from\r\n * @returns A new ChallengeFeatureFactory instance\r\n */\r\nexport function makeChallengeFeatureFactory(\r\n appObjectRepo: AppObjectRepo,\r\n): ChallengeFeatureFactory {\r\n const appObject = appObjectRepo.getOrCreate(\"Challenge\");\r\n return new ChallengeFeatureFactory(appObject);\r\n}\r\n"]}
1
+ {"version":3,"file":"ChallengeFeatureFactory.js","sourceRoot":"","sources":["../../../../src/Challenge/Factories/ChallengeFeatureFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,uBAAwB,SAAQ,aAAa;IAA1D;;QACE,gBAAW,GAAG,yBAAyB,CAAC;IAqD1C,CAAC;IAnDC;;;;;OAKG;IACH,aAAa;QACX,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ;QACN,yEAAyE;QACzE,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,QAAQ;QACN,MAAM;QACN,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,UAAU;QACR,uDAAuD;IACzD,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAA4B;IAE5B,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACzD,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import { DomainFactory, AppObject, AppObjectRepo } from \"@vived/core\";\nimport { makeChallengeEntity } from \"../Entities\";\nimport {\n makeChallengeAuthorHelpPM,\n makeChallengeConsumerHelpPM,\n makeSelectedChallengePM,\n} from \"../PMs\";\nimport {\n makeSetChallengeUC,\n makeShowChallengeHelpUC,\n makeTryChallengeAgainUC,\n SerializeChallengeUC,\n} from \"../UCs\";\n\n/**\n * Factory responsible for setting up the Challenge Feature domain components.\n *\n * This factory initializes all entities, use cases, and presentation models\n * required for the Challenge Feature functionality. It follows the domain-driven\n * design pattern by organizing components into their respective layers.\n *\n * The factory creates:\n * - 1 Entity: Challenge entity for managing challenge state and registration\n * - 4 Use Cases: SerializeChallengeUC (class constructor), makeSetChallengeUC,\n * makeShowChallengeHelpUC, makeTryChallengeAgainUC (factory functions)\n * - 3 Presentation Models: makeChallengeAuthorHelpPM, makeChallengeConsumerHelpPM,\n * makeSelectedChallengePM\n *\n * Challenge kinds are not registered here. Each kind self-registers with the\n * Challenge entity from its own feature factory, so a composition that declines\n * a kind simply never registers it.\n *\n * @extends DomainFactory\n */\nexport class ChallengeFeatureFactory extends DomainFactory {\n factoryName = \"ChallengeFeatureFactory\";\n\n /**\n * Sets up all entities required for the Challenge Feature.\n *\n * Initializes the Challenge entity that maintains the state and business\n * logic for challenge functionality and challenge registration.\n */\n setupEntities(): void {\n makeChallengeEntity(this.appObject);\n }\n\n /**\n * Sets up all use cases for the Challenge Feature.\n *\n * Initializes use cases that define the business operations and\n * workflows available in the challenge feature. This includes both\n * class constructor patterns (SerializeChallengeUC) and factory\n * function patterns (makeSetChallengeUC, makeShowChallengeHelpUC,\n * makeTryChallengeAgainUC).\n */\n setupUCs(): void {\n // UCs - mixed creation patterns (class constructor vs factory functions)\n new SerializeChallengeUC(this.appObject);\n makeSetChallengeUC(this.appObject);\n makeShowChallengeHelpUC(this.appObject);\n makeTryChallengeAgainUC(this.appObject);\n }\n\n /**\n * Sets up all presentation models for the Challenge Feature.\n *\n * Initializes presentation models that handle the view logic and\n * state management for UI components related to challenge help and\n * selection functionality.\n */\n setupPMs(): void {\n // PMs\n makeChallengeAuthorHelpPM(this.appObject);\n makeChallengeConsumerHelpPM(this.appObject);\n makeSelectedChallengePM(this.appObject);\n }\n\n /**\n * Performs final setup operations after all components are initialized.\n *\n * Nothing to do. Challenge kinds register themselves with the Challenge\n * entity from their own feature factories, so this factory has no external\n * wiring left to perform. Required by DomainFactory.\n */\n finalSetup(): void {\n // Intentionally empty - challenge kinds self-register.\n }\n}\n\n/**\n * Factory function to create a new ChallengeFeatureFactory\n *\n * Creates and returns a new instance of ChallengeFeatureFactory that can be\n * used to set up all Challenge Feature domain components.\n *\n * @param appObjectRepo The AppObjectRepo to create the Challenge AppObject from\n * @returns A new ChallengeFeatureFactory instance\n */\nexport function makeChallengeFeatureFactory(\n appObjectRepo: AppObjectRepo,\n): ChallengeFeatureFactory {\n const appObject = appObjectRepo.getOrCreate(\"Challenge\");\n return new ChallengeFeatureFactory(appObject);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeFeatureFactory.test.js","sourceRoot":"","sources":["../../../../src/Challenge/Factories/ChallengeFeatureFactory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAEL,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,SAAS,YAAY,CAAC,UAAyB;IAC7C,MAAM,OAAO,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO,CAAC,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IAEvC,0DAA0D;IAC1D,IAAI,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAE/D,0EAA0E;IAC1E,yEAAyE;IACzE,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3B,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,aAAa,GAAG,QAAQ,CAAC;IAEpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC7C,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAErC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAE1D,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,oBAAoB,CACrC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CACrC,CAAC;QAEF,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,aAAa,CAAC,GAAG,CACnE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CACrC,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import {\r\n AppObjectRepo,\r\n DomainFactoryRepo,\r\n makeAppObjectRepo,\r\n} from \"@vived/core\";\r\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\r\nimport { makeObjectPickEntity } from \"../../ObjectPick\";\r\nimport { makeStateMachineEntity } from \"../../StateMachine\";\r\nimport { ChallengeEntity } from \"../Entities/ChallengeEntity\";\r\nimport {\r\n ChallengeFeatureFactory,\r\n makeChallengeFeatureFactory,\r\n} from \"./ChallengeFeatureFactory\";\r\n\r\nfunction setupFeature(appObjects: AppObjectRepo): ChallengeFeatureFactory {\r\n const factory = makeChallengeFeatureFactory(appObjects);\r\n factory.setupEntities();\r\n factory.setupUCs();\r\n factory.setupPMs();\r\n factory.finalSetup();\r\n return factory;\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n // DomainFactory auto-registers with this on construction.\r\n new DomainFactoryRepo(appObjects.getOrCreate(\"DomainFactory\"));\r\n\r\n // Boundary singletons the Challenge feature genuinely needs: the PMs read\r\n // BaseAppState and SerializeChallengeUC registers with the StateMachine.\r\n makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n makeStateMachineEntity(appObjects.getOrCreate(\"StateMachine\"));\r\n\r\n const mockError = jest.fn();\r\n const mockWarn = jest.fn();\r\n appObjects.submitError = mockError;\r\n appObjects.submitWarning = mockWarn;\r\n\r\n return { appObjects, mockError, mockWarn };\r\n}\r\n\r\ndescribe(\"Challenge Feature Factory\", () => {\r\n it(\"Creates the Challenge entity\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n setupFeature(appObjects);\r\n\r\n expect(ChallengeEntity.get(appObjects)).toBeDefined();\r\n });\r\n\r\n it(\"Wires without complaint when no challenge kinds are present\", () => {\r\n const { appObjects, mockError, mockWarn } = makeTestRig();\r\n\r\n setupFeature(appObjects);\r\n\r\n expect(mockError).not.toHaveBeenCalled();\r\n expect(mockWarn).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Registers no challenge kinds itself - each kind self-registers\", () => {\r\n const { appObjects } = makeTestRig();\r\n const objectPick = makeObjectPickEntity(\r\n appObjects.getOrCreate(\"ObjectPick\"),\r\n );\r\n\r\n setupFeature(appObjects);\r\n\r\n const registered = ChallengeEntity.get(appObjects)!.allChallenges.map(\r\n (challenge) => challenge.challengeID,\r\n );\r\n expect(registered).not.toContain(objectPick.challengeID);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ChallengeFeatureFactory.test.js","sourceRoot":"","sources":["../../../../src/Challenge/Factories/ChallengeFeatureFactory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAEL,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,SAAS,YAAY,CAAC,UAAyB;IAC7C,MAAM,OAAO,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO,CAAC,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IAEvC,0DAA0D;IAC1D,IAAI,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAE/D,0EAA0E;IAC1E,yEAAyE;IACzE,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3B,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,aAAa,GAAG,QAAQ,CAAC;IAEpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC7C,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAErC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAE1D,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,oBAAoB,CACrC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CACrC,CAAC;QAEF,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,aAAa,CAAC,GAAG,CACnE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CACrC,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import {\n AppObjectRepo,\n DomainFactoryRepo,\n makeAppObjectRepo,\n} from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport { makeObjectPickEntity } from \"../../ObjectPick\";\nimport { makeStateMachineEntity } from \"../../StateMachine\";\nimport { ChallengeEntity } from \"../Entities/ChallengeEntity\";\nimport {\n ChallengeFeatureFactory,\n makeChallengeFeatureFactory,\n} from \"./ChallengeFeatureFactory\";\n\nfunction setupFeature(appObjects: AppObjectRepo): ChallengeFeatureFactory {\n const factory = makeChallengeFeatureFactory(appObjects);\n factory.setupEntities();\n factory.setupUCs();\n factory.setupPMs();\n factory.finalSetup();\n return factory;\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n // DomainFactory auto-registers with this on construction.\n new DomainFactoryRepo(appObjects.getOrCreate(\"DomainFactory\"));\n\n // Boundary singletons the Challenge feature genuinely needs: the PMs read\n // BaseAppState and SerializeChallengeUC registers with the StateMachine.\n makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\n makeStateMachineEntity(appObjects.getOrCreate(\"StateMachine\"));\n\n const mockError = jest.fn();\n const mockWarn = jest.fn();\n appObjects.submitError = mockError;\n appObjects.submitWarning = mockWarn;\n\n return { appObjects, mockError, mockWarn };\n}\n\ndescribe(\"Challenge Feature Factory\", () => {\n it(\"Creates the Challenge entity\", () => {\n const { appObjects } = makeTestRig();\n\n setupFeature(appObjects);\n\n expect(ChallengeEntity.get(appObjects)).toBeDefined();\n });\n\n it(\"Wires without complaint when no challenge kinds are present\", () => {\n const { appObjects, mockError, mockWarn } = makeTestRig();\n\n setupFeature(appObjects);\n\n expect(mockError).not.toHaveBeenCalled();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n\n it(\"Registers no challenge kinds itself - each kind self-registers\", () => {\n const { appObjects } = makeTestRig();\n const objectPick = makeObjectPickEntity(\n appObjects.getOrCreate(\"ObjectPick\"),\n );\n\n setupFeature(appObjects);\n\n const registered = ChallengeEntity.get(appObjects)!.allChallenges.map(\n (challenge) => challenge.challengeID,\n );\n expect(registered).not.toContain(objectPick.challengeID);\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  import { DomainFactory } from "@vived/core";
2
2
  import { makeAppDispatcher } from "../Entities";
3
- import { makeAppIsReadyUC, makeDispatchStartZSpaceUC, makeDispatchStateChangeUC, makeDispatchStopZSpaceUC, makeGetAssetBlobURLUC, makeGetAssetFolderURLUC, makeGetAssetMetaUC, makeGetAssetsForOwnerUC, makeGetAssetStreamURLUC, makeGetLinkedAssetsUC, makeGoToNextStateUC, makeGoToPreviousStateUC, makeHasNextStateUC, makeHasPreviousStateUC, makeIsAssetFetchedUC, makeIsZSpaceAvailableUC, makeLogUC, makeRegisterExternalStylesheetsUC, makeShowAlertUC, makeShowConfirmUC, makeShowMarkdownEditorUC, makeShowSelectModelUC, makeShowSpinnerUC, makeStateHasChangedUC, makeStateIsCompleteUC, makeSubmitResultUC, } from "../UC";
3
+ import { makeAppIsReadyUC, makeDispatchStartZSpaceUC, makeDispatchStateChangeUC, makeDispatchStopZSpaceUC, makeGetAssetBlobURLUC, makeGetAssetFolderURLUC, makeGetAssetMetaUC, makeGetAssetsForOwnerUC, makeGetAssetStreamURLUC, makeGetLinkedAssetsUC, makeGoToNextStateUC, makeGoToPreviousStateUC, makeHasNextStateUC, makeHasPreviousStateUC, makeIsAssetFetchedUC, makeIsZSpaceAvailableUC, makeLogUC, makeRegisterExternalStylesheetsUC, makeShowAlertUC, makeShowConfirmUC, makeShowMarkdownEditorUC, makeShowSelectModelUC, makeShowSpinnerUC, makeStateHasChangedUC, makeStateIsCompleteUC, makeSubmitActivityAssetUC, makeSubmitResultUC, } from "../UC";
4
4
  /**
5
5
  * Factory responsible for setting up the Dispatcher Feature domain components.
6
6
  *
@@ -11,7 +11,7 @@ import { makeAppIsReadyUC, makeDispatchStartZSpaceUC, makeDispatchStateChangeUC,
11
11
  *
12
12
  * The factory creates:
13
13
  * - AppDispatcher entity with hostHandler integration
14
- * - All 24 dispatcher-related Use Cases for handling various app operations
14
+ * - All 27 dispatcher-related Use Cases for handling various app operations
15
15
  *
16
16
  * @extends DomainFactory
17
17
  */
@@ -42,11 +42,11 @@ export class DispatcherFeatureFactory extends DomainFactory {
42
42
  /**
43
43
  * Sets up all use cases for the Dispatcher Feature.
44
44
  *
45
- * Initializes all 24 use cases that define the business operations and
45
+ * Initializes all 27 use cases that define the business operations and
46
46
  * workflows available through the dispatcher system. These use cases handle:
47
47
  * - App lifecycle management (ready, state changes)
48
48
  * - ZSpace integration (start, stop, availability)
49
- * - Asset management (fetching, metadata, URLs)
49
+ * - Asset management (fetching, metadata, URLs, activity asset upload)
50
50
  * - State navigation (previous, next, completion)
51
51
  * - UI interactions (alerts, confirmations, editors)
52
52
  * - Result submission and logging
@@ -65,6 +65,7 @@ export class DispatcherFeatureFactory extends DomainFactory {
65
65
  makeGetAssetStreamURLUC(this.appObject);
66
66
  makeGetLinkedAssetsUC(this.appObject);
67
67
  makeIsAssetFetchedUC(this.appObject);
68
+ makeSubmitActivityAssetUC(this.appObject);
68
69
  // State navigation
69
70
  makeGoToPreviousStateUC(this.appObject);
70
71
  makeGoToNextStateUC(this.appObject);
@@ -1 +1 @@
1
- {"version":3,"file":"DispatcherFeatureFactory.js","sourceRoot":"","sources":["../../../../src/Dispatcher/Factories/DispatcherFeatureFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { DomainFactory, AppObject, Handler, AppObjectRepo } from \"@vived/core\";\nimport { makeAppDispatcher } from \"../Entities\";\nimport {\n makeAppIsReadyUC,\n makeDispatchStartZSpaceUC,\n makeDispatchStateChangeUC,\n makeDispatchStopZSpaceUC,\n makeGetAssetBlobURLUC,\n makeGetAssetFolderURLUC,\n makeGetAssetMetaUC,\n makeGetAssetsForOwnerUC,\n makeGetAssetStreamURLUC,\n makeGetLinkedAssetsUC,\n makeGoToNextStateUC,\n makeGoToPreviousStateUC,\n makeHasNextStateUC,\n makeHasPreviousStateUC,\n makeIsAssetFetchedUC,\n makeIsZSpaceAvailableUC,\n makeLogUC,\n makeRegisterExternalStylesheetsUC,\n makeShowAlertUC,\n makeShowConfirmUC,\n makeShowMarkdownEditorUC,\n makeShowSelectModelUC,\n makeShowSpinnerUC,\n makeStateHasChangedUC,\n makeStateIsCompleteUC,\n makeSubmitResultUC,\n} from \"../UC\";\n\n/**\n * Factory responsible for setting up the Dispatcher Feature domain components.\n *\n * This factory initializes the AppDispatcher entity and all associated use cases\n * required for the Dispatcher Feature functionality. It follows the domain-driven\n * design pattern by organizing components into their respective layers and replaces\n * the legacy setupDispatchers function while maintaining backwards compatibility.\n *\n * The factory creates:\n * - AppDispatcher entity with hostHandler integration\n * - All 24 dispatcher-related Use Cases for handling various app operations\n *\n * @extends DomainFactory\n */\nexport class DispatcherFeatureFactory extends DomainFactory {\n factoryName = \"DispatcherFeatureFactory\";\n\n public verbose = false;\n\n private hostHandler: Handler;\n\n /**\n * Creates a new DispatcherFeatureFactory instance.\n *\n * @param appObject The AppObject to attach the factory to\n * @param hostHandler The handler function for processing dispatched requests\n */\n constructor(appObject: AppObject, hostHandler: Handler) {\n super(appObject);\n this.hostHandler = hostHandler;\n }\n\n /**\n * Sets up all entities required for the Dispatcher Feature.\n *\n * Creates the AppDispatcher singleton entity that serves as the main\n * communication bridge between the app and the host environment.\n * The entity is initialized with the provided hostHandler for request processing.\n */\n setupEntities(): void {\n const entity = makeAppDispatcher(this.appObject, this.hostHandler);\n entity.verbose = this.verbose;\n }\n\n /**\n * Sets up all use cases for the Dispatcher Feature.\n *\n * Initializes all 24 use cases that define the business operations and\n * workflows available through the dispatcher system. These use cases handle:\n * - App lifecycle management (ready, state changes)\n * - ZSpace integration (start, stop, availability)\n * - Asset management (fetching, metadata, URLs)\n * - State navigation (previous, next, completion)\n * - UI interactions (alerts, confirmations, editors)\n * - Result submission and logging\n */\n setupUCs(): void {\n // App lifecycle and state management\n makeAppIsReadyUC(this.appObject);\n makeDispatchStartZSpaceUC(this.appObject);\n makeDispatchStateChangeUC(this.appObject);\n makeDispatchStopZSpaceUC(this.appObject);\n\n // Asset management\n makeGetAssetBlobURLUC(this.appObject);\n makeGetAssetFolderURLUC(this.appObject);\n makeGetAssetMetaUC(this.appObject);\n makeGetAssetsForOwnerUC(this.appObject);\n makeGetAssetStreamURLUC(this.appObject);\n makeGetLinkedAssetsUC(this.appObject);\n makeIsAssetFetchedUC(this.appObject);\n\n // State navigation\n makeGoToPreviousStateUC(this.appObject);\n makeGoToNextStateUC(this.appObject);\n makeHasPreviousStateUC(this.appObject);\n makeHasNextStateUC(this.appObject);\n makeStateHasChangedUC(this.appObject);\n makeStateIsCompleteUC(this.appObject);\n\n // ZSpace integration\n makeIsZSpaceAvailableUC(this.appObject);\n\n // Logging and utilities\n makeLogUC(this.appObject);\n makeRegisterExternalStylesheetsUC(this.appObject);\n\n // UI interactions\n makeShowAlertUC(this.appObject);\n makeShowConfirmUC(this.appObject);\n makeShowMarkdownEditorUC(this.appObject);\n makeShowSelectModelUC(this.appObject);\n makeShowSpinnerUC(this.appObject);\n\n // Result submission\n makeSubmitResultUC(this.appObject);\n }\n\n /**\n * Sets up all presentation models for the Dispatcher Feature.\n *\n * Currently no presentation models are required for the dispatcher feature\n * as it primarily handles business logic and communication with the host.\n */\n setupPMs(): void {\n // TODO: Create presentation models if needed for dispatcher UI components\n }\n\n /**\n * Performs any final setup operations after all components are initialized.\n *\n * This method is called after entities, use cases, and presentation models\n * have been set up. Currently no additional setup is required for this feature.\n */\n finalSetup(): void {\n // No additional setup required for this feature\n }\n}\n\n/**\n * Factory function to create a new DispatcherFeatureFactory.\n *\n * This function provides the same functionality as the legacy setupDispatchers\n * function but follows the Clean Architecture pattern with proper separation\n * of concerns and domain-driven design principles.\n *\n * @param appObjectRepo The AppObjectRepo to create the dispatcher AppObject from\n * @param hostHandler The handler function for processing dispatched requests\n * @returns A new DispatcherFeatureFactory instance\n */\nexport function makeDispatcherFeatureFactory(\n appObjectRepo: AppObjectRepo,\n hostHandler: Handler,\n): DispatcherFeatureFactory {\n const appObject = appObjectRepo.getOrCreate(\"App Dispatcher\");\n return new DispatcherFeatureFactory(appObject, hostHandler);\n}\n"]}
1
+ {"version":3,"file":"DispatcherFeatureFactory.js","sourceRoot":"","sources":["../../../../src/Dispatcher/Factories/DispatcherFeatureFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { DomainFactory, AppObject, Handler, AppObjectRepo } from \"@vived/core\";\r\nimport { makeAppDispatcher } from \"../Entities\";\r\nimport {\r\n makeAppIsReadyUC,\r\n makeDispatchStartZSpaceUC,\r\n makeDispatchStateChangeUC,\r\n makeDispatchStopZSpaceUC,\r\n makeGetAssetBlobURLUC,\r\n makeGetAssetFolderURLUC,\r\n makeGetAssetMetaUC,\r\n makeGetAssetsForOwnerUC,\r\n makeGetAssetStreamURLUC,\r\n makeGetLinkedAssetsUC,\r\n makeGoToNextStateUC,\r\n makeGoToPreviousStateUC,\r\n makeHasNextStateUC,\r\n makeHasPreviousStateUC,\r\n makeIsAssetFetchedUC,\r\n makeIsZSpaceAvailableUC,\r\n makeLogUC,\r\n makeRegisterExternalStylesheetsUC,\r\n makeShowAlertUC,\r\n makeShowConfirmUC,\r\n makeShowMarkdownEditorUC,\r\n makeShowSelectModelUC,\r\n makeShowSpinnerUC,\r\n makeStateHasChangedUC,\r\n makeStateIsCompleteUC,\r\n makeSubmitActivityAssetUC,\r\n makeSubmitResultUC,\r\n} from \"../UC\";\r\n\r\n/**\r\n * Factory responsible for setting up the Dispatcher Feature domain components.\r\n *\r\n * This factory initializes the AppDispatcher entity and all associated use cases\r\n * required for the Dispatcher Feature functionality. It follows the domain-driven\r\n * design pattern by organizing components into their respective layers and replaces\r\n * the legacy setupDispatchers function while maintaining backwards compatibility.\r\n *\r\n * The factory creates:\r\n * - AppDispatcher entity with hostHandler integration\r\n * - All 27 dispatcher-related Use Cases for handling various app operations\r\n *\r\n * @extends DomainFactory\r\n */\r\nexport class DispatcherFeatureFactory extends DomainFactory {\r\n factoryName = \"DispatcherFeatureFactory\";\r\n\r\n public verbose = false;\r\n\r\n private hostHandler: Handler;\r\n\r\n /**\r\n * Creates a new DispatcherFeatureFactory instance.\r\n *\r\n * @param appObject The AppObject to attach the factory to\r\n * @param hostHandler The handler function for processing dispatched requests\r\n */\r\n constructor(appObject: AppObject, hostHandler: Handler) {\r\n super(appObject);\r\n this.hostHandler = hostHandler;\r\n }\r\n\r\n /**\r\n * Sets up all entities required for the Dispatcher Feature.\r\n *\r\n * Creates the AppDispatcher singleton entity that serves as the main\r\n * communication bridge between the app and the host environment.\r\n * The entity is initialized with the provided hostHandler for request processing.\r\n */\r\n setupEntities(): void {\r\n const entity = makeAppDispatcher(this.appObject, this.hostHandler);\r\n entity.verbose = this.verbose;\r\n }\r\n\r\n /**\r\n * Sets up all use cases for the Dispatcher Feature.\r\n *\r\n * Initializes all 27 use cases that define the business operations and\r\n * workflows available through the dispatcher system. These use cases handle:\r\n * - App lifecycle management (ready, state changes)\r\n * - ZSpace integration (start, stop, availability)\r\n * - Asset management (fetching, metadata, URLs, activity asset upload)\r\n * - State navigation (previous, next, completion)\r\n * - UI interactions (alerts, confirmations, editors)\r\n * - Result submission and logging\r\n */\r\n setupUCs(): void {\r\n // App lifecycle and state management\r\n makeAppIsReadyUC(this.appObject);\r\n makeDispatchStartZSpaceUC(this.appObject);\r\n makeDispatchStateChangeUC(this.appObject);\r\n makeDispatchStopZSpaceUC(this.appObject);\r\n\r\n // Asset management\r\n makeGetAssetBlobURLUC(this.appObject);\r\n makeGetAssetFolderURLUC(this.appObject);\r\n makeGetAssetMetaUC(this.appObject);\r\n makeGetAssetsForOwnerUC(this.appObject);\r\n makeGetAssetStreamURLUC(this.appObject);\r\n makeGetLinkedAssetsUC(this.appObject);\r\n makeIsAssetFetchedUC(this.appObject);\r\n makeSubmitActivityAssetUC(this.appObject);\r\n\r\n // State navigation\r\n makeGoToPreviousStateUC(this.appObject);\r\n makeGoToNextStateUC(this.appObject);\r\n makeHasPreviousStateUC(this.appObject);\r\n makeHasNextStateUC(this.appObject);\r\n makeStateHasChangedUC(this.appObject);\r\n makeStateIsCompleteUC(this.appObject);\r\n\r\n // ZSpace integration\r\n makeIsZSpaceAvailableUC(this.appObject);\r\n\r\n // Logging and utilities\r\n makeLogUC(this.appObject);\r\n makeRegisterExternalStylesheetsUC(this.appObject);\r\n\r\n // UI interactions\r\n makeShowAlertUC(this.appObject);\r\n makeShowConfirmUC(this.appObject);\r\n makeShowMarkdownEditorUC(this.appObject);\r\n makeShowSelectModelUC(this.appObject);\r\n makeShowSpinnerUC(this.appObject);\r\n\r\n // Result submission\r\n makeSubmitResultUC(this.appObject);\r\n }\r\n\r\n /**\r\n * Sets up all presentation models for the Dispatcher Feature.\r\n *\r\n * Currently no presentation models are required for the dispatcher feature\r\n * as it primarily handles business logic and communication with the host.\r\n */\r\n setupPMs(): void {\r\n // TODO: Create presentation models if needed for dispatcher UI components\r\n }\r\n\r\n /**\r\n * Performs any final setup operations after all components are initialized.\r\n *\r\n * This method is called after entities, use cases, and presentation models\r\n * have been set up. Currently no additional setup is required for this feature.\r\n */\r\n finalSetup(): void {\r\n // No additional setup required for this feature\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new DispatcherFeatureFactory.\r\n *\r\n * This function provides the same functionality as the legacy setupDispatchers\r\n * function but follows the Clean Architecture pattern with proper separation\r\n * of concerns and domain-driven design principles.\r\n *\r\n * @param appObjectRepo The AppObjectRepo to create the dispatcher AppObject from\r\n * @param hostHandler The handler function for processing dispatched requests\r\n * @returns A new DispatcherFeatureFactory instance\r\n */\r\nexport function makeDispatcherFeatureFactory(\r\n appObjectRepo: AppObjectRepo,\r\n hostHandler: Handler,\r\n): DispatcherFeatureFactory {\r\n const appObject = appObjectRepo.getOrCreate(\"App Dispatcher\");\r\n return new DispatcherFeatureFactory(appObject, hostHandler);\r\n}\r\n"]}
@@ -0,0 +1,33 @@
1
+ import { makeAppObjectRepo } from "@vived/core";
2
+ import { SubmitActivityAssetUC, submitActivityAsset } from "../UC";
3
+ import { makeDispatcherFeatureFactory } from "./DispatcherFeatureFactory";
4
+ function makeTestRig() {
5
+ const appObjects = makeAppObjectRepo();
6
+ const hostHandler = jest.fn((request) => {
7
+ if (request.type === "SUBMIT_ACTIVITY_ASSET") {
8
+ request.payload.callback("anAssetID");
9
+ }
10
+ });
11
+ const factory = makeDispatcherFeatureFactory(appObjects, hostHandler);
12
+ factory.setupEntities();
13
+ factory.setupUCs();
14
+ const testFile = new File(["test"], "model.glb");
15
+ return { appObjects, hostHandler, testFile };
16
+ }
17
+ describe("DispatcherFeatureFactory", () => {
18
+ it("Sets up the SubmitActivityAssetUC", () => {
19
+ const { appObjects } = makeTestRig();
20
+ expect(SubmitActivityAssetUC.get(appObjects)).toBeDefined();
21
+ });
22
+ it("Submits an activity asset to the host and resolves with its id", async () => {
23
+ const { appObjects, hostHandler, testFile } = makeTestRig();
24
+ const id = await submitActivityAsset(testFile, appObjects);
25
+ expect(hostHandler).toHaveBeenCalledTimes(1);
26
+ const request = hostHandler.mock.calls[0][0];
27
+ expect(request.type).toEqual("SUBMIT_ACTIVITY_ASSET");
28
+ expect(request.version).toEqual(1);
29
+ expect(request.payload.assetFile).toBe(testFile);
30
+ expect(id).toEqual("anAssetID");
31
+ });
32
+ });
33
+ //# sourceMappingURL=DispatcherFeatureFactory.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatcherFeatureFactory.test.js","sourceRoot":"","sources":["../../../../src/Dispatcher/Factories/DispatcherFeatureFactory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAW,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,OAAgB,EAAE,EAAE;QAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,4BAA4B,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACtE,OAAO,CAAC,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAEjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAErC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAE5D,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE3D,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAE,OAAO,CAAC,OAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo, Request } from \"@vived/core\";\r\nimport { SubmitActivityAssetUC, submitActivityAsset } from \"../UC\";\r\nimport { makeDispatcherFeatureFactory } from \"./DispatcherFeatureFactory\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const hostHandler = jest.fn((request: Request) => {\r\n if (request.type === \"SUBMIT_ACTIVITY_ASSET\") {\r\n (request.payload as any).callback(\"anAssetID\");\r\n }\r\n });\r\n\r\n const factory = makeDispatcherFeatureFactory(appObjects, hostHandler);\r\n factory.setupEntities();\r\n factory.setupUCs();\r\n\r\n const testFile = new File([\"test\"], \"model.glb\");\r\n\r\n return { appObjects, hostHandler, testFile };\r\n}\r\n\r\ndescribe(\"DispatcherFeatureFactory\", () => {\r\n it(\"Sets up the SubmitActivityAssetUC\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n expect(SubmitActivityAssetUC.get(appObjects)).toBeDefined();\r\n });\r\n\r\n it(\"Submits an activity asset to the host and resolves with its id\", async () => {\r\n const { appObjects, hostHandler, testFile } = makeTestRig();\r\n\r\n const id = await submitActivityAsset(testFile, appObjects);\r\n\r\n expect(hostHandler).toHaveBeenCalledTimes(1);\r\n const request = hostHandler.mock.calls[0][0];\r\n expect(request.type).toEqual(\"SUBMIT_ACTIVITY_ASSET\");\r\n expect(request.version).toEqual(1);\r\n expect((request.payload as any).assetFile).toBe(testFile);\r\n expect(id).toEqual(\"anAssetID\");\r\n });\r\n});\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { makeAppDispatcher } from "../Entities";
2
- import { makeAppIsReadyUC, makeDispatchStartZSpaceUC, makeDispatchStateChangeUC, makeDispatchStopZSpaceUC, makeGetAssetBlobURLUC, makeGetAssetFolderURLUC, makeGetAssetMetaUC, makeGetAssetsForOwnerUC, makeGetAssetStreamURLUC, makeGetLinkedAssetsUC, makeGoToNextStateUC, makeGoToPreviousStateUC, makeHasNextStateUC, makeHasPreviousStateUC, makeIsAssetFetchedUC, makeIsZSpaceAvailableUC, makeLogUC, makeRegisterExternalStylesheetsUC, makeShowAlertUC, makeShowConfirmUC, makeShowMarkdownEditorUC, makeShowSelectModelUC, makeShowSpinnerUC, makeStateHasChangedUC, makeStateIsCompleteUC, makeSubmitResultUC, } from "../UC";
2
+ import { makeAppIsReadyUC, makeDispatchStartZSpaceUC, makeDispatchStateChangeUC, makeDispatchStopZSpaceUC, makeGetAssetBlobURLUC, makeGetAssetFolderURLUC, makeGetAssetMetaUC, makeGetAssetsForOwnerUC, makeGetAssetStreamURLUC, makeGetLinkedAssetsUC, makeGoToNextStateUC, makeGoToPreviousStateUC, makeHasNextStateUC, makeHasPreviousStateUC, makeIsAssetFetchedUC, makeIsZSpaceAvailableUC, makeLogUC, makeRegisterExternalStylesheetsUC, makeShowAlertUC, makeShowConfirmUC, makeShowMarkdownEditorUC, makeShowSelectModelUC, makeShowSpinnerUC, makeStateHasChangedUC, makeStateIsCompleteUC, makeSubmitActivityAssetUC, makeSubmitResultUC, } from "../UC";
3
3
  export function setupDispatchers(appObjects, hostHandler) {
4
4
  const dispatcherAO = appObjects.getOrCreate("App Dispatcher");
5
5
  makeAppDispatcher(dispatcherAO, hostHandler);
@@ -28,6 +28,7 @@ export function setupDispatchers(appObjects, hostHandler) {
28
28
  makeShowSpinnerUC(dispatcherAO);
29
29
  makeStateHasChangedUC(dispatcherAO);
30
30
  makeStateIsCompleteUC(dispatcherAO);
31
+ makeSubmitActivityAssetUC(dispatcherAO);
31
32
  makeSubmitResultUC(dispatcherAO);
32
33
  }
33
34
  //# sourceMappingURL=setupDispatchers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupDispatchers.js","sourceRoot":"","sources":["../../../../src/Dispatcher/Factories/setupDispatchers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,SAAS,EACT,iCAAiC,EACjC,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,OAAO,CAAC;AAEf,MAAM,UAAU,gBAAgB,CAC9B,UAAyB,EACzB,WAAoB;IAEpB,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAE9D,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE7C,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC/B,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACxC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACxC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACvC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACjC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAClC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACrC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACjC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACnC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,SAAS,CAAC,YAAY,CAAC,CAAC;IACxB,iCAAiC,CAAC,YAAY,CAAC,CAAC;IAChD,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9B,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACvC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import { AppObjectRepo, Handler } from \"@vived/core\";\nimport { makeAppDispatcher } from \"../Entities\";\nimport {\n makeAppIsReadyUC,\n makeDispatchStartZSpaceUC,\n makeDispatchStateChangeUC,\n makeDispatchStopZSpaceUC,\n makeGetAssetBlobURLUC,\n makeGetAssetFolderURLUC,\n makeGetAssetMetaUC,\n makeGetAssetsForOwnerUC,\n makeGetAssetStreamURLUC,\n makeGetLinkedAssetsUC,\n makeGoToNextStateUC,\n makeGoToPreviousStateUC,\n makeHasNextStateUC,\n makeHasPreviousStateUC,\n makeIsAssetFetchedUC,\n makeIsZSpaceAvailableUC,\n makeLogUC,\n makeRegisterExternalStylesheetsUC,\n makeShowAlertUC,\n makeShowConfirmUC,\n makeShowMarkdownEditorUC,\n makeShowSelectModelUC,\n makeShowSpinnerUC,\n makeStateHasChangedUC,\n makeStateIsCompleteUC,\n makeSubmitResultUC,\n} from \"../UC\";\n\nexport function setupDispatchers(\n appObjects: AppObjectRepo,\n hostHandler: Handler,\n) {\n const dispatcherAO = appObjects.getOrCreate(\"App Dispatcher\");\n\n makeAppDispatcher(dispatcherAO, hostHandler);\n\n makeAppIsReadyUC(dispatcherAO);\n makeDispatchStartZSpaceUC(dispatcherAO);\n makeDispatchStateChangeUC(dispatcherAO);\n makeDispatchStopZSpaceUC(dispatcherAO);\n makeGetAssetBlobURLUC(dispatcherAO);\n makeGetAssetFolderURLUC(dispatcherAO);\n makeGetAssetMetaUC(dispatcherAO);\n makeGetAssetsForOwnerUC(dispatcherAO);\n makeGetAssetStreamURLUC(dispatcherAO);\n makeGetLinkedAssetsUC(dispatcherAO);\n makeGoToPreviousStateUC(dispatcherAO);\n makeGoToNextStateUC(dispatcherAO);\n makeHasPreviousStateUC(dispatcherAO);\n makeHasNextStateUC(dispatcherAO);\n makeIsAssetFetchedUC(dispatcherAO);\n makeIsZSpaceAvailableUC(dispatcherAO);\n makeLogUC(dispatcherAO);\n makeRegisterExternalStylesheetsUC(dispatcherAO);\n makeShowAlertUC(dispatcherAO);\n makeShowConfirmUC(dispatcherAO);\n makeShowMarkdownEditorUC(dispatcherAO);\n makeShowSelectModelUC(dispatcherAO);\n makeShowSpinnerUC(dispatcherAO);\n makeStateHasChangedUC(dispatcherAO);\n makeStateIsCompleteUC(dispatcherAO);\n makeSubmitResultUC(dispatcherAO);\n}\n"]}
1
+ {"version":3,"file":"setupDispatchers.js","sourceRoot":"","sources":["../../../../src/Dispatcher/Factories/setupDispatchers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,SAAS,EACT,iCAAiC,EACjC,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,OAAO,CAAC;AAEf,MAAM,UAAU,gBAAgB,CAC9B,UAAyB,EACzB,WAAoB;IAEpB,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAE9D,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE7C,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC/B,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACxC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACxC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACvC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACjC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAClC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACrC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACjC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACnC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACtC,SAAS,CAAC,YAAY,CAAC,CAAC;IACxB,iCAAiC,CAAC,YAAY,CAAC,CAAC;IAChD,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9B,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACvC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACxC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import { AppObjectRepo, Handler } from \"@vived/core\";\r\nimport { makeAppDispatcher } from \"../Entities\";\r\nimport {\r\n makeAppIsReadyUC,\r\n makeDispatchStartZSpaceUC,\r\n makeDispatchStateChangeUC,\r\n makeDispatchStopZSpaceUC,\r\n makeGetAssetBlobURLUC,\r\n makeGetAssetFolderURLUC,\r\n makeGetAssetMetaUC,\r\n makeGetAssetsForOwnerUC,\r\n makeGetAssetStreamURLUC,\r\n makeGetLinkedAssetsUC,\r\n makeGoToNextStateUC,\r\n makeGoToPreviousStateUC,\r\n makeHasNextStateUC,\r\n makeHasPreviousStateUC,\r\n makeIsAssetFetchedUC,\r\n makeIsZSpaceAvailableUC,\r\n makeLogUC,\r\n makeRegisterExternalStylesheetsUC,\r\n makeShowAlertUC,\r\n makeShowConfirmUC,\r\n makeShowMarkdownEditorUC,\r\n makeShowSelectModelUC,\r\n makeShowSpinnerUC,\r\n makeStateHasChangedUC,\r\n makeStateIsCompleteUC,\r\n makeSubmitActivityAssetUC,\r\n makeSubmitResultUC,\r\n} from \"../UC\";\r\n\r\nexport function setupDispatchers(\r\n appObjects: AppObjectRepo,\r\n hostHandler: Handler,\r\n) {\r\n const dispatcherAO = appObjects.getOrCreate(\"App Dispatcher\");\r\n\r\n makeAppDispatcher(dispatcherAO, hostHandler);\r\n\r\n makeAppIsReadyUC(dispatcherAO);\r\n makeDispatchStartZSpaceUC(dispatcherAO);\r\n makeDispatchStateChangeUC(dispatcherAO);\r\n makeDispatchStopZSpaceUC(dispatcherAO);\r\n makeGetAssetBlobURLUC(dispatcherAO);\r\n makeGetAssetFolderURLUC(dispatcherAO);\r\n makeGetAssetMetaUC(dispatcherAO);\r\n makeGetAssetsForOwnerUC(dispatcherAO);\r\n makeGetAssetStreamURLUC(dispatcherAO);\r\n makeGetLinkedAssetsUC(dispatcherAO);\r\n makeGoToPreviousStateUC(dispatcherAO);\r\n makeGoToNextStateUC(dispatcherAO);\r\n makeHasPreviousStateUC(dispatcherAO);\r\n makeHasNextStateUC(dispatcherAO);\r\n makeIsAssetFetchedUC(dispatcherAO);\r\n makeIsZSpaceAvailableUC(dispatcherAO);\r\n makeLogUC(dispatcherAO);\r\n makeRegisterExternalStylesheetsUC(dispatcherAO);\r\n makeShowAlertUC(dispatcherAO);\r\n makeShowConfirmUC(dispatcherAO);\r\n makeShowMarkdownEditorUC(dispatcherAO);\r\n makeShowSelectModelUC(dispatcherAO);\r\n makeShowSpinnerUC(dispatcherAO);\r\n makeStateHasChangedUC(dispatcherAO);\r\n makeStateIsCompleteUC(dispatcherAO);\r\n makeSubmitActivityAssetUC(dispatcherAO);\r\n makeSubmitResultUC(dispatcherAO);\r\n}\r\n"]}
@@ -0,0 +1,31 @@
1
+ import { makeAppObjectRepo } from "@vived/core";
2
+ import { SubmitActivityAssetUC, submitActivityAsset } from "../UC";
3
+ import { setupDispatchers } from "./setupDispatchers";
4
+ function makeTestRig() {
5
+ const appObjects = makeAppObjectRepo();
6
+ const hostHandler = jest.fn((request) => {
7
+ if (request.type === "SUBMIT_ACTIVITY_ASSET") {
8
+ request.payload.callback("anAssetID");
9
+ }
10
+ });
11
+ setupDispatchers(appObjects, hostHandler);
12
+ const testFile = new File(["test"], "model.glb");
13
+ return { appObjects, hostHandler, testFile };
14
+ }
15
+ describe("setupDispatchers", () => {
16
+ it("Sets up the SubmitActivityAssetUC", () => {
17
+ const { appObjects } = makeTestRig();
18
+ expect(SubmitActivityAssetUC.get(appObjects)).toBeDefined();
19
+ });
20
+ it("Submits an activity asset to the host and resolves with its id", async () => {
21
+ const { appObjects, hostHandler, testFile } = makeTestRig();
22
+ const id = await submitActivityAsset(testFile, appObjects);
23
+ expect(hostHandler).toHaveBeenCalledTimes(1);
24
+ const request = hostHandler.mock.calls[0][0];
25
+ expect(request.type).toEqual("SUBMIT_ACTIVITY_ASSET");
26
+ expect(request.version).toEqual(1);
27
+ expect(request.payload.assetFile).toBe(testFile);
28
+ expect(id).toEqual("anAssetID");
29
+ });
30
+ });
31
+ //# sourceMappingURL=setupDispatchers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupDispatchers.test.js","sourceRoot":"","sources":["../../../../src/Dispatcher/Factories/setupDispatchers.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAW,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,OAAgB,EAAE,EAAE;QAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;IAEjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAErC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAE5D,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE3D,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAE,OAAO,CAAC,OAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo, Request } from \"@vived/core\";\r\nimport { SubmitActivityAssetUC, submitActivityAsset } from \"../UC\";\r\nimport { setupDispatchers } from \"./setupDispatchers\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const hostHandler = jest.fn((request: Request) => {\r\n if (request.type === \"SUBMIT_ACTIVITY_ASSET\") {\r\n (request.payload as any).callback(\"anAssetID\");\r\n }\r\n });\r\n\r\n setupDispatchers(appObjects, hostHandler);\r\n\r\n const testFile = new File([\"test\"], \"model.glb\");\r\n\r\n return { appObjects, hostHandler, testFile };\r\n}\r\n\r\ndescribe(\"setupDispatchers\", () => {\r\n it(\"Sets up the SubmitActivityAssetUC\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n expect(SubmitActivityAssetUC.get(appObjects)).toBeDefined();\r\n });\r\n\r\n it(\"Submits an activity asset to the host and resolves with its id\", async () => {\r\n const { appObjects, hostHandler, testFile } = makeTestRig();\r\n\r\n const id = await submitActivityAsset(testFile, appObjects);\r\n\r\n expect(hostHandler).toHaveBeenCalledTimes(1);\r\n const request = hostHandler.mock.calls[0][0];\r\n expect(request.type).toEqual(\"SUBMIT_ACTIVITY_ASSET\");\r\n expect(request.version).toEqual(1);\r\n expect((request.payload as any).assetFile).toBe(testFile);\r\n expect(id).toEqual(\"anAssetID\");\r\n });\r\n});\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EventEntity.js","sourceRoot":"","sources":["../../../../src/EventSystem/Entities/EventEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n getSingletonComponent,\r\n MemoizedString,\r\n} from \"@vived/core\";\r\nimport {\r\n EventCategory,\r\n EventDefinition,\r\n EventRegistrationOptions,\r\n} from \"../types\";\r\n\r\n/**\r\n * EventEntity represents a global singleton for event registration and logging.\r\n * Only one instance exists in the application.\r\n */\r\nexport abstract class EventEntity extends AppObjectEntity {\r\n static readonly type = \"EventEntity\";\r\n\r\n /**\r\n * Register an event. `options.category` classifies it for scoring\r\n * (`\"assessed\"` by default, or `\"instructional\"` for quiz-neutral guidance);\r\n * see `EventCategory`. The two-argument form is unchanged.\r\n */\r\n abstract register(\r\n id: string,\r\n name: string,\r\n options?: EventRegistrationOptions,\r\n ): void;\r\n abstract emit(id: string): void;\r\n abstract reset(): void;\r\n abstract getRegisteredEvents(): EventDefinition[];\r\n abstract getEmittedEvents(): string[];\r\n abstract getLastEmittedId(): string | null;\r\n\r\n /**\r\n * The category an event was registered with. Unregistered ids and\r\n * registrations that omitted the option are `\"assessed\"`, so every legacy\r\n * consumer is classified exactly as before categories existed.\r\n */\r\n abstract getEventCategory(id: string): EventCategory;\r\n\r\n /**\r\n * Register a callback that is invoked on every emission, with the emitted\r\n * event ID. Unlike addChangeObserver, this fires for every emit() call —\r\n * including consecutive emissions of the same event ID.\r\n */\r\n abstract addEmissionListener(callback: (eventId: string) => void): void;\r\n\r\n /** Remove a previously registered emission listener. */\r\n abstract removeEmissionListener(callback: (eventId: string) => void): void;\r\n\r\n static get = (appObjects: AppObjectRepo): EventEntity | undefined =>\r\n getSingletonComponent(EventEntity.type, appObjects);\r\n}\r\n\r\nexport function makeEventEntity(appObject: AppObject): EventEntity {\r\n return new EventEntityImp(appObject);\r\n}\r\n\r\nclass EventEntityImp extends EventEntity {\r\n private eventRegistry = new Map<string, EventDefinition>();\r\n private eventLog: string[] = [];\r\n private memoizedLastEmittedId = new MemoizedString(\"\", this.notifyOnChange);\r\n private emissionListeners = new Set<(eventId: string) => void>();\r\n\r\n register(\r\n id: string,\r\n name: string,\r\n options?: EventRegistrationOptions,\r\n ): void {\r\n if (this.eventRegistry.has(id)) {\r\n this.appObjects.submitWarning(\r\n \"EventEntity\",\r\n `Event with id '${id}' is already registered`,\r\n );\r\n return;\r\n }\r\n\r\n // Store the category only when the caller passed one, so the definitions\r\n // handed to existing consumers (e.g. a Procedure's availableEvents) stay\r\n // byte-identical; getEventCategory normalizes the default.\r\n const definition: EventDefinition = { id, name };\r\n if (options?.category) {\r\n definition.category = options.category;\r\n }\r\n\r\n this.eventRegistry.set(id, definition);\r\n this.notifyOnChange();\r\n }\r\n\r\n getEventCategory(id: string): EventCategory {\r\n return this.eventRegistry.get(id)?.category ?? \"assessed\";\r\n }\r\n\r\n emit(id: string): void {\r\n if (!this.eventRegistry.has(id)) {\r\n this.appObjects.submitWarning(\r\n \"EventEntity\",\r\n `Cannot emit unknown event with id '${id}'`,\r\n );\r\n return;\r\n }\r\n\r\n this.eventLog.push(id);\r\n this.memoizedLastEmittedId.val = id;\r\n\r\n for (const listener of this.emissionListeners) {\r\n listener(id);\r\n }\r\n }\r\n\r\n reset(): void {\r\n this.eventLog = [];\r\n this.memoizedLastEmittedId.val = \"\";\r\n }\r\n\r\n getRegisteredEvents(): EventDefinition[] {\r\n return Array.from(this.eventRegistry.values());\r\n }\r\n\r\n getEmittedEvents(): string[] {\r\n return [...this.eventLog];\r\n }\r\n\r\n getLastEmittedId(): string | null {\r\n const lastId = this.memoizedLastEmittedId.val;\r\n return lastId === \"\" ? null : lastId;\r\n }\r\n\r\n addEmissionListener(callback: (eventId: string) => void): void {\r\n this.emissionListeners.add(callback);\r\n }\r\n\r\n removeEmissionListener(callback: (eventId: string) => void): void {\r\n this.emissionListeners.delete(callback);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, EventEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EventEntity.js","sourceRoot":"","sources":["../../../../src/EventSystem/Entities/EventEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n getSingletonComponent,\n MemoizedString,\n} from \"@vived/core\";\nimport {\n EventCategory,\n EventDefinition,\n EventRegistrationOptions,\n} from \"../types\";\n\n/**\n * EventEntity represents a global singleton for event registration and logging.\n * Only one instance exists in the application.\n */\nexport abstract class EventEntity extends AppObjectEntity {\n static readonly type = \"EventEntity\";\n\n /**\n * Register an event. `options.category` classifies it for scoring\n * (`\"assessed\"` by default, or `\"instructional\"` for quiz-neutral guidance);\n * see `EventCategory`. The two-argument form is unchanged.\n */\n abstract register(\n id: string,\n name: string,\n options?: EventRegistrationOptions,\n ): void;\n abstract emit(id: string): void;\n abstract reset(): void;\n abstract getRegisteredEvents(): EventDefinition[];\n abstract getEmittedEvents(): string[];\n abstract getLastEmittedId(): string | null;\n\n /**\n * The category an event was registered with. Unregistered ids and\n * registrations that omitted the option are `\"assessed\"`, so every legacy\n * consumer is classified exactly as before categories existed.\n */\n abstract getEventCategory(id: string): EventCategory;\n\n /**\n * Register a callback that is invoked on every emission, with the emitted\n * event ID. Unlike addChangeObserver, this fires for every emit() call —\n * including consecutive emissions of the same event ID.\n */\n abstract addEmissionListener(callback: (eventId: string) => void): void;\n\n /** Remove a previously registered emission listener. */\n abstract removeEmissionListener(callback: (eventId: string) => void): void;\n\n static get = (appObjects: AppObjectRepo): EventEntity | undefined =>\n getSingletonComponent(EventEntity.type, appObjects);\n}\n\nexport function makeEventEntity(appObject: AppObject): EventEntity {\n return new EventEntityImp(appObject);\n}\n\nclass EventEntityImp extends EventEntity {\n private eventRegistry = new Map<string, EventDefinition>();\n private eventLog: string[] = [];\n private memoizedLastEmittedId = new MemoizedString(\"\", this.notifyOnChange);\n private emissionListeners = new Set<(eventId: string) => void>();\n\n register(id: string, name: string, options?: EventRegistrationOptions): void {\n if (this.eventRegistry.has(id)) {\n this.appObjects.submitWarning(\n \"EventEntity\",\n `Event with id '${id}' is already registered`,\n );\n return;\n }\n\n // Store the category only when the caller passed one, so the definitions\n // handed to existing consumers (e.g. a Procedure's availableEvents) stay\n // byte-identical; getEventCategory normalizes the default.\n const definition: EventDefinition = { id, name };\n if (options?.category) {\n definition.category = options.category;\n }\n\n this.eventRegistry.set(id, definition);\n this.notifyOnChange();\n }\n\n getEventCategory(id: string): EventCategory {\n return this.eventRegistry.get(id)?.category ?? \"assessed\";\n }\n\n emit(id: string): void {\n if (!this.eventRegistry.has(id)) {\n this.appObjects.submitWarning(\n \"EventEntity\",\n `Cannot emit unknown event with id '${id}'`,\n );\n return;\n }\n\n this.eventLog.push(id);\n this.memoizedLastEmittedId.val = id;\n\n for (const listener of this.emissionListeners) {\n listener(id);\n }\n }\n\n reset(): void {\n this.eventLog = [];\n this.memoizedLastEmittedId.val = \"\";\n }\n\n getRegisteredEvents(): EventDefinition[] {\n return Array.from(this.eventRegistry.values());\n }\n\n getEmittedEvents(): string[] {\n return [...this.eventLog];\n }\n\n getLastEmittedId(): string | null {\n const lastId = this.memoizedLastEmittedId.val;\n return lastId === \"\" ? null : lastId;\n }\n\n addEmissionListener(callback: (eventId: string) => void): void {\n this.emissionListeners.add(callback);\n }\n\n removeEmissionListener(callback: (eventId: string) => void): void {\n this.emissionListeners.delete(callback);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, EventEntity.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
@@ -204,7 +204,10 @@ describe("EventEntity", () => {
204
204
  { id: "lever", name: "Pull lever" },
205
205
  { id: "valve", name: "Open valve" },
206
206
  ]);
207
- expect(Object.keys(entity.getRegisteredEvents()[0])).toEqual(["id", "name"]);
207
+ expect(Object.keys(entity.getRegisteredEvents()[0])).toEqual([
208
+ "id",
209
+ "name",
210
+ ]);
208
211
  expect(entity.getEventCategory("lever")).toBe("assessed");
209
212
  expect(entity.getEventCategory("valve")).toBe("assessed");
210
213
  });