@vived/host 4.0.3 → 4.2.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 (196) hide show
  1. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js +24 -0
  2. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -0
  3. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js +30 -0
  4. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js.map +1 -0
  5. package/dist/cjs/ChallengeResults/Adapters/index.js +1 -0
  6. package/dist/cjs/ChallengeResults/Adapters/index.js.map +1 -1
  7. package/dist/cjs/ChallengeResults/Factories/index.js +1 -1
  8. package/dist/cjs/ChallengeResults/Factories/index.js.map +1 -1
  9. package/dist/cjs/ChallengeResults/Factories/setupChallengeResults.js +14 -0
  10. package/dist/cjs/ChallengeResults/Factories/setupChallengeResults.js.map +1 -0
  11. package/dist/cjs/ChallengeResults/Factories/setupChallengeResultsForSandbox.js +1 -0
  12. package/dist/cjs/ChallengeResults/Factories/setupChallengeResultsForSandbox.js.map +1 -1
  13. package/dist/cjs/ChallengeResults/Mocks/MockHasChallengeResultsPM.js +16 -0
  14. package/dist/cjs/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -0
  15. package/dist/cjs/ChallengeResults/Mocks/index.js +1 -0
  16. package/dist/cjs/ChallengeResults/Mocks/index.js.map +1 -1
  17. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js +2 -0
  18. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
  19. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.test.js +4 -2
  20. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.test.js.map +1 -1
  21. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js +37 -0
  22. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -0
  23. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.test.js +32 -0
  24. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.test.js.map +1 -0
  25. package/dist/cjs/ChallengeResults/PMs/index.js +1 -0
  26. package/dist/cjs/ChallengeResults/PMs/index.js.map +1 -1
  27. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.js +24 -0
  28. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.js.map +1 -0
  29. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.test.js +49 -0
  30. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.test.js.map +1 -0
  31. package/dist/cjs/StateMachine/Adapters/index.js +1 -0
  32. package/dist/cjs/StateMachine/Adapters/index.js.map +1 -1
  33. package/dist/cjs/StateMachine/Controllers/editStateName.js +13 -0
  34. package/dist/cjs/StateMachine/Controllers/editStateName.js.map +1 -0
  35. package/dist/cjs/StateMachine/Controllers/editStateName.test.js +49 -0
  36. package/dist/cjs/StateMachine/Controllers/editStateName.test.js.map +1 -0
  37. package/dist/cjs/StateMachine/Controllers/index.js +1 -0
  38. package/dist/cjs/StateMachine/Controllers/index.js.map +1 -1
  39. package/dist/cjs/StateMachine/Entities/HostStateMachine.js +67 -24
  40. package/dist/cjs/StateMachine/Entities/HostStateMachine.js.map +1 -1
  41. package/dist/cjs/StateMachine/Entities/HostStateMachine.test.js +174 -0
  42. package/dist/cjs/StateMachine/Entities/HostStateMachine.test.js.map +1 -1
  43. package/dist/cjs/StateMachine/Mocks/MockEditStateNameUC.js +12 -0
  44. package/dist/cjs/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -0
  45. package/dist/cjs/StateMachine/Mocks/MockHostStatePM.js +23 -0
  46. package/dist/cjs/StateMachine/Mocks/MockHostStatePM.js.map +1 -0
  47. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.js +21 -15
  48. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
  49. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.test.js +65 -56
  50. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.test.js.map +1 -1
  51. package/dist/cjs/StateMachine/PMs/HostStatePM.js +136 -0
  52. package/dist/cjs/StateMachine/PMs/HostStatePM.js.map +1 -0
  53. package/dist/cjs/StateMachine/PMs/HostStatePM.test.js +405 -0
  54. package/dist/cjs/StateMachine/PMs/HostStatePM.test.js.map +1 -0
  55. package/dist/cjs/StateMachine/PMs/index.js +1 -0
  56. package/dist/cjs/StateMachine/PMs/index.js.map +1 -1
  57. package/dist/cjs/StateMachine/UCs/EditStateNameUC.js +35 -0
  58. package/dist/cjs/StateMachine/UCs/EditStateNameUC.js.map +1 -0
  59. package/dist/cjs/StateMachine/UCs/EditStateNameUC.test.js +58 -0
  60. package/dist/cjs/StateMachine/UCs/EditStateNameUC.test.js.map +1 -0
  61. package/dist/cjs/StateMachine/UCs/index.js +1 -0
  62. package/dist/cjs/StateMachine/UCs/index.js.map +1 -1
  63. package/dist/cjs/ThemeColors/Factories/index.js +1 -1
  64. package/dist/cjs/ThemeColors/Factories/index.js.map +1 -1
  65. package/dist/cjs/ThemeColors/Factories/setupTheme.js +20 -0
  66. package/dist/cjs/ThemeColors/Factories/setupTheme.js.map +1 -0
  67. package/dist/cjs/ThemeColors/UCs/SetThemeUC.js +1 -1
  68. package/dist/cjs/ThemeColors/UCs/SetThemeUC.js.map +1 -1
  69. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js +21 -0
  70. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -0
  71. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js +28 -0
  72. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js.map +1 -0
  73. package/dist/esm/ChallengeResults/Adapters/index.js +1 -0
  74. package/dist/esm/ChallengeResults/Adapters/index.js.map +1 -1
  75. package/dist/esm/ChallengeResults/Factories/index.js +1 -1
  76. package/dist/esm/ChallengeResults/Factories/index.js.map +1 -1
  77. package/dist/esm/ChallengeResults/Factories/setupChallengeResults.js +11 -0
  78. package/dist/esm/ChallengeResults/Factories/setupChallengeResults.js.map +1 -0
  79. package/dist/esm/ChallengeResults/Factories/setupChallengeResultsForSandbox.js +2 -1
  80. package/dist/esm/ChallengeResults/Factories/setupChallengeResultsForSandbox.js.map +1 -1
  81. package/dist/esm/ChallengeResults/Mocks/MockHasChallengeResultsPM.js +11 -0
  82. package/dist/esm/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -0
  83. package/dist/esm/ChallengeResults/Mocks/index.js +1 -0
  84. package/dist/esm/ChallengeResults/Mocks/index.js.map +1 -1
  85. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js +2 -0
  86. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
  87. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.test.js +4 -2
  88. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.test.js.map +1 -1
  89. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js +32 -0
  90. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -0
  91. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.test.js +30 -0
  92. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.test.js.map +1 -0
  93. package/dist/esm/ChallengeResults/PMs/index.js +1 -0
  94. package/dist/esm/ChallengeResults/PMs/index.js.map +1 -1
  95. package/dist/esm/StateMachine/Adapters/hostStateAdapter.js +21 -0
  96. package/dist/esm/StateMachine/Adapters/hostStateAdapter.js.map +1 -0
  97. package/dist/esm/StateMachine/Adapters/hostStateAdapter.test.js +47 -0
  98. package/dist/esm/StateMachine/Adapters/hostStateAdapter.test.js.map +1 -0
  99. package/dist/esm/StateMachine/Adapters/index.js +1 -0
  100. package/dist/esm/StateMachine/Adapters/index.js.map +1 -1
  101. package/dist/esm/StateMachine/Controllers/editStateName.js +10 -0
  102. package/dist/esm/StateMachine/Controllers/editStateName.js.map +1 -0
  103. package/dist/esm/StateMachine/Controllers/editStateName.test.js +47 -0
  104. package/dist/esm/StateMachine/Controllers/editStateName.test.js.map +1 -0
  105. package/dist/esm/StateMachine/Controllers/index.js +1 -0
  106. package/dist/esm/StateMachine/Controllers/index.js.map +1 -1
  107. package/dist/esm/StateMachine/Entities/HostStateMachine.js +67 -24
  108. package/dist/esm/StateMachine/Entities/HostStateMachine.js.map +1 -1
  109. package/dist/esm/StateMachine/Entities/HostStateMachine.test.js +174 -0
  110. package/dist/esm/StateMachine/Entities/HostStateMachine.test.js.map +1 -1
  111. package/dist/esm/StateMachine/Mocks/MockEditStateNameUC.js +8 -0
  112. package/dist/esm/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -0
  113. package/dist/esm/StateMachine/Mocks/MockHostStatePM.js +18 -0
  114. package/dist/esm/StateMachine/Mocks/MockHostStatePM.js.map +1 -0
  115. package/dist/esm/StateMachine/PMs/HostStateMachinePM.js +21 -15
  116. package/dist/esm/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
  117. package/dist/esm/StateMachine/PMs/HostStateMachinePM.test.js +65 -56
  118. package/dist/esm/StateMachine/PMs/HostStateMachinePM.test.js.map +1 -1
  119. package/dist/esm/StateMachine/PMs/HostStatePM.js +131 -0
  120. package/dist/esm/StateMachine/PMs/HostStatePM.js.map +1 -0
  121. package/dist/esm/StateMachine/PMs/HostStatePM.test.js +403 -0
  122. package/dist/esm/StateMachine/PMs/HostStatePM.test.js.map +1 -0
  123. package/dist/esm/StateMachine/PMs/index.js +1 -0
  124. package/dist/esm/StateMachine/PMs/index.js.map +1 -1
  125. package/dist/esm/StateMachine/UCs/EditStateNameUC.js +30 -0
  126. package/dist/esm/StateMachine/UCs/EditStateNameUC.js.map +1 -0
  127. package/dist/esm/StateMachine/UCs/EditStateNameUC.test.js +56 -0
  128. package/dist/esm/StateMachine/UCs/EditStateNameUC.test.js.map +1 -0
  129. package/dist/esm/StateMachine/UCs/index.js +1 -0
  130. package/dist/esm/StateMachine/UCs/index.js.map +1 -1
  131. package/dist/esm/ThemeColors/Factories/index.js +1 -1
  132. package/dist/esm/ThemeColors/Factories/index.js.map +1 -1
  133. package/dist/esm/ThemeColors/Factories/setupTheme.js +17 -0
  134. package/dist/esm/ThemeColors/Factories/setupTheme.js.map +1 -0
  135. package/dist/esm/ThemeColors/UCs/SetThemeUC.js +1 -1
  136. package/dist/esm/ThemeColors/UCs/SetThemeUC.js.map +1 -1
  137. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.d.ts +3 -0
  138. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.d.ts.map +1 -0
  139. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.d.ts +2 -0
  140. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.d.ts.map +1 -0
  141. package/dist/types/ChallengeResults/Adapters/index.d.ts +1 -0
  142. package/dist/types/ChallengeResults/Adapters/index.d.ts.map +1 -1
  143. package/dist/types/ChallengeResults/Factories/index.d.ts +1 -1
  144. package/dist/types/ChallengeResults/Factories/index.d.ts.map +1 -1
  145. package/dist/types/ChallengeResults/Factories/setupChallengeResults.d.ts +4 -0
  146. package/dist/types/ChallengeResults/Factories/setupChallengeResults.d.ts.map +1 -0
  147. package/dist/types/ChallengeResults/Factories/setupChallengeResultsForSandbox.d.ts.map +1 -1
  148. package/dist/types/ChallengeResults/Mocks/MockHasChallengeResultsPM.d.ts +8 -0
  149. package/dist/types/ChallengeResults/Mocks/MockHasChallengeResultsPM.d.ts.map +1 -0
  150. package/dist/types/ChallengeResults/Mocks/index.d.ts +1 -0
  151. package/dist/types/ChallengeResults/Mocks/index.d.ts.map +1 -1
  152. package/dist/types/ChallengeResults/PMs/ChallengeResultsListPM.d.ts +1 -0
  153. package/dist/types/ChallengeResults/PMs/ChallengeResultsListPM.d.ts.map +1 -1
  154. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts +7 -0
  155. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts.map +1 -0
  156. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.test.d.ts +2 -0
  157. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.test.d.ts.map +1 -0
  158. package/dist/types/ChallengeResults/PMs/index.d.ts +1 -0
  159. package/dist/types/ChallengeResults/PMs/index.d.ts.map +1 -1
  160. package/dist/types/StateMachine/Adapters/hostStateAdapter.d.ts +4 -0
  161. package/dist/types/StateMachine/Adapters/hostStateAdapter.d.ts.map +1 -0
  162. package/dist/types/StateMachine/Adapters/hostStateAdapter.test.d.ts +2 -0
  163. package/dist/types/StateMachine/Adapters/hostStateAdapter.test.d.ts.map +1 -0
  164. package/dist/types/StateMachine/Adapters/index.d.ts +1 -0
  165. package/dist/types/StateMachine/Adapters/index.d.ts.map +1 -1
  166. package/dist/types/StateMachine/Controllers/editStateName.d.ts +3 -0
  167. package/dist/types/StateMachine/Controllers/editStateName.d.ts.map +1 -0
  168. package/dist/types/StateMachine/Controllers/editStateName.test.d.ts +2 -0
  169. package/dist/types/StateMachine/Controllers/editStateName.test.d.ts.map +1 -0
  170. package/dist/types/StateMachine/Controllers/index.d.ts +1 -0
  171. package/dist/types/StateMachine/Controllers/index.d.ts.map +1 -1
  172. package/dist/types/StateMachine/Entities/HostStateMachine.d.ts +6 -0
  173. package/dist/types/StateMachine/Entities/HostStateMachine.d.ts.map +1 -1
  174. package/dist/types/StateMachine/Mocks/MockEditStateNameUC.d.ts +7 -0
  175. package/dist/types/StateMachine/Mocks/MockEditStateNameUC.d.ts.map +1 -0
  176. package/dist/types/StateMachine/Mocks/MockHostStatePM.d.ts +9 -0
  177. package/dist/types/StateMachine/Mocks/MockHostStatePM.d.ts.map +1 -0
  178. package/dist/types/StateMachine/PMs/HostStateMachinePM.d.ts +3 -4
  179. package/dist/types/StateMachine/PMs/HostStateMachinePM.d.ts.map +1 -1
  180. package/dist/types/StateMachine/PMs/HostStatePM.d.ts +18 -0
  181. package/dist/types/StateMachine/PMs/HostStatePM.d.ts.map +1 -0
  182. package/dist/types/StateMachine/PMs/HostStatePM.test.d.ts +2 -0
  183. package/dist/types/StateMachine/PMs/HostStatePM.test.d.ts.map +1 -0
  184. package/dist/types/StateMachine/PMs/index.d.ts +1 -0
  185. package/dist/types/StateMachine/PMs/index.d.ts.map +1 -1
  186. package/dist/types/StateMachine/UCs/EditStateNameUC.d.ts +9 -0
  187. package/dist/types/StateMachine/UCs/EditStateNameUC.d.ts.map +1 -0
  188. package/dist/types/StateMachine/UCs/EditStateNameUC.test.d.ts +2 -0
  189. package/dist/types/StateMachine/UCs/EditStateNameUC.test.d.ts.map +1 -0
  190. package/dist/types/StateMachine/UCs/index.d.ts +1 -0
  191. package/dist/types/StateMachine/UCs/index.d.ts.map +1 -1
  192. package/dist/types/ThemeColors/Factories/index.d.ts +1 -1
  193. package/dist/types/ThemeColors/Factories/index.d.ts.map +1 -1
  194. package/dist/types/ThemeColors/Factories/setupTheme.d.ts +3 -0
  195. package/dist/types/ThemeColors/Factories/setupTheme.d.ts.map +1 -0
  196. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupTheme.js","sourceRoot":"","sources":["../../../../src/ThemeColors/Factories/setupTheme.ts"],"names":[],"mappings":";;AAMA,gCAgBC;AArBD,kCAAkE;AAClE,0CAAkD;AAClD,8BAA0C;AAC1C,gCAAwC;AAExC,SAAgB,UAAU,CAAC,UAAyB;IAClD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE3C,WAAW;IACX,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,EAAE,CAAC,CAAC;IAEtC,MAAM;IACN,MAAM,UAAU,GAAG,IAAA,oBAAc,EAAC,EAAE,CAAC,CAAC;IAEtC,MAAM;IACN,IAAA,sBAAiB,EAAC,EAAE,CAAC,CAAC;IAEtB,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,0BAAmB,CAAC,CAAC;IACjD,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,yBAAkB,CAAC,CAAC;IAE/C,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB;AAC1D,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { vivedDarkThemeData, vivedLightThemeData } from \"../Data\";\r\nimport { makeHostThemeEntity } from \"../Entities\";\r\nimport { makeThemeColorsPM } from \"../PM\";\r\nimport { makeSetThemeUC } from \"../UCs\";\r\n\r\nexport function setupTheme(appObjects: AppObjectRepo) {\r\n const ao = appObjects.getOrCreate(\"Theme\");\r\n\r\n // Entities\r\n const theme = makeHostThemeEntity(ao);\r\n\r\n // UCs\r\n const setThemeUC = makeSetThemeUC(ao);\r\n\r\n // PMs\r\n makeThemeColorsPM(ao);\r\n\r\n theme.submitScheme(\"light\", vivedLightThemeData);\r\n theme.submitScheme(\"dark\", vivedDarkThemeData);\r\n\r\n setThemeUC.setThemeByName(\"light\"); // Hardcoded for now\r\n}\r\n"]}
