@vived/host 4.0.2 → 4.0.3

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/AppSandbox/Factories/setupAppSandbox.js +6 -0
  2. package/dist/cjs/AppSandbox/Factories/setupAppSandbox.js.map +1 -1
  3. package/dist/cjs/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js +37 -0
  4. package/dist/cjs/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js.map +1 -0
  5. package/dist/cjs/AppSandbox/UCs/submitActivityAssetHandlerSandbox.test.js +55 -0
  6. package/dist/cjs/AppSandbox/UCs/submitActivityAssetHandlerSandbox.test.js.map +1 -0
  7. package/dist/cjs/Assets/Factories/setupAssetsForSandbox.js +1 -0
  8. package/dist/cjs/Assets/Factories/setupAssetsForSandbox.js.map +1 -1
  9. package/dist/cjs/Assets/Mocks/MockNewAssetUC.js +16 -0
  10. package/dist/cjs/Assets/Mocks/MockNewAssetUC.js.map +1 -0
  11. package/dist/cjs/Assets/Mocks/index.js +1 -0
  12. package/dist/cjs/Assets/Mocks/index.js.map +1 -1
  13. package/dist/cjs/Assets/UCs/NewAppAssetUC.js.map +1 -1
  14. package/dist/cjs/Assets/UCs/NewAppAssetUC.test.js.map +1 -1
  15. package/dist/cjs/Assets/UCs/NewAssetUC.js +53 -0
  16. package/dist/cjs/Assets/UCs/NewAssetUC.js.map +1 -0
  17. package/dist/cjs/Assets/UCs/NewAssetUC.test.js +104 -0
  18. package/dist/cjs/Assets/UCs/NewAssetUC.test.js.map +1 -0
  19. package/dist/cjs/Assets/UCs/index.js +1 -0
  20. package/dist/cjs/Assets/UCs/index.js.map +1 -1
  21. package/dist/cjs/Dialog/Entities/Alert.js +2 -0
  22. package/dist/cjs/Dialog/Entities/Alert.js.map +1 -1
  23. package/dist/cjs/Dialog/Entities/Alert.test.js +6 -0
  24. package/dist/cjs/Dialog/Entities/Alert.test.js.map +1 -1
  25. package/dist/cjs/Dialog/Entities/Confirm.js +3 -0
  26. package/dist/cjs/Dialog/Entities/Confirm.js.map +1 -1
  27. package/dist/cjs/Dialog/Entities/Confirm.test.js +12 -0
  28. package/dist/cjs/Dialog/Entities/Confirm.test.js.map +1 -1
  29. package/dist/cjs/Dialog/Entities/DialogQueue.js +16 -3
  30. package/dist/cjs/Dialog/Entities/DialogQueue.js.map +1 -1
  31. package/dist/cjs/Dialog/Entities/DialogQueue.test.js +21 -0
  32. package/dist/cjs/Dialog/Entities/DialogQueue.test.js.map +1 -1
  33. package/dist/cjs/Dialog/Entities/MarkDownEditor.js +3 -0
  34. package/dist/cjs/Dialog/Entities/MarkDownEditor.js.map +1 -1
  35. package/dist/cjs/Dialog/Entities/MarkDownEditor.test.js +12 -0
  36. package/dist/cjs/Dialog/Entities/MarkDownEditor.test.js.map +1 -1
  37. package/dist/cjs/Dialog/Entities/SelectModel.js +1 -0
  38. package/dist/cjs/Dialog/Entities/SelectModel.js.map +1 -1
  39. package/dist/cjs/Dialog/Entities/Spinner.js +2 -0
  40. package/dist/cjs/Dialog/Entities/Spinner.js.map +1 -1
  41. package/dist/cjs/Dialog/Entities/Spinner.test.js +17 -0
  42. package/dist/cjs/Dialog/Entities/Spinner.test.js.map +1 -1
  43. package/dist/cjs/Handler/setupStandardHostHandlers.js +1 -0
  44. package/dist/cjs/Handler/setupStandardHostHandlers.js.map +1 -1
  45. package/dist/cjs/VivedAPI/Mocks/MockSignedAuthToken.js +1 -2
  46. package/dist/cjs/VivedAPI/Mocks/MockSignedAuthToken.js.map +1 -1
  47. package/dist/cjs/VivedAPI/UCs/DeleteAssetOnAPIUC.js +1 -1
  48. package/dist/cjs/VivedAPI/UCs/DeleteAssetOnAPIUC.js.map +1 -1
  49. package/dist/cjs/VivedAPI/UCs/DeleteAssetOnAPIUC.test.js +2 -2
  50. package/dist/cjs/VivedAPI/UCs/DeleteAssetOnAPIUC.test.js.map +1 -1
  51. package/dist/cjs/VivedAPI/UCs/GetAppFromAPIUC.js +1 -1
  52. package/dist/cjs/VivedAPI/UCs/GetAppFromAPIUC.js.map +1 -1
  53. package/dist/cjs/VivedAPI/UCs/GetAppFromAPIUC.test.js +2 -2
  54. package/dist/cjs/VivedAPI/UCs/GetAppFromAPIUC.test.js.map +1 -1
  55. package/dist/cjs/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.js +1 -1
  56. package/dist/cjs/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.js.map +1 -1
  57. package/dist/cjs/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.test.js +2 -2
  58. package/dist/cjs/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.test.js.map +1 -1
  59. package/dist/cjs/VivedAPI/UCs/PatchAssetFileUC.js +1 -1
  60. package/dist/cjs/VivedAPI/UCs/PatchAssetFileUC.js.map +1 -1
  61. package/dist/cjs/VivedAPI/UCs/PatchAssetFileUC.test.js +2 -2
  62. package/dist/cjs/VivedAPI/UCs/PatchAssetFileUC.test.js.map +1 -1
  63. package/dist/cjs/VivedAPI/UCs/PatchAssetIsArchivedUC.js +1 -1
  64. package/dist/cjs/VivedAPI/UCs/PatchAssetIsArchivedUC.js.map +1 -1
  65. package/dist/cjs/VivedAPI/UCs/PatchAssetIsArchivedUC.test.js +2 -2
  66. package/dist/cjs/VivedAPI/UCs/PatchAssetIsArchivedUC.test.js.map +1 -1
  67. package/dist/cjs/VivedAPI/UCs/PatchAssetMetaUC.js +1 -1
  68. package/dist/cjs/VivedAPI/UCs/PatchAssetMetaUC.js.map +1 -1
  69. package/dist/cjs/VivedAPI/UCs/PatchAssetMetaUC.test.js +2 -2
  70. package/dist/cjs/VivedAPI/UCs/PatchAssetMetaUC.test.js.map +1 -1
  71. package/dist/cjs/VivedAPI/UCs/PatchAssetUC.js +2 -3
  72. package/dist/cjs/VivedAPI/UCs/PatchAssetUC.js.map +1 -1
  73. package/dist/cjs/VivedAPI/UCs/PatchAssetUC.test.js +2 -2
  74. package/dist/cjs/VivedAPI/UCs/PatchAssetUC.test.js.map +1 -1
  75. package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.js +2 -3
  76. package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
  77. package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.test.js +2 -2
  78. package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.test.js.map +1 -1
  79. package/dist/cjs/VivedAPI/UCs/SignedAuthTokenUC.js.map +1 -1
  80. package/dist/esm/AppSandbox/Factories/setupAppSandbox.js +6 -0
  81. package/dist/esm/AppSandbox/Factories/setupAppSandbox.js.map +1 -1
  82. package/dist/esm/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js +34 -0
  83. package/dist/esm/AppSandbox/UCs/submitActivityAssetHandlerSandbox.js.map +1 -0
  84. package/dist/esm/AppSandbox/UCs/submitActivityAssetHandlerSandbox.test.js +53 -0
  85. package/dist/esm/AppSandbox/UCs/submitActivityAssetHandlerSandbox.test.js.map +1 -0
  86. package/dist/esm/Assets/Factories/setupAssetsForSandbox.js +2 -1
  87. package/dist/esm/Assets/Factories/setupAssetsForSandbox.js.map +1 -1
  88. package/dist/esm/Assets/Mocks/MockNewAssetUC.js +11 -0
  89. package/dist/esm/Assets/Mocks/MockNewAssetUC.js.map +1 -0
  90. package/dist/esm/Assets/Mocks/index.js +1 -0
  91. package/dist/esm/Assets/Mocks/index.js.map +1 -1
  92. package/dist/esm/Assets/UCs/NewAppAssetUC.js.map +1 -1
  93. package/dist/esm/Assets/UCs/NewAppAssetUC.test.js.map +1 -1
  94. package/dist/esm/Assets/UCs/NewAssetUC.js +48 -0
  95. package/dist/esm/Assets/UCs/NewAssetUC.js.map +1 -0
  96. package/dist/esm/Assets/UCs/NewAssetUC.test.js +102 -0
  97. package/dist/esm/Assets/UCs/NewAssetUC.test.js.map +1 -0
  98. package/dist/esm/Assets/UCs/index.js +1 -0
  99. package/dist/esm/Assets/UCs/index.js.map +1 -1
  100. package/dist/esm/Dialog/Entities/Alert.js +2 -0
  101. package/dist/esm/Dialog/Entities/Alert.js.map +1 -1
  102. package/dist/esm/Dialog/Entities/Alert.test.js +6 -0
  103. package/dist/esm/Dialog/Entities/Alert.test.js.map +1 -1
  104. package/dist/esm/Dialog/Entities/Confirm.js +3 -0
  105. package/dist/esm/Dialog/Entities/Confirm.js.map +1 -1
  106. package/dist/esm/Dialog/Entities/Confirm.test.js +12 -0
  107. package/dist/esm/Dialog/Entities/Confirm.test.js.map +1 -1
  108. package/dist/esm/Dialog/Entities/DialogQueue.js +17 -4
  109. package/dist/esm/Dialog/Entities/DialogQueue.js.map +1 -1
  110. package/dist/esm/Dialog/Entities/DialogQueue.test.js +21 -0
  111. package/dist/esm/Dialog/Entities/DialogQueue.test.js.map +1 -1
  112. package/dist/esm/Dialog/Entities/MarkDownEditor.js +3 -0
  113. package/dist/esm/Dialog/Entities/MarkDownEditor.js.map +1 -1
  114. package/dist/esm/Dialog/Entities/MarkDownEditor.test.js +12 -0
  115. package/dist/esm/Dialog/Entities/MarkDownEditor.test.js.map +1 -1
  116. package/dist/esm/Dialog/Entities/SelectModel.js +1 -0
  117. package/dist/esm/Dialog/Entities/SelectModel.js.map +1 -1
  118. package/dist/esm/Dialog/Entities/Spinner.js +2 -0
  119. package/dist/esm/Dialog/Entities/Spinner.js.map +1 -1
  120. package/dist/esm/Dialog/Entities/Spinner.test.js +17 -0
  121. package/dist/esm/Dialog/Entities/Spinner.test.js.map +1 -1
  122. package/dist/esm/Handler/setupStandardHostHandlers.js +2 -1
  123. package/dist/esm/Handler/setupStandardHostHandlers.js.map +1 -1
  124. package/dist/esm/VivedAPI/Mocks/MockSignedAuthToken.js +1 -2
  125. package/dist/esm/VivedAPI/Mocks/MockSignedAuthToken.js.map +1 -1
  126. package/dist/esm/VivedAPI/UCs/DeleteAssetOnAPIUC.js +1 -1
  127. package/dist/esm/VivedAPI/UCs/DeleteAssetOnAPIUC.js.map +1 -1
  128. package/dist/esm/VivedAPI/UCs/DeleteAssetOnAPIUC.test.js +2 -2
  129. package/dist/esm/VivedAPI/UCs/DeleteAssetOnAPIUC.test.js.map +1 -1
  130. package/dist/esm/VivedAPI/UCs/GetAppFromAPIUC.js +1 -1
  131. package/dist/esm/VivedAPI/UCs/GetAppFromAPIUC.js.map +1 -1
  132. package/dist/esm/VivedAPI/UCs/GetAppFromAPIUC.test.js +2 -2
  133. package/dist/esm/VivedAPI/UCs/GetAppFromAPIUC.test.js.map +1 -1
  134. package/dist/esm/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.js +1 -1
  135. package/dist/esm/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.js.map +1 -1
  136. package/dist/esm/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.test.js +2 -2
  137. package/dist/esm/VivedAPI/UCs/GetAssetsForOwnerFromAPIUC.test.js.map +1 -1
  138. package/dist/esm/VivedAPI/UCs/PatchAssetFileUC.js +1 -1
  139. package/dist/esm/VivedAPI/UCs/PatchAssetFileUC.js.map +1 -1
  140. package/dist/esm/VivedAPI/UCs/PatchAssetFileUC.test.js +2 -2
  141. package/dist/esm/VivedAPI/UCs/PatchAssetFileUC.test.js.map +1 -1
  142. package/dist/esm/VivedAPI/UCs/PatchAssetIsArchivedUC.js +1 -1
  143. package/dist/esm/VivedAPI/UCs/PatchAssetIsArchivedUC.js.map +1 -1
  144. package/dist/esm/VivedAPI/UCs/PatchAssetIsArchivedUC.test.js +2 -2
  145. package/dist/esm/VivedAPI/UCs/PatchAssetIsArchivedUC.test.js.map +1 -1
  146. package/dist/esm/VivedAPI/UCs/PatchAssetMetaUC.js +1 -1
  147. package/dist/esm/VivedAPI/UCs/PatchAssetMetaUC.js.map +1 -1
  148. package/dist/esm/VivedAPI/UCs/PatchAssetMetaUC.test.js +2 -2
  149. package/dist/esm/VivedAPI/UCs/PatchAssetMetaUC.test.js.map +1 -1
  150. package/dist/esm/VivedAPI/UCs/PatchAssetUC.js +2 -3
  151. package/dist/esm/VivedAPI/UCs/PatchAssetUC.js.map +1 -1
  152. package/dist/esm/VivedAPI/UCs/PatchAssetUC.test.js +2 -2
  153. package/dist/esm/VivedAPI/UCs/PatchAssetUC.test.js.map +1 -1
  154. package/dist/esm/VivedAPI/UCs/PostNewAssetUC.js +2 -3
  155. package/dist/esm/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
  156. package/dist/esm/VivedAPI/UCs/PostNewAssetUC.test.js +2 -2
  157. package/dist/esm/VivedAPI/UCs/PostNewAssetUC.test.js.map +1 -1
  158. package/dist/esm/VivedAPI/UCs/SignedAuthTokenUC.js +1 -1
  159. package/dist/esm/VivedAPI/UCs/SignedAuthTokenUC.js.map +1 -1
  160. package/dist/types/AppSandbox/Factories/setupAppSandbox.d.ts.map +1 -1
  161. package/dist/types/AppSandbox/UCs/submitActivityAssetHandlerSandbox.d.ts +4 -0
  162. package/dist/types/AppSandbox/UCs/submitActivityAssetHandlerSandbox.d.ts.map +1 -0
  163. package/dist/types/AppSandbox/UCs/submitActivityAssetHandlerSandbox.test.d.ts +2 -0
  164. package/dist/types/AppSandbox/UCs/submitActivityAssetHandlerSandbox.test.d.ts.map +1 -0
  165. package/dist/types/Assets/Factories/setupAssetsForSandbox.d.ts.map +1 -1
  166. package/dist/types/Assets/Mocks/MockNewAssetUC.d.ts +8 -0
  167. package/dist/types/Assets/Mocks/MockNewAssetUC.d.ts.map +1 -0
  168. package/dist/types/Assets/Mocks/index.d.ts +1 -0
  169. package/dist/types/Assets/Mocks/index.d.ts.map +1 -1
  170. package/dist/types/Assets/UCs/NewAssetUC.d.ts +14 -0
  171. package/dist/types/Assets/UCs/NewAssetUC.d.ts.map +1 -0
  172. package/dist/types/Assets/UCs/NewAssetUC.test.d.ts +2 -0
  173. package/dist/types/Assets/UCs/NewAssetUC.test.d.ts.map +1 -0
  174. package/dist/types/Assets/UCs/index.d.ts +1 -0
  175. package/dist/types/Assets/UCs/index.d.ts.map +1 -1
  176. package/dist/types/Dialog/Entities/Alert.d.ts +1 -0
  177. package/dist/types/Dialog/Entities/Alert.d.ts.map +1 -1
  178. package/dist/types/Dialog/Entities/Confirm.d.ts +1 -0
  179. package/dist/types/Dialog/Entities/Confirm.d.ts.map +1 -1
  180. package/dist/types/Dialog/Entities/DialogQueue.d.ts +1 -0
  181. package/dist/types/Dialog/Entities/DialogQueue.d.ts.map +1 -1
  182. package/dist/types/Dialog/Entities/MarkDownEditor.d.ts +1 -0
  183. package/dist/types/Dialog/Entities/MarkDownEditor.d.ts.map +1 -1
  184. package/dist/types/Dialog/Entities/SelectModel.d.ts +1 -0
  185. package/dist/types/Dialog/Entities/SelectModel.d.ts.map +1 -1
  186. package/dist/types/Dialog/Entities/Spinner.d.ts +1 -0
  187. package/dist/types/Dialog/Entities/Spinner.d.ts.map +1 -1
  188. package/dist/types/Handler/setupStandardHostHandlers.d.ts.map +1 -1
  189. package/dist/types/VivedAPI/Mocks/MockSignedAuthToken.d.ts +1 -2
  190. package/dist/types/VivedAPI/Mocks/MockSignedAuthToken.d.ts.map +1 -1
  191. package/dist/types/VivedAPI/UCs/PatchAssetUC.d.ts.map +1 -1
  192. package/dist/types/VivedAPI/UCs/PostNewAssetUC.d.ts +2 -2
  193. package/dist/types/VivedAPI/UCs/PostNewAssetUC.d.ts.map +1 -1
  194. package/dist/types/VivedAPI/UCs/SignedAuthTokenUC.d.ts +1 -2
  195. package/dist/types/VivedAPI/UCs/SignedAuthTokenUC.d.ts.map +1 -1
  196. package/package.json +2 -2
