@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
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@vived/component-abb-controller` will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] — Unreleased
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Initial scaffold of the **ABB Controller** VIVED smart component:
|
|
13
|
+
domain (Entity, Repo, UCs, PM, Adapter, Controllers, Factory), a
|
|
14
|
+
`AbbControllerFacade` implementing the `SmartComponent` contract, versioned
|
|
15
|
+
persisted state, a Babylon view implementing `SmartComponentView`, and a
|
|
16
|
+
per-scene asset cache.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# **ABB Controller** — VIVED Smart Component
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
`@vived/component-abb-controller` provides **ABB Controller** behavior and 3D integration for slide applications. Use it when you need to create and control one or more **ABB Controller** instances in a Babylon.js scene. The package exposes setup helpers, view bindings, and typed APIs for state-driven interactions.
|
|
6
|
+
|
|
7
|
+
- **Package**: `@vived/component-abb-controller`
|
|
8
|
+
- **Version**: `0.1.0`
|
|
9
|
+
- **GitHub**: `vivedlearning/component-abb-controller`
|
|
10
|
+
|
|
11
|
+
## Discovery
|
|
12
|
+
|
|
13
|
+
- **Category**: `TODO: Domain / Subdomain`
|
|
14
|
+
- **Tags**: `TODO: add at least 5 tags with synonyms`
|
|
15
|
+
- **Visual Description**: `TODO: describe color, shape, size, and notable features`
|
|
16
|
+
- **Multi-instance**: `Yes`
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
1. **Install package and peers**
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install @vived/component-abb-controller @vived/core @vived/app @babylonjs/core @babylonjs/loaders
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
2. **Register the feature factory**
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { makeAppObjectRepo, makeDomainFactoryRepo } from "@vived/core";
|
|
30
|
+
import { makeAbbControllerFeatureFactory } from "@vived/component-abb-controller";
|
|
31
|
+
|
|
32
|
+
const appObjects = makeAppObjectRepo();
|
|
33
|
+
const factoryRepo = makeDomainFactoryRepo(appObjects);
|
|
34
|
+
|
|
35
|
+
makeAbbControllerFeatureFactory(appObjects);
|
|
36
|
+
factoryRepo.setupDomain();
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
3. **Create the facade and load its view**
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { AbbControllerFacade } from "@vived/component-abb-controller";
|
|
43
|
+
|
|
44
|
+
const facade = new AbbControllerFacade("my-instance-1", appObjects); // sync, no Babylon
|
|
45
|
+
await facade.load(); // attaches the Babylon view
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
4. **Drive it and observe the view model**
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
const unsubscribe = facade.onViewModel((vm) => {
|
|
52
|
+
console.log(vm); // { isActive: boolean }
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
facade.toggleActive();
|
|
56
|
+
|
|
57
|
+
// Persist / restore
|
|
58
|
+
const state = facade.getState();
|
|
59
|
+
facade.applyState(state);
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
See `docs/host-integration.md` for wiring the component into a host scene (placing the
|
|
63
|
+
model, shadows, picking, and host-owned highlight/selection presentation).
|
|
64
|
+
|
|
65
|
+
## API Reference
|
|
66
|
+
|
|
67
|
+
### Primary API — the facade
|
|
68
|
+
|
|
69
|
+
- `new AbbControllerFacade(id: string, appObjects: AppObjectRepo)` — wire the domain
|
|
70
|
+
instance synchronously (no Babylon).
|
|
71
|
+
- `load(variant?: string): Promise<void>` — load and attach the Babylon view.
|
|
72
|
+
- `onViewModel(cb: (vm: AbbControllerVM) => void): () => void` — subscribe to VM updates.
|
|
73
|
+
- `onEvent(event, cb): () => void` — subscribe to a typed event (`AbbControllerEventKeys`).
|
|
74
|
+
- `getState(): AbbControllerState` / `applyState(state): void` — versioned persisted state.
|
|
75
|
+
- `destroy(): void` — dispose the instance.
|
|
76
|
+
|
|
77
|
+
### Advanced / host-integration API
|
|
78
|
+
|
|
79
|
+
- `makeAbbControllerFeatureFactory(appObjects)` — register the feature (required once).
|
|
80
|
+
- `AbbControllerBabylonView.get(appObject)` — the `SmartComponentView` seam
|
|
81
|
+
(`rootTransformNode`, `nodesByObjectId`, `shadowCasters`, `highlightGroupsByObjectId`).
|
|
82
|
+
- Flat controllers (`createAbbController`, `toggleActive`, `get/applyAbbControllerState`,
|
|
83
|
+
`onActivated`, `onDeactivated`) and `abbControllerPMAdapter` for observer-driven use.
|
|
84
|
+
|
|
85
|
+
### Public Types
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
interface AbbControllerVM {
|
|
89
|
+
isActive: boolean;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
type AbbControllerState = {
|
|
93
|
+
version: number;
|
|
94
|
+
isActive: boolean;
|
|
95
|
+
};
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 3D View
|
|
99
|
+
|
|
100
|
+
### Asset Manifest
|
|
101
|
+
|
|
102
|
+
| Name | Asset ID | File |
|
|
103
|
+
| ------- | --------------- | ------------------------ |
|
|
104
|
+
| default | `TODO_ASSET_ID` | `AbbController.glb` |
|
|
105
|
+
|
|
106
|
+
### Exposed Transform Nodes
|
|
107
|
+
|
|
108
|
+
- `TODO_NODE_1`
|
|
109
|
+
- `TODO_NODE_2`
|
|
110
|
+
|
|
111
|
+
## Recipes
|
|
112
|
+
|
|
113
|
+
### Recipe 1: Create and Toggle an Instance
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import { AbbControllerFacade } from "@vived/component-abb-controller";
|
|
117
|
+
|
|
118
|
+
const facade = new AbbControllerFacade("machine-1", appObjects);
|
|
119
|
+
await facade.load();
|
|
120
|
+
|
|
121
|
+
facade.toggleActive();
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Recipe 2: Observe the View Model for UI
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
import type { AbbControllerVM } from "@vived/component-abb-controller";
|
|
128
|
+
|
|
129
|
+
const unsubscribe = facade.onViewModel((vm: AbbControllerVM) => {
|
|
130
|
+
console.log("isActive", vm.isActive);
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Recipe 3: Persist and Restore State
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
const snapshot = facade.getState(); // { version, isActive }
|
|
138
|
+
|
|
139
|
+
// ...later / after reload...
|
|
140
|
+
facade.applyState(snapshot); // best-effort: absent fields default, no throw on version drift
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Recipe 4: React to a Typed Event
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
import { AbbControllerEventKeys } from "@vived/component-abb-controller";
|
|
147
|
+
|
|
148
|
+
const off = facade.onEvent(AbbControllerEventKeys.activated, () => {
|
|
149
|
+
console.log("activated");
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Constraints & Defaults
|
|
154
|
+
|
|
155
|
+
- Default VM: `{ isActive: false }`; default state: `{ version, isActive: false }`.
|
|
156
|
+
- The facade constructor is synchronous and Babylon-free; call `await load()` before the
|
|
157
|
+
component renders in a scene.
|
|
158
|
+
- `applyState` is best-effort: it applies present fields, defaults absent ones, and never throws
|
|
159
|
+
on version mismatch.
|
|
160
|
+
- `@vived/app` must be provided by the host (peer dependency) so asset loading resolves against
|
|
161
|
+
the host's shared asset system.
|
|
162
|
+
|
|
163
|
+
## Repository
|
|
164
|
+
|
|
165
|
+
| Field | Value |
|
|
166
|
+
| -------------- | -------------------------------------------- |
|
|
167
|
+
| Package | `@vived/component-abb-controller` |
|
|
168
|
+
| GitHub | `vivedlearning/component-abb-controller` |
|
|
169
|
+
| Version | `0.1.0` |
|
|
170
|
+
| Multi-instance | `Yes` |
|
|
171
|
+
|
|
172
|
+
## Full Export List
|
|
173
|
+
|
|
174
|
+
Facade (primary surface):
|
|
175
|
+
|
|
176
|
+
- `AbbControllerFacade`
|
|
177
|
+
- `SmartComponent` (type)
|
|
178
|
+
- `AbbControllerState` (type) / `ABB_CONTROLLER_STATE_VERSION`
|
|
179
|
+
- `AbbControllerEvents` (type) / `AbbControllerEventKeys`
|
|
180
|
+
|
|
181
|
+
Advanced / host-integration surface:
|
|
182
|
+
|
|
183
|
+
- `AbbControllerEntity`, `makeAbbControllerEntity`
|
|
184
|
+
- `AbbControllerRepo`, `makeAbbControllerRepo`, `AbbControllerEntityFactory`
|
|
185
|
+
- `AbbControllerToggleActiveUC`, `makeAbbControllerToggleActiveUC`
|
|
186
|
+
- `AbbControllerPM`, `makeAbbControllerPM`, `AbbControllerVM`
|
|
187
|
+
- `abbControllerPMAdapter`
|
|
188
|
+
- Controllers: `createAbbController`, `toggleActive`, `onActivated`, `onDeactivated`, `getAbbControllerState`, `applyAbbControllerState`
|
|
189
|
+
- `AbbControllerFeatureFactory`, `makeAbbControllerFeatureFactory`
|
|
190
|
+
- `AbbControllerBabylonView`, `makeAbbControllerBabylonView`, `SmartComponentView` (type)
|
|
191
|
+
- `createBabylonAbbController`, `CreateBabylonAbbControllerOptions`
|
|
192
|
+
- `getAbbControllerAssetContainer`, `clearAbbControllerAssetCache`
|
|
193
|
+
- `MockAbbControllerPM`, `MockAbbControllerToggleActiveUC`
|
|
194
|
+
- `componentConfig`
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
Maintainer note: internal architecture and contributor-focused implementation details belong in `COMPONENT_ARCHITECTURE.md`.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Copyright © 2026 VIVED Learning. All rights reserved.
|
|
2
|
+
|
|
3
|
+
This software and its associated documentation (the "Software") are the
|
|
4
|
+
proprietary and confidential property of VIVED Learning. The Software is
|
|
5
|
+
intended for internal use with VIVED Learning's player and infrastructure only.
|
|
6
|
+
|
|
7
|
+
No license, right, or permission is granted to any party to use, copy, modify,
|
|
8
|
+
merge, publish, distribute, sublicense, or sell the Software, in whole or in
|
|
9
|
+
part, except as expressly authorized in writing by VIVED Learning. Publication
|
|
10
|
+
of this package to a public registry does not constitute such authorization or
|
|
11
|
+
grant any license to it.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
15
|
+
FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed event catalog for ABB Controller.
|
|
3
|
+
*
|
|
4
|
+
* All events are payload-free — the host reads current state off `getState()` /
|
|
5
|
+
* `onViewModel()`, never off the event itself (per canon, pending
|
|
6
|
+
* vivian-knowledge#62). Each key has a matching subscribe-controller in
|
|
7
|
+
* `Domain/Controllers/` (`onPoweredOn`, `onPoweredOff`, etc.) wired into the
|
|
8
|
+
* facade's `onEvent` dispatch map.
|
|
9
|
+
*/
|
|
10
|
+
export type AbbControllerEvents = {
|
|
11
|
+
/** A power-on attempt succeeded. */
|
|
12
|
+
poweredOn: () => void;
|
|
13
|
+
/** A power-off attempt succeeded (always succeeds). */
|
|
14
|
+
poweredOff: () => void;
|
|
15
|
+
/** A power-on attempt was refused because the controller is locked out. */
|
|
16
|
+
powerOnBlockedByLockout: () => void;
|
|
17
|
+
/** A lockout attempt succeeded. */
|
|
18
|
+
lockoutEngaged: () => void;
|
|
19
|
+
/** An unlock attempt succeeded (always succeeds). */
|
|
20
|
+
lockoutDisengaged: () => void;
|
|
21
|
+
/** A lockout attempt was refused because the controller is powered on. */
|
|
22
|
+
lockoutBlockedByPower: () => void;
|
|
23
|
+
/** A voltage check was performed. */
|
|
24
|
+
voltageChecked: () => void;
|
|
25
|
+
/** The whole-controller hitbox was clicked/selected. */
|
|
26
|
+
selected: () => void;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Exported event keys, so a host maps the facade's events without re-typing
|
|
30
|
+
* string literals. Keep in sync with `AbbControllerEvents`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const AbbControllerEventKeys: {
|
|
33
|
+
readonly poweredOn: "poweredOn";
|
|
34
|
+
readonly poweredOff: "poweredOff";
|
|
35
|
+
readonly powerOnBlockedByLockout: "powerOnBlockedByLockout";
|
|
36
|
+
readonly lockoutEngaged: "lockoutEngaged";
|
|
37
|
+
readonly lockoutDisengaged: "lockoutDisengaged";
|
|
38
|
+
readonly lockoutBlockedByPower: "lockoutBlockedByPower";
|
|
39
|
+
readonly voltageChecked: "voltageChecked";
|
|
40
|
+
readonly selected: "selected";
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=AbbControllerEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbbControllerEvents.d.ts","sourceRoot":"","sources":["../src/AbbControllerEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,oCAAoC;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,uDAAuD;IACvD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2EAA2E;IAC3E,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,mCAAmC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,0EAA0E;IAC1E,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,qCAAqC;IACrC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;CAS2B,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
import type { AbbControllerVM } from "./Domain/PMs/AbbControllerPM";
|
|
3
|
+
import type { SmartComponent } from "./SmartComponent";
|
|
4
|
+
import type { AbbControllerEvents } from "./AbbControllerEvents";
|
|
5
|
+
import { AbbControllerState } from "./AbbControllerState";
|
|
6
|
+
/**
|
|
7
|
+
* AbbControllerFacade
|
|
8
|
+
*
|
|
9
|
+
* Host-facing facade for the ABB Controller smart component. It is the
|
|
10
|
+
* primary public surface: a host holds a component behind the `SmartComponent`
|
|
11
|
+
* structural contract and drives it entirely through this class. Internally it is
|
|
12
|
+
* pure composition — every method delegates to a flat controller.
|
|
13
|
+
*
|
|
14
|
+
* Two-phase lifecycle:
|
|
15
|
+
* 1. **construct** (sync, Babylon-free) — wires the domain via `createAbbController`.
|
|
16
|
+
* 2. **load** (async) — dynamically imports the Babylon view and attaches it, so
|
|
17
|
+
* constructing the facade pulls in zero Babylon and stays node-testable.
|
|
18
|
+
*
|
|
19
|
+
* This class references NO Babylon type — the framework-bound view surface is the
|
|
20
|
+
* separate `SmartComponentView` contract, obtained by the host through the Babylon
|
|
21
|
+
* layer, never through the facade.
|
|
22
|
+
*/
|
|
23
|
+
export declare class AbbControllerFacade implements SmartComponent {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly interfaceVersion = 1;
|
|
26
|
+
private appObjects;
|
|
27
|
+
/**
|
|
28
|
+
* Dispatch map: event key → subscribe controller.
|
|
29
|
+
* Each controller has signature `(id, appObjects, cb: () => void) => () => void`.
|
|
30
|
+
*/
|
|
31
|
+
private eventDispatchMap;
|
|
32
|
+
/**
|
|
33
|
+
* Synchronously wire the domain instance (entity, UCs, PM, adapter).
|
|
34
|
+
* Does NOT touch Babylon.
|
|
35
|
+
*/
|
|
36
|
+
constructor(id: string, appObjects: AppObjectRepo);
|
|
37
|
+
/**
|
|
38
|
+
* Asynchronously load and attach the Babylon view. Required before the
|
|
39
|
+
* component renders in a 3D scene.
|
|
40
|
+
*
|
|
41
|
+
* @param variant - Optional asset variant. No variants are implemented in the
|
|
42
|
+
* starter, so an omitted or unrecognized variant loads the default asset
|
|
43
|
+
* (best-effort, per Contract v1).
|
|
44
|
+
*/
|
|
45
|
+
load(variant?: string): Promise<void>;
|
|
46
|
+
/** Tear down the component and release all resources. */
|
|
47
|
+
destroy(): void;
|
|
48
|
+
/** Toggle the power state of the component. Returns true if successful. */
|
|
49
|
+
togglePower(): boolean;
|
|
50
|
+
/** Power on. Returns true if successful, false if refused (locked out). */
|
|
51
|
+
powerOn(): boolean;
|
|
52
|
+
/** Power off. Always succeeds. */
|
|
53
|
+
powerOff(): boolean;
|
|
54
|
+
/** Toggle the lockout state. Returns true if successful. */
|
|
55
|
+
toggleLockout(): boolean;
|
|
56
|
+
/** Engage the lockout. Returns true if successful, false if refused (powered on). */
|
|
57
|
+
lockOut(): boolean;
|
|
58
|
+
/** Disengage the lockout. Always succeeds. */
|
|
59
|
+
unlock(): boolean;
|
|
60
|
+
/** Check the controller's voltage. Notifies subscribers of the check. */
|
|
61
|
+
checkVoltage(): void;
|
|
62
|
+
/** Show or hide the always-visible ghost lock hint (training mode). */
|
|
63
|
+
setShowGhostLockHint(show: boolean): void;
|
|
64
|
+
/** Enable the whole-controller hitbox for single-target selection. */
|
|
65
|
+
enableHitbox(): void;
|
|
66
|
+
/** Disable the whole-controller hitbox, restoring sub-component interactivity. */
|
|
67
|
+
disableHitbox(): void;
|
|
68
|
+
getState(): AbbControllerState;
|
|
69
|
+
applyState(state: AbbControllerState): void;
|
|
70
|
+
/**
|
|
71
|
+
* Subscribe to a typed event. Returns an unsubscribe function.
|
|
72
|
+
*/
|
|
73
|
+
onEvent<K extends keyof AbbControllerEvents>(event: K, cb: AbbControllerEvents[K]): () => void;
|
|
74
|
+
/**
|
|
75
|
+
* Subscribe to the reactive view model. Emits the current VM immediately,
|
|
76
|
+
* then on every change. Returns an unsubscribe function.
|
|
77
|
+
*/
|
|
78
|
+
onViewModel(cb: (vm: AbbControllerVM) => void): () => void;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=AbbControllerFacade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbbControllerFacade.d.ts","sourceRoot":"","sources":["../src/AbbControllerFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuB5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,gBAAgB,KAAK;IAC9B,OAAO,CAAC,UAAU,CAAgB;IAElC;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAYtB;IAEF;;;OAGG;gBACS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa;IAMjD;;;;;;;OAOG;IAEG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,yDAAyD;IACzD,OAAO,IAAI,IAAI;IAIf,2EAA2E;IAC3E,WAAW,IAAI,OAAO;IAItB,2EAA2E;IAC3E,OAAO,IAAI,OAAO;IAIlB,kCAAkC;IAClC,QAAQ,IAAI,OAAO;IAInB,4DAA4D;IAC5D,aAAa,IAAI,OAAO;IAIxB,qFAAqF;IACrF,OAAO,IAAI,OAAO;IAIlB,8CAA8C;IAC9C,MAAM,IAAI,OAAO;IAIjB,yEAAyE;IACzE,YAAY,IAAI,IAAI;IAIpB,uEAAuE;IACvE,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIzC,sEAAsE;IACtE,YAAY,IAAI,IAAI;IAIpB,kFAAkF;IAClF,aAAa,IAAI,IAAI;IAIrB,QAAQ,IAAI,kBAAkB;IAQ9B,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAI3C;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,mBAAmB,EACzC,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,GACzB,MAAM,IAAI;IAKb;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;CAK3D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Versioned persisted state for ABB Controller.
|
|
3
|
+
*
|
|
4
|
+
* `powerOnVoltage` is deliberately excluded — it is an internal entity detail
|
|
5
|
+
* with no facade command to change it, so it is never part of the persisted
|
|
6
|
+
* snapshot.
|
|
7
|
+
*
|
|
8
|
+
* `applyState` restores `isPoweredOn` / `isLockedOut` through the entity's
|
|
9
|
+
* interlocked try-ops (never a raw setter), best-effort and forward-compatible:
|
|
10
|
+
* absent fields fall back to defaults, an unrecognized `version` is tolerated
|
|
11
|
+
* (never throws), and a snapshot claiming both powered-on and locked-out is
|
|
12
|
+
* rejected wholesale for that pair, leaving the entity's power/lockout state
|
|
13
|
+
* untouched. See `Domain/Controllers/applyAbbControllerState.ts`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ABB_CONTROLLER_STATE_VERSION = 1;
|
|
16
|
+
export type AbbControllerState = {
|
|
17
|
+
/** Schema version; stamped by getState, tolerated by applyState. */
|
|
18
|
+
version: number;
|
|
19
|
+
/** Whether the controller is currently powered on. */
|
|
20
|
+
isPoweredOn: boolean;
|
|
21
|
+
/** Whether the controller is currently locked out. */
|
|
22
|
+
isLockedOut: boolean;
|
|
23
|
+
/** Whether the ghost lock hint is always shown (training mode). */
|
|
24
|
+
isShowingGhostLockHint: boolean;
|
|
25
|
+
/** Whether the whole-controller hitbox is enabled for selection. */
|
|
26
|
+
isHitboxEnabled: boolean;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=AbbControllerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbbControllerState.d.ts","sourceRoot":"","sources":["../src/AbbControllerState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,sBAAsB,EAAE,OAAO,CAAC;IAChC,oEAAoE;IACpE,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type PmAdapter } from "@vived/core";
|
|
2
|
+
import { type AbbControllerVM } from "../PMs/AbbControllerPM";
|
|
3
|
+
/**
|
|
4
|
+
* PM Adapter for ABB Controller
|
|
5
|
+
*
|
|
6
|
+
* Connects UI views to the AbbControllerPM. Use this adapter in
|
|
7
|
+
* React components or Babylon views to subscribe to VM updates.
|
|
8
|
+
*/
|
|
9
|
+
export declare const abbControllerPMAdapter: PmAdapter<AbbControllerVM>;
|
|
10
|
+
//# sourceMappingURL=abbControllerPMAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abbControllerPMAdapter.d.ts","sourceRoot":"","sources":["../../../src/Domain/Adapters/abbControllerPMAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,CAAC,eAAe,CAyC3D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Framework boundary controller — called by the Babylon HitboxView when the
|
|
4
|
+
* `abb_controller_hitbox` mesh is picked. Notifies domain subscribers that
|
|
5
|
+
* the controller was selected.
|
|
6
|
+
*/
|
|
7
|
+
export declare function abbControllerHitboxClicked(id: string, appObjects: AppObjectRepo): void;
|
|
8
|
+
//# sourceMappingURL=abbControllerHitboxClicked.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abbControllerHitboxClicked.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/abbControllerHitboxClicked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,IAAI,CAYN"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default field values used to fill absent keys during best-effort state restore.
|
|
3
|
+
* Keep these in sync with the fields on `AbbControllerState` (minus `version`).
|
|
4
|
+
*/
|
|
5
|
+
export declare const ABB_CONTROLLER_DEFAULT_STATE_FIELDS: {
|
|
6
|
+
readonly isPoweredOn: false;
|
|
7
|
+
readonly isLockedOut: false;
|
|
8
|
+
readonly isShowingGhostLockHint: false;
|
|
9
|
+
readonly isHitboxEnabled: false;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=abbControllerStateDefaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abbControllerStateDefaults.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/abbControllerStateDefaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;CAKtC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
import type { AbbControllerState } from "../../AbbControllerState";
|
|
3
|
+
/**
|
|
4
|
+
* Controller: apply a persisted state to an instance, best-effort.
|
|
5
|
+
*
|
|
6
|
+
* Never throws: an absent field falls back to its default, and an
|
|
7
|
+
* unrecognized `version` is tolerated (the shape is applied field-by-field,
|
|
8
|
+
* not gated on version).
|
|
9
|
+
*
|
|
10
|
+
* Drives the interlocked entity through its try-ops only (never a raw
|
|
11
|
+
* setter), in the order that lets each of the three valid target
|
|
12
|
+
* combinations succeed:
|
|
13
|
+
* - off + unlocked → `tryPowerOff()` then `tryUnlock()`
|
|
14
|
+
* - off + locked → `tryPowerOff()` then `tryLockOut()`
|
|
15
|
+
* - on + unlocked → `tryUnlock()` then `tryPowerOn()`
|
|
16
|
+
* - on + locked → invalid combination (violates the interlock); the
|
|
17
|
+
* power/lockout portion is rejected wholesale and the entity's power/lockout
|
|
18
|
+
* state is left untouched.
|
|
19
|
+
*
|
|
20
|
+
* The ghost-lock-hint and hitbox flags are not interlocked, so they always
|
|
21
|
+
* apply directly regardless of the power/lockout branch above.
|
|
22
|
+
*/
|
|
23
|
+
export declare function applyAbbControllerState(id: string, appObjects: AppObjectRepo, state: Partial<AbbControllerState>): void;
|
|
24
|
+
//# sourceMappingURL=applyAbbControllerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyAbbControllerState.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/applyAbbControllerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,IAAI,CAwCN"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Controller to check the voltage of an ABB Controller instance.
|
|
4
|
+
* Resolves the per-instance UC and delegates to it.
|
|
5
|
+
*/
|
|
6
|
+
export declare function checkVoltage(id: string, appObjects: AppObjectRepo): void;
|
|
7
|
+
//# sourceMappingURL=checkVoltage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkVoltage.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/checkVoltage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAYxE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Controller to create a new ABB Controller instance.
|
|
4
|
+
* Resolves the singleton AbbControllerRepo and delegates to its
|
|
5
|
+
* createAbbControllerEntity method.
|
|
6
|
+
*
|
|
7
|
+
* @param id - The ID for the new instance.
|
|
8
|
+
* @param appObjects - The AppObject repository.
|
|
9
|
+
* @returns The created AppObject, or undefined if the repo is not found.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createAbbController(id: string, appObjects: AppObjectRepo): import("@vived/core").AppObject | undefined;
|
|
12
|
+
//# sourceMappingURL=createAbbController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAbbController.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/createAbbController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,+CAc1B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Disables the whole-controller hitbox on the given controller, restoring
|
|
4
|
+
* sub-component interactions (knob, lock, ghost lock) in the view.
|
|
5
|
+
*/
|
|
6
|
+
export declare function disableHitbox(id: string, appObjects: AppObjectRepo): void;
|
|
7
|
+
//# sourceMappingURL=disableHitbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disableHitbox.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/disableHitbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAYzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableHitbox.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/enableHitbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAYxE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
import type { AbbControllerState } from "../../AbbControllerState";
|
|
3
|
+
/**
|
|
4
|
+
* Controller: read the versioned persisted state for an instance.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getAbbControllerState(id: string, appObjects: AppObjectRepo, version: number): AbbControllerState;
|
|
7
|
+
//# sourceMappingURL=getAbbControllerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAbbControllerState.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/getAbbControllerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,MAAM,GACd,kBAAkB,CAqBpB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to controller-selected events on the given controller.
|
|
4
|
+
* Returns an unsubscribe function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function onAbbControllerSelected(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
|
|
7
|
+
//# sourceMappingURL=onAbbControllerSelected.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onAbbControllerSelected.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onAbbControllerSelected.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to lockout attempts blocked by power on the given controller.
|
|
4
|
+
* Returns an unsubscribe function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function onLockoutBlockedByPower(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
|
|
7
|
+
//# sourceMappingURL=onLockoutBlockedByPower.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onLockoutBlockedByPower.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onLockoutBlockedByPower.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to successful lockout-disengaged transitions on the given
|
|
4
|
+
* controller. Returns an unsubscribe function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function onLockoutDisengaged(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
|
|
7
|
+
//# sourceMappingURL=onLockoutDisengaged.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onLockoutDisengaged.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onLockoutDisengaged.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to successful lockout-engaged transitions on the given
|
|
4
|
+
* controller. Returns an unsubscribe function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function onLockoutEngaged(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
|
|
7
|
+
//# sourceMappingURL=onLockoutEngaged.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onLockoutEngaged.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onLockoutEngaged.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,7 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to power-on attempts blocked by lockout on the given controller.
|
|
4
|
+
* Returns an unsubscribe function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function onPowerOnBlockedByLockout(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
|
|
7
|
+
//# sourceMappingURL=onPowerOnBlockedByLockout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onPowerOnBlockedByLockout.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onPowerOnBlockedByLockout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to successful power-off transitions on the given controller.
|
|
4
|
+
* Returns an unsubscribe function.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: placeholder subscribe-controller (renamed from the scaffold's
|
|
7
|
+
* `onDeactivated`) so the facade compiles against the real, ported
|
|
8
|
+
* `AbbControllerPowerUC`. The next slice wires the full 8-event catalog.
|
|
9
|
+
*/
|
|
10
|
+
export declare function onPoweredOff(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
|
|
11
|
+
//# sourceMappingURL=onPoweredOff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onPoweredOff.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onPoweredOff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObjectRepo } from "@vived/core";
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes to successful power-on transitions on the given controller.
|
|
4
|
+
* Returns an unsubscribe function.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: placeholder subscribe-controller (renamed from the scaffold's
|
|
7
|
+
* `onActivated`) so the facade compiles against the real, ported
|
|
8
|
+
* `AbbControllerPowerUC`. The next slice wires the full 8-event catalog.
|
|
9
|
+
*/
|
|
10
|
+
export declare function onPoweredOn(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
|
|
11
|
+
//# sourceMappingURL=onPoweredOn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onPoweredOn.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onPoweredOn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
|