@vived/host 4.12.4 → 5.0.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 (59) hide show
  1. package/dist/cjs/AppSandbox/PMs/DevFeaturesEnabledPM.js +6 -5
  2. package/dist/cjs/AppSandbox/PMs/DevFeaturesEnabledPM.js.map +1 -1
  3. package/dist/cjs/AppSandbox/PMs/ShowInspectorPM.js +6 -5
  4. package/dist/cjs/AppSandbox/PMs/ShowInspectorPM.js.map +1 -1
  5. package/dist/cjs/AppSandbox/PMs/StartInZSpacePM.js +6 -5
  6. package/dist/cjs/AppSandbox/PMs/StartInZSpacePM.js.map +1 -1
  7. package/dist/cjs/Assets/PMs/AssetFilePM.js +4 -12
  8. package/dist/cjs/Assets/PMs/AssetFilePM.js.map +1 -1
  9. package/dist/cjs/Assets/PMs/ShowArchivedAppAssetPM.js +6 -6
  10. package/dist/cjs/Assets/PMs/ShowArchivedAppAssetPM.js.map +1 -1
  11. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js +9 -6
  12. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -1
  13. package/dist/cjs/Logger/PMs/ForwardLogsToConsolePM.js +6 -5
  14. package/dist/cjs/Logger/PMs/ForwardLogsToConsolePM.js.map +1 -1
  15. package/dist/cjs/VivedAPI/PMs/UserTokenPM.js +7 -7
  16. package/dist/cjs/VivedAPI/PMs/UserTokenPM.js.map +1 -1
  17. package/dist/cjs/ZSpaceHost/PMs/EmulateZSpacePM.js +4 -5
  18. package/dist/cjs/ZSpaceHost/PMs/EmulateZSpacePM.js.map +1 -1
  19. package/dist/cjs/ZSpaceHost/PMs/ZSpaceIsActivePM.js +4 -5
  20. package/dist/cjs/ZSpaceHost/PMs/ZSpaceIsActivePM.js.map +1 -1
  21. package/dist/esm/AppSandbox/PMs/DevFeaturesEnabledPM.js +7 -6
  22. package/dist/esm/AppSandbox/PMs/DevFeaturesEnabledPM.js.map +1 -1
  23. package/dist/esm/AppSandbox/PMs/ShowInspectorPM.js +7 -6
  24. package/dist/esm/AppSandbox/PMs/ShowInspectorPM.js.map +1 -1
  25. package/dist/esm/AppSandbox/PMs/StartInZSpacePM.js +7 -6
  26. package/dist/esm/AppSandbox/PMs/StartInZSpacePM.js.map +1 -1
  27. package/dist/esm/Assets/PMs/AssetFilePM.js +4 -12
  28. package/dist/esm/Assets/PMs/AssetFilePM.js.map +1 -1
  29. package/dist/esm/Assets/PMs/ShowArchivedAppAssetPM.js +7 -7
  30. package/dist/esm/Assets/PMs/ShowArchivedAppAssetPM.js.map +1 -1
  31. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js +10 -7
  32. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -1
  33. package/dist/esm/Logger/PMs/ForwardLogsToConsolePM.js +7 -6
  34. package/dist/esm/Logger/PMs/ForwardLogsToConsolePM.js.map +1 -1
  35. package/dist/esm/VivedAPI/PMs/UserTokenPM.js +8 -8
  36. package/dist/esm/VivedAPI/PMs/UserTokenPM.js.map +1 -1
  37. package/dist/esm/ZSpaceHost/PMs/EmulateZSpacePM.js +5 -6
  38. package/dist/esm/ZSpaceHost/PMs/EmulateZSpacePM.js.map +1 -1
  39. package/dist/esm/ZSpaceHost/PMs/ZSpaceIsActivePM.js +5 -6
  40. package/dist/esm/ZSpaceHost/PMs/ZSpaceIsActivePM.js.map +1 -1
  41. package/dist/types/AppSandbox/PMs/DevFeaturesEnabledPM.d.ts +2 -2
  42. package/dist/types/AppSandbox/PMs/DevFeaturesEnabledPM.d.ts.map +1 -1
  43. package/dist/types/AppSandbox/PMs/ShowInspectorPM.d.ts +2 -2
  44. package/dist/types/AppSandbox/PMs/ShowInspectorPM.d.ts.map +1 -1
  45. package/dist/types/AppSandbox/PMs/StartInZSpacePM.d.ts +2 -2
  46. package/dist/types/AppSandbox/PMs/StartInZSpacePM.d.ts.map +1 -1
  47. package/dist/types/Assets/PMs/ShowArchivedAppAssetPM.d.ts +2 -2
  48. package/dist/types/Assets/PMs/ShowArchivedAppAssetPM.d.ts.map +1 -1
  49. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts +2 -2
  50. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts.map +1 -1
  51. package/dist/types/Logger/PMs/ForwardLogsToConsolePM.d.ts +2 -2
  52. package/dist/types/Logger/PMs/ForwardLogsToConsolePM.d.ts.map +1 -1
  53. package/dist/types/VivedAPI/PMs/UserTokenPM.d.ts +2 -2
  54. package/dist/types/VivedAPI/PMs/UserTokenPM.d.ts.map +1 -1
  55. package/dist/types/ZSpaceHost/PMs/EmulateZSpacePM.d.ts +2 -2
  56. package/dist/types/ZSpaceHost/PMs/EmulateZSpacePM.d.ts.map +1 -1
  57. package/dist/types/ZSpaceHost/PMs/ZSpaceIsActivePM.d.ts +2 -2
  58. package/dist/types/ZSpaceHost/PMs/ZSpaceIsActivePM.d.ts.map +1 -1
  59. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
- import { getSingletonComponent, AppObjectPM } from "@vived/core";
1
+ import { getSingletonComponent, AppObjectSingletonPM } from "@vived/core";
2
2
  import { AppSandboxEntity } from "../Entities/AppSandboxEntity";