@@ -0,0 +1,48 @@
1
+ import { AppObjectUC, getSingletonComponent } from "@vived/core";
2
+ import { PostNewAssetUC } from "../../VivedAPI/UCs";
3
+ import { AssetRepo } from "../Entities";
4
+ export class NewAssetUC extends AppObjectUC {
5
+ static get(appObjects) {
6
+ return getSingletonComponent(NewAssetUC.type, appObjects);
7
+ }
8
+ }
9
+ NewAssetUC.type = "NewAssetUC";
10
+ export function makeNewAssetUC(appObject) {
11
+ return new NewAssetUCImp(appObject);
12
+ }
13
+ class NewAssetUCImp extends NewAssetUC {
14
+ get postNewAsset() {
15
+ return this.getCachedSingleton(PostNewAssetUC.type)?.doPost;
16
+ }
17
+ get assetRepo() {
18
+ return this.getCachedSingleton(AssetRepo.type);
19
+ }
20
+ constructor(appObject) {
21
+ super(appObject, NewAssetUC.type);
22
+ this.create = (data) => {
23
+ const postNewAsset = this.postNewAsset;
24
+ const assetRepo = this.assetRepo;
25
+ if (!postNewAsset || !assetRepo) {
26
+ return Promise.reject(new Error("Missing dependencies"));
27
+ }
28
+ const { description, file, name, owner } = data;
29
+ const newAssetData = {
30
+ description,
31
+ name,
32
+ file,
33
+ ownerID: owner
34
+ };
35
+ return postNewAsset(newAssetData).then((resp) => {
36
+ const newAsset = assetRepo.assetFactory(resp.id);
37
+ newAsset.setFile(file);
38
+ newAsset.description = description;
39
+ newAsset.name = name;
40
+ newAsset.filename = resp.filename;
41
+ assetRepo.add(newAsset);
42
+ return resp.id;
43
+ });
44
+ };
45
+ this.appObjects.registerSingleton(this);
46
+ }
47
+ }
48
+ //# sourceMappingURL=NewAssetUC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NewAssetUC.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/NewAssetUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC,MAAM,OAAgB,UAAW,SAAQ,WAAW;IAKlD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;;AANM,eAAI,GAAG,YAAY,CAAC;AAS7B,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,UAAU;IACpC,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9E,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IA8BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA7BpC,WAAM,GAAG,CAAC,IAAiB,EAAmB,EAAE;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEjC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAChD,MAAM,YAAY,GAAmB;gBACnC,WAAW;gBACX,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9C,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;gBACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAElC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { NewAssetApiDto, PostNewAssetUC } from \"../../VivedAPI/UCs\";\r\nimport { AssetRepo } from \"../Entities\";\r\n\r\nexport interface NewAssetDto {\r\n file: File;\r\n name: string;\r\n description: string;\r\n owner: string;\r\n}\r\n\r\nexport abstract class NewAssetUC extends AppObjectUC {\r\n static type = \"NewAssetUC\";\r\n\r\n abstract create(data: NewAssetDto): Promise<string>;\r\n\r\n static get(appObjects: AppObjectRepo): NewAssetUC | undefined {\r\n return getSingletonComponent(NewAssetUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeNewAssetUC(appObject: AppObject): NewAssetUC {\r\n return new NewAssetUCImp(appObject);\r\n}\r\n\r\nclass NewAssetUCImp extends NewAssetUC {\r\n private get postNewAsset() {\r\n return this.getCachedSingleton<PostNewAssetUC>(PostNewAssetUC.type)?.doPost;\r\n }\r\n\r\n private get assetRepo() {\r\n return this.getCachedSingleton<AssetRepo>(AssetRepo.type);\r\n }\r\n\r\n create = (data: NewAssetDto): Promise<string> => {\r\n const postNewAsset = this.postNewAsset;\r\n const assetRepo = this.assetRepo;\r\n\r\n if (!postNewAsset || !assetRepo) {\r\n return Promise.reject(new Error(\"Missing dependencies\"));\r\n }\r\n\r\n const { description, file, name, owner } = data;\r\n const newAssetData: NewAssetApiDto = {\r\n description,\r\n name,\r\n file,\r\n ownerID: owner\r\n };\r\n\r\n return postNewAsset(newAssetData).then((resp) => {\r\n const newAsset = assetRepo.assetFactory(resp.id);\r\n newAsset.setFile(file);\r\n newAsset.description = description;\r\n newAsset.name = name;\r\n newAsset.filename = resp.filename;\r\n\r\n assetRepo.add(newAsset);\r\n return resp.id;\r\n });\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, NewAssetUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,102 @@
1
+ import { makeAppObjectRepo } from "@vived/core";
2
+ import { makeMockPostNewAssetUC } from "../../VivedAPI/Mocks/MockPostNewAssetUC";
3
+ import { makeAssetEntity, makeAssetRepo } from "../Entities";
4
+ import { makeNewAssetUC, NewAssetUC } from "./NewAssetUC";
5
+ function makeTestRig() {
6
+ const appObjects = makeAppObjectRepo();
7
+ const singletonSpy = jest.spyOn(appObjects, "registerSingleton");
8
+ const mockPost = makeMockPostNewAssetUC(appObjects);
9
+ mockPost.doPost.mockResolvedValue({
10
+ id: "newAssetID",
11
+ filename: "newAssetFile.name"
12
+ });
13
+ URL.createObjectURL = jest.fn();
14
+ const ao = appObjects.getOrCreate("ao");
15
+ const assetRepo = makeAssetRepo(ao);
16
+ assetRepo.assetFactory = (id) => {
17
+ return makeAssetEntity(appObjects.getOrCreate(id));
18
+ };
19
+ const uc = makeNewAssetUC(ao);
20
+ return {
21
+ uc,
22
+ appObjects,
23
+ singletonSpy,
24
+ mockPost,
25
+ ao,
26
+ assetRepo
27
+ };
28
+ }
29
+ function makeDTO() {
30
+ return {
31
+ description: "some description",
32
+ file: new File([], "filename.file"),
33
+ name: "some name",
34
+ owner: "anOwnderID"
35
+ };
36
+ }
37
+ describe("New Asset UC", () => {
38
+ it("Registers itself as the Singleton", () => {
39
+ const { uc, singletonSpy } = makeTestRig();
40
+ expect(singletonSpy).toBeCalledWith(uc);
41
+ });
42
+ it("Gets the singleton", () => {
43
+ const { uc, appObjects } = makeTestRig();
44
+ expect(NewAssetUC.get(appObjects)).toEqual(uc);
45
+ });
46
+ it("Forms the post DTO as expected", async () => {
47
+ const { uc, mockPost } = makeTestRig();
48
+ const mockFile = new File([], "filename.file");
49
+ const newAppAssetDTO = {
50
+ description: "some description",
51
+ file: mockFile,
52
+ name: "some name",
53
+ owner: "anOwnerID"
54
+ };
55
+ await uc.create(newAppAssetDTO);
56
+ const mockPostDTO = mockPost.doPost.mock.calls[0][0];
57
+ expect(mockPostDTO.description).toEqual("some description");
58
+ expect(mockPostDTO.ownerID).toEqual("anOwnerID");
59
+ expect(mockPostDTO.name).toEqual("some name");
60
+ expect(mockPostDTO.file).toEqual(mockFile);
61
+ });
62
+ it("Rejects if the post rejects", async () => {
63
+ const { uc, mockPost } = makeTestRig();
64
+ uc.error = jest.fn();
65
+ mockPost.doPost.mockRejectedValue(new Error("Some Post Error"));
66
+ await expect(uc.create(makeDTO())).rejects.toThrow("Some Post Error");
67
+ });
68
+ it("Adds the asset to the asset repo", async () => {
69
+ const { uc, assetRepo } = makeTestRig();
70
+ const mockFile = new File([], "filename.file");
71
+ const newAppAssetDTO = {
72
+ description: "some description",
73
+ file: mockFile,
74
+ name: "some name",
75
+ owner: "anOwnerID"
76
+ };
77
+ const newAssetID = await uc.create(newAppAssetDTO);
78
+ expect(assetRepo.has(newAssetID)).toEqual(true);
79
+ });
80
+ it("Sets up the new asset in the repo", async () => {
81
+ const { uc, assetRepo } = makeTestRig();
82
+ const mockFile = new File([], "filename.file");
83
+ const newAppAssetDTO = {
84
+ description: "some description",
85
+ file: mockFile,
86
+ name: "some name",
87
+ owner: "anOwnerID"
88
+ };
89
+ const newAssetID = await uc.create(newAppAssetDTO);
90
+ const repoAsset = assetRepo.get(newAssetID);
91
+ expect(repoAsset?.name).toEqual("some name");
92
+ expect(repoAsset?.description).toEqual("some description");
93
+ expect(repoAsset?.file).toEqual(mockFile);
94
+ expect(repoAsset?.filename).toEqual("newAssetFile.name");
95
+ });
96
+ it("Reruns the new asset ID", async () => {
97
+ const { uc } = makeTestRig();
98
+ const newAssetID = await uc.create(makeDTO());
99
+ expect(newAssetID).toEqual("newAssetID");
100
+ });
101
+ });
102
+ //# sourceMappingURL=NewAssetUC.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NewAssetUC.test.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/NewAssetUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeMockPostNewAssetUC } from \"../../VivedAPI/Mocks/MockPostNewAssetUC\";\r\nimport { NewAssetApiDto } from \"../../VivedAPI/UCs/PostNewAssetUC\";\r\nimport { makeAssetEntity, makeAssetRepo } from \"../Entities\";\r\nimport { makeNewAssetUC, NewAssetDto, NewAssetUC } from \"./NewAssetUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const singletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const mockPost = makeMockPostNewAssetUC(appObjects);\r\n mockPost.doPost.mockResolvedValue({\r\n id: \"newAssetID\",\r\n filename: \"newAssetFile.name\"\r\n });\r\n\r\n URL.createObjectURL = jest.fn();\r\n\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const assetRepo = makeAssetRepo(ao);\r\n assetRepo.assetFactory = (id: string) => {\r\n return makeAssetEntity(appObjects.getOrCreate(id));\r\n };\r\n\r\n const uc = makeNewAssetUC(ao);\r\n\r\n return {\r\n uc,\r\n appObjects,\r\n singletonSpy,\r\n mockPost,\r\n ao,\r\n assetRepo\r\n };\r\n}\r\n\r\nfunction makeDTO(): NewAssetDto {\r\n return {\r\n description: \"some description\",\r\n file: new File([], \"filename.file\"),\r\n name: \"some name\",\r\n owner: \"anOwnderID\"\r\n };\r\n}\r\n\r\ndescribe(\"New Asset UC\", () => {\r\n it(\"Registers itself as the Singleton\", () => {\r\n const { uc, singletonSpy } = makeTestRig();\r\n expect(singletonSpy).toBeCalledWith(uc);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { uc, appObjects } = makeTestRig();\r\n expect(NewAssetUC.get(appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Forms the post DTO as expected\", async () => {\r\n const { uc, mockPost } = makeTestRig();\r\n const mockFile = new File([], \"filename.file\");\r\n const newAppAssetDTO: NewAssetDto = {\r\n description: \"some description\",\r\n file: mockFile,\r\n name: \"some name\",\r\n owner: \"anOwnerID\"\r\n };\r\n\r\n await uc.create(newAppAssetDTO);\r\n const mockPostDTO = mockPost.doPost.mock.calls[0][0] as NewAssetApiDto;\r\n expect(mockPostDTO.description).toEqual(\"some description\");\r\n expect(mockPostDTO.ownerID).toEqual(\"anOwnerID\");\r\n expect(mockPostDTO.name).toEqual(\"some name\");\r\n expect(mockPostDTO.file).toEqual(mockFile);\r\n });\r\n\r\n it(\"Rejects if the post rejects\", async () => {\r\n const { uc, mockPost } = makeTestRig();\r\n uc.error = jest.fn();\r\n mockPost.doPost.mockRejectedValue(new Error(\"Some Post Error\"));\r\n\r\n await expect(uc.create(makeDTO())).rejects.toThrow(\"Some Post Error\");\r\n });\r\n\r\n it(\"Adds the asset to the asset repo\", async () => {\r\n const { uc, assetRepo } = makeTestRig();\r\n const mockFile = new File([], \"filename.file\");\r\n const newAppAssetDTO = {\r\n description: \"some description\",\r\n file: mockFile,\r\n name: \"some name\",\r\n owner: \"anOwnerID\"\r\n };\r\n const newAssetID = await uc.create(newAppAssetDTO);\r\n expect(assetRepo.has(newAssetID)).toEqual(true);\r\n });\r\n\r\n it(\"Sets up the new asset in the repo\", async () => {\r\n const { uc, assetRepo } = makeTestRig();\r\n const mockFile = new File([], \"filename.file\");\r\n const newAppAssetDTO = {\r\n description: \"some description\",\r\n file: mockFile,\r\n name: \"some name\",\r\n owner: \"anOwnerID\"\r\n };\r\n const newAssetID = await uc.create(newAppAssetDTO);\r\n const repoAsset = assetRepo.get(newAssetID);\r\n expect(repoAsset?.name).toEqual(\"some name\");\r\n expect(repoAsset?.description).toEqual(\"some description\");\r\n expect(repoAsset?.file).toEqual(mockFile);\r\n expect(repoAsset?.filename).toEqual(\"newAssetFile.name\");\r\n });\r\n\r\n it(\"Reruns the new asset ID\", async () => {\r\n const { uc } = makeTestRig();\r\n const newAssetID = await uc.create(makeDTO());\r\n expect(newAssetID).toEqual(\"newAssetID\");\r\n });\r\n});\r\n"]}
@@ -7,6 +7,7 @@ export * from "./GetAssetBlobURLUC";
7
7
  export * from "./GetAssetFileUC";