@@ -24,7 +24,7 @@ class SetThemeUCImp extends SetThemeUC {
24
24
  this.theme.activeSchemeName = name;
25
25
  }
26
26
  tryDetectTheme() {
27
- if (!this.theme)
27
+ if (!this.theme || !window.matchMedia)
28
28
  return;
29
29
  const darkThemeMq = window.matchMedia("(prefers-color-scheme: dark)");
30
30
  if (darkThemeMq.matches) {
@@ -1 +1 @@
1
- {"version":3,"file":"SetThemeUC.js","sourceRoot":"","sources":["../../../../src/ThemeColors/UCs/SetThemeUC.ts"],"names":[],"mappings":";;;AAsBA,wCAEC;AAxBD,sCAKqB;AACrB,0CAA8C;AAE9C,MAAsB,UAAW,SAAQ,kBAAW;IASlD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,IAAA,4BAAqB,EAAa,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAXH,gCAYC;AAXQ,eAAI,GAAG,YAAY,CAAC;AAa7B,SAAgB,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,UAAU;IAIpC,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAkB,0BAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;QACtE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAzBpC,mBAAc,GAAG,OAAO,CAAC;QACzB,kBAAa,GAAG,MAAM,CAAC;QAyBrB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { HostThemeEntity } from \"../Entities\";\r\n\r\nexport abstract class SetThemeUC extends AppObjectUC {\r\n static type = \"SetThemeUC\";\r\n\r\n abstract lightThemeName: string;\r\n abstract darkThemeName: string;\r\n\r\n abstract setThemeByName(name: string): void;\r\n abstract tryDetectTheme(): void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SetThemeUC>(SetThemeUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeSetThemeUC(appObject: AppObject): SetThemeUC {\r\n return new SetThemeUCImp(appObject);\r\n}\r\n\r\nclass SetThemeUCImp extends SetThemeUC {\r\n lightThemeName = \"light\";\r\n darkThemeName = \"dark\";\r\n\r\n private get theme() {\r\n return this.getCachedSingleton<HostThemeEntity>(HostThemeEntity.type);\r\n }\r\n\r\n setThemeByName(name: string): void {\r\n if (!this.theme) return;\r\n\r\n this.theme.activeSchemeName = name;\r\n }\r\n\r\n tryDetectTheme(): void {\r\n if (!this.theme) return;\r\n\r\n const darkThemeMq = window.matchMedia(\"(prefers-color-scheme: dark)\");\r\n if (darkThemeMq.matches) {\r\n this.theme.activeSchemeName = this.darkThemeName;\r\n } else {\r\n this.theme.activeSchemeName = this.darkThemeName;\r\n }\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetThemeUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SetThemeUC.js","sourceRoot":"","sources":["../../../../src/ThemeColors/UCs/SetThemeUC.ts"],"names":[],"mappings":";;;AAsBA,wCAEC;AAxBD,sCAKqB;AACrB,0CAA8C;AAE9C,MAAsB,UAAW,SAAQ,kBAAW;IASlD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,IAAA,4BAAqB,EAAa,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAXH,gCAYC;AAXQ,eAAI,GAAG,YAAY,CAAC;AAa7B,SAAgB,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,UAAU;IAIpC,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAkB,0BAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QAE9C,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;QACtE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAzBpC,mBAAc,GAAG,OAAO,CAAC;QACzB,kBAAa,GAAG,MAAM,CAAC;QAyBrB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { HostThemeEntity } from \"../Entities\";\r\n\r\nexport abstract class SetThemeUC extends AppObjectUC {\r\n static type = \"SetThemeUC\";\r\n\r\n abstract lightThemeName: string;\r\n abstract darkThemeName: string;\r\n\r\n abstract setThemeByName(name: string): void;\r\n abstract tryDetectTheme(): void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SetThemeUC>(SetThemeUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeSetThemeUC(appObject: AppObject): SetThemeUC {\r\n return new SetThemeUCImp(appObject);\r\n}\r\n\r\nclass SetThemeUCImp extends SetThemeUC {\r\n lightThemeName = \"light\";\r\n darkThemeName = \"dark\";\r\n\r\n private get theme() {\r\n return this.getCachedSingleton<HostThemeEntity>(HostThemeEntity.type);\r\n }\r\n\r\n setThemeByName(name: string): void {\r\n if (!this.theme) return;\r\n\r\n this.theme.activeSchemeName = name;\r\n }\r\n\r\n tryDetectTheme(): void {\r\n if (!this.theme || !window.matchMedia) return;\r\n\r\n const darkThemeMq = window.matchMedia(\"(prefers-color-scheme: dark)\");\r\n if (darkThemeMq.matches) {\r\n this.theme.activeSchemeName = this.darkThemeName;\r\n } else {\r\n this.theme.activeSchemeName = this.darkThemeName;\r\n }\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetThemeUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,21 @@
1
+ import { HasChallengeResultsPM } from "../PMs/HasChallengeResultsPM";
2
+ export const hasChallengeResultsPMAdapter = {
3
+ defaultVM: false,
4
+ subscribe: (appObjects, setVM) => {
5
+ const pm = HasChallengeResultsPM.get(appObjects);
6
+ if (!pm) {
7
+ appObjects.submitError("hasChallengeResultsPMAdapter", "Unable to find HasChallengeResultsPM");
8
+ return;
9
+ }
10
+ pm.addView(setVM);
11
+ },
12
+ unsubscribe: (appObjects, setVM) => {
13
+ const pm = HasChallengeResultsPM.get(appObjects);
14
+ if (!pm) {
15
+ appObjects.submitError("hasChallengeResultsPMAdapter", "Unable to find HasChallengeResultsPM");
16
+ return;
17
+ }
18
+ pm.removeView(setVM);
19
+ }
20
+ };
21
+ //# sourceMappingURL=hasChallengeResultsPMAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasChallengeResultsPMAdapter.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,CAAC,MAAM,4BAA4B,GAAgC;IACvE,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACrE,MAAM,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,8BAA8B,EAC9B,sCAAsC,CACvC,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACvE,MAAM,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,8BAA8B,EAC9B,sCAAsC,CACvC,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, SingletonPmAdapter } from \"@vived/core\";\r\nimport { HasChallengeResultsPM } from \"../PMs/HasChallengeResultsPM\";\r\n\r\nexport const hasChallengeResultsPMAdapter: SingletonPmAdapter<boolean> = {\r\n defaultVM: false,\r\n subscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\r\n const pm = HasChallengeResultsPM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"hasChallengeResultsPMAdapter\",\r\n \"Unable to find HasChallengeResultsPM\"\r\n );\r\n return;\r\n }\r\n pm.addView(setVM);\r\n },\r\n unsubscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\r\n const pm = HasChallengeResultsPM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"hasChallengeResultsPMAdapter\",\r\n \"Unable to find HasChallengeResultsPM\"\r\n );\r\n return;\r\n }\r\n pm.removeView(setVM);\r\n }\r\n};\r\n"]}
@@ -0,0 +1,28 @@
1
+ import { makeAppObjectRepo } from "@vived/core";
2
+ import { makeMockHasChallengeResultsPM } from "../Mocks/MockHasChallengeResultsPM";
3
+ import { hasChallengeResultsPMAdapter } from "./hasChallengeResultsPMAdapter";
4
+ function makeTestRig() {
5
+ const appObjects = makeAppObjectRepo();
6
+ const mockPM = makeMockHasChallengeResultsPM(appObjects);
7
+ return { appObjects, mockPM };
8
+ }
9
+ describe("Has Challenge Results PM Adapter", () => {
10
+ it("Sets the Default VM", () => {
11
+ expect(hasChallengeResultsPMAdapter.defaultVM).toEqual(false);
12
+ });
13
+ it("Add a view on subscribe", () => {
14
+ const { mockPM, appObjects } = makeTestRig();
15
+ mockPM.addView = jest.fn();
16
+ const setVM = jest.fn();
17
+ hasChallengeResultsPMAdapter.subscribe(appObjects, setVM);
18
+ expect(mockPM.addView).toBeCalledWith(setVM);
19
+ });
20
+ it("Removes a view on unsubscribe", () => {
21
+ const { mockPM, appObjects } = makeTestRig();
22
+ mockPM.removeView = jest.fn();
23
+ const setVM = jest.fn();
24
+ hasChallengeResultsPMAdapter.unsubscribe(appObjects, setVM);
25
+ expect(mockPM.removeView).toBeCalledWith(setVM);
26
+ });
27
+ });
28
+ //# sourceMappingURL=hasChallengeResultsPMAdapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasChallengeResultsPMAdapter.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACzD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExB,4BAA4B,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExB,4BAA4B,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeMockHasChallengeResultsPM } from \"../Mocks/MockHasChallengeResultsPM\";\r\nimport { hasChallengeResultsPMAdapter } from \"./hasChallengeResultsPMAdapter\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const mockPM = makeMockHasChallengeResultsPM(appObjects);\r\n return { appObjects, mockPM };\r\n}\r\n\r\ndescribe(\"Has Challenge Results PM Adapter\", () => {\r\n it(\"Sets the Default VM\", () => {\r\n expect(hasChallengeResultsPMAdapter.defaultVM).toEqual(false);\r\n });\r\n\r\n it(\"Add a view on subscribe\", () => {\r\n const { mockPM, appObjects } = makeTestRig();\r\n\r\n mockPM.addView = jest.fn();\r\n const setVM = jest.fn();\r\n\r\n hasChallengeResultsPMAdapter.subscribe(appObjects, setVM);\r\n\r\n expect(mockPM.addView).toBeCalledWith(setVM);\r\n });\r\n\r\n it(\"Removes a view on unsubscribe\", () => {\r\n const { mockPM, appObjects } = makeTestRig();\r\n\r\n mockPM.removeView = jest.fn();\r\n const setVM = jest.fn();\r\n\r\n hasChallengeResultsPMAdapter.unsubscribe(appObjects, setVM);\r\n\r\n expect(mockPM.removeView).toBeCalledWith(setVM);\r\n });\r\n});\r\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from "./challengeResultsListAdapter";
2
+ export * from "./hasChallengeResultsPMAdapter";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC","sourcesContent":["export * from \"./challengeResultsListAdapter\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC","sourcesContent":["export * from \"./challengeResultsListAdapter\";\r\nexport * from \"./hasChallengeResultsPMAdapter\";\r\n"]}
@@ -1,2 +1,2 @@
1
- export * from "./setupChallengeResultsForSandbox";
1
+ export * from "./setupChallengeResults";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA","sourcesContent":["export * from \"./setupChallengeResultsForSandbox\""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA","sourcesContent":["export * from \"./setupChallengeResults\""]}
@@ -0,0 +1,11 @@
1
+ import { makeChallengeResults } from "../Entities";
2
+ import { makeChallengeResultsPM, makeHasChallengeResultsPM } from "../PMs";
3
+ export function setupChallengeResults(appObjects) {
4
+ const ao = appObjects.getOrCreate("ChallengeResults");
5
+ const entity = makeChallengeResults(ao);
6
+ // PM
7
+ makeChallengeResultsPM(ao);
8
+ makeHasChallengeResultsPM(ao);
9
+ return entity;
10
+ }
11
+ //# sourceMappingURL=setupChallengeResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupChallengeResults.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/setupChallengeResults.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAE3E,MAAM,UAAU,qBAAqB,CACnC,UAAyB;IAEzB,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAExC,KAAK;IACL,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAE9B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { ChallengeResultsEntity, makeChallengeResults } from \"../Entities\";\r\nimport { makeChallengeResultsPM, makeHasChallengeResultsPM } from \"../PMs\";\r\n\r\nexport function setupChallengeResults(\r\n appObjects: AppObjectRepo\r\n): ChallengeResultsEntity {\r\n const ao = appObjects.getOrCreate(\"ChallengeResults\");\r\n\r\n const entity = makeChallengeResults(ao);\r\n\r\n // PM\r\n makeChallengeResultsPM(ao);\r\n makeHasChallengeResultsPM(ao);\r\n\r\n return entity;\r\n}\r\n"]}
@@ -1,9 +1,10 @@
1
1
  import { makeChallengeResults } from "../Entities";
