@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.
- package/CHANGELOG.md +16 -0
- package/COMPONENT_KNOWLEDGE.md +198 -0
- package/LICENSE +15 -0
- package/dist/AbbControllerEvents.d.ts +42 -0
- package/dist/AbbControllerEvents.d.ts.map +1 -0
- package/dist/AbbControllerFacade.d.ts +80 -0
- package/dist/AbbControllerFacade.d.ts.map +1 -0
- package/dist/AbbControllerState.d.ts +28 -0
- package/dist/AbbControllerState.d.ts.map +1 -0
- package/dist/Domain/Adapters/abbControllerPMAdapter.d.ts +10 -0
- package/dist/Domain/Adapters/abbControllerPMAdapter.d.ts.map +1 -0
- package/dist/Domain/Controllers/abbControllerHitboxClicked.d.ts +8 -0
- package/dist/Domain/Controllers/abbControllerHitboxClicked.d.ts.map +1 -0
- package/dist/Domain/Controllers/abbControllerStateDefaults.d.ts +11 -0
- package/dist/Domain/Controllers/abbControllerStateDefaults.d.ts.map +1 -0
- package/dist/Domain/Controllers/applyAbbControllerState.d.ts +24 -0
- package/dist/Domain/Controllers/applyAbbControllerState.d.ts.map +1 -0
- package/dist/Domain/Controllers/checkVoltage.d.ts +7 -0
- package/dist/Domain/Controllers/checkVoltage.d.ts.map +1 -0
- package/dist/Domain/Controllers/createAbbController.d.ts +12 -0
- package/dist/Domain/Controllers/createAbbController.d.ts.map +1 -0
- package/dist/Domain/Controllers/disableHitbox.d.ts +7 -0
- package/dist/Domain/Controllers/disableHitbox.d.ts.map +1 -0
- package/dist/Domain/Controllers/enableHitbox.d.ts +6 -0
- package/dist/Domain/Controllers/enableHitbox.d.ts.map +1 -0
- package/dist/Domain/Controllers/getAbbControllerState.d.ts +7 -0
- package/dist/Domain/Controllers/getAbbControllerState.d.ts.map +1 -0
- package/dist/Domain/Controllers/onAbbControllerSelected.d.ts +7 -0
- package/dist/Domain/Controllers/onAbbControllerSelected.d.ts.map +1 -0
- package/dist/Domain/Controllers/onLockoutBlockedByPower.d.ts +7 -0
- package/dist/Domain/Controllers/onLockoutBlockedByPower.d.ts.map +1 -0
- package/dist/Domain/Controllers/onLockoutDisengaged.d.ts +7 -0
- package/dist/Domain/Controllers/onLockoutDisengaged.d.ts.map +1 -0
- package/dist/Domain/Controllers/onLockoutEngaged.d.ts +7 -0
- package/dist/Domain/Controllers/onLockoutEngaged.d.ts.map +1 -0
- package/dist/Domain/Controllers/onPowerOnBlockedByLockout.d.ts +7 -0
- package/dist/Domain/Controllers/onPowerOnBlockedByLockout.d.ts.map +1 -0
- package/dist/Domain/Controllers/onPoweredOff.d.ts +11 -0
- package/dist/Domain/Controllers/onPoweredOff.d.ts.map +1 -0
- package/dist/Domain/Controllers/onPoweredOn.d.ts +11 -0
- package/dist/Domain/Controllers/onPoweredOn.d.ts.map +1 -0
- package/dist/Domain/Controllers/onVoltageChecked.d.ts +7 -0
- package/dist/Domain/Controllers/onVoltageChecked.d.ts.map +1 -0
- package/dist/Domain/Controllers/setShowGhostLockHint.d.ts +12 -0
- package/dist/Domain/Controllers/setShowGhostLockHint.d.ts.map +1 -0
- package/dist/Domain/Controllers/tryLockOut.d.ts +10 -0
- package/dist/Domain/Controllers/tryLockOut.d.ts.map +1 -0
- package/dist/Domain/Controllers/tryPowerOff.d.ts +8 -0
- package/dist/Domain/Controllers/tryPowerOff.d.ts.map +1 -0
- package/dist/Domain/Controllers/tryPowerOn.d.ts +10 -0
- package/dist/Domain/Controllers/tryPowerOn.d.ts.map +1 -0
- package/dist/Domain/Controllers/tryToggleLockout.d.ts +10 -0
- package/dist/Domain/Controllers/tryToggleLockout.d.ts.map +1 -0
- package/dist/Domain/Controllers/tryTogglePower.d.ts +10 -0
- package/dist/Domain/Controllers/tryTogglePower.d.ts.map +1 -0
- package/dist/Domain/Controllers/tryUnlock.d.ts +8 -0
- package/dist/Domain/Controllers/tryUnlock.d.ts.map +1 -0
- package/dist/Domain/Entities/AbbControllerEntity.d.ts +55 -0
- package/dist/Domain/Entities/AbbControllerEntity.d.ts.map +1 -0
- package/dist/Domain/Entities/AbbControllerRepo.d.ts +28 -0
- package/dist/Domain/Entities/AbbControllerRepo.d.ts.map +1 -0
- package/dist/Domain/Factory/AbbControllerFeatureFactory.d.ts +26 -0
- package/dist/Domain/Factory/AbbControllerFeatureFactory.d.ts.map +1 -0
- package/dist/Domain/Factory/setupAbbControllerInstanceFactory.d.ts +11 -0
- package/dist/Domain/Factory/setupAbbControllerInstanceFactory.d.ts.map +1 -0
- package/dist/Domain/Mocks/MockAbbControllerCheckVoltageUC.d.ts +12 -0
- package/dist/Domain/Mocks/MockAbbControllerCheckVoltageUC.d.ts.map +1 -0
- package/dist/Domain/Mocks/MockAbbControllerLockoutUC.d.ts +16 -0
- package/dist/Domain/Mocks/MockAbbControllerLockoutUC.d.ts.map +1 -0
- package/dist/Domain/Mocks/MockAbbControllerPM.d.ts +11 -0
- package/dist/Domain/Mocks/MockAbbControllerPM.d.ts.map +1 -0
- package/dist/Domain/Mocks/MockAbbControllerPowerUC.d.ts +16 -0
- package/dist/Domain/Mocks/MockAbbControllerPowerUC.d.ts.map +1 -0
- package/dist/Domain/Mocks/MockAbbControllerSelectUC.d.ts +13 -0
- package/dist/Domain/Mocks/MockAbbControllerSelectUC.d.ts.map +1 -0
- package/dist/Domain/PMs/AbbControllerPM.d.ts +34 -0
- package/dist/Domain/PMs/AbbControllerPM.d.ts.map +1 -0
- package/dist/Domain/UCs/AbbControllerCheckVoltageUC.d.ts +24 -0
- package/dist/Domain/UCs/AbbControllerCheckVoltageUC.d.ts.map +1 -0
- package/dist/Domain/UCs/AbbControllerLockoutUC.d.ts +35 -0
- package/dist/Domain/UCs/AbbControllerLockoutUC.d.ts.map +1 -0
- package/dist/Domain/UCs/AbbControllerPowerUC.d.ts +31 -0
- package/dist/Domain/UCs/AbbControllerPowerUC.d.ts.map +1 -0
- package/dist/Domain/UCs/AbbControllerSelectUC.d.ts +32 -0
- package/dist/Domain/UCs/AbbControllerSelectUC.d.ts.map +1 -0
- package/dist/Domain/makeDomainForTesting.d.ts +18 -0
- package/dist/Domain/makeDomainForTesting.d.ts.map +1 -0
- package/dist/Frameworks/Babylon/AbbControllerAssetCache.d.ts +5 -0
- package/dist/Frameworks/Babylon/AbbControllerAssetCache.d.ts.map +1 -0
- package/dist/Frameworks/Babylon/AbbControllerBabylonView.d.ts +30 -0
- package/dist/Frameworks/Babylon/AbbControllerBabylonView.d.ts.map +1 -0
- package/dist/Frameworks/Babylon/CutoffKnobView.d.ts +28 -0
- package/dist/Frameworks/Babylon/CutoffKnobView.d.ts.map +1 -0
- package/dist/Frameworks/Babylon/HitboxView.d.ts +23 -0
- package/dist/Frameworks/Babylon/HitboxView.d.ts.map +1 -0
- package/dist/Frameworks/Babylon/LockView.d.ts +27 -0
- package/dist/Frameworks/Babylon/LockView.d.ts.map +1 -0
- package/dist/Frameworks/Babylon/SmartComponentView.d.ts +28 -0
- package/dist/Frameworks/Babylon/SmartComponentView.d.ts.map +1 -0
- package/dist/Frameworks/Babylon/createBabylonAbbController.d.ts +13 -0
- package/dist/Frameworks/Babylon/createBabylonAbbController.d.ts.map +1 -0
- package/dist/SmartComponent.d.ts +42 -0
- package/dist/SmartComponent.d.ts.map +1 -0
- package/dist/component.config.d.ts +18 -0
- package/dist/component.config.d.ts.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1313 -0
- package/package.json +53 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Node } from "@babylonjs/core";
|
|
2
|
+
import { AppObject, AppObjectView } from "@vived/core";
|
|
3
|
+
/** glTF-extras objectId of the cutoff knob mesh. */
|
|
4
|
+
export declare const cutoffKnobObjectId = "cutoff_knob";
|
|
5
|
+
/**
|
|
6
|
+
* Babylon view that owns the cutoff knob interaction and rotation.
|
|
7
|
+
*
|
|
8
|
+
* The knob is its own authored mesh (objectId `cutoff_knob`). Clicking it
|
|
9
|
+
* toggles power via `tryTogglePower`. While powered on, the knob is rotated
|
|
10
|
+
* -90 degrees of yaw relative to its bind-time orientation; while powered
|
|
11
|
+
* off, BOTH position and rotation are fully restored to the exact bind-time
|
|
12
|
+
* transform captured on `bindMeshes()`.
|
|
13
|
+
*
|
|
14
|
+
* This fixes a legacy bug where powering off only reset rotation, leaving
|
|
15
|
+
* the switch mesh's position permanently displaced from a hardcoded
|
|
16
|
+
* "powered on" position.
|
|
17
|
+
*
|
|
18
|
+
* Pickability is gated by the whole-controller hitbox: the knob is inert
|
|
19
|
+
* while `isHitboxEnabled` (read directly off the entity — the PM/VM
|
|
20
|
+
* contract deliberately excludes hitbox/hint state, see AbbControllerPM).
|
|
21
|
+
*/
|
|
22
|
+
export declare abstract class CutoffKnobView extends AppObjectView {
|
|
23
|
+
static readonly type = "CutoffKnobView";
|
|
24
|
+
abstract bindMeshes(nodesByObjectId: ReadonlyMap<string, Node>): void;
|
|
25
|
+
static get(appObj: AppObject): CutoffKnobView | undefined;
|
|
26
|
+
}
|
|
27
|
+
export declare function makeCutoffKnobView(appObject: AppObject): CutoffKnobView;
|
|
28
|
+
//# sourceMappingURL=CutoffKnobView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CutoffKnobView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/CutoffKnobView.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EAGL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMvD,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAKhD;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,cAAe,SAAQ,aAAa;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,oBAAoB;IAExC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAErE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS;CAG1D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAEvE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Node } from "@babylonjs/core";
|
|
2
|
+
import { AppObject, AppObjectView } from "@vived/core";
|
|
3
|
+
/** glTF-extras objectId of the invisible whole-controller hitbox mesh. */
|
|
4
|
+
export declare const abbControllerHitboxObjectId = "abb_controller_hitbox";
|
|
5
|
+
/**
|
|
6
|
+
* Babylon view that owns the whole-controller Equipment Hitbox click.
|
|
7
|
+
*
|
|
8
|
+
* The hitbox is an invisible bounding mesh (objectId `abb_controller_hitbox`)
|
|
9
|
+
* covering the whole controller. It is pickable only while `isHitboxEnabled`
|
|
10
|
+
* (read directly off the entity — the PM/VM contract deliberately excludes
|
|
11
|
+
* hitbox/hint state, see AbbControllerPM), mutually exclusive with
|
|
12
|
+
* sub-component (knob/lock/ghost-lock) pickability. A pick fires
|
|
13
|
+
* `abbControllerHitboxClicked` → `selected`. The Host owns hover
|
|
14
|
+
* presentation (its HighlightManager outlines the visible controller via the
|
|
15
|
+
* `abb_controller_hitbox` highlight group).
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class HitboxView extends AppObjectView {
|
|
18
|
+
static readonly type = "HitboxView";
|
|
19
|
+
abstract bindMeshes(nodesByObjectId: ReadonlyMap<string, Node>): void;
|
|
20
|
+
static get(appObj: AppObject): HitboxView | undefined;
|
|
21
|
+
}
|
|
22
|
+
export declare function makeHitboxView(appObject: AppObject): HitboxView;
|
|
23
|
+
//# sourceMappingURL=HitboxView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HitboxView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/HitboxView.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,IAAI,EACL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIvD,0EAA0E;AAC1E,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,8BAAsB,UAAW,SAAQ,aAAa;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB;IAEpC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAErE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS;CAGtD;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAE/D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Node } from "@babylonjs/core";
|
|
2
|
+
import { AppObject, AppObjectView } from "@vived/core";
|
|
3
|
+
/** glTF-extras objectId of the lock mesh/transform. */
|
|
4
|
+
export declare const lockObjectId = "lock";
|
|
5
|
+
/** glTF-extras objectId of the ghost lock mesh (click affordance). */
|
|
6
|
+
export declare const ghostLockObjectId = "ghost_lock";
|
|
7
|
+
/**
|
|
8
|
+
* Babylon view that owns lock / ghost-lock visibility and interaction
|
|
9
|
+
* (pneumatic-panel lock pattern, ADR 0007: component owns click, host owns
|
|
10
|
+
* hover outline).
|
|
11
|
+
*
|
|
12
|
+
* The lock is visible only while `isLockedOut`. The ghost lock is the click
|
|
13
|
+
* affordance while `canLockOut` (and not already locked out): hover-reveal
|
|
14
|
+
* by default, always-visible while `isShowingGhostLockHint` (training mode).
|
|
15
|
+
* Clicking either the lock or the ghost lock toggles lockout.
|
|
16
|
+
*
|
|
17
|
+
* `isShowingGhostLockHint` and hitbox-gated pickability are read directly off
|
|
18
|
+
* the entity — the PM/VM contract deliberately excludes hitbox/hint state
|
|
19
|
+
* (see AbbControllerPM).
|
|
20
|
+
*/
|
|
21
|
+
export declare abstract class LockView extends AppObjectView {
|
|
22
|
+
static readonly type = "LockView";
|
|
23
|
+
abstract bindMeshes(nodesByObjectId: ReadonlyMap<string, Node>): void;
|
|
24
|
+
static get(appObj: AppObject): LockView | undefined;
|
|
25
|
+
}
|
|
26
|
+
export declare function makeLockView(appObject: AppObject): LockView;
|
|
27
|
+
//# sourceMappingURL=LockView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LockView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/LockView.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EAEL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMvD,uDAAuD;AACvD,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,8BAAsB,QAAS,SAAQ,aAAa;IAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc;IAElC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAErE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS;CAGpD;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,CAE3D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AbstractMesh, Node, TransformNode } from "@babylonjs/core";
|
|
2
|
+
/**
|
|
3
|
+
* SmartComponentView structural contract.
|
|
4
|
+
*
|
|
5
|
+
* The framework-bound counterpart to `SmartComponent`. It is the host's
|
|
6
|
+
* most-depended-on seam: the host reads these members off `<Name>BabylonView`
|
|
7
|
+
* (via `<Name>BabylonView.get(appObject)`) to place the component in the scene and
|
|
8
|
+
* own its interaction-state presentation (the presentation-free contract).
|
|
9
|
+
*
|
|
10
|
+
* Like `SmartComponent`, this is a local shape convention (structural typing), not
|
|
11
|
+
* a shared base class — but because its members are Babylon types it lives here in
|
|
12
|
+
* `Frameworks/Babylon/`, NOT beside `SmartComponent.ts`. The facade never exposes
|
|
13
|
+
* it, which keeps the facade framework-agnostic (see docs/adr).
|
|
14
|
+
*/
|
|
15
|
+
export interface SmartComponentView {
|
|
16
|
+
/** Root of the instantiated model; reparent this under the host's scene graph. */
|
|
17
|
+
readonly rootTransformNode: TransformNode | undefined;
|
|
18
|
+
/** Every scene node keyed by its semantic `objectId` (from glTF extras). */
|
|
19
|
+
readonly nodesByObjectId: ReadonlyMap<string, Node>;
|
|
20
|
+
/** Meshes the host should register as shadow casters. */
|
|
21
|
+
readonly shadowCasters: AbstractMesh[];
|
|
22
|
+
/**
|
|
23
|
+
* Meshes the host should treat as one highlightable unit, keyed by semantic
|
|
24
|
+
* `objectId`. The host draws the outline/hover; the component only groups.
|
|
25
|
+
*/
|
|
26
|
+
readonly highlightGroupsByObjectId: ReadonlyMap<string, AbstractMesh[]>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=SmartComponentView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SmartComponentView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/SmartComponentView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,QAAQ,CAAC,iBAAiB,EAAE,aAAa,GAAG,SAAS,CAAC;IAEtD,4EAA4E;IAC5E,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEpD,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;CACzE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
import { AbbControllerBabylonView } from "./AbbControllerBabylonView";
|
|
3
|
+
export interface CreateBabylonAbbControllerOptions {
|
|
4
|
+
id: string;
|
|
5
|
+
appObjects: AppObjectRepo;
|
|
6
|
+
createIfMissing?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Babylon composition helper to bridge domain setup with Babylon view setup.
|
|
10
|
+
* Keeps framework-specific wiring out of the domain layers.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createBabylonAbbController(options: CreateBabylonAbbControllerOptions): Promise<AbbControllerBabylonView | undefined>;
|
|
13
|
+
//# sourceMappingURL=createBabylonAbbController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBabylonAbbController.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/createBabylonAbbController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EACL,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAoC/C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { AbbControllerVM } from "./Domain/PMs/AbbControllerPM";
|
|
2
|
+
import type { AbbControllerState } from "./AbbControllerState";
|
|
3
|
+
/**
|
|
4
|
+
* SmartComponent structural contract ("Facade Contract v1").
|
|
5
|
+
*
|
|
6
|
+
* This is a **local shape convention**, satisfied by structural typing — there is
|
|
7
|
+
* deliberately no shared base class or imported nominal type (see docs/adr).
|
|
8
|
+
* Every VIVED smart component's facade implements these eight members so a host
|
|
9
|
+
* can hold any component behind one type.
|
|
10
|
+
*
|
|
11
|
+
* The contract is **framework-agnostic**: none of its members reference a Babylon
|
|
12
|
+
* type. The framework-bound view surface is a separate contract, `SmartComponentView`,
|
|
13
|
+
* which lives in `Frameworks/Babylon/` and is never exposed by the facade.
|
|
14
|
+
*/
|
|
15
|
+
export interface SmartComponent {
|
|
16
|
+
/** The instance identifier (the AppObject id). */
|
|
17
|
+
readonly id: string;
|
|
18
|
+
/** Version of this facade contract the component implements. */
|
|
19
|
+
readonly interfaceVersion: number;
|
|
20
|
+
/**
|
|
21
|
+
* Subscribe to a domain event. Returns an unsubscribe function.
|
|
22
|
+
* Concrete facades narrow `event` to their typed event catalog.
|
|
23
|
+
*/
|
|
24
|
+
onEvent(event: string, cb: (...args: never[]) => void): () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Subscribe to the reactive view model. Emits the current VM immediately,
|
|
27
|
+
* then on every change. Returns an unsubscribe function.
|
|
28
|
+
*/
|
|
29
|
+
onViewModel(cb: (vm: AbbControllerVM) => void): () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Asynchronously load and attach the 3D view. Pulls in the framework lazily;
|
|
32
|
+
* safe to skip when the component is used headlessly.
|
|
33
|
+
*/
|
|
34
|
+
load(variant?: string): Promise<void>;
|
|
35
|
+
/** Tear down the component instance and release its resources. */
|
|
36
|
+
destroy(): void;
|
|
37
|
+
/** Read the versioned persisted state (steady authored intent). */
|
|
38
|
+
getState(): AbbControllerState;
|
|
39
|
+
/** Apply a (possibly partial / older-version) persisted state, best-effort. */
|
|
40
|
+
applyState(state: AbbControllerState): void;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=SmartComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SmartComponent.d.ts","sourceRoot":"","sources":["../src/SmartComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAEnE;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAE3D;;;OAGG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,kEAAkE;IAClE,OAAO,IAAI,IAAI,CAAC;IAEhB,mEAAmE;IACnE,QAAQ,IAAI,kBAAkB,CAAC;IAE/B,+EAA+E;IAC/E,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC7C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
/** Machine-friendly name (used in package name, imports) */
|
|
3
|
+
name: string;
|
|
4
|
+
/** Human-friendly display name */
|
|
5
|
+
displayName: string;
|
|
6
|
+
/** Semantic version */
|
|
7
|
+
version: string;
|
|
8
|
+
/** Whether multiple instances can exist in a scene */
|
|
9
|
+
multiInstance: boolean;
|
|
10
|
+
/** 3D asset files to include in the build */
|
|
11
|
+
assets: {
|
|
12
|
+
name: string;
|
|
13
|
+
id: string;
|
|
14
|
+
file: string;
|
|
15
|
+
}[];
|
|
16
|
+
};
|
|
17
|
+
export default _default;
|
|
18
|
+
//# sourceMappingURL=component.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.config.d.ts","sourceRoot":"","sources":["../src/component.config.ts"],"names":[],"mappings":";IACE,4DAA4D;;IAG5D,kCAAkC;;IAGlC,uBAAuB;;IAGvB,sDAAsD;;IAGtD,6CAA6C;;;;;;;AAb/C,wBAqBE"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ABB Controller — VIVED Smart Component
|
|
3
|
+
*
|
|
4
|
+
* Public API. The facade is the primary surface a host integrates against; the
|
|
5
|
+
* domain layers below it are the advanced / host-integration surface (needed for
|
|
6
|
+
* persistence, cross-cutting observers, and direct scene wiring).
|
|
7
|
+
*/
|
|
8
|
+
export { AbbControllerFacade } from "./AbbControllerFacade";
|
|
9
|
+
export type { SmartComponent } from "./SmartComponent";
|
|
10
|
+
export { ABB_CONTROLLER_STATE_VERSION, } from "./AbbControllerState";
|
|
11
|
+
export type { AbbControllerState } from "./AbbControllerState";
|
|
12
|
+
export { AbbControllerEventKeys } from "./AbbControllerEvents";
|
|
13
|
+
export type { AbbControllerEvents } from "./AbbControllerEvents";
|
|
14
|
+
export { AbbControllerEntity, makeAbbControllerEntity, } from "./Domain/Entities/AbbControllerEntity";
|
|
15
|
+
export { AbbControllerRepo, makeAbbControllerRepo, type AbbControllerEntityFactory, } from "./Domain/Entities/AbbControllerRepo";
|
|
16
|
+
export { AbbControllerPowerUC, makeAbbControllerPowerUC, } from "./Domain/UCs/AbbControllerPowerUC";
|
|
17
|
+
export { AbbControllerLockoutUC, makeAbbControllerLockoutUC, } from "./Domain/UCs/AbbControllerLockoutUC";
|
|
18
|
+
export { AbbControllerCheckVoltageUC, makeAbbControllerCheckVoltageUC, } from "./Domain/UCs/AbbControllerCheckVoltageUC";
|
|
19
|
+
export { AbbControllerSelectUC, makeAbbControllerSelectUC, } from "./Domain/UCs/AbbControllerSelectUC";
|
|
20
|
+
export { AbbControllerPM, makeAbbControllerPM, type AbbControllerVM, } from "./Domain/PMs/AbbControllerPM";
|
|
21
|
+
export { abbControllerPMAdapter } from "./Domain/Adapters/abbControllerPMAdapter";
|
|
22
|
+
export { createAbbController } from "./Domain/Controllers/createAbbController";
|
|
23
|
+
export { tryTogglePower } from "./Domain/Controllers/tryTogglePower";
|
|
24
|
+
export { tryPowerOn } from "./Domain/Controllers/tryPowerOn";
|
|
25
|
+
export { tryPowerOff } from "./Domain/Controllers/tryPowerOff";
|
|
26
|
+
export { tryToggleLockout } from "./Domain/Controllers/tryToggleLockout";
|
|
27
|
+
export { tryLockOut } from "./Domain/Controllers/tryLockOut";
|
|
28
|
+
export { tryUnlock } from "./Domain/Controllers/tryUnlock";
|
|
29
|
+
export { checkVoltage } from "./Domain/Controllers/checkVoltage";
|
|
30
|
+
export { enableHitbox } from "./Domain/Controllers/enableHitbox";
|
|
31
|
+
export { disableHitbox } from "./Domain/Controllers/disableHitbox";
|
|
32
|
+
export { abbControllerHitboxClicked } from "./Domain/Controllers/abbControllerHitboxClicked";
|
|
33
|
+
export { onAbbControllerSelected } from "./Domain/Controllers/onAbbControllerSelected";
|
|
34
|
+
export { setShowGhostLockHint } from "./Domain/Controllers/setShowGhostLockHint";
|
|
35
|
+
export { onPoweredOn } from "./Domain/Controllers/onPoweredOn";
|
|
36
|
+
export { onPoweredOff } from "./Domain/Controllers/onPoweredOff";
|
|
37
|
+
export { onPowerOnBlockedByLockout } from "./Domain/Controllers/onPowerOnBlockedByLockout";
|
|
38
|
+
export { onLockoutEngaged } from "./Domain/Controllers/onLockoutEngaged";
|
|
39
|
+
export { onLockoutDisengaged } from "./Domain/Controllers/onLockoutDisengaged";
|
|
40
|
+
export { onLockoutBlockedByPower } from "./Domain/Controllers/onLockoutBlockedByPower";
|
|
41
|
+
export { onVoltageChecked } from "./Domain/Controllers/onVoltageChecked";
|
|
42
|
+
export { getAbbControllerState } from "./Domain/Controllers/getAbbControllerState";
|
|
43
|
+
export { applyAbbControllerState } from "./Domain/Controllers/applyAbbControllerState";
|
|
44
|
+
export { AbbControllerFeatureFactory, makeAbbControllerFeatureFactory, } from "./Domain/Factory/AbbControllerFeatureFactory";
|
|
45
|
+
export { AbbControllerBabylonView, makeAbbControllerBabylonView, } from "./Frameworks/Babylon/AbbControllerBabylonView";
|
|
46
|
+
export type { SmartComponentView } from "./Frameworks/Babylon/SmartComponentView";
|
|
47
|
+
export { createBabylonAbbController, type CreateBabylonAbbControllerOptions, } from "./Frameworks/Babylon/createBabylonAbbController";
|
|
48
|
+
export { getAbbControllerAssetContainer, clearAbbControllerAssetCache, } from "./Frameworks/Babylon/AbbControllerAssetCache";
|
|
49
|
+
export { MockAbbControllerPM } from "./Domain/Mocks/MockAbbControllerPM";
|
|
50
|
+
export { MockAbbControllerPowerUC } from "./Domain/Mocks/MockAbbControllerPowerUC";
|
|
51
|
+
export { MockAbbControllerLockoutUC } from "./Domain/Mocks/MockAbbControllerLockoutUC";
|
|
52
|
+
export { MockAbbControllerCheckVoltageUC } from "./Domain/Mocks/MockAbbControllerCheckVoltageUC";
|
|
53
|
+
export { MockAbbControllerSelectUC } from "./Domain/Mocks/MockAbbControllerSelectUC";
|
|
54
|
+
export { default as componentConfig } from "./component.config";
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|