8
8
  export * from "./GetAssetUC";
9
9
  export * from "./NewAppAssetUC";
10
+ export * from "./NewAssetUC";
10
11
  export * from "./PrefetchAssetsUC";
11
12
  export * from "./UpdateAppAssetMetaUC";
12
13
  export * from "./UpdateAssetFileUC";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from \"./ArchiveAssetUC\";\r\nexport * from \"./DeleteAssetUC\";\r\nexport * from \"./DownloadAssetFileUC\";\r\nexport * from \"./EditAppAssetUC\";\r\nexport * from \"./GetAppAssetsUC\";\r\nexport * from \"./GetAssetBlobURLUC\";\r\nexport * from \"./GetAssetFileUC\";\r\nexport * from \"./GetAssetUC\";\r\nexport * from \"./NewAppAssetUC\";\r\nexport * from \"./PrefetchAssetsUC\";\r\nexport * from \"./UpdateAppAssetMetaUC\";\r\nexport * from \"./UpdateAssetFileUC\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Assets/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from \"./ArchiveAssetUC\";\r\nexport * from \"./DeleteAssetUC\";\r\nexport * from \"./DownloadAssetFileUC\";\r\nexport * from \"./EditAppAssetUC\";\r\nexport * from \"./GetAppAssetsUC\";\r\nexport * from \"./GetAssetBlobURLUC\";\r\nexport * from \"./GetAssetFileUC\";\r\nexport * from \"./GetAssetUC\";\r\nexport * from \"./NewAppAssetUC\";\r\nexport * from \"./NewAssetUC\";\r\nexport * from \"./PrefetchAssetsUC\";\r\nexport * from \"./UpdateAppAssetMetaUC\";\r\nexport * from \"./UpdateAssetFileUC\";\r\n"]}