2
- import { makeChallengeResultsPM } from "../PMs";
2
+ import { makeChallengeResultsPM, makeHasChallengeResultsPM } from "../PMs";
3
3
  export function setupChallengeResultsForSandbox(appObjects) {
4
4
  const ao = appObjects.getOrCreate("ChallengeResults");
5
5
  makeChallengeResults(ao);
6
6
  // PM
7
7
  makeChallengeResultsPM(ao);
8
+ makeHasChallengeResultsPM(ao);
8
9
  }
9
10
  //# sourceMappingURL=setupChallengeResultsForSandbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupChallengeResultsForSandbox.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/setupChallengeResultsForSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAEhD,MAAM,UAAU,+BAA+B,CAAC,UAAyB;IACvE,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAEzB,KAAK;IACL,sBAAsB,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\nimport { makeChallengeResultsPM } from \"../PMs\";\r\n\r\nexport function setupChallengeResultsForSandbox(appObjects: AppObjectRepo) {\r\n const ao = appObjects.getOrCreate(\"ChallengeResults\");\r\n\r\n makeChallengeResults(ao);\r\n\r\n // PM\r\n makeChallengeResultsPM(ao);\r\n}\r\n"]}
1
+ {"version":3,"file":"setupChallengeResultsForSandbox.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/setupChallengeResultsForSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAE3E,MAAM,UAAU,+BAA+B,CAAC,UAAyB;IACvE,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAEzB,KAAK;IACL,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,yBAAyB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\nimport { makeChallengeResultsPM, makeHasChallengeResultsPM } from \"../PMs\";\r\n\r\nexport function setupChallengeResultsForSandbox(appObjects: AppObjectRepo) {\r\n const ao = appObjects.getOrCreate(\"ChallengeResults\");\r\n\r\n makeChallengeResults(ao);\r\n\r\n // PM\r\n makeChallengeResultsPM(ao);\r\n makeHasChallengeResultsPM(ao);\r\n}\r\n"]}
@@ -0,0 +1,11 @@
1
+ import { HasChallengeResultsPM } from "../PMs/HasChallengeResultsPM";
2
+ export class MockHasChallengeResultsPM extends HasChallengeResultsPM {
3
+ constructor(appObject) {
4
+ super(appObject, HasChallengeResultsPM.type);
5
+ this.vmsAreEqual = jest.fn();
6
+ }
7
+ }
8
+ export function makeMockHasChallengeResultsPM(appObjects) {
9
+ return new MockHasChallengeResultsPM(appObjects.getOrCreate("MockHasChallengeResultsPM"));
10
+ }
11
+ //# sourceMappingURL=MockHasChallengeResultsPM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockHasChallengeResultsPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Mocks/MockHasChallengeResultsPM.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,OAAO,yBAA0B,SAAQ,qBAAqB;IAGlE,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAH/C,gBAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAIxB,CAAC;CACF;AAED,MAAM,UAAU,6BAA6B,CAAC,UAAyB;IACrE,OAAO,IAAI,yBAAyB,CAClC,UAAU,CAAC,WAAW,CAAC,2BAA2B,CAAC,CACpD,CAAC;AACJ,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { HasChallengeResultsPM } from \"../PMs/HasChallengeResultsPM\";\r\n\r\nexport class MockHasChallengeResultsPM extends HasChallengeResultsPM {\r\n vmsAreEqual = jest.fn();\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, HasChallengeResultsPM.type);\r\n }\r\n}\r\n\r\nexport function makeMockHasChallengeResultsPM(appObjects: AppObjectRepo) {\r\n return new MockHasChallengeResultsPM(\r\n appObjects.getOrCreate(\"MockHasChallengeResultsPM\")\r\n );\r\n}\r\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from "./ChallengeResultsListPMMock";
2
+ export * from "./MockHasChallengeResultsPM";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPMMock\""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPMMock\"\r\nexport * from \"./MockHasChallengeResultsPM\""]}
@@ -39,12 +39,14 @@ class ChallengeResultsPMImp extends ChallengeResultsListPM {
39
39
  this.results.results.forEach((result) => {
40
40
  const state = this.stateMachine.getStateByID(result.slideID);
41
41
  if (state) {
42
+ const stateIndex = this.stateMachine.getStateIndex(result.slideID) ?? -1;
42
43
  const vm = {
43
44
  id: result.slideID,
44
45
  slideName: state.name,
45
46
  attempts: result.tries,
46
47
  resultType: result.type,
47
48
  message: result.message,
49
+ stateIndex,
48
50
  resultData: result.resultData
49
51
  };
50
52
  organizedResults.push(vm);
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeResultsListPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAiB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAML,sBAAsB,EAEvB,MAAM,8BAA8B,CAAC;AAgBtC,MAAM,OAAgB,sBAAuB,SAAQ,WAEpD;IAGC,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,UAAU,CAAC,YAAY,CAC5B,sBAAsB,CAAC,IAAI,CAC5B,CAAC;IACJ,CAAC;;AANM,2BAAI,GAAG,wBAAwB,CAAC;AASzC,MAAM,UAAU,sBAAsB,CACpC,SAAoB;IAEpB,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,qBAAsB,SAAQ,sBAAsB;IACxD,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,sBAAsB,CAAC,IAAI,CAC5B,CAAC;IACJ,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAsB,EAAE,CAAsB;QACxD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAExC,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;gBAAE,QAAQ,GAAG,KAAK,CAAC;iBAC3C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;gBAAE,QAAQ,GAAG,KAAK,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IA0BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAzBhD,mBAAc,GAAG,GAAS,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAEhD,MAAM,gBAAgB,GAAwB,EAAE,CAAC;YAEjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAa,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9D,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,EAAE,GAAsB;wBAC5B,EAAE,EAAE,MAAM,CAAC,OAAO;wBAClB,SAAS,EAAE,KAAK,CAAC,IAAI;wBACrB,QAAQ,EAAE,MAAM,CAAC,KAAK;wBACtB,UAAU,EAAE,MAAM,CAAC,IAAI;wBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;qBAC9B,CAAC;oBAEF,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities/HostStateMachine\";\r\nimport {\r\n ChallengeResultHitData,\r\n ChallengeResultMultiHitData,\r\n ChallengeResultProgressData,\r\n ChallengeResultQualityData,\r\n ChallengeResultScoreData,\r\n ChallengeResultsEntity,\r\n ChallengeResultType\r\n} from \"../Entities/ChallengeResults\";\r\n\r\nexport interface ChallengeResultVM {\r\n id: string;\r\n slideName: string;\r\n attempts: number;\r\n message: string;\r\n resultType: ChallengeResultType;\r\n resultData:\r\n | ChallengeResultHitData\r\n | ChallengeResultMultiHitData\r\n | ChallengeResultQualityData\r\n | ChallengeResultScoreData\r\n | ChallengeResultProgressData;\r\n}\r\n\r\nexport abstract class ChallengeResultsListPM extends AppObjectPM<\r\n ChallengeResultVM[]\r\n> {\r\n static type = \"ChallengeResultsListPM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return appObjects.getSingleton<ChallengeResultsListPM>(\r\n ChallengeResultsListPM.type\r\n );\r\n }\r\n}\r\n\r\nexport function makeChallengeResultsPM(\r\n appObject: AppObject\r\n): ChallengeResultsListPM {\r\n return new ChallengeResultsPMImp(appObject);\r\n}\r\n\r\nclass ChallengeResultsPMImp extends ChallengeResultsListPM {\r\n private get results() {\r\n return this.getCachedSingleton<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type\r\n );\r\n }\r\n\r\n private get stateMachine() {\r\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\r\n }\r\n\r\n vmsAreEqual(a: ChallengeResultVM[], b: ChallengeResultVM[]): boolean {\r\n if (a.length !== b.length) return false;\r\n\r\n let areEqual = true;\r\n a.forEach((aResult, i) => {\r\n const bResult = b[i];\r\n if (aResult.id !== bResult.id) areEqual = false;\r\n else if (aResult.attempts !== bResult.attempts) areEqual = false;\r\n });\r\n return areEqual;\r\n }\r\n\r\n onEntityChange = (): void => {\r\n if (!this.results || !this.stateMachine) return;\r\n\r\n const organizedResults: ChallengeResultVM[] = [];\r\n\r\n this.results.results.forEach((result) => {\r\n const state = this.stateMachine!.getStateByID(result.slideID);\r\n if (state) {\r\n const vm: ChallengeResultVM = {\r\n id: result.slideID,\r\n slideName: state.name,\r\n attempts: result.tries,\r\n resultType: result.type,\r\n message: result.message,\r\n resultData: result.resultData\r\n };\r\n\r\n organizedResults.push(vm);\r\n }\r\n });\r\n\r\n this.doUpdateView(organizedResults);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ChallengeResultsListPM.type);\r\n this.doUpdateView([]);\r\n this.results?.addChangeObserver(this.onEntityChange);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ChallengeResultsListPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities/HostStateMachine\";\r\nimport {\r\n ChallengeResultHitData,\r\n ChallengeResultMultiHitData,\r\n ChallengeResultProgressData,\r\n ChallengeResultQualityData,\r\n ChallengeResultScoreData,\r\n ChallengeResultsEntity,\r\n ChallengeResultType\r\n} from \"../Entities/ChallengeResults\";\r\n\r\nexport interface ChallengeResultVM {\r\n id: string;\r\n slideName: string;\r\n attempts: number;\r\n message: string;\r\n resultType: ChallengeResultType;\r\n stateIndex: number;\r\n resultData:\r\n | ChallengeResultHitData\r\n | ChallengeResultMultiHitData\r\n | ChallengeResultQualityData\r\n | ChallengeResultScoreData\r\n | ChallengeResultProgressData;\r\n}\r\n\r\nexport abstract class ChallengeResultsListPM extends AppObjectPM<\r\n ChallengeResultVM[]\r\n> {\r\n static type = \"ChallengeResultsListPM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return appObjects.getSingleton<ChallengeResultsListPM>(\r\n ChallengeResultsListPM.type\r\n );\r\n }\r\n}\r\n\r\nexport function makeChallengeResultsPM(\r\n appObject: AppObject\r\n): ChallengeResultsListPM {\r\n return new ChallengeResultsPMImp(appObject);\r\n}\r\n\r\nclass ChallengeResultsPMImp extends ChallengeResultsListPM {\r\n private get results() {\r\n return this.getCachedSingleton<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type\r\n );\r\n }\r\n\r\n private get stateMachine() {\r\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\r\n }\r\n\r\n vmsAreEqual(a: ChallengeResultVM[], b: ChallengeResultVM[]): boolean {\r\n if (a.length !== b.length) return false;\r\n\r\n let areEqual = true;\r\n a.forEach((aResult, i) => {\r\n const bResult = b[i];\r\n if (aResult.id !== bResult.id) areEqual = false;\r\n else if (aResult.attempts !== bResult.attempts) areEqual = false;\r\n });\r\n return areEqual;\r\n }\r\n\r\n onEntityChange = (): void => {\r\n if (!this.results || !this.stateMachine) return;\r\n\r\n const organizedResults: ChallengeResultVM[] = [];\r\n\r\n this.results.results.forEach((result) => {\r\n const state = this.stateMachine!.getStateByID(result.slideID);\r\n if (state) {\r\n const stateIndex =\r\n this.stateMachine!.getStateIndex(result.slideID) ?? -1;\r\n\r\n const vm: ChallengeResultVM = {\r\n id: result.slideID,\r\n slideName: state.name,\r\n attempts: result.tries,\r\n resultType: result.type,\r\n message: result.message,\r\n stateIndex,\r\n resultData: result.resultData\r\n };\r\n\r\n organizedResults.push(vm);\r\n }\r\n });\r\n\r\n this.doUpdateView(organizedResults);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ChallengeResultsListPM.type);\r\n this.doUpdateView([]);\r\n this.results?.addChangeObserver(this.onEntityChange);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -26,7 +26,8 @@ function makeChallengeResultVM(id) {
26
26
  success: true
27
27
  },
28
28
  resultType: "HIT",
29
- slideName: "slide name"
29
+ slideName: "slide name",
30
+ stateIndex: 0
30
31
  };
31
32
  }
32
33
  describe("Challenge Results PM", () => {
@@ -97,7 +98,8 @@ describe("Challenge Results PM", () => {
97
98
  },
98
99
  resultType: "HIT",
99
100
  id: "state1",
100
- slideName: "State Name"
101
+ slideName: "State Name",
102
+ stateIndex: 0
101
103
  }
102
104
  ]);
103
105
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeResultsListPM.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeHostStateMachine } from \"../../StateMachine/Entities\";\r\nimport { makeMockHostStateEntity } from \"../../StateMachine/Mocks/MockHostStateEntity\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\nimport {\r\n ChallengeResultsListPM,\r\n ChallengeResultVM,\r\n makeChallengeResultsPM\r\n} from \"./ChallengeResultsListPM\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const results = makeChallengeResults(appObjects.getOrCreate(\"Results\"));\r\n\r\n const stateMachine = makeHostStateMachine(\r\n appObjects.getOrCreate(\"StateMachine\")\r\n );\r\n stateMachine.setStates([makeMockHostStateEntity(\"state1\", appObjects)]);\r\n\r\n const pm = makeChallengeResultsPM(appObjects.getOrCreate(\"PM\"));\r\n\r\n return {\r\n pm,\r\n results,\r\n appObjects,\r\n registerSingletonSpy\r\n };\r\n}\r\n\r\nfunction makeChallengeResultVM(id: string): ChallengeResultVM {\r\n return {\r\n attempts: 1,\r\n id,\r\n message: \"a message\",\r\n resultData: {\r\n success: true\r\n },\r\n resultType: \"HIT\",\r\n slideName: \"slide name\"\r\n };\r\n}\r\n\r\ndescribe(\"Challenge Results PM\", () => {\r\n it(\"Gets the singleton\", () => {\r\n const { appObjects, pm } = makeTestRig();\r\n\r\n expect(ChallengeResultsListPM.get(appObjects)).toEqual(pm);\r\n });\r\n\r\n it(\"Registers the singleton\", () => {\r\n const { registerSingletonSpy, pm } = makeTestRig();\r\n\r\n expect(registerSingletonSpy).toBeCalledWith(pm);\r\n });\r\n\r\n it(\"Checks for equal vms\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n const vm2 = [...vm1];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(true);\r\n });\r\n\r\n it(\"Checks for a result to be removed\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n const vm2 = [result1];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a result to be added\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result3 = makeChallengeResultVM(\"result3\");\r\n const vm2 = [result1, result2, result3];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for result ID to change\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result2Again: ChallengeResultVM = { ...result2, id: \"changed\" };\r\n const vm2 = [result1, result2Again];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for tries to change\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result2Again: ChallengeResultVM = { ...result2, attempts: 2 };\r\n const vm2 = [result1, result2Again];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Initializes the view\", () => {\r\n const { pm } = makeTestRig();\r\n expect(pm.lastVM).not.toBeUndefined();\r\n });\r\n\r\n it(\"Updates the results\", () => {\r\n const { results, pm } = makeTestRig();\r\n\r\n results.submitHitResult(\"state1\", false, 0, \"bob\");\r\n\r\n expect(pm.lastVM).toEqual([\r\n {\r\n attempts: 0,\r\n message: \"bob\",\r\n resultData: {\r\n success: false\r\n },\r\n resultType: \"HIT\",\r\n id: \"state1\",\r\n slideName: \"State Name\"\r\n }\r\n ]);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ChallengeResultsListPM.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,oBAAoB,CACvC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CACvC,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAExE,MAAM,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,OAAO;QACL,EAAE;QACF,OAAO;QACP,UAAU;QACV,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAU;IACvC,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,EAAE;QACF,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;SACd;QACD,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,CAAC;KACd,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAExC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,MAAM,YAAY,GAAsB,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEpC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,MAAM,YAAY,GAAsB,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEpC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEtC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACxB;gBACE,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE,KAAK;gBACjB,EAAE,EAAE,QAAQ;gBACZ,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,CAAC;aACd;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeHostStateMachine } from \"../../StateMachine/Entities\";\r\nimport { makeMockHostStateEntity } from \"../../StateMachine/Mocks/MockHostStateEntity\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\nimport {\r\n ChallengeResultsListPM,\r\n ChallengeResultVM,\r\n makeChallengeResultsPM\r\n} from \"./ChallengeResultsListPM\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const results = makeChallengeResults(appObjects.getOrCreate(\"Results\"));\r\n\r\n const stateMachine = makeHostStateMachine(\r\n appObjects.getOrCreate(\"StateMachine\")\r\n );\r\n stateMachine.setStates([makeMockHostStateEntity(\"state1\", appObjects)]);\r\n\r\n const pm = makeChallengeResultsPM(appObjects.getOrCreate(\"PM\"));\r\n\r\n return {\r\n pm,\r\n results,\r\n appObjects,\r\n registerSingletonSpy\r\n };\r\n}\r\n\r\nfunction makeChallengeResultVM(id: string): ChallengeResultVM {\r\n return {\r\n attempts: 1,\r\n id,\r\n message: \"a message\",\r\n resultData: {\r\n success: true\r\n },\r\n resultType: \"HIT\",\r\n slideName: \"slide name\",\r\n stateIndex: 0\r\n };\r\n}\r\n\r\ndescribe(\"Challenge Results PM\", () => {\r\n it(\"Gets the singleton\", () => {\r\n const { appObjects, pm } = makeTestRig();\r\n\r\n expect(ChallengeResultsListPM.get(appObjects)).toEqual(pm);\r\n });\r\n\r\n it(\"Registers the singleton\", () => {\r\n const { registerSingletonSpy, pm } = makeTestRig();\r\n\r\n expect(registerSingletonSpy).toBeCalledWith(pm);\r\n });\r\n\r\n it(\"Checks for equal vms\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n const vm2 = [...vm1];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(true);\r\n });\r\n\r\n it(\"Checks for a result to be removed\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n const vm2 = [result1];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a result to be added\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result3 = makeChallengeResultVM(\"result3\");\r\n const vm2 = [result1, result2, result3];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for result ID to change\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result2Again: ChallengeResultVM = { ...result2, id: \"changed\" };\r\n const vm2 = [result1, result2Again];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for tries to change\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result2Again: ChallengeResultVM = { ...result2, attempts: 2 };\r\n const vm2 = [result1, result2Again];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Initializes the view\", () => {\r\n const { pm } = makeTestRig();\r\n expect(pm.lastVM).not.toBeUndefined();\r\n });\r\n\r\n it(\"Updates the results\", () => {\r\n const { results, pm } = makeTestRig();\r\n\r\n results.submitHitResult(\"state1\", false, 0, \"bob\");\r\n\r\n expect(pm.lastVM).toEqual([\r\n {\r\n attempts: 0,\r\n message: \"bob\",\r\n resultData: {\r\n success: false\r\n },\r\n resultType: \"HIT\",\r\n id: \"state1\",\r\n slideName: \"State Name\",\r\n stateIndex: 0\r\n }\r\n ]);\r\n });\r\n});\r\n"]}
@@ -0,0 +1,32 @@
1
+ import { AppObjectPM, getSingletonComponent } from "@vived/core";
2
+ import { ChallengeResultsEntity } from "../Entities";
3
+ export class HasChallengeResultsPM extends AppObjectPM {
4
+ static get(appObjects) {
5
+ return getSingletonComponent(HasChallengeResultsPM.type, appObjects);
6
+ }
7
+ }
8
+ HasChallengeResultsPM.type = "HasChallengeResultsPM";
9
+ export function makeHasChallengeResultsPM(appObject) {
10
+ return new HasChallengeResultsPMImp(appObject);
11
+ }
12
+ class HasChallengeResultsPMImp extends HasChallengeResultsPM {
13
+ get resultsEntity() {
14
+ return this.getCachedSingleton(ChallengeResultsEntity.type);
15
+ }
16
+ vmsAreEqual(a, b) {
17
+ return a === b;
18
+ }
19
+ constructor(appObject) {
20
+ super(appObject, HasChallengeResultsPM.type);
21
+ this.onEntityChange = () => {
22
+ if (!this.resultsEntity)
23
+ return;
24
+ const hasAssessmentResults = this.resultsEntity.results?.length > 0 || false;
25
+ this.doUpdateView(hasAssessmentResults);
26
+ };
27
+ this.appObjects.registerSingleton(this);
28
+ this.resultsEntity?.addChangeObserver(this.onEntityChange);
29
+ this.onEntityChange();
30
+ }
31
+ }
32
+ //# sourceMappingURL=HasChallengeResultsPM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasChallengeResultsPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,WAAW,EAEX,qBAAqB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,OAAgB,qBAAsB,SAAQ,WAAoB;IAGtE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,qBAAqB,CAAC,IAAI,EAC1B,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,0BAAI,GAAG,uBAAuB,CAAC;AAUxC,MAAM,UAAU,yBAAyB,CACvC,SAAoB;IAEpB,OAAO,IAAI,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,wBAAyB,SAAQ,qBAAqB;IAC1D,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,sBAAsB,CAAC,IAAI,CAC5B,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAWD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAVvC,mBAAc,GAAG,GAAS,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAEhC,MAAM,oBAAoB,GACxB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC;YAElD,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF","sourcesContent":["import {\r\n\tAppObject,\r\n\tAppObjectPM,\r\n\tAppObjectRepo,\r\n\tgetSingletonComponent\r\n} from \"@vived/core\";\r\nimport { ChallengeResultsEntity } from \"../Entities\";\r\n\r\nexport abstract class HasChallengeResultsPM extends AppObjectPM<boolean> {\r\n static type = \"HasChallengeResultsPM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<HasChallengeResultsPM>(\r\n HasChallengeResultsPM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeHasChallengeResultsPM(\r\n appObject: AppObject\r\n): HasChallengeResultsPM {\r\n return new HasChallengeResultsPMImp(appObject);\r\n}\r\n\r\nclass HasChallengeResultsPMImp extends HasChallengeResultsPM {\r\n private get resultsEntity() {\r\n return this.getCachedSingleton<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type\r\n );\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n private onEntityChange = (): void => {\r\n if (!this.resultsEntity) return;\r\n\r\n const hasAssessmentResults =\r\n this.resultsEntity.results?.length > 0 || false;\r\n\r\n this.doUpdateView(hasAssessmentResults);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, HasChallengeResultsPM.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n this.resultsEntity?.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n }\r\n}\r\n"]}
@@ -0,0 +1,30 @@
1
+ import { makeAppObjectRepo } from "@vived/core";
2
+ import { HasChallengeResultsPM, makeHasChallengeResultsPM } from "./HasChallengeResultsPM";
3
+ import { makeChallengeResults } from "../Entities";
4
+ function makeTestRig() {
5
+ const appObjects = makeAppObjectRepo();
6
+ const registerSingletonSpy = jest.spyOn(appObjects, "registerSingleton");
7
+ const results = makeChallengeResults(appObjects.getOrCreate("ChallengeResults"));
8
+ const pm = makeHasChallengeResultsPM(appObjects.getOrCreate("PM"));
9
+ return { appObjects, pm, registerSingletonSpy, results };
10
+ }
11
+ describe("HasChallengeResultsPM", () => {
12
+ it("Gets the singleton", () => {
13
+ const { pm, appObjects } = makeTestRig();
14
+ expect(HasChallengeResultsPM.get(appObjects)).toEqual(pm);
15
+ });
16
+ it("Registers the singleton", () => {
17
+ const { pm, registerSingletonSpy } = makeTestRig();
18
+ expect(registerSingletonSpy).toBeCalledWith(pm);
19
+ });
20
+ it("Initialize with default VM", () => {
21
+ const { pm } = makeTestRig();
22
+ expect(pm.lastVM).toBe(false);
23
+ });
24
+ it("when results change the VM is updated", () => {
25
+ const { results, pm } = makeTestRig();
26
+ results.submitHitResult("1", false, 0, "bob");
27
+ expect(pm.lastVM).toBe(true);
28
+ });
29
+ });
30
+ //# sourceMappingURL=HasChallengeResultsPM.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasChallengeResultsPM.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EACN,qBAAqB,EACrB,yBAAyB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAG,oBAAoB,CAClC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAC3C,CAAC;IACF,MAAM,EAAE,GAAG,yBAAyB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC;AAC3D,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,oBAAoB,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEtC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAE9C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\n\r\nimport {\r\n\tHasChallengeResultsPM,\r\n\tmakeHasChallengeResultsPM\r\n} from \"./HasChallengeResultsPM\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const results = makeChallengeResults(\r\n appObjects.getOrCreate(\"ChallengeResults\")\r\n );\r\n const pm = makeHasChallengeResultsPM(appObjects.getOrCreate(\"PM\"));\r\n\r\n return { appObjects, pm, registerSingletonSpy, results };\r\n}\r\n\r\ndescribe(\"HasChallengeResultsPM\", () => {\r\n it(\"Gets the singleton\", () => {\r\n const { pm, appObjects } = makeTestRig();\r\n\r\n expect(HasChallengeResultsPM.get(appObjects)).toEqual(pm);\r\n });\r\n\r\n it(\"Registers the singleton\", () => {\r\n const { pm, registerSingletonSpy } = makeTestRig();\r\n\r\n expect(registerSingletonSpy).toBeCalledWith(pm);\r\n });\r\n\r\n it(\"Initialize with default VM\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n expect(pm.lastVM).toBe(false);\r\n });\r\n\r\n it(\"when results change the VM is updated\", () => {\r\n const { results, pm } = makeTestRig();\r\n\r\n results.submitHitResult(\"1\", false, 0, \"bob\");\r\n\r\n expect(pm.lastVM).toBe(true);\r\n });\r\n});\r\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from "./ChallengeResultsListPM";
2
+ export * from "./HasChallengeResultsPM";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPM\""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPM\"\r\nexport * from \"./HasChallengeResultsPM\""]}
@@ -0,0 +1,21 @@
1
+ import { HostStatePM } from "../PMs/HostStatePM";
2
+ export const hostStateAdapter = {
3
+ defaultVM: HostStatePM.defaultVM,
4
+ subscribe: (id, appObjects, setVM) => {
5
+ if (!id) {
6
+ return;
7
+ }
8
+ const pm = HostStatePM.getById(id, appObjects);
9
+ if (!pm) {
10
+ appObjects.submitError("hostStateAdapter", `Unable to find HostStatePM for ID: ${id}`);
11
+ return;
12
+ }
13
+ pm.addView(setVM);
14
+ },
15
+ unsubscribe: (id, appObjects, setVM) => {
16
+ if (!id)
17
+ return;
18
+ HostStatePM.getById(id, appObjects)?.removeView(setVM);
19
+ }
20
+ };
21
+ //# sourceMappingURL=hostStateAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostStateAdapter.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/hostStateAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,SAAS,EAAE,CACT,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,kBAAkB,EAClB,sCAAsC,EAAE,EAAE,CAC3C,CAAC;YACF,OAAO;QACT,CAAC;QAED,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CACX,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE;YAAE,OAAO;QAEhB,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, PmAdapter } from \"@vived/core\";\r\nimport { HostStatePM, HostStateVM } from \"../PMs/HostStatePM\";\r\n\r\nexport const hostStateAdapter: PmAdapter<HostStateVM> = {\r\n defaultVM: HostStatePM.defaultVM,\r\n subscribe: (\r\n id: string,\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: HostStateVM) => void\r\n ) => {\r\n if (!id) {\r\n return;\r\n }\r\n\r\n const pm = HostStatePM.getById(id, appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"hostStateAdapter\",\r\n `Unable to find HostStatePM for ID: ${id}`\r\n );\r\n return;\r\n }\r\n\r\n pm.addView(setVM);\r\n },\r\n unsubscribe: (\r\n id: string,\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: HostStateVM) => void\r\n ) => {\r\n if (!id) return;\r\n\r\n HostStatePM.getById(id, appObjects)?.removeView(setVM);\r\n }\r\n};\r\n"]}
@@ -0,0 +1,47 @@
1
+ import { makeAppObjectRepo } from "@vived/core";
2
+ import { HostStatePM } from "../PMs/HostStatePM";
3
+ import { hostStateAdapter } from "./hostStateAdapter";
4
+ import { makeMockHostStatePM } from "../Mocks/MockHostStatePM";
5
+ describe("hostStateAdapter", () => {
6
+ let appObjects;
7
+ let appObject;
8
+ let mockPM;
9
+ const testId = "test-state-id";
10
+ const setVM = jest.fn();
11
+ beforeEach(() => {
12
+ appObjects = makeAppObjectRepo();
13
+ appObject = appObjects.getOrCreate(testId);
14
+ // Create the mock PM instead of a real one
15
+ mockPM = makeMockHostStatePM(appObject);
16
+ // Reset the mock function before each test
17
+ setVM.mockReset();
18
+ });
19
+ it("should provide the default VM from HostStatePM", () => {
20
+ expect(hostStateAdapter.defaultVM).toEqual(HostStatePM.defaultVM);
21
+ });
22
+ it("should add a view on subscribe", () => {
23
+ const addViewSpy = jest.spyOn(mockPM, "addView");
24
+ hostStateAdapter.subscribe(testId, appObjects, setVM);
25
+ expect(addViewSpy).toHaveBeenCalledWith(setVM);
26
+ });
27
+ it("should remove a view on unsubscribe", () => {
28
+ const removeViewSpy = jest.spyOn(mockPM, "removeView");
29
+ hostStateAdapter.unsubscribe(testId, appObjects, setVM);
30
+ expect(removeViewSpy).toHaveBeenCalledWith(setVM);
31
+ });
32
+ it("should handle missing PM on subscribe", () => {
33
+ // Create a new AppObjectRepo without the PM
34
+ const emptyAppObjects = makeAppObjectRepo();
35
+ emptyAppObjects.submitError = jest.fn();
36
+ // Using an ID that doesn't have a PM
37
+ hostStateAdapter.subscribe(testId, emptyAppObjects, setVM);
38
+ expect(emptyAppObjects.submitError).toHaveBeenCalledWith("hostStateAdapter", expect.stringContaining("Unable to find HostStatePM"));
39
+ });
40
+ it("should handle missing PM on unsubscribe without error", () => {
41
+ // This should not throw an error
42
+ expect(() => {
43
+ hostStateAdapter.unsubscribe("non-existent", appObjects, setVM);
44
+ }).not.toThrow();
45
+ });
46
+ });
47
+ //# sourceMappingURL=hostStateAdapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostStateAdapter.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/hostStateAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAmB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,UAAyB,CAAC;IAC9B,IAAI,SAAoB,CAAC;IACzB,IAAI,MAAuB,CAAC;IAC5B,MAAM,MAAM,GAAG,eAAe,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACjC,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3C,2CAA2C;QAC3C,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAExC,2CAA2C;QAC3C,KAAK,CAAC,SAAS,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjD,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEvD,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAExD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,4CAA4C;QAC5C,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;QAC5C,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExC,qCAAqC;QACrC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QAE3D,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,oBAAoB,CACtD,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,iCAAiC;QACjC,MAAM,CAAC,GAAG,EAAE;YACV,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AppObject, AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { HostStatePM } from \"../PMs/HostStatePM\";\r\nimport { hostStateAdapter } from \"./hostStateAdapter\";\r\nimport { MockHostStatePM, makeMockHostStatePM } from \"../Mocks/MockHostStatePM\";\r\n\r\ndescribe(\"hostStateAdapter\", () => {\r\n let appObjects: AppObjectRepo;\r\n let appObject: AppObject;\r\n let mockPM: MockHostStatePM;\r\n const testId = \"test-state-id\";\r\n const setVM = jest.fn();\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n appObject = appObjects.getOrCreate(testId);\r\n\r\n // Create the mock PM instead of a real one\r\n mockPM = makeMockHostStatePM(appObject);\r\n\r\n // Reset the mock function before each test\r\n setVM.mockReset();\r\n });\r\n\r\n it(\"should provide the default VM from HostStatePM\", () => {\r\n expect(hostStateAdapter.defaultVM).toEqual(HostStatePM.defaultVM);\r\n });\r\n\r\n it(\"should add a view on subscribe\", () => {\r\n const addViewSpy = jest.spyOn(mockPM, \"addView\");\r\n\r\n hostStateAdapter.subscribe(testId, appObjects, setVM);\r\n\r\n expect(addViewSpy).toHaveBeenCalledWith(setVM);\r\n });\r\n\r\n it(\"should remove a view on unsubscribe\", () => {\r\n const removeViewSpy = jest.spyOn(mockPM, \"removeView\");\r\n\r\n hostStateAdapter.unsubscribe(testId, appObjects, setVM);\r\n\r\n expect(removeViewSpy).toHaveBeenCalledWith(setVM);\r\n });\r\n\r\n it(\"should handle missing PM on subscribe\", () => {\r\n // Create a new AppObjectRepo without the PM\r\n const emptyAppObjects = makeAppObjectRepo();\r\n emptyAppObjects.submitError = jest.fn();\r\n\r\n // Using an ID that doesn't have a PM\r\n hostStateAdapter.subscribe(testId, emptyAppObjects, setVM);\r\n\r\n expect(emptyAppObjects.submitError).toHaveBeenCalledWith(\r\n \"hostStateAdapter\",\r\n expect.stringContaining(\"Unable to find HostStatePM\")\r\n );\r\n });\r\n\r\n it(\"should handle missing PM on unsubscribe without error\", () => {\r\n // This should not throw an error\r\n expect(() => {\r\n hostStateAdapter.unsubscribe(\"non-existent\", appObjects, setVM);\r\n }).not.toThrow();\r\n });\r\n});\r\n"]}
@@ -1,3 +1,4 @@
1
1
  export * from "./editingStateAdapter";