3
- export class ShowInspectorPM extends AppObjectPM {
3
+ export class ShowInspectorPM extends AppObjectSingletonPM {
4
4
  static get(appObjects) {
5
5
  return getSingletonComponent(ShowInspectorPM.type, appObjects);
6
6
  }
@@ -18,14 +18,15 @@ class ShowInspectorPMImp extends ShowInspectorPM {
18
18
  }
19
19
  constructor(appObject) {
20
20
  super(appObject, ShowInspectorPM.type);
21
- this.onEntityChange = () => {
21
+ this.defaultVM = false;
22
+ this.formVM = () => {
22
23
  if (!this.sandbox)
23
24
  return;
24
25
  this.doUpdateView(this.sandbox.showBabylonInspector);
25
26
  };
26
- this.appObjects.registerSingleton(this);
27
- this.sandbox?.addChangeObserver(this.onEntityChange);
28
- this.onEntityChange();
27
+ if (this.sandbox) {
28
+ this.observeEntity(this.sandbox);
29
+ }
29
30
  }
30
31
  }
31
32
  //# sourceMappingURL=ShowInspectorPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShowInspectorPM.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/ShowInspectorPM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,eAAgB,SAAQ,WAAoB;IAGhE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,eAAe,CAAC,IAAI,EACpB,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,oBAAI,GAAG,iBAAiB,CAAC;AAUlC,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAQD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAPzC,mBAAc,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACvD,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\r\n\r\nexport abstract class ShowInspectorPM extends AppObjectPM<boolean> {\r\n static type = \"ShowInspectorPM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ShowInspectorPM>(\r\n ShowInspectorPM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeShowInspectorPM(appObject: AppObject): ShowInspectorPM {\r\n return new ShowInspectorPMImp(appObject);\r\n}\r\n\r\nclass ShowInspectorPMImp extends ShowInspectorPM {\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n onEntityChange = () => {\r\n if (!this.sandbox) return;\r\n\r\n this.doUpdateView(this.sandbox.showBabylonInspector);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ShowInspectorPM.type);\r\n this.appObjects.registerSingleton(this);\r\n\r\n this.sandbox?.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ShowInspectorPM.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/ShowInspectorPM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,eAAgB,SAAQ,oBAA6B;IAGzE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,eAAe,CAAC,IAAI,EACpB,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,oBAAI,GAAG,iBAAiB,CAAC;AAUlC,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAhBzC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACvD,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\r\n\r\nexport abstract class ShowInspectorPM extends AppObjectSingletonPM<boolean> {\r\n static type = \"ShowInspectorPM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ShowInspectorPM>(\r\n ShowInspectorPM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeShowInspectorPM(appObject: AppObject): ShowInspectorPM {\r\n return new ShowInspectorPMImp(appObject);\r\n}\r\n\r\nclass ShowInspectorPMImp extends ShowInspectorPM {\r\n defaultVM = false;\r\n\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.sandbox) return;\r\n this.doUpdateView(this.sandbox.showBabylonInspector);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ShowInspectorPM.type);\r\n\r\n if (this.sandbox) {\r\n this.observeEntity(this.sandbox);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
- import { getSingletonComponent, AppObjectPM } from "@vived/core";
1
+ import { getSingletonComponent, AppObjectSingletonPM } from "@vived/core";
2
2
  import { AppSandboxEntity } from "../Entities/AppSandboxEntity";
3
- export class StartInZSpacePM extends AppObjectPM {
3
+ export class StartInZSpacePM extends AppObjectSingletonPM {
4
4
  static get(appObjects) {
5
5
  return getSingletonComponent(StartInZSpacePM.type, appObjects);
6
6
  }
@@ -18,14 +18,15 @@ class StartInZSpacePMImp extends StartInZSpacePM {
18
18
  }
19
19
  constructor(appObject) {
20
20
  super(appObject, StartInZSpacePM.type);
21
- this.onEntityChange = () => {
21
+ this.defaultVM = false;
22
+ this.formVM = () => {
22
23
  if (!this.sandbox)
23
24
  return;
24
25
  this.doUpdateView(this.sandbox.startInZSpace);
25
26
  };
26
- this.appObjects.registerSingleton(this);
27
- this.sandbox?.addChangeObserver(this.onEntityChange);
28
- this.onEntityChange();
27
+ if (this.sandbox) {
28
+ this.observeEntity(this.sandbox);
29
+ }
29
30
  }
30
31
  }
31
32
  //# sourceMappingURL=StartInZSpacePM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StartInZSpacePM.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/StartInZSpacePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,eAAgB,SAAQ,WAAoB;IAGhE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,eAAe,CAAC,IAAI,EACpB,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,oBAAI,GAAG,iBAAiB,CAAC;AAUlC,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAQD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAPzC,mBAAc,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\r\n\r\nexport abstract class StartInZSpacePM extends AppObjectPM<boolean> {\r\n static type = \"StartInZSpacePM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<StartInZSpacePM>(\r\n StartInZSpacePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeStartInZSpacePM(appObject: AppObject): StartInZSpacePM {\r\n return new StartInZSpacePMImp(appObject);\r\n}\r\n\r\nclass StartInZSpacePMImp extends StartInZSpacePM {\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n onEntityChange = () => {\r\n if (!this.sandbox) return;\r\n\r\n this.doUpdateView(this.sandbox.startInZSpace);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, StartInZSpacePM.type);\r\n this.appObjects.registerSingleton(this);\r\n\r\n this.sandbox?.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"StartInZSpacePM.js","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/StartInZSpacePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,OAAgB,eAAgB,SAAQ,oBAA6B;IAGzE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,eAAe,CAAC,IAAI,EACpB,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,oBAAI,GAAG,iBAAiB,CAAC;AAUlC,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAhBzC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { AppSandboxEntity } from \"../Entities/AppSandboxEntity\";\r\n\r\nexport abstract class StartInZSpacePM extends AppObjectSingletonPM<boolean> {\r\n static type = \"StartInZSpacePM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<StartInZSpacePM>(\r\n StartInZSpacePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeStartInZSpacePM(appObject: AppObject): StartInZSpacePM {\r\n return new StartInZSpacePMImp(appObject);\r\n}\r\n\r\nclass StartInZSpacePMImp extends StartInZSpacePM {\r\n defaultVM = false;\r\n\r\n private get sandbox() {\r\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.sandbox) return;\r\n this.doUpdateView(this.sandbox.startInZSpace);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, StartInZSpacePM.type);\r\n\r\n if (this.sandbox) {\r\n this.observeEntity(this.sandbox);\r\n }\r\n }\r\n}\r\n"]}
@@ -91,15 +91,6 @@ class AssetFilePMImp extends AssetFilePM {
91
91
  }
92
92
  return true;
93
93
  }
94
- /**
95
- * Cleans up resources and removes observers when the PM is disposed
96
- */
97
- dispose() {
98
- if (this.asset) {
99
- this.asset.removeChangeObserver(this.onAssetChange);
100
- }
101
- super.dispose();
102
- }
103
94
  /**
104
95
  * Creates a new AssetFilePMImp instance
105
96
  *
@@ -111,7 +102,7 @@ class AssetFilePMImp extends AssetFilePM {
111
102
  * Observer callback that updates the view model when the entity changes
112
103
  * Transforms entity data into view model format
113
104
  */
114
- this.onAssetChange = () => {
105
+ this.formVM = () => {
115
106
  if (!this.asset)
116
107
  return;
117
108
  const vm = {
@@ -122,8 +113,9 @@ class AssetFilePMImp extends AssetFilePM {
122
113
  };
123
114
  this.doUpdateView(vm);
124
115
  };
125
- this.asset?.addChangeObserver(this.onAssetChange);
126
- this.onAssetChange();
116
+ if (this.asset) {
117
+ this.observeEntity(this.asset);
118
+ }
127
119
  }
128
120
  }
129
121
  //# sourceMappingURL=AssetFilePM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssetFilePM.js","sourceRoot":"","sources":["../../../../src/Assets/PMs/AssetFilePM.ts"],"names":[],"mappings":"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","sourcesContent":["// filepath: c:\\Users\\amosp\\Documents\\WebGL\\vivedlearning_host\\src\\Assets\\PMs\\AssetFilePM.ts\r\nimport { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\r\nimport { AssetEntity } from \"../Entities/AssetEntity\";\r\n\r\n/**\r\n * View Model for Asset file information\r\n * Represents the data needed by the view to display asset file status\r\n */\r\nexport interface AssetFileVM {\r\n /** URL to the asset's file blob for direct access */\r\n blobURL: string | undefined;\r\n /** Whether the asset file is currently being fetched */\r\n isFetchingFile: boolean;\r\n /** Whether the asset file has been successfully fetched */\r\n fileHasBeenFetched: boolean;\r\n /** Error that occurred during file fetching, if any */\r\n fetchError: Error | undefined;\r\n}\r\n\r\n/**\r\n * Default empty AssetFileVM for initialization\r\n */\r\nexport const defaultAssetFileVM: AssetFileVM = {\r\n blobURL: undefined,\r\n isFetchingFile: false,\r\n fileHasBeenFetched: false,\r\n fetchError: undefined\r\n};\r\n\r\n/**\r\n * Presentation Manager for Asset file status\r\n *\r\n * The AssetFilePM is responsible for:\r\n * - Converting the file-related properties of AssetEntity into a view-friendly format (AssetFileVM)\r\n * - Notifying the view when asset file status changes\r\n * - Providing comparison utilities for view models\r\n *\r\n * Usage:\r\n * 1. Retrieve an instance with `AssetFilePM.getByID(assetId, appObjects)`\r\n * 2. Subscribe to view updates with `pm.addView(callback)`\r\n * 3. Access current view data with `pm.lastVM`\r\n */\r\nexport abstract class AssetFilePM extends AppObjectPM<AssetFileVM> {\r\n static type = \"AssetFilePM\";\r\n\r\n /**\r\n * Retrieves an AssetFilePM instance for a specific asset by ID\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param appObjects - The repository of app objects\r\n * @returns The AssetFilePM instance or undefined if not found\r\n */\r\n static getByID(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): AssetFilePM | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"AssetFilePM.getByID\",\r\n \"Unable to find app object by ID \" + assetID\r\n );\r\n return;\r\n }\r\n\r\n const pm = appObject.getComponent<AssetFilePM>(AssetFilePM.type);\r\n if (!pm) {\r\n appObjects.submitWarning(\r\n \"AssetFilePM.getByID\",\r\n \"App Object does not have a AssetFilePM\"\r\n );\r\n return;\r\n }\r\n return pm;\r\n }\r\n}\r\n\r\n/**\r\n * Creates a new AssetFilePM instance\r\n *\r\n * @param appObject - The app object to associate with this PM\r\n * @returns A new AssetFilePM instance\r\n */\r\nexport function makeAssetFilePM(appObject: AppObject): AssetFilePM {\r\n return new AssetFilePMImp(appObject);\r\n}\r\n\r\n/**\r\n * Implementation of the AssetFilePM abstract class\r\n * Handles the connection between AssetEntity file properties and view\r\n */\r\nclass AssetFilePMImp extends AssetFilePM {\r\n private get asset() {\r\n return this.getCachedLocalComponent<AssetEntity>(AssetEntity.type);\r\n }\r\n\r\n /**\r\n * Compares two AssetFileVM instances for equality\r\n * Used to determine if the view needs to update\r\n *\r\n * @param a - First AssetFileVM to compare\r\n * @param b - Second AssetFileVM to compare\r\n * @returns True if view models are equal, false otherwise\r\n */\r\n vmsAreEqual(a: AssetFileVM, b: AssetFileVM): boolean {\r\n if (a.blobURL !== b.blobURL) return false;\r\n if (a.isFetchingFile !== b.isFetchingFile) return false;\r\n if (a.fileHasBeenFetched !== b.fileHasBeenFetched) return false;\r\n\r\n // Handle errors comparison (both undefined, or same message)\r\n if (a.fetchError !== b.fetchError) {\r\n if (a.fetchError === undefined && b.fetchError !== undefined)\r\n return false;\r\n if (a.fetchError !== undefined && b.fetchError === undefined)\r\n return false;\r\n if (\r\n a.fetchError !== undefined &&\r\n b.fetchError !== undefined &&\r\n a.fetchError.message !== b.fetchError.message\r\n )\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Observer callback that updates the view model when the entity changes\r\n * Transforms entity data into view model format\r\n */\r\n private onAssetChange = () => {\r\n if (!this.asset) return;\r\n\r\n const vm: AssetFileVM = {\r\n blobURL: this.asset.blobURL,\r\n isFetchingFile: this.asset.isFetchingFile,\r\n fileHasBeenFetched: this.asset.fileHasBeenFetched,\r\n fetchError: this.asset.fetchError\r\n };\r\n\r\n this.doUpdateView(vm);\r\n };\r\n\r\n /**\r\n * Cleans up resources and removes observers when the PM is disposed\r\n */\r\n dispose(): void {\r\n if (this.asset) {\r\n this.asset.removeChangeObserver(this.onAssetChange);\r\n }\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Creates a new AssetFilePMImp instance\r\n *\r\n * @param appObject - The app object to associate with this PM\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, AssetFilePM.type);\r\n\r\n this.asset?.addChangeObserver(this.onAssetChange);\r\n this.onAssetChange();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AssetFilePM.js","sourceRoot":"","sources":["../../../../src/Assets/PMs/AssetFilePM.ts"],"names":[],"mappings":"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","sourcesContent":["// filepath: c:\\Users\\amosp\\Documents\\WebGL\\vivedlearning_host\\src\\Assets\\PMs\\AssetFilePM.ts\r\nimport { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\r\nimport { AssetEntity } from \"../Entities/AssetEntity\";\r\n\r\n/**\r\n * View Model for Asset file information\r\n * Represents the data needed by the view to display asset file status\r\n */\r\nexport interface AssetFileVM {\r\n /** URL to the asset's file blob for direct access */\r\n blobURL: string | undefined;\r\n /** Whether the asset file is currently being fetched */\r\n isFetchingFile: boolean;\r\n /** Whether the asset file has been successfully fetched */\r\n fileHasBeenFetched: boolean;\r\n /** Error that occurred during file fetching, if any */\r\n fetchError: Error | undefined;\r\n}\r\n\r\n/**\r\n * Default empty AssetFileVM for initialization\r\n */\r\nexport const defaultAssetFileVM: AssetFileVM = {\r\n blobURL: undefined,\r\n isFetchingFile: false,\r\n fileHasBeenFetched: false,\r\n fetchError: undefined\r\n};\r\n\r\n/**\r\n * Presentation Manager for Asset file status\r\n *\r\n * The AssetFilePM is responsible for:\r\n * - Converting the file-related properties of AssetEntity into a view-friendly format (AssetFileVM)\r\n * - Notifying the view when asset file status changes\r\n * - Providing comparison utilities for view models\r\n *\r\n * Usage:\r\n * 1. Retrieve an instance with `AssetFilePM.getByID(assetId, appObjects)`\r\n * 2. Subscribe to view updates with `pm.addView(callback)`\r\n * 3. Access current view data with `pm.lastVM`\r\n */\r\nexport abstract class AssetFilePM extends AppObjectPM<AssetFileVM> {\r\n static type = \"AssetFilePM\";\r\n\r\n /**\r\n * Retrieves an AssetFilePM instance for a specific asset by ID\r\n *\r\n * @param assetID - The unique identifier of the asset\r\n * @param appObjects - The repository of app objects\r\n * @returns The AssetFilePM instance or undefined if not found\r\n */\r\n static getByID(\r\n assetID: string,\r\n appObjects: AppObjectRepo\r\n ): AssetFilePM | undefined {\r\n const appObject = appObjects.get(assetID);\r\n if (!appObject) {\r\n appObjects.submitWarning(\r\n \"AssetFilePM.getByID\",\r\n \"Unable to find app object by ID \" + assetID\r\n );\r\n return;\r\n }\r\n\r\n const pm = appObject.getComponent<AssetFilePM>(AssetFilePM.type);\r\n if (!pm) {\r\n appObjects.submitWarning(\r\n \"AssetFilePM.getByID\",\r\n \"App Object does not have a AssetFilePM\"\r\n );\r\n return;\r\n }\r\n return pm;\r\n }\r\n}\r\n\r\n/**\r\n * Creates a new AssetFilePM instance\r\n *\r\n * @param appObject - The app object to associate with this PM\r\n * @returns A new AssetFilePM instance\r\n */\r\nexport function makeAssetFilePM(appObject: AppObject): AssetFilePM {\r\n return new AssetFilePMImp(appObject);\r\n}\r\n\r\n/**\r\n * Implementation of the AssetFilePM abstract class\r\n * Handles the connection between AssetEntity file properties and view\r\n */\r\nclass AssetFilePMImp extends AssetFilePM {\r\n private get asset() {\r\n return this.getCachedLocalComponent<AssetEntity>(AssetEntity.type);\r\n }\r\n\r\n /**\r\n * Compares two AssetFileVM instances for equality\r\n * Used to determine if the view needs to update\r\n *\r\n * @param a - First AssetFileVM to compare\r\n * @param b - Second AssetFileVM to compare\r\n * @returns True if view models are equal, false otherwise\r\n */\r\n vmsAreEqual(a: AssetFileVM, b: AssetFileVM): boolean {\r\n if (a.blobURL !== b.blobURL) return false;\r\n if (a.isFetchingFile !== b.isFetchingFile) return false;\r\n if (a.fileHasBeenFetched !== b.fileHasBeenFetched) return false;\r\n\r\n // Handle errors comparison (both undefined, or same message)\r\n if (a.fetchError !== b.fetchError) {\r\n if (a.fetchError === undefined && b.fetchError !== undefined)\r\n return false;\r\n if (a.fetchError !== undefined && b.fetchError === undefined)\r\n return false;\r\n if (\r\n a.fetchError !== undefined &&\r\n b.fetchError !== undefined &&\r\n a.fetchError.message !== b.fetchError.message\r\n )\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Observer callback that updates the view model when the entity changes\r\n * Transforms entity data into view model format\r\n */\r\n formVM = (): void => {\r\n if (!this.asset) return;\r\n\r\n const vm: AssetFileVM = {\r\n blobURL: this.asset.blobURL,\r\n isFetchingFile: this.asset.isFetchingFile,\r\n fileHasBeenFetched: this.asset.fileHasBeenFetched,\r\n fetchError: this.asset.fetchError\r\n };\r\n\r\n this.doUpdateView(vm);\r\n };\r\n\r\n /**\r\n * Creates a new AssetFilePMImp instance\r\n *\r\n * @param appObject - The app object to associate with this PM\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, AssetFilePM.type);\r\n\r\n if (this.asset) {\r\n this.observeEntity(this.asset);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
- import { getSingletonComponent, AppObjectPM } from "@vived/core";
1
+ import { getSingletonComponent, AppObjectSingletonPM } from "@vived/core";
2
2
  import { AppAssetsEntity } from "../Entities/AppAssetsEntity";
3
- export class ShowArchivedAppAssetPM extends AppObjectPM {
3
+ export class ShowArchivedAppAssetPM extends AppObjectSingletonPM {
4
4
  static get(appObjects) {
5
5
  return getSingletonComponent(ShowArchivedAppAssetPM.type, appObjects);
6
6
  }
@@ -15,19 +15,19 @@ class ShowArchivedAppAssetPMImp extends ShowArchivedAppAssetPM {
15
15
  }
16
16
  constructor(appObject) {
17
17
  super(appObject, ShowArchivedAppAssetPM.type);
18
- this.onAssetChange = () => {
18
+ this.defaultVM = false;
19
+ this.formVM = () => {
19
20
  if (!this.appAssets)
20
21
  return;
21
- this.doUpdateView(this.appAssets.showArchived);
22
+ const vm = this.appAssets.showArchived;
23
+ this.doUpdateView(vm);
22
24
  };
23
25
  this.appAssets = appObject.getComponent(AppAssetsEntity.type);
24
26
  if (!this.appAssets) {
25
27
  this.warn("PM has been added to an App Object without an AppAssetsEntity");
26
28
  return;
27
29
  }
28
- this.appObjects.registerSingleton(this);
29
- this.appAssets.addChangeObserver(this.onAssetChange);
30
- this.onAssetChange();
30
+ this.observeEntity(this.appAssets);
31
31
  }
32
32
  }
33
33
  //# sourceMappingURL=ShowArchivedAppAssetPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShowArchivedAppAssetPM.js","sourceRoot":"","sources":["../../../../src/Assets/PMs/ShowArchivedAppAssetPM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,OAAgB,sBAAuB,SAAQ,WAAoB;IAGvE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAJM,2BAAI,GAAG,wBAAwB,CAAC;AAOzC,MAAM,UAAU,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAG5D,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QANxC,kBAAa,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC,CAAC;QAKA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CACrC,eAAe,CAAC,IAAI,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CACP,+DAA+D,CAChE,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\r\n\r\nexport abstract class ShowArchivedAppAssetPM extends AppObjectPM<boolean> {\r\n static type = \"ShowArchivedAppAssetPM\";\r\n\r\n static get(appObjects: AppObjectRepo): ShowArchivedAppAssetPM | undefined {\r\n return getSingletonComponent(ShowArchivedAppAssetPM.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeShowArchivedAppAssetPM(\r\n appObject: AppObject\r\n): ShowArchivedAppAssetPM {\r\n return new ShowArchivedAppAssetPMImp(appObject);\r\n}\r\n\r\nclass ShowArchivedAppAssetPMImp extends ShowArchivedAppAssetPM {\r\n private appAssets?: AppAssetsEntity;\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n private onAssetChange = () => {\r\n if (!this.appAssets) return;\r\n this.doUpdateView(this.appAssets.showArchived);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ShowArchivedAppAssetPM.type);\r\n\r\n this.appAssets = appObject.getComponent<AppAssetsEntity>(\r\n AppAssetsEntity.type\r\n );\r\n if (!this.appAssets) {\r\n this.warn(\r\n \"PM has been added to an App Object without an AppAssetsEntity\"\r\n );\r\n return;\r\n }\r\n\r\n this.appObjects.registerSingleton(this);\r\n\r\n this.appAssets.addChangeObserver(this.onAssetChange);\r\n this.onAssetChange();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ShowArchivedAppAssetPM.js","sourceRoot":"","sources":["../../../../src/Assets/PMs/ShowArchivedAppAssetPM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,OAAgB,sBAAuB,SAAQ,oBAA6B;IAGhF,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAJM,2BAAI,GAAG,wBAAwB,CAAC;AAOzC,MAAM,UAAU,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAK5D,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAQD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAbhD,cAAS,GAAG,KAAK,CAAC;QAMlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC;QAKA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CACrC,eAAe,CAAC,IAAI,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CACP,+DAA+D,CAChE,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\r\n\r\nexport abstract class ShowArchivedAppAssetPM extends AppObjectSingletonPM<boolean> {\r\n static type = \"ShowArchivedAppAssetPM\";\r\n\r\n static get(appObjects: AppObjectRepo): ShowArchivedAppAssetPM | undefined {\r\n return getSingletonComponent(ShowArchivedAppAssetPM.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeShowArchivedAppAssetPM(\r\n appObject: AppObject\r\n): ShowArchivedAppAssetPM {\r\n return new ShowArchivedAppAssetPMImp(appObject);\r\n}\r\n\r\nclass ShowArchivedAppAssetPMImp extends ShowArchivedAppAssetPM {\r\n private appAssets?: AppAssetsEntity;\r\n\r\n defaultVM = false;\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.appAssets) return;\r\n const vm = this.appAssets.showArchived;\r\n this.doUpdateView(vm);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ShowArchivedAppAssetPM.type);\r\n\r\n this.appAssets = appObject.getComponent<AppAssetsEntity>(\r\n AppAssetsEntity.type\r\n );\r\n if (!this.appAssets) {\r\n this.warn(\r\n \"PM has been added to an App Object without an AppAssetsEntity\"\r\n );\r\n return;\r\n }\r\n\r\n this.observeEntity(this.appAssets);\r\n }\r\n}\r\n"]}
@@ -1,8 +1,8 @@
1
- import { AppObjectPM, getSingletonComponent } from "@vived/core";
1
+ import { AppObjectSingletonPM, getSingletonComponent } from "@vived/core";
2
2
  import { ChallengeResultsEntity } from "../Entities";
3
3
  import { HostStateMachine } from "../../StateMachine/Entities/HostStateMachine";
4
4
  import { ChallengeResponse } from "../../StateMachine/Entities/HostStateEntity";
5
- export class HasChallengeResultsPM extends AppObjectPM {
5
+ export class HasChallengeResultsPM extends AppObjectSingletonPM {
6
6
  static get(appObjects) {
7
7
  return getSingletonComponent(HasChallengeResultsPM.type, appObjects);
8
8
  }
@@ -23,7 +23,8 @@ class HasChallengeResultsPMImp extends HasChallengeResultsPM {
23
23
  }
24
24
  constructor(appObject) {
25
25
  super(appObject, HasChallengeResultsPM.type);
26
- this.onEntityChange = () => {
26
+ this.defaultVM = false;
27
+ this.formVM = () => {
27
28
  if (!this.resultsEntity)
28
29
  return;
29
30
  let hasAssessmentResults = this.resultsEntity.results?.length > 0 || false;
@@ -42,10 +43,12 @@ class HasChallengeResultsPMImp extends HasChallengeResultsPM {
42
43
  }
43
44
  this.doUpdateView(hasAssessmentResults);
44
45
  };
45
- this.appObjects.registerSingleton(this);
46
- this.resultsEntity?.addChangeObserver(this.onEntityChange);
47
- this.stateMachine?.addChangeObserver(this.onEntityChange);
48
- this.onEntityChange();
46
+ if (this.resultsEntity) {
47
+ this.observeEntity(this.resultsEntity);
48
+ }
49
+ if (this.stateMachine) {
50
+ this.observeEntity(this.stateMachine);
51
+ }
49
52
  }
50
53
  }
51
54
  //# sourceMappingURL=HasChallengeResultsPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HasChallengeResultsPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,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,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IA2BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QA1BvC,mBAAc,GAAG,GAAS,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAEhC,IAAI,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC;YAE3E,kEAAkE;YAClE,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtD,IACE,KAAK;wBACL,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACpC,KAAK,CAAC,gBAAgB,KAAK,iBAAiB,CAAC,IAAI,EACjD,CAAC;wBACD,oBAAoB,GAAG,IAAI,CAAC;wBAC5B,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,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,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { ChallengeResultsEntity } from \"../Entities\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities/HostStateMachine\";\r\nimport { ChallengeResponse } from \"../../StateMachine/Entities/HostStateEntity\";\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 private get stateMachine() {\r\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\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 let hasAssessmentResults = this.resultsEntity.results?.length > 0 || false;\r\n\r\n // If no results are found, check for expected responses in states\r\n if (!hasAssessmentResults && this.stateMachine) {\r\n const stateIds = this.stateMachine.states;\r\n\r\n for (const stateId of stateIds) {\r\n const state = this.stateMachine.getStateByID(stateId);\r\n if (\r\n state &&\r\n state.expectedResponse !== undefined &&\r\n state.expectedResponse !== ChallengeResponse.NONE\r\n ) {\r\n hasAssessmentResults = true;\r\n break;\r\n }\r\n }\r\n }\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.stateMachine?.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"HasChallengeResultsPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EAEpB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,MAAM,OAAgB,qBAAsB,SAAQ,oBAA6B;IAG/E,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;IAG1D,IAAY,aAAa;QACvB,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,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IA2BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QA1C/C,cAAS,GAAG,KAAK,CAAC;QAgBlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAEhC,IAAI,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC;YAE3E,kEAAkE;YAClE,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtD,IACE,KAAK;wBACL,KAAK,CAAC,gBAAgB,KAAK,SAAS;wBACpC,KAAK,CAAC,gBAAgB,KAAK,iBAAiB,CAAC,IAAI,EACjD,CAAC;wBACD,oBAAoB,GAAG,IAAI,CAAC;wBAC5B,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo,\r\n getSingletonComponent\r\n} from \"@vived/core\";\r\nimport { ChallengeResultsEntity } from \"../Entities\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities/HostStateMachine\";\r\nimport { ChallengeResponse } from \"../../StateMachine/Entities/HostStateEntity\";\r\n\r\nexport abstract class HasChallengeResultsPM extends AppObjectSingletonPM<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 defaultVM = false;\r\n\r\n private get resultsEntity() {\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: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.resultsEntity) return;\r\n\r\n let hasAssessmentResults = this.resultsEntity.results?.length > 0 || false;\r\n\r\n // If no results are found, check for expected responses in states\r\n if (!hasAssessmentResults && this.stateMachine) {\r\n const stateIds = this.stateMachine.states;\r\n\r\n for (const stateId of stateIds) {\r\n const state = this.stateMachine.getStateByID(stateId);\r\n if (\r\n state &&\r\n state.expectedResponse !== undefined &&\r\n state.expectedResponse !== ChallengeResponse.NONE\r\n ) {\r\n hasAssessmentResults = true;\r\n break;\r\n }\r\n }\r\n }\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 if (this.resultsEntity) {\r\n this.observeEntity(this.resultsEntity);\r\n }\r\n if (this.stateMachine) {\r\n this.observeEntity(this.stateMachine);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
- import { getSingletonComponent, AppObjectPM } from "@vived/core";
1
+ import { getSingletonComponent, AppObjectSingletonPM } from "@vived/core";
2
2
  import { LoggerEntity } from "../Entities";
3
- export class ForwardLogsToConsolePM extends AppObjectPM {
3
+ export class ForwardLogsToConsolePM extends AppObjectSingletonPM {
4
4
  static get(appObjects) {
5
5
  return getSingletonComponent(ForwardLogsToConsolePM.type, appObjects);
6
6
  }
@@ -18,14 +18,15 @@ class ForwardLogsToConsolePMImp extends ForwardLogsToConsolePM {
18
18
  }
19
19
  constructor(appObject) {
20
20
  super(appObject, ForwardLogsToConsolePM.type);
21
- this.onEntityChange = () => {
21
+ this.defaultVM = false;
22
+ this.formVM = () => {
22
23
  if (!this.logger)
23
24
  return;
24
25
  this.doUpdateView(this.logger.forwardLogsToConsole);
25
26
  };
26
- this.onEntityChange();
27
- this.logger?.addChangeObserver(this.onEntityChange);
28
- this.appObjects.registerSingleton(this);
27
+ if (this.logger) {
28
+ this.observeEntity(this.logger);
29
+ }
29
30
  }
30
31
  }
31
32
  //# sourceMappingURL=ForwardLogsToConsolePM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ForwardLogsToConsolePM.js","sourceRoot":"","sources":["../../../../src/Logger/PMs/ForwardLogsToConsolePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAgB,sBAAuB,SAAQ,WAAoB;IAGvE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,sBAAsB,CAAC,IAAI,EAC3B,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,2BAAI,GAAG,wBAAwB,CAAC;AASzC,MAAM,UAAU,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QANxC,mBAAc,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC,CAAC;QAKA,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { LoggerEntity } from \"../Entities\";\r\n\r\nexport abstract class ForwardLogsToConsolePM extends AppObjectPM<boolean> {\r\n static type = \"ForwardLogsToConsolePM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ForwardLogsToConsolePM>(\r\n ForwardLogsToConsolePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\nexport function makeForwardLogsToConsolePM(\r\n appObject: AppObject\r\n): ForwardLogsToConsolePM {\r\n return new ForwardLogsToConsolePMImp(appObject);\r\n}\r\n\r\nclass ForwardLogsToConsolePMImp extends ForwardLogsToConsolePM {\r\n private get logger() {\r\n return this.getCachedSingleton<LoggerEntity>(LoggerEntity.type);\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 = () => {\r\n if (!this.logger) return;\r\n this.doUpdateView(this.logger.forwardLogsToConsole);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ForwardLogsToConsolePM.type);\r\n\r\n this.onEntityChange();\r\n this.logger?.addChangeObserver(this.onEntityChange);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ForwardLogsToConsolePM.js","sourceRoot":"","sources":["../../../../src/Logger/PMs/ForwardLogsToConsolePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAgB,sBAAuB,SAAQ,oBAA6B;IAGhF,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,sBAAsB,CAAC,IAAI,EAC3B,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,2BAAI,GAAG,wBAAwB,CAAC;AASzC,MAAM,UAAU,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAG5D,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAhBhD,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { LoggerEntity } from \"../Entities\";\r\n\r\nexport abstract class ForwardLogsToConsolePM extends AppObjectSingletonPM<boolean> {\r\n static type = \"ForwardLogsToConsolePM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ForwardLogsToConsolePM>(\r\n ForwardLogsToConsolePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\nexport function makeForwardLogsToConsolePM(\r\n appObject: AppObject\r\n): ForwardLogsToConsolePM {\r\n return new ForwardLogsToConsolePMImp(appObject);\r\n}\r\n\r\nclass ForwardLogsToConsolePMImp extends ForwardLogsToConsolePM {\r\n defaultVM = false;\r\n\r\n private get logger() {\r\n return this.getCachedSingleton<LoggerEntity>(LoggerEntity.type);\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.logger) return;\r\n this.doUpdateView(this.logger.forwardLogsToConsole);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ForwardLogsToConsolePM.type);\r\n\r\n if (this.logger) {\r\n this.observeEntity(this.logger);\r\n }\r\n }\r\n}\r\n"]}
@@ -18,13 +18,13 @@
18
18
  * 3. PM automatically updates views when entity token state changes
19
19
  * 4. Use with adapters to bind to specific UI frameworks
20
20
  */
21
- import { getSingletonComponent, AppObjectPM } from "@vived/core";
21
+ import { getSingletonComponent, AppObjectSingletonPM } from "@vived/core";
22
22
  import { VivedAPIEntity } from "../Entities";
23
23
  /**
24
24
  * UserTokenPM provides presentation logic for user authentication token display.
25
25
  * Abstract class that manages the view model for user token information.
26
26
  */
27
- export class UserTokenPM extends AppObjectPM {
27
+ export class UserTokenPM extends AppObjectSingletonPM {
28
28
  /**
29
29
  * Retrieves the singleton UserTokenPM from the app objects repository
30
30
  * @param appObjects The AppObjectRepo to get the singleton from
@@ -67,18 +67,18 @@ class UserTokenPMImp extends UserTokenPM {
67
67
  }
68
68
  constructor(appObject) {
69
69
  super(appObject, UserTokenPM.type);
70
+ this.defaultVM = "";
70
71
  /**
71
- * Handles entity change notifications and updates the view
72
- * Called when the VivedAPIEntity's user token changes
72
+ * Forms the view model from the entity state
73
73
  */
74
- this.onEntityChange = () => {
74
+ this.formVM = () => {
75
75
  if (!this.sandbox)
76
76
  return;
77
77
  this.doUpdateView(this.sandbox.userToken);
78
78
  };
79
- this.appObjects.registerSingleton(this);
80
- this.sandbox?.addChangeObserver(this.onEntityChange);
81
- this.onEntityChange();
79
+ if (this.sandbox) {
80
+ this.observeEntity(this.sandbox);
81
+ }
82
82
  }
83
83
  }
84
84
  //# sourceMappingURL=UserTokenPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserTokenPM.js","sourceRoot":"","sources":["../../../../src/VivedAPI/PMs/UserTokenPM.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,qBAAqB,EAErB,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAgB,WAAY,SAAQ,WAAmB;IAI3D;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAc,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;;AAVD,gDAAgD;AACzC,gBAAI,GAAG,aAAa,CAAC;AAY9B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,cAAe,SAAQ,WAAW;IACtC;;;OAGG;IACH,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,CAAS,EAAE,CAAS;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAYD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAXrC;;;WAGG;QACH,mBAAc,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF","sourcesContent":["/**\r\n * UserTokenPM.ts\r\n *\r\n * This file defines the Presentation Manager for user authentication token display.\r\n * UserTokenPM bridges the VivedAPIEntity token state with UI components,\r\n * managing the display and interaction of user authentication tokens.\r\n *\r\n * Key concepts:\r\n * - PM extends AppObjectPM and manages view model state for user tokens\r\n * - Observes VivedAPIEntity token changes and updates UI accordingly\r\n * - Provides value comparison logic for efficient view updates\r\n * - Implements singleton pattern for system-wide token display management\r\n * - Handles token state transitions and notifications\r\n *\r\n * Usage pattern:\r\n * 1. Get the singleton PM using UserTokenPM.get(appObjects)\r\n * 2. Connect to UI components that display user authentication tokens\r\n * 3. PM automatically updates views when entity token state changes\r\n * 4. Use with adapters to bind to specific UI frameworks\r\n */\r\n\r\nimport {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { VivedAPIEntity } from \"../Entities\";\r\n\r\n/**\r\n * UserTokenPM provides presentation logic for user authentication token display.\r\n * Abstract class that manages the view model for user token information.\r\n */\r\nexport abstract class UserTokenPM extends AppObjectPM<string> {\r\n /** Unique type identifier for this component */\r\n static type = \"UserTokenPM\";\r\n\r\n /**\r\n * Retrieves the singleton UserTokenPM from the app objects repository\r\n * @param appObjects The AppObjectRepo to get the singleton from\r\n * @returns The UserTokenPM singleton or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<UserTokenPM>(UserTokenPM.type, appObjects);\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new UserTokenPM instance\r\n * @param appObject The AppObject to attach the PM to\r\n * @returns A new UserTokenPM instance\r\n */\r\nexport function makeUserTokenPM(appObject: AppObject): UserTokenPM {\r\n return new UserTokenPMImp(appObject);\r\n}\r\n\r\n/**\r\n * Concrete implementation of UserTokenPM\r\n * This private class handles the actual presentation logic for user token management\r\n */\r\nclass UserTokenPMImp extends UserTokenPM {\r\n /**\r\n * Gets the VivedAPIEntity from the same app objects repository\r\n * Uses cached singleton access for efficient repeated access\r\n */\r\n private get sandbox() {\r\n return this.getCachedSingleton<VivedAPIEntity>(VivedAPIEntity.type);\r\n }\r\n\r\n /**\r\n * Compares two token string values for equality to determine if view updates are needed\r\n * @param a First token string to compare\r\n * @param b Second token string to compare\r\n * @returns True if the token values are equal, false otherwise\r\n */\r\n vmsAreEqual(a: string, b: string): boolean {\r\n return a === b;\r\n }\r\n\r\n /**\r\n * Handles entity change notifications and updates the view\r\n * Called when the VivedAPIEntity's user token changes\r\n */\r\n onEntityChange = () => {\r\n if (!this.sandbox) return;\r\n\r\n this.doUpdateView(this.sandbox.userToken);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, UserTokenPM.type);\r\n this.appObjects.registerSingleton(this);\r\n\r\n this.sandbox?.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"UserTokenPM.js","sourceRoot":"","sources":["../../../../src/VivedAPI/PMs/UserTokenPM.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAgB,WAAY,SAAQ,oBAA4B;IAIpE;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAAc,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;;AAVD,gDAAgD;AACzC,gBAAI,GAAG,aAAa,CAAC;AAY9B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,cAAe,SAAQ,WAAW;IAGtC;;;OAGG;IACH,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,CAAS,EAAE,CAAS;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAUD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QA7BrC,cAAS,GAAG,EAAE,CAAC;QAoBf;;WAEG;QACH,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC;QAKA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF","sourcesContent":["/**\r\n * UserTokenPM.ts\r\n *\r\n * This file defines the Presentation Manager for user authentication token display.\r\n * UserTokenPM bridges the VivedAPIEntity token state with UI components,\r\n * managing the display and interaction of user authentication tokens.\r\n *\r\n * Key concepts:\r\n * - PM extends AppObjectPM and manages view model state for user tokens\r\n * - Observes VivedAPIEntity token changes and updates UI accordingly\r\n * - Provides value comparison logic for efficient view updates\r\n * - Implements singleton pattern for system-wide token display management\r\n * - Handles token state transitions and notifications\r\n *\r\n * Usage pattern:\r\n * 1. Get the singleton PM using UserTokenPM.get(appObjects)\r\n * 2. Connect to UI components that display user authentication tokens\r\n * 3. PM automatically updates views when entity token state changes\r\n * 4. Use with adapters to bind to specific UI frameworks\r\n */\r\n\r\nimport {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { VivedAPIEntity } from \"../Entities\";\r\n\r\n/**\r\n * UserTokenPM provides presentation logic for user authentication token display.\r\n * Abstract class that manages the view model for user token information.\r\n */\r\nexport abstract class UserTokenPM extends AppObjectSingletonPM<string> {\r\n /** Unique type identifier for this component */\r\n static type = \"UserTokenPM\";\r\n\r\n /**\r\n * Retrieves the singleton UserTokenPM from the app objects repository\r\n * @param appObjects The AppObjectRepo to get the singleton from\r\n * @returns The UserTokenPM singleton or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<UserTokenPM>(UserTokenPM.type, appObjects);\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new UserTokenPM instance\r\n * @param appObject The AppObject to attach the PM to\r\n * @returns A new UserTokenPM instance\r\n */\r\nexport function makeUserTokenPM(appObject: AppObject): UserTokenPM {\r\n return new UserTokenPMImp(appObject);\r\n}\r\n\r\n/**\r\n * Concrete implementation of UserTokenPM\r\n * This private class handles the actual presentation logic for user token management\r\n */\r\nclass UserTokenPMImp extends UserTokenPM {\r\n defaultVM = \"\";\r\n\r\n /**\r\n * Gets the VivedAPIEntity from the same app objects repository\r\n * Uses cached singleton access for efficient repeated access\r\n */\r\n private get sandbox() {\r\n return this.getCachedSingleton<VivedAPIEntity>(VivedAPIEntity.type);\r\n }\r\n\r\n /**\r\n * Compares two token string values for equality to determine if view updates are needed\r\n * @param a First token string to compare\r\n * @param b Second token string to compare\r\n * @returns True if the token values are equal, false otherwise\r\n */\r\n vmsAreEqual(a: string, b: string): boolean {\r\n return a === b;\r\n }\r\n\r\n /**\r\n * Forms the view model from the entity state\r\n */\r\n formVM = (): void => {\r\n if (!this.sandbox) return;\r\n this.doUpdateView(this.sandbox.userToken);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, UserTokenPM.type);\r\n\r\n if (this.sandbox) {\r\n this.observeEntity(this.sandbox);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { getSingletonComponent, AppObjectPM } from "@vived/core";
1
+ import { getSingletonComponent, AppObjectSingletonPM } from "@vived/core";
2
2
  import { ZSpaceHostEntity } from "../Entities";
3
3
  /**
4
4
  * EmulateZSpacePM is a singleton Presentation Manager that provides a boolean view model
@@ -34,7 +34,7 @@ import { ZSpaceHostEntity } from "../Entities";
34
34
  * Emulation is useful during development or when testing on systems without zSpace hardware.
35
35
  * When emulation is enabled, many zSpace-specific UI features can still be tested.
36
36
  */
37
- export class EmulateZSpacePM extends AppObjectPM {
37
+ export class EmulateZSpacePM extends AppObjectSingletonPM {
38
38
  /**
39
39
  * Get the singleton instance of EmulateZSpacePM
40
40
  * @param appObjects - The AppObjectRepo instance
@@ -64,7 +64,8 @@ class EmulateZSpacePMImp extends EmulateZSpacePM {
64
64
  }
65
65
  constructor(appObject) {
66
66
  super(appObject, EmulateZSpacePM.type);
67
- this.onEntityChange = () => {
67
+ this.defaultVM = false;
68
+ this.formVM = () => {
68
69
  if (!this.zSpace)
69
70
  return;
70
71
  this.doUpdateView(this.zSpace.emulate);
@@ -74,9 +75,7 @@ class EmulateZSpacePMImp extends EmulateZSpacePM {
74
75
  this.error("PM Has been added to an app object that does not have a ZSpaceHostEntity");
75
76
  return;
76
77
  }
77
- zSpace.addChangeObserver(this.onEntityChange);
78
- this.onEntityChange();
79
- this.appObjects.registerSingleton(this);
78
+ this.observeEntity(zSpace);
80
79
  }
81
80
  }
82
81
  //# sourceMappingURL=EmulateZSpacePM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmulateZSpacePM.js","sourceRoot":"","sources":["../../../../src/ZSpaceHost/PMs/EmulateZSpacePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,OAAgB,eAAgB,SAAQ,WAAoB;IAGhE;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,eAAe,CAAC,IAAI,EACpB,UAAU,CACX,CAAC;IACJ,CAAC;;AAZM,oBAAI,GAAG,iBAAiB,CAAC;AAelC;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAQD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAPjC,mBAAc,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;QAKA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CACR,0EAA0E,CAC3E,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { ZSpaceHostEntity } from \"../Entities\";\r\n\r\n/**\r\n * EmulateZSpacePM is a singleton Presentation Manager that provides a boolean view model\r\n * indicating whether zSpace emulation is currently enabled.\r\n *\r\n * This PM allows UI components to observe and (through controllers) control whether\r\n * zSpace features should be emulated when actual zSpace hardware is not available.\r\n *\r\n * Usage in UI components:\r\n * 1. Via direct PM access (not recommended for UI components):\r\n * const pm = EmulateZSpacePM.get(appObjects);\r\n * pm?.addView((isEmulating) => { updateUIBasedOn(isEmulating); });\r\n *\r\n * 2. Via adapter (recommended for React/UI components):\r\n * import { emulateZSpacePMAdapter } from \"../Adapters\";\r\n *\r\n * // In a React component:\r\n * const [isEmulating, setIsEmulating] = useState(emulateZSpacePMAdapter.defaultVM);\r\n *\r\n * useEffect(() => {\r\n * emulateZSpacePMAdapter.subscribe(appObjects, setIsEmulating);\r\n * return () => emulateZSpacePMAdapter.unsubscribe(appObjects, setIsEmulating);\r\n * }, [appObjects]);\r\n *\r\n * 3. To toggle emulation state (in a controller or UI event handler):\r\n * import { toggleEmulateZSpace } from \"../Controllers\";\r\n *\r\n * // When handling a UI event:\r\n * const handleToggleEmulation = () => {\r\n * toggleEmulateZSpace(appObjects);\r\n * };\r\n *\r\n * Emulation is useful during development or when testing on systems without zSpace hardware.\r\n * When emulation is enabled, many zSpace-specific UI features can still be tested.\r\n */\r\nexport abstract class EmulateZSpacePM extends AppObjectPM<boolean> {\r\n static type = \"EmulateZSpacePM\";\r\n\r\n /**\r\n * Get the singleton instance of EmulateZSpacePM\r\n * @param appObjects - The AppObjectRepo instance\r\n * @returns The EmulateZSpacePM instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<EmulateZSpacePM>(\r\n EmulateZSpacePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create the EmulateZSpacePM\r\n * For internal use only - external code should use EmulateZSpacePM.get()\r\n *\r\n * @param appObject - The AppObject to attach the PM to\r\n * @returns A new EmulateZSpacePM instance\r\n */\r\nexport function makeEmulateZSpacePM(appObject: AppObject): EmulateZSpacePM {\r\n return new EmulateZSpacePMImp(appObject);\r\n}\r\n\r\nclass EmulateZSpacePMImp extends EmulateZSpacePM {\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n private get zSpace() {\r\n return this.getCachedSingleton<ZSpaceHostEntity>(ZSpaceHostEntity.type);\r\n }\r\n\r\n private onEntityChange = () => {\r\n if (!this.zSpace) return;\r\n\r\n this.doUpdateView(this.zSpace.emulate);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, EmulateZSpacePM.type);\r\n\r\n const zSpace = this.zSpace;\r\n if (!zSpace) {\r\n this.error(\r\n \"PM Has been added to an app object that does not have a ZSpaceHostEntity\"\r\n );\r\n return;\r\n }\r\n zSpace.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EmulateZSpacePM.js","sourceRoot":"","sources":["../../../../src/ZSpaceHost/PMs/EmulateZSpacePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,OAAgB,eAAgB,SAAQ,oBAA6B;IAGzE;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,eAAe,CAAC,IAAI,EACpB,UAAU,CACX,CAAC;IACJ,CAAC;;AAZM,oBAAI,GAAG,iBAAiB,CAAC;AAelC;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAG9C,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAhBzC,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;QAKA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CACR,0EAA0E,CAC3E,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { ZSpaceHostEntity } from \"../Entities\";\r\n\r\n/**\r\n * EmulateZSpacePM is a singleton Presentation Manager that provides a boolean view model\r\n * indicating whether zSpace emulation is currently enabled.\r\n *\r\n * This PM allows UI components to observe and (through controllers) control whether\r\n * zSpace features should be emulated when actual zSpace hardware is not available.\r\n *\r\n * Usage in UI components:\r\n * 1. Via direct PM access (not recommended for UI components):\r\n * const pm = EmulateZSpacePM.get(appObjects);\r\n * pm?.addView((isEmulating) => { updateUIBasedOn(isEmulating); });\r\n *\r\n * 2. Via adapter (recommended for React/UI components):\r\n * import { emulateZSpacePMAdapter } from \"../Adapters\";\r\n *\r\n * // In a React component:\r\n * const [isEmulating, setIsEmulating] = useState(emulateZSpacePMAdapter.defaultVM);\r\n *\r\n * useEffect(() => {\r\n * emulateZSpacePMAdapter.subscribe(appObjects, setIsEmulating);\r\n * return () => emulateZSpacePMAdapter.unsubscribe(appObjects, setIsEmulating);\r\n * }, [appObjects]);\r\n *\r\n * 3. To toggle emulation state (in a controller or UI event handler):\r\n * import { toggleEmulateZSpace } from \"../Controllers\";\r\n *\r\n * // When handling a UI event:\r\n * const handleToggleEmulation = () => {\r\n * toggleEmulateZSpace(appObjects);\r\n * };\r\n *\r\n * Emulation is useful during development or when testing on systems without zSpace hardware.\r\n * When emulation is enabled, many zSpace-specific UI features can still be tested.\r\n */\r\nexport abstract class EmulateZSpacePM extends AppObjectSingletonPM<boolean> {\r\n static type = \"EmulateZSpacePM\";\r\n\r\n /**\r\n * Get the singleton instance of EmulateZSpacePM\r\n * @param appObjects - The AppObjectRepo instance\r\n * @returns The EmulateZSpacePM instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<EmulateZSpacePM>(\r\n EmulateZSpacePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create the EmulateZSpacePM\r\n * For internal use only - external code should use EmulateZSpacePM.get()\r\n *\r\n * @param appObject - The AppObject to attach the PM to\r\n * @returns A new EmulateZSpacePM instance\r\n */\r\nexport function makeEmulateZSpacePM(appObject: AppObject): EmulateZSpacePM {\r\n return new EmulateZSpacePMImp(appObject);\r\n}\r\n\r\nclass EmulateZSpacePMImp extends EmulateZSpacePM {\r\n defaultVM = false;\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n private get zSpace() {\r\n return this.getCachedSingleton<ZSpaceHostEntity>(ZSpaceHostEntity.type);\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.zSpace) return;\r\n this.doUpdateView(this.zSpace.emulate);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, EmulateZSpacePM.type);\r\n\r\n const zSpace = this.zSpace;\r\n if (!zSpace) {\r\n this.error(\r\n \"PM Has been added to an app object that does not have a ZSpaceHostEntity\"\r\n );\r\n return;\r\n }\r\n\r\n this.observeEntity(zSpace);\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { getSingletonComponent, AppObjectPM } from "@vived/core";
1
+ import { getSingletonComponent, AppObjectSingletonPM } from "@vived/core";
2
2
  import { ZSpaceHostEntity } from "../Entities/ZSpaceHost";
3
3
  /**
4
4
  * ZSpaceIsActivePM is a singleton Presentation Manager that provides a boolean view model
@@ -27,7 +27,7 @@ import { ZSpaceHostEntity } from "../Entities/ZSpaceHost";
27
27
  * - Show zSpace-specific controls
28
28
  * - Adjust UI layouts for stereoscopic viewing
29
29
  */
30
- export class ZSpaceIsActivePM extends AppObjectPM {
30
+ export class ZSpaceIsActivePM extends AppObjectSingletonPM {
31
31
  /**
32
32
  * Get the singleton instance of ZSpaceIsActivePM
33
33
  * @param appObjects - The AppObjectRepo instance
@@ -57,7 +57,8 @@ class ZSpaceIsActivePMImp extends ZSpaceIsActivePM {
57
57
  }
58
58
  constructor(appObject) {
59
59
  super(appObject, ZSpaceIsActivePM.type);
60
- this.onEntityChange = () => {
60
+ this.defaultVM = false;
61
+ this.formVM = () => {
61
62
  if (!this.zSpace)
62
63
  return;
63
64
  this.doUpdateView(this.zSpace.isActive);
@@ -67,9 +68,7 @@ class ZSpaceIsActivePMImp extends ZSpaceIsActivePM {
67
68
  this.error("PM Has been added to an app object that does not have a ZSpaceHostEntity");
68
69
  return;
69
70
  }
70
- zSpace.addChangeObserver(this.onEntityChange);
71
- this.onEntityChange();
72
- this.appObjects.registerSingleton(this);
71
+ this.observeEntity(zSpace);
73
72
  }
74
73
  }
75
74
  //# sourceMappingURL=ZSpaceIsActivePM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZSpaceIsActivePM.js","sourceRoot":"","sources":["../../../../src/ZSpaceHost/PMs/ZSpaceIsActivePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,WAAoB;IAGjE;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,gBAAgB,CAAC,IAAI,EACrB,UAAU,CACX,CAAC;IACJ,CAAC;;AAZM,qBAAI,GAAG,kBAAkB,CAAC;AAenC;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAoB;IACvD,OAAO,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,mBAAoB,SAAQ,gBAAgB;IAChD,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAQD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAPlC,mBAAc,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC;QAKA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CACR,0EAA0E,CAC3E,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { ZSpaceHostEntity } from \"../Entities/ZSpaceHost\";\r\n\r\n/**\r\n * ZSpaceIsActivePM is a singleton Presentation Manager that provides a boolean view model\r\n * indicating whether zSpace is currently active.\r\n *\r\n * This PM observes ZSpaceHostEntity and updates its view model when the isActive property changes.\r\n *\r\n * Usage in UI components:\r\n * 1. Via direct PM access (not recommended for UI components):\r\n * const pm = ZSpaceIsActivePM.get(appObjects);\r\n * pm?.addView((isActive) => { updateUIBasedOn(isActive); });\r\n *\r\n * 2. Via adapter (recommended for React/UI components):\r\n * import { zSpaceIsActivePMAdapter } from \"../Adapters\";\r\n *\r\n * // In a React component:\r\n * const [isZSpaceActive, setIsZSpaceActive] = useState(zSpaceIsActivePMAdapter.defaultVM);\r\n *\r\n * useEffect(() => {\r\n * zSpaceIsActivePMAdapter.subscribe(appObjects, setIsZSpaceActive);\r\n * return () => zSpaceIsActivePMAdapter.unsubscribe(appObjects, setIsZSpaceActive);\r\n * }, [appObjects]);\r\n *\r\n * When zSpace is active, UI components may want to:\r\n * - Display 3D content differently\r\n * - Show zSpace-specific controls\r\n * - Adjust UI layouts for stereoscopic viewing\r\n */\r\nexport abstract class ZSpaceIsActivePM extends AppObjectPM<boolean> {\r\n static type = \"ZSpaceIsActivePM\";\r\n\r\n /**\r\n * Get the singleton instance of ZSpaceIsActivePM\r\n * @param appObjects - The AppObjectRepo instance\r\n * @returns The ZSpaceIsActivePM instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ZSpaceIsActivePM>(\r\n ZSpaceIsActivePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create the ZSpaceIsActivePM\r\n * For internal use only - external code should use ZSpaceIsActivePM.get()\r\n *\r\n * @param appObject - The AppObject to attach the PM to\r\n * @returns A new ZSpaceIsActivePM instance\r\n */\r\nexport function makeZSpaceIsActivePM(appObject: AppObject): ZSpaceIsActivePM {\r\n return new ZSpaceIsActivePMImp(appObject);\r\n}\r\n\r\nclass ZSpaceIsActivePMImp extends ZSpaceIsActivePM {\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n private get zSpace() {\r\n return this.getCachedSingleton<ZSpaceHostEntity>(ZSpaceHostEntity.type);\r\n }\r\n\r\n private onEntityChange = () => {\r\n if (!this.zSpace) return;\r\n\r\n this.doUpdateView(this.zSpace.isActive);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ZSpaceIsActivePM.type);\r\n\r\n const zSpace = this.zSpace;\r\n if (!zSpace) {\r\n this.error(\r\n \"PM Has been added to an app object that does not have a ZSpaceHostEntity\"\r\n );\r\n return;\r\n }\r\n zSpace.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ZSpaceIsActivePM.js","sourceRoot":"","sources":["../../../../src/ZSpaceHost/PMs/ZSpaceIsActivePM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,oBAA6B;IAG1E;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,gBAAgB,CAAC,IAAI,EACrB,UAAU,CACX,CAAC;IACJ,CAAC;;AAZM,qBAAI,GAAG,kBAAkB,CAAC;AAenC;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAoB;IACvD,OAAO,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,mBAAoB,SAAQ,gBAAgB;IAGhD,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAOD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAhB1C,cAAS,GAAG,KAAK,CAAC;QAUlB,WAAM,GAAG,GAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC;QAKA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CACR,0EAA0E,CAC3E,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectSingletonPM,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\nimport { ZSpaceHostEntity } from \"../Entities/ZSpaceHost\";\r\n\r\n/**\r\n * ZSpaceIsActivePM is a singleton Presentation Manager that provides a boolean view model\r\n * indicating whether zSpace is currently active.\r\n *\r\n * This PM observes ZSpaceHostEntity and updates its view model when the isActive property changes.\r\n *\r\n * Usage in UI components:\r\n * 1. Via direct PM access (not recommended for UI components):\r\n * const pm = ZSpaceIsActivePM.get(appObjects);\r\n * pm?.addView((isActive) => { updateUIBasedOn(isActive); });\r\n *\r\n * 2. Via adapter (recommended for React/UI components):\r\n * import { zSpaceIsActivePMAdapter } from \"../Adapters\";\r\n *\r\n * // In a React component:\r\n * const [isZSpaceActive, setIsZSpaceActive] = useState(zSpaceIsActivePMAdapter.defaultVM);\r\n *\r\n * useEffect(() => {\r\n * zSpaceIsActivePMAdapter.subscribe(appObjects, setIsZSpaceActive);\r\n * return () => zSpaceIsActivePMAdapter.unsubscribe(appObjects, setIsZSpaceActive);\r\n * }, [appObjects]);\r\n *\r\n * When zSpace is active, UI components may want to:\r\n * - Display 3D content differently\r\n * - Show zSpace-specific controls\r\n * - Adjust UI layouts for stereoscopic viewing\r\n */\r\nexport abstract class ZSpaceIsActivePM extends AppObjectSingletonPM<boolean> {\r\n static type = \"ZSpaceIsActivePM\";\r\n\r\n /**\r\n * Get the singleton instance of ZSpaceIsActivePM\r\n * @param appObjects - The AppObjectRepo instance\r\n * @returns The ZSpaceIsActivePM instance or undefined if not found\r\n */\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ZSpaceIsActivePM>(\r\n ZSpaceIsActivePM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create the ZSpaceIsActivePM\r\n * For internal use only - external code should use ZSpaceIsActivePM.get()\r\n *\r\n * @param appObject - The AppObject to attach the PM to\r\n * @returns A new ZSpaceIsActivePM instance\r\n */\r\nexport function makeZSpaceIsActivePM(appObject: AppObject): ZSpaceIsActivePM {\r\n return new ZSpaceIsActivePMImp(appObject);\r\n}\r\n\r\nclass ZSpaceIsActivePMImp extends ZSpaceIsActivePM {\r\n defaultVM = false;\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n private get zSpace() {\r\n return this.getCachedSingleton<ZSpaceHostEntity>(ZSpaceHostEntity.type);\r\n }\r\n\r\n formVM = (): void => {\r\n if (!this.zSpace) return;\r\n this.doUpdateView(this.zSpace.isActive);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ZSpaceIsActivePM.type);\r\n\r\n const zSpace = this.zSpace;\r\n if (!zSpace) {\r\n this.error(\r\n \"PM Has been added to an app object that does not have a ZSpaceHostEntity\"\r\n );\r\n return;\r\n }\r\n\r\n this.observeEntity(zSpace);\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
- import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
- export declare abstract class DevFeaturesEnabledPM extends AppObjectPM<boolean> {
1
+ import { AppObject, AppObjectSingletonPM, AppObjectRepo } from "@vived/core";
2
+ export declare abstract class DevFeaturesEnabledPM extends AppObjectSingletonPM<boolean> {
3
3
  static type: string;
4
4
  static get(appObjects: AppObjectRepo): DevFeaturesEnabledPM | undefined;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DevFeaturesEnabledPM.d.ts","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/DevFeaturesEnabledPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,WAAW,EACX,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,oBAAqB,SAAQ,WAAW,CAAC,OAAO,CAAC;IACrE,MAAM,CAAC,IAAI,SAA0B;IAErC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,GACnB,oBAAoB,CAEtB"}
1
+ {"version":3,"file":"DevFeaturesEnabledPM.d.ts","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/DevFeaturesEnabledPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,oBAAoB,EACpB,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,oBAAqB,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IAC9E,MAAM,CAAC,IAAI,SAA0B;IAErC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,GACnB,oBAAoB,CAEtB"}
@@ -1,5 +1,5 @@
1
- import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
- export declare abstract class ShowInspectorPM extends AppObjectPM<boolean> {
1
+ import { AppObject, AppObjectSingletonPM, AppObjectRepo } from "@vived/core";
2
+ export declare abstract class ShowInspectorPM extends AppObjectSingletonPM<boolean> {
3
3
  static type: string;
4
4
  static get(appObjects: AppObjectRepo): ShowInspectorPM | undefined;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ShowInspectorPM.d.ts","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/ShowInspectorPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,WAAW,EACX,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,eAAgB,SAAQ,WAAW,CAAC,OAAO,CAAC;IAChE,MAAM,CAAC,IAAI,SAAqB;IAEhC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CAEzE"}
1
+ {"version":3,"file":"ShowInspectorPM.d.ts","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/ShowInspectorPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,oBAAoB,EACpB,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,eAAgB,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IACzE,MAAM,CAAC,IAAI,SAAqB;IAEhC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CAEzE"}
@@ -1,5 +1,5 @@
1
- import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
- export declare abstract class StartInZSpacePM extends AppObjectPM<boolean> {
1
+ import { AppObject, AppObjectSingletonPM, AppObjectRepo } from "@vived/core";
2
+ export declare abstract class StartInZSpacePM extends AppObjectSingletonPM<boolean> {
3
3
  static type: string;
4
4
  static get(appObjects: AppObjectRepo): StartInZSpacePM | undefined;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StartInZSpacePM.d.ts","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/StartInZSpacePM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,WAAW,EACX,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,eAAgB,SAAQ,WAAW,CAAC,OAAO,CAAC;IAChE,MAAM,CAAC,IAAI,SAAqB;IAEhC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CAEzE"}
1
+ {"version":3,"file":"StartInZSpacePM.d.ts","sourceRoot":"","sources":["../../../../src/AppSandbox/PMs/StartInZSpacePM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,oBAAoB,EACpB,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,eAAgB,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IACzE,MAAM,CAAC,IAAI,SAAqB;IAEhC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CAEzE"}
@@ -1,5 +1,5 @@
1
- import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
- export declare abstract class ShowArchivedAppAssetPM extends AppObjectPM<boolean> {
1
+ import { AppObject, AppObjectSingletonPM, AppObjectRepo } from "@vived/core";
2
+ export declare abstract class ShowArchivedAppAssetPM extends AppObjectSingletonPM<boolean> {
3
3
  static type: string;
4
4
  static get(appObjects: AppObjectRepo): ShowArchivedAppAssetPM | undefined;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ShowArchivedAppAssetPM.d.ts","sourceRoot":"","sources":["../../../../src/Assets/PMs/ShowArchivedAppAssetPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,WAAW,EACX,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,sBAAuB,SAAQ,WAAW,CAAC,OAAO,CAAC;IACvE,MAAM,CAAC,IAAI,SAA4B;IAEvC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,GAAG,sBAAsB,GAAG,SAAS;CAG1E;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,GACnB,sBAAsB,CAExB"}
1
+ {"version":3,"file":"ShowArchivedAppAssetPM.d.ts","sourceRoot":"","sources":["../../../../src/Assets/PMs/ShowArchivedAppAssetPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,oBAAoB,EACpB,aAAa,EACd,MAAM,aAAa,CAAC;AAGrB,8BAAsB,sBAAuB,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IAChF,MAAM,CAAC,IAAI,SAA4B;IAEvC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,GAAG,sBAAsB,GAAG,SAAS;CAG1E;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,GACnB,sBAAsB,CAExB"}
@@ -1,5 +1,5 @@
1
- import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
- export declare abstract class HasChallengeResultsPM extends AppObjectPM<boolean> {
1
+ import { AppObject, AppObjectSingletonPM, AppObjectRepo } from "@vived/core";
2
+ export declare abstract class HasChallengeResultsPM extends AppObjectSingletonPM<boolean> {
3
3
  static type: string;
4
4
  static get(appObjects: AppObjectRepo): HasChallengeResultsPM | undefined;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HasChallengeResultsPM.d.ts","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EAEd,MAAM,aAAa,CAAC;AAKrB,8BAAsB,qBAAsB,SAAQ,WAAW,CAAC,OAAO,CAAC;IACtE,MAAM,CAAC,IAAI,SAA2B;IAEtC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,GACnB,qBAAqB,CAEvB"}
1
+ {"version":3,"file":"HasChallengeResultsPM.d.ts","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,aAAa,EAEd,MAAM,aAAa,CAAC;AAKrB,8BAAsB,qBAAsB,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IAC/E,MAAM,CAAC,IAAI,SAA2B;IAEtC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,GACnB,qBAAqB,CAEvB"}
@@ -1,5 +1,5 @@
1
- import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
- export declare abstract class ForwardLogsToConsolePM extends AppObjectPM<boolean> {
1
+ import { AppObject, AppObjectSingletonPM, AppObjectRepo } from "@vived/core";
2
+ export declare abstract class ForwardLogsToConsolePM extends AppObjectSingletonPM<boolean> {
3
3
  static type: string;
4
4
  static get(appObjects: AppObjectRepo): ForwardLogsToConsolePM | undefined;
5
5
  }