@@ -25,7 +25,9 @@ export class AlertDialogEntity extends Dialog {
25
25
  super(appObject, AlertDialogEntity.type);
26
26
  this.dialogType = alertDialogType;
27
27
  this.preventOutsideDismiss = false;
28
+ this.hasBeenClosed = false;
28
29
  this.close = () => {
30
+ this.hasBeenClosed = true;
29
31
  this.isOpen = false;
30
32
  if (this.postClose) {
31
33
  this.postClose();
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAUvC,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,OAAO,iBAAkB,SAAQ,MAAM;IAG3C,MAAM,CAAC,GAAG,CACR,OAAe,EACf,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,uBAAuB,EACvB,2BAA2B,CAC5B,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,iBAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,aAAa,CACtB,uBAAuB,EACvB,4CAA4C,CAC7C,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAiBD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,GAAY;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,YAAY,IAAoB,EAAE,SAAoB;QACpD,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAvBlC,eAAU,GAAG,eAAe,CAAC;QAI7B,0BAAqB,GAAY,KAAK,CAAC;QAGhD,UAAK,GAAG,GAAG,EAAE;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEM,YAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAUhE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC1D,CAAC;IACH,CAAC;;AA5DM,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectRepo, MemoizedBoolean } from \"@vived/core\";\r\nimport { Dialog } from \"./DialogQueue\";\r\n\r\nexport interface DialogAlertDTO {\r\n message: string;\r\n title: string;\r\n buttonLabel: string;\r\n onClose?: () => void;\r\n preventOutsideDismiss?: boolean;\r\n}\r\n\r\nexport const alertDialogType = \"ALERT\";\r\n\r\nexport class AlertDialogEntity extends Dialog {\r\n static type = \"AlertDialogEntity\";\r\n\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): AlertDialogEntity | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"AlertDialogEntity.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<AlertDialogEntity>(\r\n AlertDialogEntity.type\r\n );\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"AlertDialogEntity.get\",\r\n \"App Object does not have AlertDialogEntity\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n\r\n readonly dialogType = alertDialogType;\r\n readonly title: string;\r\n readonly message: string;\r\n readonly buttonLabel: string;\r\n readonly preventOutsideDismiss: boolean = false;\r\n\r\n private postClose?: () => void;\r\n close = () => {\r\n this.isOpen = false;\r\n if (this.postClose) {\r\n this.postClose();\r\n }\r\n };\r\n\r\n private _isOpen = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isOpen(): boolean {\r\n return this._isOpen.val;\r\n }\r\n set isOpen(val: boolean) {\r\n this._isOpen.val = val;\r\n }\r\n\r\n constructor(data: DialogAlertDTO, appObject: AppObject) {\r\n super(appObject, AlertDialogEntity.type);\r\n this.buttonLabel = data.buttonLabel;\r\n this.message = data.message;\r\n this.title = data.title;\r\n this.postClose = data.onClose;\r\n if (data.preventOutsideDismiss !== undefined) {\r\n this.preventOutsideDismiss = data.preventOutsideDismiss;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Alert.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAUvC,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,OAAO,iBAAkB,SAAQ,MAAM;IAG3C,MAAM,CAAC,GAAG,CACR,OAAe,EACf,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,uBAAuB,EACvB,2BAA2B,CAC5B,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,iBAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,aAAa,CACtB,uBAAuB,EACvB,4CAA4C,CAC7C,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAmBD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,GAAY;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,YAAY,IAAoB,EAAE,SAAoB;QACpD,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAzBlC,eAAU,GAAG,eAAe,CAAC;QAI7B,0BAAqB,GAAY,KAAK,CAAC;QAChD,kBAAa,GAAY,KAAK,CAAC;QAG/B,UAAK,GAAG,GAAG,EAAE;YACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEM,YAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAUhE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC1D,CAAC;IACH,CAAC;;AA9DM,sBAAI,GAAG,mBAAmB,AAAtB,CAAuB","sourcesContent":["import { AppObject, AppObjectRepo, MemoizedBoolean } from \"@vived/core\";\r\nimport { Dialog } from \"./DialogQueue\";\r\n\r\nexport interface DialogAlertDTO {\r\n message: string;\r\n title: string;\r\n buttonLabel: string;\r\n onClose?: () => void;\r\n preventOutsideDismiss?: boolean;\r\n}\r\n\r\nexport const alertDialogType = \"ALERT\";\r\n\r\nexport class AlertDialogEntity extends Dialog {\r\n static type = \"AlertDialogEntity\";\r\n\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): AlertDialogEntity | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"AlertDialogEntity.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<AlertDialogEntity>(\r\n AlertDialogEntity.type\r\n );\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"AlertDialogEntity.get\",\r\n \"App Object does not have AlertDialogEntity\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n\r\n readonly dialogType = alertDialogType;\r\n readonly title: string;\r\n readonly message: string;\r\n readonly buttonLabel: string;\r\n readonly preventOutsideDismiss: boolean = false;\r\n hasBeenClosed: boolean = false;\r\n\r\n private postClose?: () => void;\r\n close = () => {\r\n this.hasBeenClosed = true;\r\n this.isOpen = false;\r\n if (this.postClose) {\r\n this.postClose();\r\n }\r\n };\r\n\r\n private _isOpen = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isOpen(): boolean {\r\n return this._isOpen.val;\r\n }\r\n set isOpen(val: boolean) {\r\n this._isOpen.val = val;\r\n }\r\n\r\n constructor(data: DialogAlertDTO, appObject: AppObject) {\r\n super(appObject, AlertDialogEntity.type);\r\n this.buttonLabel = data.buttonLabel;\r\n this.message = data.message;\r\n this.title = data.title;\r\n this.postClose = data.onClose;\r\n if (data.preventOutsideDismiss !== undefined) {\r\n this.preventOutsideDismiss = data.preventOutsideDismiss;\r\n }\r\n }\r\n}\r\n"]}
@@ -73,5 +73,11 @@ describe("Alert Dialog", () => {
73
73
  const returnedUC = AlertDialogEntity.get("dialog1", appObjects);
74
74
  expect(returnedUC).toEqual(alert);
75
75
  });
76
+ it("Sets hasBeenClosed to true when close is called", () => {
77
+ const { alert } = makeTestRig();
78
+ alert.isOpen = true;
79
+ alert.close();
80
+ expect(alert.hasBeenClosed).toEqual(true);
81
+ });
76
82
  });
77
83
  //# sourceMappingURL=Alert.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.test.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Alert.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { AlertDialogEntity, DialogAlertDTO, alertDialogType } from \"./Alert\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"dialog1\");\r\n const data: DialogAlertDTO = {\r\n buttonLabel: \"button label\",\r\n message: \"a message\",\r\n onClose: jest.fn(),\r\n title: \"a title\",\r\n preventOutsideDismiss: true\r\n };\r\n\r\n const alert = new AlertDialogEntity(data, ao);\r\n const observer = jest.fn();\r\n alert.addChangeObserver(observer);\r\n\r\n return { alert, observer, data, appObjects };\r\n}\r\n\r\ndescribe(\"Alert Dialog\", () => {\r\n it(\"Sets the open to false when close is called\", () => {\r\n const { alert } = makeTestRig();\r\n alert.isOpen = true;\r\n\r\n alert.close();\r\n\r\n expect(alert.isOpen).toEqual(false);\r\n });\r\n\r\n it(\"Calls the onClose when closed\", () => {\r\n const { alert, data } = makeTestRig();\r\n\r\n alert.close();\r\n\r\n expect(data.onClose).toBeCalled();\r\n });\r\n\r\n it(\"Applies the data\", () => {\r\n const { alert, data } = makeTestRig();\r\n\r\n expect(alert.message).toEqual(data.message);\r\n expect(alert.buttonLabel).toEqual(data.buttonLabel);\r\n expect(alert.title).toEqual(data.title);\r\n expect(alert.preventOutsideDismiss).toEqual(data.preventOutsideDismiss);\r\n });\r\n\r\n it(\"Sets the dialog type\", () => {\r\n const { alert } = makeTestRig();\r\n\r\n expect(alert.dialogType).toEqual(alertDialogType);\r\n });\r\n\r\n it(\"Notifies when the is open flag changes\", () => {\r\n const { alert, observer } = makeTestRig();\r\n\r\n alert.isOpen = true;\r\n\r\n observer.mockClear();\r\n\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n\r\n expect(observer).not.toBeCalled();\r\n\r\n alert.isOpen = false;\r\n alert.isOpen = false;\r\n alert.isOpen = false;\r\n\r\n expect(observer).toBeCalledTimes(1);\r\n\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n\r\n expect(observer).toBeCalledTimes(2);\r\n });\r\n\r\n it(\"Warns if it cannot find the app object by ID when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n AlertDialogEntity.get(\"unknownID\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Warns if the App Object does not have the UC when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n appObjects.getOrCreate(\"anAppObject\");\r\n AlertDialogEntity.get(\"anAppObject\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Returns the UC when getting\", () => {\r\n const { appObjects, alert } = makeTestRig();\r\n\r\n const returnedUC = AlertDialogEntity.get(\"dialog1\", appObjects);\r\n\r\n expect(returnedUC).toEqual(alert);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"Alert.test.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Alert.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { AlertDialogEntity, DialogAlertDTO, alertDialogType } from \"./Alert\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"dialog1\");\r\n const data: DialogAlertDTO = {\r\n buttonLabel: \"button label\",\r\n message: \"a message\",\r\n onClose: jest.fn(),\r\n title: \"a title\",\r\n preventOutsideDismiss: true\r\n };\r\n\r\n const alert = new AlertDialogEntity(data, ao);\r\n const observer = jest.fn();\r\n alert.addChangeObserver(observer);\r\n\r\n return { alert, observer, data, appObjects };\r\n}\r\n\r\ndescribe(\"Alert Dialog\", () => {\r\n it(\"Sets the open to false when close is called\", () => {\r\n const { alert } = makeTestRig();\r\n alert.isOpen = true;\r\n\r\n alert.close();\r\n\r\n expect(alert.isOpen).toEqual(false);\r\n });\r\n\r\n it(\"Calls the onClose when closed\", () => {\r\n const { alert, data } = makeTestRig();\r\n\r\n alert.close();\r\n\r\n expect(data.onClose).toBeCalled();\r\n });\r\n\r\n it(\"Applies the data\", () => {\r\n const { alert, data } = makeTestRig();\r\n\r\n expect(alert.message).toEqual(data.message);\r\n expect(alert.buttonLabel).toEqual(data.buttonLabel);\r\n expect(alert.title).toEqual(data.title);\r\n expect(alert.preventOutsideDismiss).toEqual(data.preventOutsideDismiss);\r\n });\r\n\r\n it(\"Sets the dialog type\", () => {\r\n const { alert } = makeTestRig();\r\n\r\n expect(alert.dialogType).toEqual(alertDialogType);\r\n });\r\n\r\n it(\"Notifies when the is open flag changes\", () => {\r\n const { alert, observer } = makeTestRig();\r\n\r\n alert.isOpen = true;\r\n\r\n observer.mockClear();\r\n\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n\r\n expect(observer).not.toBeCalled();\r\n\r\n alert.isOpen = false;\r\n alert.isOpen = false;\r\n alert.isOpen = false;\r\n\r\n expect(observer).toBeCalledTimes(1);\r\n\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n alert.isOpen = true;\r\n\r\n expect(observer).toBeCalledTimes(2);\r\n });\r\n\r\n it(\"Warns if it cannot find the app object by ID when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n AlertDialogEntity.get(\"unknownID\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Warns if the App Object does not have the UC when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n appObjects.getOrCreate(\"anAppObject\");\r\n AlertDialogEntity.get(\"anAppObject\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Returns the UC when getting\", () => {\r\n const { appObjects, alert } = makeTestRig();\r\n\r\n const returnedUC = AlertDialogEntity.get(\"dialog1\", appObjects);\r\n\r\n expect(returnedUC).toEqual(alert);\r\n });\r\n\r\n it(\"Sets hasBeenClosed to true when close is called\", () => {\r\n const { alert } = makeTestRig();\r\n alert.isOpen = true;\r\n alert.close();\r\n expect(alert.hasBeenClosed).toEqual(true);\r\n });\r\n});\r\n"]}
