@vived/component-abb-controller 0.1.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 (109) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/COMPONENT_KNOWLEDGE.md +198 -0
  3. package/LICENSE +15 -0
  4. package/dist/AbbControllerEvents.d.ts +42 -0
  5. package/dist/AbbControllerEvents.d.ts.map +1 -0
  6. package/dist/AbbControllerFacade.d.ts +80 -0
  7. package/dist/AbbControllerFacade.d.ts.map +1 -0
  8. package/dist/AbbControllerState.d.ts +28 -0
  9. package/dist/AbbControllerState.d.ts.map +1 -0
  10. package/dist/Domain/Adapters/abbControllerPMAdapter.d.ts +10 -0
  11. package/dist/Domain/Adapters/abbControllerPMAdapter.d.ts.map +1 -0
  12. package/dist/Domain/Controllers/abbControllerHitboxClicked.d.ts +8 -0
  13. package/dist/Domain/Controllers/abbControllerHitboxClicked.d.ts.map +1 -0
  14. package/dist/Domain/Controllers/abbControllerStateDefaults.d.ts +11 -0
  15. package/dist/Domain/Controllers/abbControllerStateDefaults.d.ts.map +1 -0
  16. package/dist/Domain/Controllers/applyAbbControllerState.d.ts +24 -0
  17. package/dist/Domain/Controllers/applyAbbControllerState.d.ts.map +1 -0
  18. package/dist/Domain/Controllers/checkVoltage.d.ts +7 -0
  19. package/dist/Domain/Controllers/checkVoltage.d.ts.map +1 -0
  20. package/dist/Domain/Controllers/createAbbController.d.ts +12 -0
  21. package/dist/Domain/Controllers/createAbbController.d.ts.map +1 -0
  22. package/dist/Domain/Controllers/disableHitbox.d.ts +7 -0
  23. package/dist/Domain/Controllers/disableHitbox.d.ts.map +1 -0
  24. package/dist/Domain/Controllers/enableHitbox.d.ts +6 -0
  25. package/dist/Domain/Controllers/enableHitbox.d.ts.map +1 -0
  26. package/dist/Domain/Controllers/getAbbControllerState.d.ts +7 -0
  27. package/dist/Domain/Controllers/getAbbControllerState.d.ts.map +1 -0
  28. package/dist/Domain/Controllers/onAbbControllerSelected.d.ts +7 -0
  29. package/dist/Domain/Controllers/onAbbControllerSelected.d.ts.map +1 -0
  30. package/dist/Domain/Controllers/onLockoutBlockedByPower.d.ts +7 -0
  31. package/dist/Domain/Controllers/onLockoutBlockedByPower.d.ts.map +1 -0
  32. package/dist/Domain/Controllers/onLockoutDisengaged.d.ts +7 -0
  33. package/dist/Domain/Controllers/onLockoutDisengaged.d.ts.map +1 -0
  34. package/dist/Domain/Controllers/onLockoutEngaged.d.ts +7 -0
  35. package/dist/Domain/Controllers/onLockoutEngaged.d.ts.map +1 -0
  36. package/dist/Domain/Controllers/onPowerOnBlockedByLockout.d.ts +7 -0
  37. package/dist/Domain/Controllers/onPowerOnBlockedByLockout.d.ts.map +1 -0
  38. package/dist/Domain/Controllers/onPoweredOff.d.ts +11 -0
  39. package/dist/Domain/Controllers/onPoweredOff.d.ts.map +1 -0
  40. package/dist/Domain/Controllers/onPoweredOn.d.ts +11 -0
  41. package/dist/Domain/Controllers/onPoweredOn.d.ts.map +1 -0
  42. package/dist/Domain/Controllers/onVoltageChecked.d.ts +7 -0
  43. package/dist/Domain/Controllers/onVoltageChecked.d.ts.map +1 -0
  44. package/dist/Domain/Controllers/setShowGhostLockHint.d.ts +12 -0
  45. package/dist/Domain/Controllers/setShowGhostLockHint.d.ts.map +1 -0
  46. package/dist/Domain/Controllers/tryLockOut.d.ts +10 -0
  47. package/dist/Domain/Controllers/tryLockOut.d.ts.map +1 -0
  48. package/dist/Domain/Controllers/tryPowerOff.d.ts +8 -0
  49. package/dist/Domain/Controllers/tryPowerOff.d.ts.map +1 -0
  50. package/dist/Domain/Controllers/tryPowerOn.d.ts +10 -0
  51. package/dist/Domain/Controllers/tryPowerOn.d.ts.map +1 -0
  52. package/dist/Domain/Controllers/tryToggleLockout.d.ts +10 -0
  53. package/dist/Domain/Controllers/tryToggleLockout.d.ts.map +1 -0
  54. package/dist/Domain/Controllers/tryTogglePower.d.ts +10 -0
  55. package/dist/Domain/Controllers/tryTogglePower.d.ts.map +1 -0
  56. package/dist/Domain/Controllers/tryUnlock.d.ts +8 -0
  57. package/dist/Domain/Controllers/tryUnlock.d.ts.map +1 -0
  58. package/dist/Domain/Entities/AbbControllerEntity.d.ts +55 -0
  59. package/dist/Domain/Entities/AbbControllerEntity.d.ts.map +1 -0
  60. package/dist/Domain/Entities/AbbControllerRepo.d.ts +28 -0
  61. package/dist/Domain/Entities/AbbControllerRepo.d.ts.map +1 -0
  62. package/dist/Domain/Factory/AbbControllerFeatureFactory.d.ts +26 -0
  63. package/dist/Domain/Factory/AbbControllerFeatureFactory.d.ts.map +1 -0
  64. package/dist/Domain/Factory/setupAbbControllerInstanceFactory.d.ts +11 -0
  65. package/dist/Domain/Factory/setupAbbControllerInstanceFactory.d.ts.map +1 -0
  66. package/dist/Domain/Mocks/MockAbbControllerCheckVoltageUC.d.ts +12 -0
  67. package/dist/Domain/Mocks/MockAbbControllerCheckVoltageUC.d.ts.map +1 -0
  68. package/dist/Domain/Mocks/MockAbbControllerLockoutUC.d.ts +16 -0
  69. package/dist/Domain/Mocks/MockAbbControllerLockoutUC.d.ts.map +1 -0
  70. package/dist/Domain/Mocks/MockAbbControllerPM.d.ts +11 -0
  71. package/dist/Domain/Mocks/MockAbbControllerPM.d.ts.map +1 -0
  72. package/dist/Domain/Mocks/MockAbbControllerPowerUC.d.ts +16 -0
  73. package/dist/Domain/Mocks/MockAbbControllerPowerUC.d.ts.map +1 -0
  74. package/dist/Domain/Mocks/MockAbbControllerSelectUC.d.ts +13 -0
  75. package/dist/Domain/Mocks/MockAbbControllerSelectUC.d.ts.map +1 -0
  76. package/dist/Domain/PMs/AbbControllerPM.d.ts +34 -0
  77. package/dist/Domain/PMs/AbbControllerPM.d.ts.map +1 -0
  78. package/dist/Domain/UCs/AbbControllerCheckVoltageUC.d.ts +24 -0
  79. package/dist/Domain/UCs/AbbControllerCheckVoltageUC.d.ts.map +1 -0
  80. package/dist/Domain/UCs/AbbControllerLockoutUC.d.ts +35 -0
  81. package/dist/Domain/UCs/AbbControllerLockoutUC.d.ts.map +1 -0
  82. package/dist/Domain/UCs/AbbControllerPowerUC.d.ts +31 -0
  83. package/dist/Domain/UCs/AbbControllerPowerUC.d.ts.map +1 -0
  84. package/dist/Domain/UCs/AbbControllerSelectUC.d.ts +32 -0
  85. package/dist/Domain/UCs/AbbControllerSelectUC.d.ts.map +1 -0
  86. package/dist/Domain/makeDomainForTesting.d.ts +18 -0
  87. package/dist/Domain/makeDomainForTesting.d.ts.map +1 -0
  88. package/dist/Frameworks/Babylon/AbbControllerAssetCache.d.ts +5 -0
  89. package/dist/Frameworks/Babylon/AbbControllerAssetCache.d.ts.map +1 -0
  90. package/dist/Frameworks/Babylon/AbbControllerBabylonView.d.ts +30 -0
  91. package/dist/Frameworks/Babylon/AbbControllerBabylonView.d.ts.map +1 -0
  92. package/dist/Frameworks/Babylon/CutoffKnobView.d.ts +28 -0
  93. package/dist/Frameworks/Babylon/CutoffKnobView.d.ts.map +1 -0
  94. package/dist/Frameworks/Babylon/HitboxView.d.ts +23 -0
  95. package/dist/Frameworks/Babylon/HitboxView.d.ts.map +1 -0
  96. package/dist/Frameworks/Babylon/LockView.d.ts +27 -0
  97. package/dist/Frameworks/Babylon/LockView.d.ts.map +1 -0
  98. package/dist/Frameworks/Babylon/SmartComponentView.d.ts +28 -0
  99. package/dist/Frameworks/Babylon/SmartComponentView.d.ts.map +1 -0
  100. package/dist/Frameworks/Babylon/createBabylonAbbController.d.ts +13 -0
  101. package/dist/Frameworks/Babylon/createBabylonAbbController.d.ts.map +1 -0
  102. package/dist/SmartComponent.d.ts +42 -0
  103. package/dist/SmartComponent.d.ts.map +1 -0
  104. package/dist/component.config.d.ts +18 -0
  105. package/dist/component.config.d.ts.map +1 -0
  106. package/dist/index.d.ts +55 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +1313 -0
  109. package/package.json +53 -0
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to voltage-checked notifications on the given controller.
4
+ * Returns an unsubscribe function.
5
+ */
6
+ export declare function onVoltageChecked(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
7
+ //# sourceMappingURL=onVoltageChecked.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onVoltageChecked.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onVoltageChecked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,12 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Enables or disables always-visible ghost lock hint mode on the given
4
+ * controller (mirrors the PneumaticPanel lock/ghost-lock pattern).
5
+ *
6
+ * @param id - The ID of the ABB Controller instance.
7
+ * @param appObjects - The AppObject repository.
8
+ * @param on - True to show the ghost lock immediately (training mode), false
9
+ * for hover-only reveal (assessment mode).
10
+ */
11
+ export declare function setShowGhostLockHint(id: string, appObjects: AppObjectRepo, on: boolean): void;
12
+ //# sourceMappingURL=setShowGhostLockHint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setShowGhostLockHint.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/setShowGhostLockHint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,EAAE,EAAE,OAAO,GACV,IAAI,CAYN"}
@@ -0,0 +1,10 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to engage the lockout on an ABB Controller instance.
4
+ * Resolves the per-instance UC and delegates to it.
5
+ *
6
+ * @returns true if lockout succeeded, false if refused (powered on) or if the
7
+ * UC could not be found.
8
+ */
9
+ export declare function tryLockOut(id: string, appObjects: AppObjectRepo): boolean;
10
+ //# sourceMappingURL=tryLockOut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryLockOut.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/tryLockOut.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAYzE"}
@@ -0,0 +1,8 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to power off an ABB Controller instance.
4
+ * Resolves the per-instance UC and delegates to it. Powering off always
5
+ * succeeds once the UC is found.
6
+ */
7
+ export declare function tryPowerOff(id: string, appObjects: AppObjectRepo): boolean;
8
+ //# sourceMappingURL=tryPowerOff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryPowerOff.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/tryPowerOff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAY1E"}
@@ -0,0 +1,10 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to power on an ABB Controller instance.
4
+ * Resolves the per-instance UC and delegates to it.
5
+ *
6
+ * @returns true if power-on succeeded, false if refused (locked out) or if
7
+ * the UC could not be found.
8
+ */
9
+ export declare function tryPowerOn(id: string, appObjects: AppObjectRepo): boolean;
10
+ //# sourceMappingURL=tryPowerOn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryPowerOn.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/tryPowerOn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAYzE"}
@@ -0,0 +1,10 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to toggle the lockout state of an ABB Controller instance.
4
+ * Resolves the per-instance UC and delegates to it.
5
+ *
6
+ * @returns true if the toggle succeeded, false if refused (powered on) or if
7
+ * the UC could not be found.
8
+ */
9
+ export declare function tryToggleLockout(id: string, appObjects: AppObjectRepo): boolean;
10
+ //# sourceMappingURL=tryToggleLockout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryToggleLockout.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/tryToggleLockout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,OAAO,CAYT"}
@@ -0,0 +1,10 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to toggle the power state of an ABB Controller instance.
4
+ * Resolves the per-instance UC and delegates to it.
5
+ *
6
+ * @returns true if the toggle succeeded, false if refused (locked out) or
7
+ * if the UC could not be found.
8
+ */
9
+ export declare function tryTogglePower(id: string, appObjects: AppObjectRepo): boolean;
10
+ //# sourceMappingURL=tryTogglePower.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryTogglePower.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/tryTogglePower.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAY7E"}
@@ -0,0 +1,8 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to disengage the lockout on an ABB Controller instance.
4
+ * Resolves the per-instance UC and delegates to it. Unlocking always
5
+ * succeeds once the UC is found.
6
+ */
7
+ export declare function tryUnlock(id: string, appObjects: AppObjectRepo): boolean;
8
+ //# sourceMappingURL=tryUnlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryUnlock.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/tryUnlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAYxE"}
@@ -0,0 +1,55 @@
1
+ import { AppObject, AppObjectEntity, AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * ABB Controller Entity
4
+ *
5
+ * Manages the state for a single ABB Controller instance: power, lockout,
6
+ * power-on voltage, and the hitbox/ghost-lock-hint selection state.
7
+ *
8
+ * Power and lockout are safety-interlocked and therefore exposed only through
9
+ * guarded try-ops (`tryPowerOn`/`tryPowerOff`/`tryLockOut`/`tryUnlock`) — there
10
+ * are deliberately NO raw public setters for `isPoweredOn` / `isLockedOut` that
11
+ * would let a caller bypass the interlock:
12
+ * - `tryPowerOn` is refused while locked out.
13
+ * - `tryLockOut` is refused while powered on.
14
+ * - `tryPowerOff` / `tryUnlock` always succeed.
15
+ */
16
+ export declare abstract class AbbControllerEntity extends AppObjectEntity {
17
+ static readonly type = "AbbControllerEntity";
18
+ /** Whether the controller is currently powered on. Read-only; see try-ops. */
19
+ abstract get isPoweredOn(): boolean;
20
+ /** Whether the controller is currently locked out. Read-only; see try-ops. */
21
+ abstract get isLockedOut(): boolean;
22
+ /** Voltage present while powered on. Internal detail — not a facade command. */
23
+ abstract get powerOnVoltage(): number;
24
+ abstract set powerOnVoltage(val: number);
25
+ /** Whether the whole-controller hitbox is enabled for selection. */
26
+ abstract get isHitboxEnabled(): boolean;
27
+ abstract set isHitboxEnabled(val: boolean);
28
+ /**
29
+ * When true, the ghost lock is shown immediately (training mode).
30
+ * When false, the ghost lock is only revealed on hover (assessment mode).
31
+ */
32
+ abstract get isShowingGhostLockHint(): boolean;
33
+ abstract set isShowingGhostLockHint(val: boolean);
34
+ /** Attempt to power on. Refused while locked out. */
35
+ abstract tryPowerOn(): boolean;
36
+ /** Attempt to power off. Always succeeds. */
37
+ abstract tryPowerOff(): boolean;
38
+ /** Attempt to lock out. Refused while powered on. */
39
+ abstract tryLockOut(): boolean;
40
+ /** Attempt to unlock. Always succeeds. */
41
+ abstract tryUnlock(): boolean;
42
+ /**
43
+ * Retrieves the entity from an AppObject
44
+ */
45
+ static get(appObj: AppObject): AbbControllerEntity | undefined;
46
+ /**
47
+ * Retrieves the entity by AppObject ID
48
+ */
49
+ static getById(id: string, appObjects: AppObjectRepo): AbbControllerEntity | undefined;
50
+ }
51
+ /**
52
+ * Factory function to create a new AbbControllerEntity
53
+ */
54
+ export declare function makeAbbControllerEntity(appObject: AppObject): AbbControllerEntity;
55
+ //# sourceMappingURL=AbbControllerEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerEntity.d.ts","sourceRoot":"","sources":["../../../src/Domain/Entities/AbbControllerEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EAGd,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;GAaG;AACH,8BAAsB,mBAAoB,SAAQ,eAAe;IAC/D,MAAM,CAAC,QAAQ,CAAC,IAAI,yBAAyB;IAE7C,8EAA8E;IAC9E,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IAEpC,8EAA8E;IAC9E,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IAEpC,gFAAgF;IAChF,QAAQ,KAAK,cAAc,IAAI,MAAM,CAAC;IACtC,QAAQ,KAAK,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;IAEzC,oEAAoE;IACpE,QAAQ,KAAK,eAAe,IAAI,OAAO,CAAC;IACxC,QAAQ,KAAK,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE;IAE3C;;;OAGG;IACH,QAAQ,KAAK,sBAAsB,IAAI,OAAO,CAAC;IAC/C,QAAQ,KAAK,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE;IAElD,qDAAqD;IACrD,QAAQ,CAAC,UAAU,IAAI,OAAO;IAE9B,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B,qDAAqD;IACrD,QAAQ,CAAC,UAAU,IAAI,OAAO;IAE9B,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,IAAI,OAAO;IAE7B;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,mBAAmB,GAAG,SAAS;IAI9D;;OAEG;IACH,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,mBAAmB,GAAG,SAAS;CAGnC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,GACnB,mBAAmB,CAErB"}
@@ -0,0 +1,28 @@
1
+ import { AppObject, AppObjectEntityRepo, AppObjectRepo } from "@vived/core";
2
+ import { AbbControllerEntity } from "./AbbControllerEntity";
3
+ /** Factory function type for creating AbbControllerEntity instances */
4
+ export type AbbControllerEntityFactory = (id: string) => AbbControllerEntity;
5
+ /**
6
+ * AbbControllerRepo
7
+ *
8
+ * Singleton repository managing all ABB Controller instances.
9
+ * Provides creation, deletion, and lookup for component entities.
10
+ */
11
+ export declare abstract class AbbControllerRepo extends AppObjectEntityRepo<AbbControllerEntity> {
12
+ static readonly type = "AbbControllerRepo";
13
+ /** Injectable factory for creating entities with associated components */
14
+ abstract abbControllerEntityFactory: AbbControllerEntityFactory;
15
+ /** Create a new entity instance, optionally with a specific ID */
16
+ abstract createAbbControllerEntity(id?: string): AbbControllerEntity;
17
+ /** Delete an entity by its AppObject ID */
18
+ abstract deleteAbbControllerEntity(id: string): void;
19
+ /**
20
+ * Global accessor for the singleton repository
21
+ */
22
+ static get(appObjects: AppObjectRepo): AbbControllerRepo | undefined;
23
+ }
24
+ /**
25
+ * Factory function to create a new AbbControllerRepo
26
+ */
27
+ export declare function makeAbbControllerRepo(appObject: AppObject): AbbControllerRepo;
28
+ //# sourceMappingURL=AbbControllerRepo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerRepo.d.ts","sourceRoot":"","sources":["../../../src/Domain/Entities/AbbControllerRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,aAAa,EAGd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,uEAAuE;AACvE,MAAM,MAAM,0BAA0B,GAAG,CACvC,EAAE,EAAE,MAAM,KACP,mBAAmB,CAAC;AAEzB;;;;;GAKG;AACH,8BAAsB,iBAAkB,SAAQ,mBAAmB,CAAC,mBAAmB,CAAC;IACtF,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;IAE3C,0EAA0E;IAC1E,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAEhE,kEAAkE;IAClE,QAAQ,CAAC,yBAAyB,CAChC,EAAE,CAAC,EAAE,MAAM,GACV,mBAAmB;IAEtB,2CAA2C;IAC3C,QAAQ,CAAC,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAEpD;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,GAAG,iBAAiB,GAAG,SAAS;CAMrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,GACnB,iBAAiB,CAEnB"}
@@ -0,0 +1,26 @@
1
+ import { AppObjectRepo, DomainFactory } from "@vived/core";
2
+ /**
3
+ * AbbControllerFeatureFactory
4
+ *
5
+ * Orchestrates creation and wiring of the ABB Controller feature.
6
+ * Follows the four-phase setup pattern:
7
+ * 1. setupEntities — Create singleton repository
8
+ * 2. setupUCs — Create singleton use cases (if any)
9
+ * 3. setupPMs — Create singleton PMs (if any)
10
+ * 4. finalSetup — Cross-component wiring
11
+ *
12
+ * Per-instance UCs and PMs are created on-demand via the entity factory.
13
+ */
14
+ export declare class AbbControllerFeatureFactory extends DomainFactory {
15
+ factoryName: string;
16
+ private repo;
17
+ setupEntities(): void;
18
+ setupUCs(): void;
19
+ setupPMs(): void;
20
+ finalSetup(): void;
21
+ }
22
+ /**
23
+ * Creates and registers the AbbControllerFeatureFactory
24
+ */
25
+ export declare function makeAbbControllerFeatureFactory(appObjects: AppObjectRepo): AbbControllerFeatureFactory;
26
+ //# sourceMappingURL=AbbControllerFeatureFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerFeatureFactory.d.ts","sourceRoot":"","sources":["../../../src/Domain/Factory/AbbControllerFeatureFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAO3D;;;;;;;;;;;GAWG;AACH,qBAAa,2BAA4B,SAAQ,aAAa;IAC5D,WAAW,SAAiC;IAE5C,OAAO,CAAC,IAAI,CAAkC;IAE9C,aAAa,IAAI,IAAI;IAOrB,QAAQ,IAAI,IAAI;IAIhB,QAAQ,IAAI,IAAI;IAKhB,UAAU,IAAI,IAAI;CAGnB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,aAAa,GACxB,2BAA2B,CAG7B"}
@@ -0,0 +1,11 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ import { AbbControllerEntityFactory } from "../Entities/AbbControllerRepo";
3
+ /**
4
+ * Per-instance factory: creates Entity → UCs → PM for each component instance,
5
+ * in that order, so PM subscriptions see a fully initialized object graph.
6
+ *
7
+ * Kept in its own file so domain wiring for a single instance lives in one place
8
+ * as the component grows.
9
+ */
10
+ export declare function setupAbbControllerInstanceFactory(appObjects: AppObjectRepo): AbbControllerEntityFactory;
11
+ //# sourceMappingURL=setupAbbControllerInstanceFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupAbbControllerInstanceFactory.d.ts","sourceRoot":"","sources":["../../../src/Domain/Factory/setupAbbControllerInstanceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAO3E;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,aAAa,GACxB,0BAA0B,CAiB5B"}
@@ -0,0 +1,12 @@
1
+ import { AppObject } from "@vived/core";
2
+ import { AbbControllerCheckVoltageUC } from "../UCs/AbbControllerCheckVoltageUC";
3
+ /**
4
+ * Mock UC for testing controllers/views in isolation.
5
+ * Replace `execute` with vi.fn() in a test to assert delegation.
6
+ */
7
+ export declare class MockAbbControllerCheckVoltageUC extends AbbControllerCheckVoltageUC {
8
+ execute: () => void;
9
+ subscribeOnVoltageChecked: () => (() => void);
10
+ constructor(appObject: AppObject);
11
+ }
12
+ //# sourceMappingURL=MockAbbControllerCheckVoltageUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockAbbControllerCheckVoltageUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockAbbControllerCheckVoltageUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF;;;GAGG;AACH,qBAAa,+BAAgC,SAAQ,2BAA2B;IAC9E,OAAO,QAAO,IAAI,CAAO;IACzB,yBAAyB,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;gBAE7C,SAAS,EAAE,SAAS;CAGjC"}
@@ -0,0 +1,16 @@
1
+ import { AppObject } from "@vived/core";
2
+ import { AbbControllerLockoutUC } from "../UCs/AbbControllerLockoutUC";
3
+ /**
4
+ * Mock UC for testing controllers/views in isolation.
5
+ * Replace individual methods with vi.fn() in a test to assert delegation.
6
+ */
7
+ export declare class MockAbbControllerLockoutUC extends AbbControllerLockoutUC {
8
+ lockOut: () => boolean;
9
+ unlock: () => boolean;
10
+ toggleLockout: () => boolean;
11
+ subscribeOnLockoutEngaged: () => (() => void);
12
+ subscribeOnLockoutDisengaged: () => (() => void);
13
+ subscribeOnLockoutBlockedByPower: () => (() => void);
14
+ constructor(appObject: AppObject);
15
+ }
16
+ //# sourceMappingURL=MockAbbControllerLockoutUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockAbbControllerLockoutUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockAbbControllerLockoutUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,sBAAsB;IACpE,OAAO,QAAO,OAAO,CAAS;IAC9B,MAAM,QAAO,OAAO,CAAS;IAC7B,aAAa,QAAO,OAAO,CAAS;IACpC,yBAAyB,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;IACzD,4BAA4B,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;IAC5D,gCAAgC,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;gBAEpD,SAAS,EAAE,SAAS;CAGjC"}
@@ -0,0 +1,11 @@
1
+ import { AppObject } from "@vived/core";
2
+ import { AbbControllerPM } from "../PMs/AbbControllerPM";
3
+ /**
4
+ * Mock PM for testing views and adapters in isolation.
5
+ * Always suppresses duplicate emission in tests.
6
+ */
7
+ export declare class MockAbbControllerPM extends AbbControllerPM {
8
+ vmsAreEqual: () => boolean;
9
+ constructor(appObject: AppObject);
10
+ }
11
+ //# sourceMappingURL=MockAbbControllerPM.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockAbbControllerPM.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockAbbControllerPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,WAAW,QAAO,OAAO,CAAS;gBAEtB,SAAS,EAAE,SAAS;CAGjC"}
@@ -0,0 +1,16 @@
1
+ import { AppObject } from "@vived/core";
2
+ import { AbbControllerPowerUC } from "../UCs/AbbControllerPowerUC";
3
+ /**
4
+ * Mock UC for testing controllers/views in isolation.
5
+ * Replace individual methods with vi.fn() in a test to assert delegation.
6
+ */
7
+ export declare class MockAbbControllerPowerUC extends AbbControllerPowerUC {
8
+ powerOn: () => boolean;
9
+ powerOff: () => boolean;
10
+ togglePower: () => boolean;
11
+ subscribeOnPoweredOn: () => (() => void);
12
+ subscribeOnPoweredOff: () => (() => void);
13
+ subscribeOnPowerOnBlockedByLockout: () => (() => void);
14
+ constructor(appObject: AppObject);
15
+ }
16
+ //# sourceMappingURL=MockAbbControllerPowerUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockAbbControllerPowerUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockAbbControllerPowerUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,OAAO,QAAO,OAAO,CAAS;IAC9B,QAAQ,QAAO,OAAO,CAAS;IAC/B,WAAW,QAAO,OAAO,CAAS;IAClC,oBAAoB,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;IACpD,qBAAqB,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;IACrD,kCAAkC,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;gBAEtD,SAAS,EAAE,SAAS;CAGjC"}
@@ -0,0 +1,13 @@
1
+ import { AppObject } from "@vived/core";
2
+ import { AbbControllerSelectUC } from "../UCs/AbbControllerSelectUC";
3
+ /**
4
+ * Mock SelectUC for testing views and controllers in isolation.
5
+ */
6
+ export declare class MockAbbControllerSelectUC extends AbbControllerSelectUC {
7
+ enableHitbox: () => void;
8
+ disableHitbox: () => void;
9
+ subscribeOnSelected: () => (() => void);
10
+ notifySelected: () => void;
11
+ constructor(appObject: AppObject);
12
+ }
13
+ //# sourceMappingURL=MockAbbControllerSelectUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockAbbControllerSelectUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockAbbControllerSelectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,YAAY,QAAO,IAAI,CAAO;IAC9B,aAAa,QAAO,IAAI,CAAO;IAC/B,mBAAmB,QAAO,CAAC,MAAM,IAAI,CAAC,CAAa;IACnD,cAAc,QAAO,IAAI,CAAO;gBAEpB,SAAS,EAAE,SAAS;CAGjC"}
@@ -0,0 +1,34 @@
1
+ import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * View Model for ABB Controller UI rendering.
4
+ * Immutable snapshot of component state suitable for views.
5
+ */
6
+ export interface AbbControllerVM {
7
+ /** Whether the controller is currently powered on */
8
+ isPoweredOn: boolean;
9
+ /** Whether the controller is currently locked out */
10
+ isLockedOut: boolean;
11
+ /** Whether power on is currently allowed (not locked out) */
12
+ canPowerOn: boolean;
13
+ /** Whether lock out is currently allowed (not powered on) */
14
+ canLockOut: boolean;
15
+ /** Current voltage level (powerOnVoltage when powered on, 0 when powered off) */
16
+ voltage: number;
17
+ }
18
+ /**
19
+ * AbbControllerPM
20
+ *
21
+ * Presentation Manager that observes the AbbControllerEntity and
22
+ * emits immutable view models for UI consumption. Suppresses redundant
23
+ * updates when state hasn't changed.
24
+ */
25
+ export declare abstract class AbbControllerPM extends AppObjectPM<AbbControllerVM> {
26
+ static readonly type = "AbbControllerPM";
27
+ static get(appObj: AppObject): AbbControllerPM | undefined;
28
+ static getById(id: string, appObjects: AppObjectRepo): AbbControllerPM | undefined;
29
+ }
30
+ /**
31
+ * Factory function to create a new AbbControllerPM
32
+ */
33
+ export declare function makeAbbControllerPM(appObject: AppObject): AbbControllerPM;
34
+ //# sourceMappingURL=AbbControllerPM.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerPM.d.ts","sourceRoot":"","sources":["../../../src/Domain/PMs/AbbControllerPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGpE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,8BAAsB,eAAgB,SAAQ,WAAW,CAAC,eAAe,CAAC;IACxE,MAAM,CAAC,QAAQ,CAAC,IAAI,qBAAqB;IAEzC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS;IAI1D,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,eAAe,GAAG,SAAS;CAG/B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,GACnB,eAAe,CAEjB"}
@@ -0,0 +1,24 @@
1
+ import { AppObject, AppObjectRepo, AppObjectUC } from "@vived/core";
2
+ /**
3
+ * AbbControllerCheckVoltageUC
4
+ *
5
+ * Use Case for checking an ABB Controller's voltage. The component shows no
6
+ * dialog itself (per canon, pending vivian-knowledge#62) — it just applies the
7
+ * voltage rule (`isPoweredOn ? powerOnVoltage : 0`, which already lives on the
8
+ * entity/PM) and notifies subscribers that a check happened. A host reads the
9
+ * live value off the view model / `getState()`, not from this notification.
10
+ */
11
+ export declare abstract class AbbControllerCheckVoltageUC extends AppObjectUC {
12
+ static readonly type = "AbbControllerCheckVoltageUC";
13
+ /** Check the controller's voltage and notify subscribers. */
14
+ abstract execute(): void;
15
+ /** Subscribe to voltage-checked notifications. Returns an unsubscribe function. */
16
+ abstract subscribeOnVoltageChecked(callback: () => void): () => void;
17
+ static get(appObj: AppObject): AbbControllerCheckVoltageUC | undefined;
18
+ static getById(id: string, appObjects: AppObjectRepo): AbbControllerCheckVoltageUC | undefined;
19
+ }
20
+ /**
21
+ * Factory function to create a new AbbControllerCheckVoltageUC
22
+ */
23
+ export declare function makeAbbControllerCheckVoltageUC(appObject: AppObject): AbbControllerCheckVoltageUC;
24
+ //# sourceMappingURL=AbbControllerCheckVoltageUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerCheckVoltageUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/AbbControllerCheckVoltageUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;;GAQG;AACH,8BAAsB,2BAA4B,SAAQ,WAAW;IACnE,MAAM,CAAC,QAAQ,CAAC,IAAI,iCAAiC;IAErD,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,IAAI,IAAI;IAExB,mFAAmF;IACnF,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEpE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,2BAA2B,GAAG,SAAS;IAItE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,2BAA2B,GAAG,SAAS;CAK3C;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,GACnB,2BAA2B,CAE7B"}
@@ -0,0 +1,35 @@
1
+ import { AppObject, AppObjectRepo, AppObjectUC } from "@vived/core";
2
+ /**
3
+ * AbbControllerLockoutUC
4
+ *
5
+ * Use Case for engaging/disengaging an ABB Controller's lockout. Delegates
6
+ * the safety interlock (refuse lockout while powered on) to the entity's
7
+ * try-ops, and exposes payload-free callback-set subscriptions for the
8
+ * resulting transitions — no `@vived/app` event bus.
9
+ */
10
+ export declare abstract class AbbControllerLockoutUC extends AppObjectUC {
11
+ static readonly type = "AbbControllerLockoutUC";
12
+ /** Attempt to lock out. Returns true if successful, false if powered on. */
13
+ abstract lockOut(): boolean;
14
+ /** Attempt to unlock. Always succeeds. */
15
+ abstract unlock(): boolean;
16
+ /** Toggle lockout state. Returns true if successful, false if refused. */
17
+ abstract toggleLockout(): boolean;
18
+ /** Subscribe to successful lockout-engaged transitions. Returns an unsubscribe function. */
19
+ abstract subscribeOnLockoutEngaged(callback: () => void): () => void;
20
+ /** Subscribe to successful lockout-disengaged transitions. Returns an unsubscribe function. */
21
+ abstract subscribeOnLockoutDisengaged(callback: () => void): () => void;
22
+ /**
23
+ * Subscribe to lockout attempts blocked by power (symmetric to
24
+ * `subscribeOnPowerOnBlockedByLockout` on `AbbControllerPowerUC`). Returns
25
+ * an unsubscribe function.
26
+ */
27
+ abstract subscribeOnLockoutBlockedByPower(callback: () => void): () => void;
28
+ static get(appObj: AppObject): AbbControllerLockoutUC | undefined;
29
+ static getById(id: string, appObjects: AppObjectRepo): AbbControllerLockoutUC | undefined;
30
+ }
31
+ /**
32
+ * Factory function to create a new AbbControllerLockoutUC
33
+ */
34
+ export declare function makeAbbControllerLockoutUC(appObject: AppObject): AbbControllerLockoutUC;
35
+ //# sourceMappingURL=AbbControllerLockoutUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerLockoutUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/AbbControllerLockoutUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;GAOG;AACH,8BAAsB,sBAAuB,SAAQ,WAAW;IAC9D,MAAM,CAAC,QAAQ,CAAC,IAAI,4BAA4B;IAEhD,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,IAAI,OAAO;IAE3B,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,IAAI,OAAO;IAE1B,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,IAAI,OAAO;IAEjC,4FAA4F;IAC5F,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEpE,+FAA+F;IAC/F,QAAQ,CAAC,4BAA4B,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEvE;;;;OAIG;IACH,QAAQ,CAAC,gCAAgC,CACvC,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI;IAEb,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,sBAAsB,GAAG,SAAS;IAIjE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,sBAAsB,GAAG,SAAS;CAKtC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,GACnB,sBAAsB,CAExB"}
@@ -0,0 +1,31 @@
1
+ import { AppObject, AppObjectRepo, AppObjectUC } from "@vived/core";
2
+ /**
3
+ * AbbControllerPowerUC
4
+ *
5
+ * Use Case for powering an ABB Controller on/off. Delegates the safety
6
+ * interlock (refuse power-on while locked out) to the entity's try-ops, and
7
+ * exposes payload-free callback-set subscriptions for the resulting
8
+ * transitions — no `@vived/app` event bus, no dialogs.
9
+ */
10
+ export declare abstract class AbbControllerPowerUC extends AppObjectUC {
11
+ static readonly type = "AbbControllerPowerUC";
12
+ /** Attempt to power on. Returns true if successful, false if locked out. */
13
+ abstract powerOn(): boolean;
14
+ /** Attempt to power off. Always succeeds. */
15
+ abstract powerOff(): boolean;
16
+ /** Toggle power state. Returns true if successful, false if refused. */
17
+ abstract togglePower(): boolean;
18
+ /** Subscribe to successful power-on transitions. Returns an unsubscribe function. */
19
+ abstract subscribeOnPoweredOn(callback: () => void): () => void;
20
+ /** Subscribe to successful power-off transitions. Returns an unsubscribe function. */
21
+ abstract subscribeOnPoweredOff(callback: () => void): () => void;
22
+ /** Subscribe to power-on attempts blocked by lockout. Returns an unsubscribe function. */
23
+ abstract subscribeOnPowerOnBlockedByLockout(callback: () => void): () => void;
24
+ static get(appObj: AppObject): AbbControllerPowerUC | undefined;
25
+ static getById(id: string, appObjects: AppObjectRepo): AbbControllerPowerUC | undefined;
26
+ }
27
+ /**
28
+ * Factory function to create a new AbbControllerPowerUC
29
+ */
30
+ export declare function makeAbbControllerPowerUC(appObject: AppObject): AbbControllerPowerUC;
31
+ //# sourceMappingURL=AbbControllerPowerUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerPowerUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/AbbControllerPowerUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;GAOG;AACH,8BAAsB,oBAAqB,SAAQ,WAAW;IAC5D,MAAM,CAAC,QAAQ,CAAC,IAAI,0BAA0B;IAE9C,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,IAAI,OAAO;IAE3B,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,IAAI,OAAO;IAE5B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B,qFAAqF;IACrF,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAE/D,sFAAsF;IACtF,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEhE,0FAA0F;IAC1F,QAAQ,CAAC,kCAAkC,CACzC,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI;IAEb,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,GAAG,SAAS;IAI/D,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,oBAAoB,GAAG,SAAS;CAGpC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,GACnB,oBAAoB,CAEtB"}
@@ -0,0 +1,32 @@
1
+ import { AppObject, AppObjectRepo, AppObjectUC } from "@vived/core";
2
+ /**
3
+ * AbbControllerSelectUC
4
+ *
5
+ * Use Case that manages the whole-controller Equipment Hitbox lifecycle and
6
+ * exposes the controller-selected event. Ported from the PneumaticPanel
7
+ * `PneumaticPanelSelectUC` hitbox subsystem: the hitbox-enabled flag lives on
8
+ * the entity (`isHitboxEnabled`), this UC only toggles it and owns the
9
+ * selected-event subscribe/notify pair.
10
+ */
11
+ export declare abstract class AbbControllerSelectUC extends AppObjectUC {
12
+ static readonly type = "AbbControllerSelectUC";
13
+ /** Enable the whole-controller hitbox for selection. */
14
+ abstract enableHitbox(): void;
15
+ /** Disable the whole-controller hitbox; sub-component interactions restored by view. */
16
+ abstract disableHitbox(): void;
17
+ /** Subscribe to controller-selected events. Returns an unsubscribe function. */
18
+ abstract subscribeOnSelected(callback: () => void): () => void;
19
+ /**
20
+ * Notify all subscribers that the controller was selected.
21
+ * Called exclusively via the `abbControllerHitboxClicked` controller
22
+ * (framework boundary — the view's click-handling wiring).
23
+ */
24
+ abstract notifySelected(): void;
25
+ static get(appObj: AppObject): AbbControllerSelectUC | undefined;
26
+ static getById(id: string, appObjects: AppObjectRepo): AbbControllerSelectUC | undefined;
27
+ }
28
+ /**
29
+ * Factory function to create a new AbbControllerSelectUC
30
+ */
31
+ export declare function makeAbbControllerSelectUC(appObject: AppObject): AbbControllerSelectUC;
32
+ //# sourceMappingURL=AbbControllerSelectUC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerSelectUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/AbbControllerSelectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;;GAQG;AACH,8BAAsB,qBAAsB,SAAQ,WAAW;IAC7D,MAAM,CAAC,QAAQ,CAAC,IAAI,2BAA2B;IAE/C,wDAAwD;IACxD,QAAQ,CAAC,YAAY,IAAI,IAAI;IAE7B,wFAAwF;IACxF,QAAQ,CAAC,aAAa,IAAI,IAAI;IAE9B,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAE9D;;;;OAIG;IACH,QAAQ,CAAC,cAAc,IAAI,IAAI;IAE/B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG,SAAS;IAIhE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,qBAAqB,GAAG,SAAS;CAGrC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,GACnB,qBAAqB,CAEvB"}
@@ -0,0 +1,18 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Canonical test harness for ABB Controller.
4
+ *
5
+ * Wires the full production domain exactly as the app would, so tests exercise
6
+ * real object graphs (act through Controllers, assert through the Adapter VM).
7
+ * A smart component returns only `appObjects` — there is no `appHandler` /
8
+ * `hostDispatches` (those exist only in a full host app).
9
+ *
10
+ * NOTE: the template owns this file. `/vived-init` creates it only when absent
11
+ * and never overwrites it (it treats the file as project-specific), so a
12
+ * scaffolded component keeps this version. Edit it freely as the domain grows.
13
+ */
14
+ export interface DomainForTesting {
15
+ appObjects: AppObjectRepo;
16
+ }
17
+ export declare function makeDomainForTesting(): DomainForTesting;
18
+ //# sourceMappingURL=makeDomainForTesting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeDomainForTesting.d.ts","sourceRoot":"","sources":["../../src/Domain/makeDomainForTesting.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAGd,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,aAAa,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,IAAI,gBAAgB,CAMvD"}
@@ -0,0 +1,5 @@
1
+ import type { AppObjectRepo } from "@vived/core";
2
+ import type { AssetContainer, Scene } from "@babylonjs/core";
3
+ export declare function getAbbControllerAssetContainer(scene: Scene, appObjects: AppObjectRepo, assetId: string): Promise<AssetContainer>;
4
+ export declare function clearAbbControllerAssetCache(): void;
5
+ //# sourceMappingURL=AbbControllerAssetCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerAssetCache.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/AbbControllerAssetCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAwB7D,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAoBzB;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAKnD"}
@@ -0,0 +1,30 @@
1
+ import type { AbstractMesh, Node, TransformNode } from "@babylonjs/core";
2
+ import { AppObject, AppObjectView } from "@vived/core";
3
+ import type { SmartComponentView } from "./SmartComponentView";
4
+ /**
5
+ * AbbControllerBabylonView
6
+ *
7
+ * Babylon.js composition view for the ABB Controller. Loads the GLB, exposes
8
+ * the `SmartComponentView` surface the host consumes, and composes the three
9
+ * interactive sub-views (cutoff knob, lock/ghost-lock, whole-controller
10
+ * hitbox) — each self-subscribes to the PM/entity to keep in sync.
11
+ *
12
+ * Presentation-free contract: this view owns geometry + semantic object identity
13
+ * (`nodesByObjectId`, `highlightGroupsByObjectId`), but NOT interaction-state
14
+ * presentation (hover outline, hints, tooltips) — the host draws those.
15
+ */
16
+ export declare abstract class AbbControllerBabylonView extends AppObjectView implements SmartComponentView {
17
+ static readonly type = "AbbControllerBabylonView";
18
+ /** Resolves the scene, loads meshes, builds the view surface, and subscribes. */
19
+ abstract load(): Promise<void>;
20
+ abstract get rootTransformNode(): TransformNode | undefined;
21
+ abstract get nodesByObjectId(): ReadonlyMap<string, Node>;
22
+ abstract get shadowCasters(): AbstractMesh[];
23
+ abstract get highlightGroupsByObjectId(): ReadonlyMap<string, AbstractMesh[]>;
24
+ static get(appObj: AppObject): AbbControllerBabylonView | undefined;
25
+ }
26
+ /**
27
+ * Factory function to create a AbbControllerBabylonView
28
+ */
29
+ export declare function makeAbbControllerBabylonView(appObject: AppObject): AbbControllerBabylonView;
30
+ //# sourceMappingURL=AbbControllerBabylonView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerBabylonView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/AbbControllerBabylonView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,IAAI,EAEJ,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAa/D;;;;;;;;;;;GAWG;AACH,8BAAsB,wBACpB,SAAQ,aACR,YAAW,kBAAkB;IAE7B,MAAM,CAAC,QAAQ,CAAC,IAAI,8BAA8B;IAElD,iFAAiF;IACjF,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,QAAQ,KAAK,iBAAiB,IAAI,aAAa,GAAG,SAAS,CAAC;IAC5D,QAAQ,KAAK,eAAe,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1D,QAAQ,KAAK,aAAa,IAAI,YAAY,EAAE,CAAC;IAC7C,QAAQ,KAAK,yBAAyB,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE9E,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,wBAAwB,GAAG,SAAS;CAGpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,GACnB,wBAAwB,CAE1B"}