2
2
  export * from "./hostStateMachinePMAdapter";
3
+ export * from "./hostStateAdapter";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC","sourcesContent":["export * from \"./editingStateAdapter\";\r\nexport * from \"./hostStateMachinePMAdapter\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./editingStateAdapter\";\r\nexport * from \"./hostStateMachinePMAdapter\";\r\nexport * from \"./hostStateAdapter\";\r\n"]}
@@ -0,0 +1,10 @@
1
+ import { EditStateNameUC } from "../UCs/EditStateNameUC";
2
+ export function editStateName(name, id, appObjects) {
3
+ const uc = EditStateNameUC.getById(id, appObjects);
4
+ if (!uc) {
5
+ appObjects.submitWarning("editStateName", "Unable to find EditStateNameUC");
6
+ return;
7
+ }
8
+ uc.editStateName(name);
9
+ }
10
+ //# sourceMappingURL=editStateName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editStateName.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/editStateName.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,EAAU,EACV,UAAyB;IAEzB,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { EditStateNameUC } from \"../UCs/EditStateNameUC\";\r\n\r\nexport function editStateName(\r\n name: string,\r\n id: string,\r\n appObjects: AppObjectRepo\r\n) {\r\n const uc = EditStateNameUC.getById(id, appObjects);\r\n if (!uc) {\r\n appObjects.submitWarning(\"editStateName\", \"Unable to find EditStateNameUC\");\r\n return;\r\n }\r\n\r\n uc.editStateName(name);\r\n}\r\n"]}
@@ -0,0 +1,47 @@
1
+ import { makeAppObjectRepo } from "@vived/core";
2
+ import { MockEditStateNameUC } from "../Mocks/MockEditStateNameUC";
3
+ import { editStateName } from "./editStateName";
4
+ describe("editStateName", () => {
5
+ let appObjects;
6
+ let mockUC;
7
+ let mockEditFunction;
8
+ const testId = "test-state-id";
9
+ const testName = "New State Name";
10
+ beforeEach(() => {
11
+ // Create a fresh repository for each test
12
+ appObjects = makeAppObjectRepo();
13
+ const testAppObject = appObjects.getOrCreate(testId);
14
+ // Create the mock UC
15
+ mockUC = new MockEditStateNameUC(testAppObject);
16
+ // Setup the spy on the mock function
17
+ mockEditFunction = jest.fn();
18
+ mockUC.editStateName = mockEditFunction;
19
+ });
20
+ it("should call EditStateNameUC with the provided name", () => {
21
+ // Call the controller function
22
+ editStateName(testName, testId, appObjects);
23
+ // Verify the use case was called with the correct name
24
+ expect(mockEditFunction).toBeCalledWith(testName);
25
+ });
26
+ it("should do nothing when UC cannot be found", () => {
27
+ // Call with an ID that doesn't have the UC
28
+ const nonExistentId = "non-existent-id";
29
+ // This should not throw an error
30
+ expect(() => {
31
+ editStateName(testName, nonExistentId, appObjects);
32
+ }).not.toThrow();
33
+ // Verify our original mock wasn't called
34
+ expect(mockEditFunction).not.toHaveBeenCalled();
35
+ });
36
+ it("should submit a warning when UC is not found", () => {
37
+ // Spy on the warning submission method
38
+ const submitWarningSpy = jest.spyOn(appObjects, "submitWarning");
39
+ // Call the controller function with a non-existent ID
40
+ editStateName(testName, "non-existent-id", appObjects);
41
+ // Verify warning was submitted
42
+ expect(submitWarningSpy).toHaveBeenCalledWith("editStateName", "Unable to find EditStateNameUC");
43
+ // Verify that the edit function was not called
44
+ expect(mockEditFunction).not.toHaveBeenCalled();
45
+ });
46
+ });
47
+ //# sourceMappingURL=editStateName.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editStateName.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/editStateName.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAC,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,IAAI,UAAyB,CAAC;IAC9B,IAAI,MAA2B,CAAC;IAChC,IAAI,gBAA2B,CAAC;IAChC,MAAM,MAAM,GAAG,eAAe,CAAC;IAC/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACf,0CAA0C;QAC1C,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAErD,qBAAqB;QACrB,MAAM,GAAG,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAEhD,qCAAqC;QACrC,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,aAAa,GAAG,gBAAgB,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,+BAA+B;QAC/B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAE5C,uDAAuD;QACvD,MAAM,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,2CAA2C;QAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC;QAExC,iCAAiC;QACjC,MAAM,CAAC,GAAG,EAAE;YACX,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,yCAAyC;QACzC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,uCAAuC;QACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAEjE,sDAAsD;QACtD,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAEvD,+BAA+B;QAC/B,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC5C,eAAe,EACf,gCAAgC,CAChC,CAAC;QAEF,+CAA+C;QAC/C,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport {MockEditStateNameUC } from \"../Mocks/MockEditStateNameUC\";\r\nimport { editStateName } from \"./editStateName\";\r\n\r\ndescribe(\"editStateName\", () => {\r\n\tlet appObjects: AppObjectRepo;\r\n\tlet mockUC: MockEditStateNameUC;\r\n\tlet mockEditFunction: jest.Mock;\r\n\tconst testId = \"test-state-id\";\r\n\tconst testName = \"New State Name\";\r\n\r\n\tbeforeEach(() => {\r\n\t\t// Create a fresh repository for each test\r\n\t\tappObjects = makeAppObjectRepo();\r\n\t\tconst testAppObject = appObjects.getOrCreate(testId);\r\n\r\n\t\t// Create the mock UC\r\n\t\tmockUC = new MockEditStateNameUC(testAppObject);\r\n\t\t\r\n\t\t// Setup the spy on the mock function\r\n\t\tmockEditFunction = jest.fn();\r\n\t\tmockUC.editStateName = mockEditFunction;\r\n\t});\r\n\r\n\tit(\"should call EditStateNameUC with the provided name\", () => {\r\n\t\t// Call the controller function\r\n\t\teditStateName(testName, testId, appObjects);\r\n\r\n\t\t// Verify the use case was called with the correct name\r\n\t\texpect(mockEditFunction).toBeCalledWith(testName);\r\n\t});\r\n\r\n\tit(\"should do nothing when UC cannot be found\", () => {\r\n\t\t// Call with an ID that doesn't have the UC\r\n\t\tconst nonExistentId = \"non-existent-id\";\r\n\r\n\t\t// This should not throw an error\r\n\t\texpect(() => {\r\n\t\t\teditStateName(testName, nonExistentId, appObjects);\r\n\t\t}).not.toThrow();\r\n\r\n\t\t// Verify our original mock wasn't called\r\n\t\texpect(mockEditFunction).not.toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"should submit a warning when UC is not found\", () => {\r\n\t\t// Spy on the warning submission method\r\n\t\tconst submitWarningSpy = jest.spyOn(appObjects, \"submitWarning\");\r\n\r\n\t\t// Call the controller function with a non-existent ID\r\n\t\teditStateName(testName, \"non-existent-id\", appObjects);\r\n\r\n\t\t// Verify warning was submitted\r\n\t\texpect(submitWarningSpy).toHaveBeenCalledWith(\r\n\t\t\t\"editStateName\",\r\n\t\t\t\"Unable to find EditStateNameUC\"\r\n\t\t);\r\n\r\n\t\t// Verify that the edit function was not called\r\n\t\texpect(mockEditFunction).not.toHaveBeenCalled();\r\n\t});\r\n});\r\n"]}
@@ -4,6 +4,7 @@ export * from "./deleteState";
4
4
  export * from "./duplicateState";
5
5
  export * from "./editActiveState";
6
6
  export * from "./editState";
7
+ export * from "./editStateName";
7
8
  export * from "./endActivity";
8
9
  export * from "./newState";
9
10
  export * from "./saveAuthoring";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./cancelEditing\";\r\nexport * from \"./consumeState\";\r\nexport * from \"./deleteState\";\r\nexport * from \"./duplicateState\";\r\nexport * from \"./editActiveState\";\r\nexport * from \"./editState\";\r\nexport * from \"./endActivity\";\r\nexport * from \"./newState\";\r\nexport * from \"./saveAuthoring\";\r\nexport * from \"./transitionToState\";\r\nexport * from \"./savePersistentStates\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./cancelEditing\";\r\nexport * from \"./consumeState\";\r\nexport * from \"./deleteState\";\r\nexport * from \"./duplicateState\";\r\nexport * from \"./editActiveState\";\r\nexport * from \"./editState\";\r\nexport * from \"./editStateName\";\r\nexport * from \"./endActivity\";\r\nexport * from \"./newState\";\r\nexport * from \"./saveAuthoring\";\r\nexport * from \"./transitionToState\";\r\nexport * from \"./savePersistentStates\";\r\n"]}