@@ -25,13 +25,16 @@ export class ConfirmDialogEntity extends Dialog {
25
25
  super(appObject, ConfirmDialogEntity.type);
26
26
  this.dialogType = confirmDialogType;
27
27
  this.preventOutsideDismiss = true;
28
+ this.hasBeenClosed = false;
28
29
  this.cancel = () => {
30
+ this.hasBeenClosed = true;
29
31
  this.isOpen = false;
30
32
  if (this.postCancel) {
31
33
  this.postCancel();
32
34
  }
33
35
  };
34
36
  this.confirm = () => {
37
+ this.hasBeenClosed = true;
35
38
  this.isOpen = false;
36
39
  if (this.postConfirm) {
37
40
  this.postConfirm();
@@ -1 +1 @@
1
- {"version":3,"file":"Confirm.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAWvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C,MAAM,OAAO,mBAAoB,SAAQ,MAAM;IAG7C,MAAM,CAAC,GAAG,CACR,OAAe,EACf,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,yBAAyB,EACzB,2BAA2B,CAC5B,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,mBAAmB,CAAC,IAAI,CACzB,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,aAAa,CACtB,yBAAyB,EACzB,8CAA8C,CAC/C,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IA0BD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,GAAY;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,YAAY,IAAsB,EAAE,SAAoB;QACtD,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAhCpC,eAAU,GAAG,iBAAiB,CAAC;QAK/B,0BAAqB,GAAG,IAAI,CAAC;QAGtC,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAGF,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEM,YAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAWhE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IACpC,CAAC;;AArEM,wBAAI,GAAG,qBAAqB,AAAxB,CAAyB","sourcesContent":["import { MemoizedBoolean } from \"@vived/core\";\r\nimport { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { Dialog } from \"./DialogQueue\";\r\n\r\nexport interface DialogConfirmDTO {\r\n message: string;\r\n title: string;\r\n confirmButtonLabel: string;\r\n cancelButtonLabel: string;\r\n onCancel?: () => void;\r\n onConfirm?: () => void;\r\n}\r\n\r\nexport const confirmDialogType = \"CONFIRM\";\r\n\r\nexport class ConfirmDialogEntity extends Dialog {\r\n static type = \"ConfirmDialogEntity\";\r\n\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): ConfirmDialogEntity | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"ConfirmDialogEntity.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<ConfirmDialogEntity>(\r\n ConfirmDialogEntity.type\r\n );\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"ConfirmDialogEntity.get\",\r\n \"App Object does not have ConfirmDialogEntity\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n\r\n readonly dialogType = confirmDialogType;\r\n readonly title: string;\r\n readonly message: string;\r\n readonly confirmButtonLabel: string;\r\n readonly cancelButtonLabel: string;\r\n readonly preventOutsideDismiss = true;\r\n\r\n private postCancel?: () => void;\r\n cancel = () => {\r\n this.isOpen = false;\r\n if (this.postCancel) {\r\n this.postCancel();\r\n }\r\n };\r\n\r\n private postConfirm?: () => void;\r\n confirm = () => {\r\n this.isOpen = false;\r\n if (this.postConfirm) {\r\n this.postConfirm();\r\n }\r\n };\r\n\r\n private _isOpen = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isOpen(): boolean {\r\n return this._isOpen.val;\r\n }\r\n set isOpen(val: boolean) {\r\n this._isOpen.val = val;\r\n }\r\n\r\n constructor(data: DialogConfirmDTO, appObject: AppObject) {\r\n super(appObject, ConfirmDialogEntity.type);\r\n\r\n this.confirmButtonLabel = data.confirmButtonLabel;\r\n this.cancelButtonLabel = data.cancelButtonLabel;\r\n this.message = data.message;\r\n this.title = data.title;\r\n this.postCancel = data.onCancel;\r\n this.postConfirm = data.onConfirm;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Confirm.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAWvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C,MAAM,OAAO,mBAAoB,SAAQ,MAAM;IAG7C,MAAM,CAAC,GAAG,CACR,OAAe,EACf,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,yBAAyB,EACzB,2BAA2B,CAC5B,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,mBAAmB,CAAC,IAAI,CACzB,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,aAAa,CACtB,yBAAyB,EACzB,8CAA8C,CAC/C,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IA8BD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,GAAY;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,YAAY,IAAsB,EAAE,SAAoB;QACtD,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QApCpC,eAAU,GAAG,iBAAiB,CAAC;QAK/B,0BAAqB,GAAG,IAAI,CAAC;QACtC,kBAAa,GAAY,KAAK,CAAC;QAG/B,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAGF,YAAO,GAAG,GAAG,EAAE;YACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEM,YAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAWhE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IACpC,CAAC;;AAzEM,wBAAI,GAAG,qBAAqB,AAAxB,CAAyB","sourcesContent":["import { MemoizedBoolean } from \"@vived/core\";\r\nimport { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { Dialog } from \"./DialogQueue\";\r\n\r\nexport interface DialogConfirmDTO {\r\n message: string;\r\n title: string;\r\n confirmButtonLabel: string;\r\n cancelButtonLabel: string;\r\n onCancel?: () => void;\r\n onConfirm?: () => void;\r\n}\r\n\r\nexport const confirmDialogType = \"CONFIRM\";\r\n\r\nexport class ConfirmDialogEntity extends Dialog {\r\n static type = \"ConfirmDialogEntity\";\r\n\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): ConfirmDialogEntity | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"ConfirmDialogEntity.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<ConfirmDialogEntity>(\r\n ConfirmDialogEntity.type\r\n );\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"ConfirmDialogEntity.get\",\r\n \"App Object does not have ConfirmDialogEntity\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n\r\n readonly dialogType = confirmDialogType;\r\n readonly title: string;\r\n readonly message: string;\r\n readonly confirmButtonLabel: string;\r\n readonly cancelButtonLabel: string;\r\n readonly preventOutsideDismiss = true;\r\n hasBeenClosed: boolean = false;\r\n\r\n private postCancel?: () => void;\r\n cancel = () => {\r\n this.hasBeenClosed = true;\r\n this.isOpen = false;\r\n if (this.postCancel) {\r\n this.postCancel();\r\n }\r\n };\r\n\r\n private postConfirm?: () => void;\r\n confirm = () => {\r\n this.hasBeenClosed = true;\r\n this.isOpen = false;\r\n \r\n if (this.postConfirm) {\r\n this.postConfirm();\r\n }\r\n };\r\n\r\n private _isOpen = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isOpen(): boolean {\r\n return this._isOpen.val;\r\n }\r\n set isOpen(val: boolean) {\r\n this._isOpen.val = val;\r\n }\r\n\r\n constructor(data: DialogConfirmDTO, appObject: AppObject) {\r\n super(appObject, ConfirmDialogEntity.type);\r\n\r\n this.confirmButtonLabel = data.confirmButtonLabel;\r\n this.cancelButtonLabel = data.cancelButtonLabel;\r\n this.message = data.message;\r\n this.title = data.title;\r\n this.postCancel = data.onCancel;\r\n this.postConfirm = data.onConfirm;\r\n }\r\n}\r\n"]}
@@ -89,5 +89,17 @@ describe("Alert Dialog", () => {
89
89
  const returnedUC = ConfirmDialogEntity.get("dialog1", appObjects);
90
90
  expect(returnedUC).toEqual(dialog);
91
91
  });
92
+ it("Sets hasBeenClosed to true when cancel is called", () => {
93
+ const { dialog } = makeTestRig();
94
+ dialog.isOpen = true;
95
+ dialog.cancel();
96
+ expect(dialog.hasBeenClosed).toEqual(true);
97
+ });
98
+ it("Sets hasBeenClosed to true when confirm is called", () => {
99
+ const { dialog } = makeTestRig();
100
+ dialog.isOpen = true;
101
+ dialog.confirm();
102
+ expect(dialog.hasBeenClosed).toEqual(true);
103
+ });
92
104
  });
93
105
  //# sourceMappingURL=Confirm.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Confirm.test.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Confirm.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n confirmDialogType,\r\n DialogConfirmDTO,\r\n ConfirmDialogEntity\r\n} from \"./Confirm\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"dialog1\");\r\n\r\n const data: DialogConfirmDTO = {\r\n confirmButtonLabel: \"confirm label\",\r\n cancelButtonLabel: \"cancel label\",\r\n message: \"a message\",\r\n onCancel: jest.fn(),\r\n onConfirm: jest.fn(),\r\n title: \"a title\"\r\n };\r\n\r\n const dialog = new ConfirmDialogEntity(data, ao);\r\n const observer = jest.fn();\r\n dialog.addChangeObserver(observer);\r\n\r\n return { dialog, observer, data, appObjects };\r\n}\r\n\r\ndescribe(\"Alert Dialog\", () => {\r\n it(\"Sets the open to false when cancel is called\", () => {\r\n const { dialog } = makeTestRig();\r\n dialog.isOpen = true;\r\n dialog.cancel();\r\n\r\n expect(dialog.isOpen).toEqual(false);\r\n });\r\n\r\n it(\"Calls the onCancel when cancelled\", () => {\r\n const { dialog, data } = makeTestRig();\r\n\r\n dialog.cancel();\r\n\r\n expect(data.onCancel).toBeCalled();\r\n });\r\n\r\n it(\"Sets the open to false when accept is called\", () => {\r\n const { dialog } = makeTestRig();\r\n\r\n dialog.isOpen = true;\r\n dialog.confirm();\r\n\r\n expect(dialog.isOpen).toEqual(false);\r\n });\r\n\r\n it(\"Calls the onAccept when accepted\", () => {\r\n const { dialog, data } = makeTestRig();\r\n\r\n dialog.confirm();\r\n\r\n expect(data.onConfirm).toBeCalled();\r\n });\r\n\r\n it(\"Applies the data\", () => {\r\n const { dialog, data } = makeTestRig();\r\n\r\n expect(dialog.message).toEqual(data.message);\r\n expect(dialog.confirmButtonLabel).toEqual(data.confirmButtonLabel);\r\n expect(dialog.cancelButtonLabel).toEqual(data.cancelButtonLabel);\r\n expect(dialog.title).toEqual(data.title);\r\n });\r\n\r\n it(\"Sets the dialog type\", () => {\r\n const { dialog } = makeTestRig();\r\n\r\n expect(dialog.dialogType).toEqual(confirmDialogType);\r\n });\r\n\r\n it(\"Disable outside dismiss\", () => {\r\n const { dialog } = makeTestRig();\r\n\r\n expect(dialog.preventOutsideDismiss).toEqual(true);\r\n });\r\n\r\n it(\"Notifies when the is open flag changes\", () => {\r\n const { dialog, observer } = makeTestRig();\r\n\r\n dialog.isOpen = true;\r\n\r\n observer.mockClear();\r\n\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n\r\n expect(observer).not.toBeCalled();\r\n\r\n dialog.isOpen = false;\r\n dialog.isOpen = false;\r\n dialog.isOpen = false;\r\n\r\n expect(observer).toBeCalledTimes(1);\r\n\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n\r\n expect(observer).toBeCalledTimes(2);\r\n });\r\n\r\n it(\"Warns if it cannot find the app object by ID when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n ConfirmDialogEntity.get(\"unknownID\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Warns if the App Object does not have the UC when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n appObjects.getOrCreate(\"anAppObject\");\r\n ConfirmDialogEntity.get(\"anAppObject\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Returns the UC when getting\", () => {\r\n const { appObjects, dialog } = makeTestRig();\r\n\r\n const returnedUC = ConfirmDialogEntity.get(\"dialog1\", appObjects);\r\n\r\n expect(returnedUC).toEqual(dialog);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"Confirm.test.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/Confirm.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n confirmDialogType,\r\n DialogConfirmDTO,\r\n ConfirmDialogEntity\r\n} from \"./Confirm\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"dialog1\");\r\n\r\n const data: DialogConfirmDTO = {\r\n confirmButtonLabel: \"confirm label\",\r\n cancelButtonLabel: \"cancel label\",\r\n message: \"a message\",\r\n onCancel: jest.fn(),\r\n onConfirm: jest.fn(),\r\n title: \"a title\"\r\n };\r\n\r\n const dialog = new ConfirmDialogEntity(data, ao);\r\n const observer = jest.fn();\r\n dialog.addChangeObserver(observer);\r\n\r\n return { dialog, observer, data, appObjects };\r\n}\r\n\r\ndescribe(\"Alert Dialog\", () => {\r\n it(\"Sets the open to false when cancel is called\", () => {\r\n const { dialog } = makeTestRig();\r\n dialog.isOpen = true;\r\n dialog.cancel();\r\n\r\n expect(dialog.isOpen).toEqual(false);\r\n });\r\n\r\n it(\"Calls the onCancel when cancelled\", () => {\r\n const { dialog, data } = makeTestRig();\r\n\r\n dialog.cancel();\r\n\r\n expect(data.onCancel).toBeCalled();\r\n });\r\n\r\n it(\"Sets the open to false when accept is called\", () => {\r\n const { dialog } = makeTestRig();\r\n\r\n dialog.isOpen = true;\r\n dialog.confirm();\r\n\r\n expect(dialog.isOpen).toEqual(false);\r\n });\r\n\r\n it(\"Calls the onAccept when accepted\", () => {\r\n const { dialog, data } = makeTestRig();\r\n\r\n dialog.confirm();\r\n\r\n expect(data.onConfirm).toBeCalled();\r\n });\r\n\r\n it(\"Applies the data\", () => {\r\n const { dialog, data } = makeTestRig();\r\n\r\n expect(dialog.message).toEqual(data.message);\r\n expect(dialog.confirmButtonLabel).toEqual(data.confirmButtonLabel);\r\n expect(dialog.cancelButtonLabel).toEqual(data.cancelButtonLabel);\r\n expect(dialog.title).toEqual(data.title);\r\n });\r\n\r\n it(\"Sets the dialog type\", () => {\r\n const { dialog } = makeTestRig();\r\n\r\n expect(dialog.dialogType).toEqual(confirmDialogType);\r\n });\r\n\r\n it(\"Disable outside dismiss\", () => {\r\n const { dialog } = makeTestRig();\r\n\r\n expect(dialog.preventOutsideDismiss).toEqual(true);\r\n });\r\n\r\n it(\"Notifies when the is open flag changes\", () => {\r\n const { dialog, observer } = makeTestRig();\r\n\r\n dialog.isOpen = true;\r\n\r\n observer.mockClear();\r\n\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n\r\n expect(observer).not.toBeCalled();\r\n\r\n dialog.isOpen = false;\r\n dialog.isOpen = false;\r\n dialog.isOpen = false;\r\n\r\n expect(observer).toBeCalledTimes(1);\r\n\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n dialog.isOpen = true;\r\n\r\n expect(observer).toBeCalledTimes(2);\r\n });\r\n\r\n it(\"Warns if it cannot find the app object by ID when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n ConfirmDialogEntity.get(\"unknownID\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Warns if the App Object does not have the UC when getting\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n appObjects.getOrCreate(\"anAppObject\");\r\n ConfirmDialogEntity.get(\"anAppObject\", appObjects);\r\n\r\n expect(appObjects.submitWarning).toBeCalled();\r\n });\r\n\r\n it(\"Returns the UC when getting\", () => {\r\n const { appObjects, dialog } = makeTestRig();\r\n\r\n const returnedUC = ConfirmDialogEntity.get(\"dialog1\", appObjects);\r\n\r\n expect(returnedUC).toEqual(dialog);\r\n });\r\n\r\n it(\"Sets hasBeenClosed to true when cancel is called\", () => {\r\n const { dialog } = makeTestRig();\r\n dialog.isOpen = true;\r\n dialog.cancel();\r\n expect(dialog.hasBeenClosed).toEqual(true);\r\n });\r\n\r\n it(\"Sets hasBeenClosed to true when confirm is called\", () => {\r\n const { dialog } = makeTestRig();\r\n dialog.isOpen = true;\r\n dialog.confirm();\r\n expect(dialog.hasBeenClosed).toEqual(true);\r\n });\r\n});\r\n"]}
@@ -1,4 +1,4 @@
1
- import { getSingletonComponent, AppObjectEntity } from "@vived/core";
1
+ import { AppObjectEntity, getSingletonComponent } from "@vived/core";
2
2
  export class Dialog extends AppObjectEntity {
3
3
  }
4
4
  export class DialogQueue extends AppObjectEntity {
@@ -26,17 +26,30 @@ class DialogRepoImp extends DialogQueue {
26
26
  this.notifyOnChange();
27
27
  };
28
28
  this.activeDialogHasClosed = () => {
29
- const activeDialog = this.activeDialog;
30
- if (activeDialog !== null) {
29
+ const currentActiveDialog = this.activeDialog;
30
+ if (currentActiveDialog !== null) {
31
+ currentActiveDialog.removeChangeObserver(this.notifyOnChange);
32
+ this.filterOutClosedDialogs();
31
33
  this.dialogQueue.splice(0, 1);
32
34
  const newActiveDialog = this.activeDialog;
33
35
  if (newActiveDialog !== null) {
34
36
  newActiveDialog.isOpen = true;
35
37
  }
36
- activeDialog.removeChangeObserver(this.notifyOnChange);
37
38
  this.notifyOnChange();
38
39
  }
39
40
  };
41
+ this.filterOutClosedDialogs = () => {
42
+ const dialogsToKeep = [];
43
+ this.dialogQueue.forEach((dialog) => {
44
+ if (!dialog.hasBeenClosed) {
45
+ dialogsToKeep.push(dialog);
46
+ }
47
+ else {
48
+ dialog.removeChangeObserver(this.notifyOnChange);
49
+ }
50
+ });
51
+ this.dialogQueue = dialogsToKeep;
52
+ };
40
53
  this.appObjects.registerSingleton(this);
41
54
  }
42
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DialogQueue.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/DialogQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,eAAe,EAEhB,MAAM,aAAa,CAAC;AAUrB,MAAM,OAAgB,MAAO,SAAQ,eAAe;CAInD;AAED,MAAM,OAAgB,WAAY,SAAQ,eAAe;IAOvD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAc,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;;AARM,gBAAI,GAAG,aAAa,CAAC;AAW9B,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,WAAW;IAGrC,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;IA8BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAnC7B,gBAAW,GAAa,EAAE,CAAC;QAMnC,iBAAY,GAAG,CAAC,MAAc,EAAQ,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,0BAAqB,GAAG,GAAS,EAAE;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE9B,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC1C,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;oBAC7B,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;gBAChC,CAAC;gBAED,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { DialogAlertDTO, AlertDialogEntity } from \"./Alert\";\r\nimport { DialogConfirmDTO, ConfirmDialogEntity } from \"./Confirm\";\r\nimport {\r\n DialogMarkDownEditorDTO,\r\n MarkDownEditorDialogEntity\r\n} from \"./MarkDownEditor\";\r\nimport { SelectModelDialogEntity } from \"./SelectModel\";\r\nimport { DialogSpinnerDTO, SpinnerDialogEntity } from \"./Spinner\";\r\n\r\nexport abstract class Dialog extends AppObjectEntity {\r\n abstract dialogType: string;\r\n abstract preventOutsideDismiss: boolean;\r\n abstract isOpen: boolean;\r\n}\r\n\r\nexport abstract class DialogQueue extends AppObjectEntity {\r\n static type = \"DialogQueue\";\r\n\r\n abstract get activeDialog(): Dialog | null;\r\n abstract submitDialog(dialog: Dialog): void;\r\n abstract activeDialogHasClosed(): void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<DialogQueue>(DialogQueue.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeDialogQueue(appObject: AppObject): DialogQueue {\r\n return new DialogRepoImp(appObject);\r\n}\r\n\r\nclass DialogRepoImp extends DialogQueue {\r\n private dialogQueue: Dialog[] = [];\r\n\r\n get activeDialog(): Dialog | null {\r\n return this.dialogQueue.length > 0 ? this.dialogQueue[0] : null;\r\n }\r\n\r\n submitDialog = (dialog: Dialog): void => {\r\n this.dialogQueue.push(dialog);\r\n\r\n if (this.activeDialog === dialog) {\r\n dialog.isOpen = true;\r\n }\r\n\r\n dialog.addChangeObserver(this.notifyOnChange);\r\n\r\n this.notifyOnChange();\r\n };\r\n\r\n activeDialogHasClosed = (): void => {\r\n const activeDialog = this.activeDialog;\r\n if (activeDialog !== null) {\r\n this.dialogQueue.splice(0, 1);\r\n\r\n const newActiveDialog = this.activeDialog;\r\n if (newActiveDialog !== null) {\r\n newActiveDialog.isOpen = true;\r\n }\r\n\r\n activeDialog.removeChangeObserver(this.notifyOnChange);\r\n\r\n this.notifyOnChange();\r\n }\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, DialogQueue.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DialogQueue.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/DialogQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAgB,MAAO,SAAQ,eAAe;CAKnD;AAED,MAAM,OAAgB,WAAY,SAAQ,eAAe;IAOvD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAc,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;;AARM,gBAAI,GAAG,aAAa,CAAC;AAW9B,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,WAAW;IAGrC,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAlD7B,gBAAW,GAAa,EAAE,CAAC;QAMnC,iBAAY,GAAG,CAAC,MAAc,EAAQ,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,0BAAqB,GAAG,GAAS,EAAE;YACjC,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9C,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;gBACjC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE9D,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAE9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC1C,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;oBAC7B,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;gBAChC,CAAC;gBAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEM,2BAAsB,GAAG,GAAG,EAAE;YACpC,MAAM,aAAa,GAAa,EAAE,CAAC;YAEnC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC1B,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;QACnC,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\n\r\nexport abstract class Dialog extends AppObjectEntity {\r\n abstract dialogType: string;\r\n abstract preventOutsideDismiss: boolean;\r\n abstract isOpen: boolean;\r\n abstract hasBeenClosed: boolean;\r\n}\r\n\r\nexport abstract class DialogQueue extends AppObjectEntity {\r\n static type = \"DialogQueue\";\r\n\r\n abstract get activeDialog(): Dialog | null;\r\n abstract submitDialog(dialog: Dialog): void;\r\n abstract activeDialogHasClosed(): void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<DialogQueue>(DialogQueue.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeDialogQueue(appObject: AppObject): DialogQueue {\r\n return new DialogRepoImp(appObject);\r\n}\r\n\r\nclass DialogRepoImp extends DialogQueue {\r\n private dialogQueue: Dialog[] = [];\r\n\r\n get activeDialog(): Dialog | null {\r\n return this.dialogQueue.length > 0 ? this.dialogQueue[0] : null;\r\n }\r\n\r\n submitDialog = (dialog: Dialog): void => {\r\n this.dialogQueue.push(dialog);\r\n\r\n if (this.activeDialog === dialog) {\r\n dialog.isOpen = true;\r\n }\r\n\r\n dialog.addChangeObserver(this.notifyOnChange);\r\n\r\n this.notifyOnChange();\r\n };\r\n\r\n activeDialogHasClosed = (): void => {\r\n const currentActiveDialog = this.activeDialog;\r\n if (currentActiveDialog !== null) {\r\n currentActiveDialog.removeChangeObserver(this.notifyOnChange);\r\n\r\n this.filterOutClosedDialogs();\r\n\r\n this.dialogQueue.splice(0, 1);\r\n const newActiveDialog = this.activeDialog;\r\n if (newActiveDialog !== null) {\r\n newActiveDialog.isOpen = true;\r\n }\r\n\r\n this.notifyOnChange();\r\n }\r\n };\r\n\r\n private filterOutClosedDialogs = () => {\r\n const dialogsToKeep: Dialog[] = [];\r\n\r\n this.dialogQueue.forEach((dialog) => {\r\n if (!dialog.hasBeenClosed) {\r\n dialogsToKeep.push(dialog);\r\n } else {\r\n dialog.removeChangeObserver(this.notifyOnChange);\r\n }\r\n });\r\n\r\n this.dialogQueue = dialogsToKeep;\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, DialogQueue.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -132,5 +132,26 @@ describe("Dialog Repo Entity", () => {
132
132
  firstAlert.notifyOnChange();
133
133
  expect(observer).not.toBeCalled();
134
134
  });
135
+ it("Filters out closed dialogs when dismissing active dialog", () => {
136
+ const { dialogRepo, appObjects, observer } = makeTestRig();
137
+ const firstAlert = new AlertDialogEntity({
138
+ buttonLabel: "button1",
139
+ message: "message1",
140
+ title: "title1"
141
+ }, appObjects.getOrCreate("alert1"));
142
+ dialogRepo.submitDialog(firstAlert);
143
+ const secondAlert = new AlertDialogEntity({
144
+ buttonLabel: "button2",
145
+ message: "message2",
146
+ title: "title2"
147
+ }, appObjects.getOrCreate("alert2"));
148
+ dialogRepo.submitDialog(secondAlert);
149
+ // Mark the second alert as closed before dismissing the active dialog.
150
+ secondAlert.hasBeenClosed = true;
151
+ // Dismiss the active (first) dialog.
152
+ dialogRepo.activeDialogHasClosed();
153
+ // The closed secondAlert should be filtered out and no active dialog remains.
154
+ expect(dialogRepo.activeDialog).toBeNull();
155
+ });
135
156
  });
136
157
  //# sourceMappingURL=DialogQueue.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogQueue.test.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/DialogQueue.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { AlertDialogEntity } from \"./Alert\";\r\nimport { DialogQueue, makeDialogQueue } from \"./DialogQueue\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"Queue\");\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const dialogRepo = makeDialogQueue(ao);\r\n const observer = jest.fn();\r\n dialogRepo.addChangeObserver(observer);\r\n\r\n return { dialogRepo, observer, appObjects, registerSingletonSpy };\r\n}\r\n\r\ndescribe(\"Dialog Repo Entity\", () => {\r\n it(\"Gets the singleton\", () => {\r\n const { dialogRepo, appObjects } = makeTestRig();\r\n\r\n expect(DialogQueue.get(appObjects)).toEqual(dialogRepo);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { dialogRepo, registerSingletonSpy } = makeTestRig();\r\n\r\n expect(registerSingletonSpy).toBeCalledWith(dialogRepo);\r\n });\r\n\r\n it(\"Allows a dialog to be submitted\", () => {\r\n const { dialogRepo, appObjects } = makeTestRig();\r\n\r\n const alert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert\")\r\n );\r\n dialogRepo.submitDialog(alert);\r\n\r\n expect(dialogRepo.activeDialog).toEqual(alert);\r\n expect(alert.isOpen).toEqual(true);\r\n });\r\n\r\n it(\"Calls the show when a dialog is added and it is the active one\", () => {\r\n const { dialogRepo, observer, appObjects } = makeTestRig();\r\n const alert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert\")\r\n );\r\n dialogRepo.submitDialog(alert);\r\n\r\n expect(dialogRepo.activeDialog).toEqual(alert);\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Dismisses the active dialog\", () => {\r\n const { dialogRepo, observer, appObjects } = makeTestRig();\r\n const alert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert\")\r\n );\r\n dialogRepo.submitDialog(alert);\r\n\r\n observer.mockClear();\r\n expect(dialogRepo.activeDialog).toEqual(alert);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(observer).toBeCalled();\r\n expect(dialogRepo.activeDialog).toBeNull();\r\n });\r\n\r\n it(\"Does not notify if there is no dialog to dismiss\", () => {\r\n const { dialogRepo, observer } = makeTestRig();\r\n expect(dialogRepo.activeDialog).toBeNull();\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Sets the next dialog in the queue as active\", () => {\r\n const { dialogRepo, observer, appObjects } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n const secondAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert2\")\r\n );\r\n dialogRepo.submitDialog(secondAlert);\r\n\r\n observer.mockClear();\r\n\r\n expect(dialogRepo.activeDialog).toEqual(firstAlert);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(dialogRepo.activeDialog).toEqual(secondAlert);\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Sets the open when it is time to show the second dialog\", () => {\r\n const { dialogRepo, appObjects } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n const secondAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert2\")\r\n );\r\n dialogRepo.submitDialog(secondAlert);\r\n\r\n expect(secondAlert.isOpen).toEqual(false);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(secondAlert.isOpen).toEqual(true);\r\n });\r\n\r\n it(\"Forwards notifications from the dialogs in the queue\", () => {\r\n const { dialogRepo, appObjects, observer } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n const secondAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert2\")\r\n );\r\n dialogRepo.submitDialog(secondAlert);\r\n\r\n observer.mockClear();\r\n\r\n firstAlert.notifyOnChange();\r\n expect(observer).toBeCalledTimes(1);\r\n\r\n secondAlert.notifyOnChange();\r\n expect(observer).toBeCalledTimes(2);\r\n });\r\n\r\n it(\"Stops forwarding when the dialog is dismissed\", () => {\r\n const { dialogRepo, appObjects, observer } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n observer.mockClear();\r\n\r\n firstAlert.notifyOnChange();\r\n expect(observer).not.toBeCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"DialogQueue.test.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/DialogQueue.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { AlertDialogEntity } from \"./Alert\";\r\nimport { DialogQueue, makeDialogQueue } from \"./DialogQueue\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"Queue\");\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const dialogRepo = makeDialogQueue(ao);\r\n const observer = jest.fn();\r\n dialogRepo.addChangeObserver(observer);\r\n\r\n return { dialogRepo, observer, appObjects, registerSingletonSpy };\r\n}\r\n\r\ndescribe(\"Dialog Repo Entity\", () => {\r\n it(\"Gets the singleton\", () => {\r\n const { dialogRepo, appObjects } = makeTestRig();\r\n\r\n expect(DialogQueue.get(appObjects)).toEqual(dialogRepo);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { dialogRepo, registerSingletonSpy } = makeTestRig();\r\n\r\n expect(registerSingletonSpy).toBeCalledWith(dialogRepo);\r\n });\r\n\r\n it(\"Allows a dialog to be submitted\", () => {\r\n const { dialogRepo, appObjects } = makeTestRig();\r\n\r\n const alert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert\")\r\n );\r\n dialogRepo.submitDialog(alert);\r\n\r\n expect(dialogRepo.activeDialog).toEqual(alert);\r\n expect(alert.isOpen).toEqual(true);\r\n });\r\n\r\n it(\"Calls the show when a dialog is added and it is the active one\", () => {\r\n const { dialogRepo, observer, appObjects } = makeTestRig();\r\n const alert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert\")\r\n );\r\n dialogRepo.submitDialog(alert);\r\n\r\n expect(dialogRepo.activeDialog).toEqual(alert);\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Dismisses the active dialog\", () => {\r\n const { dialogRepo, observer, appObjects } = makeTestRig();\r\n const alert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert\")\r\n );\r\n dialogRepo.submitDialog(alert);\r\n\r\n observer.mockClear();\r\n expect(dialogRepo.activeDialog).toEqual(alert);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(observer).toBeCalled();\r\n expect(dialogRepo.activeDialog).toBeNull();\r\n });\r\n\r\n it(\"Does not notify if there is no dialog to dismiss\", () => {\r\n const { dialogRepo, observer } = makeTestRig();\r\n expect(dialogRepo.activeDialog).toBeNull();\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Sets the next dialog in the queue as active\", () => {\r\n const { dialogRepo, observer, appObjects } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n const secondAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert2\")\r\n );\r\n dialogRepo.submitDialog(secondAlert);\r\n\r\n observer.mockClear();\r\n\r\n expect(dialogRepo.activeDialog).toEqual(firstAlert);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(dialogRepo.activeDialog).toEqual(secondAlert);\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Sets the open when it is time to show the second dialog\", () => {\r\n const { dialogRepo, appObjects } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n const secondAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert2\")\r\n );\r\n dialogRepo.submitDialog(secondAlert);\r\n\r\n expect(secondAlert.isOpen).toEqual(false);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n expect(secondAlert.isOpen).toEqual(true);\r\n });\r\n\r\n it(\"Forwards notifications from the dialogs in the queue\", () => {\r\n const { dialogRepo, appObjects, observer } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n const secondAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert2\")\r\n );\r\n dialogRepo.submitDialog(secondAlert);\r\n\r\n observer.mockClear();\r\n\r\n firstAlert.notifyOnChange();\r\n expect(observer).toBeCalledTimes(1);\r\n\r\n secondAlert.notifyOnChange();\r\n expect(observer).toBeCalledTimes(2);\r\n });\r\n\r\n it(\"Stops forwarding when the dialog is dismissed\", () => {\r\n const { dialogRepo, appObjects, observer } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button\",\r\n message: \"message\",\r\n title: \"title\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n observer.mockClear();\r\n\r\n firstAlert.notifyOnChange();\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Filters out closed dialogs when dismissing active dialog\", () => {\r\n const { dialogRepo, appObjects, observer } = makeTestRig();\r\n const firstAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button1\",\r\n message: \"message1\",\r\n title: \"title1\"\r\n },\r\n appObjects.getOrCreate(\"alert1\")\r\n );\r\n dialogRepo.submitDialog(firstAlert);\r\n\r\n const secondAlert = new AlertDialogEntity(\r\n {\r\n buttonLabel: \"button2\",\r\n message: \"message2\",\r\n title: \"title2\"\r\n },\r\n appObjects.getOrCreate(\"alert2\")\r\n );\r\n dialogRepo.submitDialog(secondAlert);\r\n\r\n // Mark the second alert as closed before dismissing the active dialog.\r\n secondAlert.hasBeenClosed = true;\r\n\r\n // Dismiss the active (first) dialog.\r\n dialogRepo.activeDialogHasClosed();\r\n\r\n // The closed secondAlert should be filtered out and no active dialog remains.\r\n expect(dialogRepo.activeDialog).toBeNull();\r\n });\r\n});\r\n"]}
@@ -25,10 +25,13 @@ export class MarkDownEditorDialogEntity extends Dialog {
25
25
  super(appObject, MarkDownEditorDialogEntity.type);
26
26
  this.dialogType = markDownEditorDialogType;
27
27
  this.preventOutsideDismiss = true;
28
+ this.hasBeenClosed = false;
28
29
  this.cancel = () => {
30
+ this.hasBeenClosed = true; // added setting hasBeenClosed
29
31
  this.isOpen = false;
30
32
  };
31
33
  this.confirm = (text) => {
34
+ this.hasBeenClosed = true; // added setting hasBeenClosed
32
35
  this.isOpen = false;
33
36
  this.postConfirm(text);
34
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MarkDownEditor.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/MarkDownEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAE1D,MAAM,OAAO,0BAA2B,SAAQ,MAAM;IAGpD,MAAM,CAAC,GAAG,CACR,OAAe,EACf,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,gCAAgC,EAChC,2BAA2B,CAC5B,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,0BAA0B,CAAC,IAAI,CAChC,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,aAAa,CACtB,gCAAgC,EAChC,4CAA4C,CAC7C,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAiBD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,GAAY;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,YAAY,IAA6B,EAAE,SAAoB;QAC7D,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAvB3C,eAAU,GAAG,wBAAwB,CAAC;QAEtC,0BAAqB,GAAG,IAAI,CAAC;QAEtC,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC;QAGF,YAAO,GAAG,CAAC,IAAY,EAAE,EAAE;YACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;QAEM,YAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAUhE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IACpC,CAAC;;AAvDM,+BAAI,GAAG,4BAA4B,AAA/B,CAAgC","sourcesContent":["import { AppObject, AppObjectRepo, MemoizedBoolean } from \"@vived/core\";\r\nimport { Dialog } from \"./DialogQueue\";\r\n\r\nexport interface DialogMarkDownEditorDTO {\r\n initialText: string;\r\n onConfirm: (text: string) => void;\r\n}\r\n\r\nexport const markDownEditorDialogType = \"MARKDOWN_EDITOR\";\r\n\r\nexport class MarkDownEditorDialogEntity extends Dialog {\r\n static type = \"MarkDownEditorDialogEntity\";\r\n\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): MarkDownEditorDialogEntity | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"MarkDownEditorDialogEntity.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<MarkDownEditorDialogEntity>(\r\n MarkDownEditorDialogEntity.type\r\n );\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"MarkDownEditorDialogEntity.get\",\r\n \"App Object does not have DialogAlertEntity\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n\r\n readonly dialogType = markDownEditorDialogType;\r\n readonly initialText: string;\r\n readonly preventOutsideDismiss = true;\r\n\r\n cancel = () => {\r\n this.isOpen = false;\r\n };\r\n\r\n private postConfirm: (text: string) => void;\r\n confirm = (text: string) => {\r\n this.isOpen = false;\r\n this.postConfirm(text);\r\n };\r\n\r\n private _isOpen = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isOpen(): boolean {\r\n return this._isOpen.val;\r\n }\r\n set isOpen(val: boolean) {\r\n this._isOpen.val = val;\r\n }\r\n\r\n constructor(data: DialogMarkDownEditorDTO, appObject: AppObject) {\r\n super(appObject, MarkDownEditorDialogEntity.type);\r\n this.initialText = data.initialText;\r\n this.postConfirm = data.onConfirm;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MarkDownEditor.js","sourceRoot":"","sources":["../../../../src/Dialog/Entities/MarkDownEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAE1D,MAAM,OAAO,0BAA2B,SAAQ,MAAM;IAGpD,MAAM,CAAC,GAAG,CACR,OAAe,EACf,UAAyB;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,gCAAgC,EAChC,2BAA2B,CAC5B,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAC/B,0BAA0B,CAAC,IAAI,CAChC,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,aAAa,CACtB,gCAAgC,EAChC,4CAA4C,CAC7C,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAoBD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,GAAY;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,YAAY,IAA6B,EAAE,SAAoB;QAC7D,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QA1B3C,eAAU,GAAG,wBAAwB,CAAC;QAEtC,0BAAqB,GAAG,IAAI,CAAC;QACtC,kBAAa,GAAY,KAAK,CAAC;QAE/B,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,8BAA8B;YACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC;QAGF,YAAO,GAAG,CAAC,IAAY,EAAE,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,8BAA8B;YACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;QAEM,YAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAUhE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IACpC,CAAC;;AA1DM,+BAAI,GAAG,4BAA4B,AAA/B,CAAgC","sourcesContent":["import { AppObject, AppObjectRepo, MemoizedBoolean } from \"@vived/core\";\r\nimport { Dialog } from \"./DialogQueue\";\r\n\r\nexport interface DialogMarkDownEditorDTO {\r\n initialText: string;\r\n onConfirm: (text: string) => void;\r\n}\r\n\r\nexport const markDownEditorDialogType = \"MARKDOWN_EDITOR\";\r\n\r\nexport class MarkDownEditorDialogEntity extends Dialog {\r\n static type = \"MarkDownEditorDialogEntity\";\r\n\r\n static get(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): MarkDownEditorDialogEntity | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"MarkDownEditorDialogEntity.get\",\r\n \"Unable to find app object\"\r\n );\r\n return undefined;\r\n }\r\n\r\n const uc = appObject.getComponent<MarkDownEditorDialogEntity>(\r\n MarkDownEditorDialogEntity.type\r\n );\r\n if (!uc) {\r\n appObjects.submitWarning(\r\n \"MarkDownEditorDialogEntity.get\",\r\n \"App Object does not have DialogAlertEntity\"\r\n );\r\n return undefined;\r\n }\r\n\r\n return uc;\r\n }\r\n\r\n readonly dialogType = markDownEditorDialogType;\r\n readonly initialText: string;\r\n readonly preventOutsideDismiss = true;\r\n hasBeenClosed: boolean = false;\r\n\r\n cancel = () => {\r\n this.hasBeenClosed = true; // added setting hasBeenClosed\r\n this.isOpen = false;\r\n };\r\n\r\n private postConfirm: (text: string) => void;\r\n confirm = (text: string) => {\r\n this.hasBeenClosed = true; // added setting hasBeenClosed\r\n this.isOpen = false;\r\n this.postConfirm(text);\r\n };\r\n\r\n private _isOpen = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isOpen(): boolean {\r\n return this._isOpen.val;\r\n }\r\n set isOpen(val: boolean) {\r\n this._isOpen.val = val;\r\n }\r\n\r\n constructor(data: DialogMarkDownEditorDTO, appObject: AppObject) {\r\n super(appObject, MarkDownEditorDialogEntity.type);\r\n this.initialText = data.initialText;\r\n this.postConfirm = data.onConfirm;\r\n }\r\n}\r\n"]}
@@ -77,5 +77,17 @@ describe("MarkDown Editor Dialog", () => {
77
77
  const returnedUC = MarkDownEditorDialogEntity.get("dialog1", appObjects);
78
78
  expect(returnedUC).toEqual(dialog);
79
79
  });
80
+ it("Sets hasBeenClosed to true when cancel is called", () => {
81
+ const { dialog } = makeTestRig();
82
+ dialog.isOpen = true;
83
+ dialog.cancel();
84
+ expect(dialog.hasBeenClosed).toEqual(true);
85
+ });
86
+ it("Sets hasBeenClosed to true when confirm is called", () => {
87
+ const { dialog } = makeTestRig();
88
+ dialog.isOpen = true;
89
+ dialog.confirm("MarkDown Text");
90
+ expect(dialog.hasBeenClosed).toEqual(true);
91
+ });
80
92
  });
81
93
  //# sourceMappingURL=MarkDownEditor.test.js.map