@vived/component-pneumatic-panel 1.0.0 → 1.0.1

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 (49) hide show
  1. package/dist/Domain/Adapters/pneumaticPanelPMAdapter.d.ts.map +1 -1
  2. package/dist/Domain/Controllers/clearAllHighlights.d.ts +9 -0
  3. package/dist/Domain/Controllers/clearAllHighlights.d.ts.map +1 -0
  4. package/dist/Domain/Controllers/setHighlightedObject.d.ts +11 -0
  5. package/dist/Domain/Controllers/setHighlightedObject.d.ts.map +1 -0
  6. package/dist/Domain/Controllers/setShowGhostLockHint.d.ts +10 -0
  7. package/dist/Domain/Controllers/setShowGhostLockHint.d.ts.map +1 -0
  8. package/dist/Domain/Entities/PneumaticPanelEntity.d.ts +10 -0
  9. package/dist/Domain/Entities/PneumaticPanelEntity.d.ts.map +1 -1
  10. package/dist/Domain/Mocks/MockPneumaticPanelCheckPressureUC.d.ts +1 -0
  11. package/dist/Domain/Mocks/MockPneumaticPanelCheckPressureUC.d.ts.map +1 -1
  12. package/dist/Domain/Mocks/MockPneumaticPanelToggleExhaustUC.d.ts +3 -0
  13. package/dist/Domain/Mocks/MockPneumaticPanelToggleExhaustUC.d.ts.map +1 -1
  14. package/dist/Domain/Mocks/MockPneumaticPanelToggleLockUC.d.ts +2 -0
  15. package/dist/Domain/Mocks/MockPneumaticPanelToggleLockUC.d.ts.map +1 -1
  16. package/dist/Domain/PMs/PneumaticPanelPM.d.ts +8 -0
  17. package/dist/Domain/PMs/PneumaticPanelPM.d.ts.map +1 -1
  18. package/dist/Domain/UCs/PneumaticPanelCheckPressureUC.d.ts +2 -0
  19. package/dist/Domain/UCs/PneumaticPanelCheckPressureUC.d.ts.map +1 -1
  20. package/dist/Domain/UCs/PneumaticPanelToggleExhaustUC.d.ts +6 -0
  21. package/dist/Domain/UCs/PneumaticPanelToggleExhaustUC.d.ts.map +1 -1
  22. package/dist/Domain/UCs/PneumaticPanelToggleLockUC.d.ts +4 -0
  23. package/dist/Domain/UCs/PneumaticPanelToggleLockUC.d.ts.map +1 -1
  24. package/dist/Frameworks/Babylon/OutlinePulseController.d.ts +18 -0
  25. package/dist/Frameworks/Babylon/OutlinePulseController.d.ts.map +1 -0
  26. package/dist/Frameworks/Babylon/OverlayPulseController.d.ts +17 -0
  27. package/dist/Frameworks/Babylon/OverlayPulseController.d.ts.map +1 -0
  28. package/dist/Frameworks/Babylon/PneumaticPanelAssetCache.d.ts +6 -0
  29. package/dist/Frameworks/Babylon/PneumaticPanelAssetCache.d.ts.map +1 -0
  30. package/dist/Frameworks/Babylon/PneumaticPanelBabylonView.d.ts +23 -16
  31. package/dist/Frameworks/Babylon/PneumaticPanelBabylonView.d.ts.map +1 -1
  32. package/dist/Frameworks/Babylon/PneumaticPanelExhaustView.d.ts +17 -0
  33. package/dist/Frameworks/Babylon/PneumaticPanelExhaustView.d.ts.map +1 -0
  34. package/dist/Frameworks/Babylon/PneumaticPanelGaugeView.d.ts +10 -0
  35. package/dist/Frameworks/Babylon/PneumaticPanelGaugeView.d.ts.map +1 -0
  36. package/dist/Frameworks/Babylon/PneumaticPanelLockView.d.ts +18 -0
  37. package/dist/Frameworks/Babylon/PneumaticPanelLockView.d.ts.map +1 -0
  38. package/dist/Frameworks/Babylon/ScreenSpaceOutlinePulseController.d.ts +17 -0
  39. package/dist/Frameworks/Babylon/ScreenSpaceOutlinePulseController.d.ts.map +1 -0
  40. package/dist/Frameworks/Babylon/createBabylonPneumaticPanel.d.ts +2 -12
  41. package/dist/Frameworks/Babylon/createBabylonPneumaticPanel.d.ts.map +1 -1
  42. package/dist/index.d.ts +5 -2
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +4753 -261
  45. package/dist/pneumaticPanel.glb +0 -0
  46. package/dist/studio.env +0 -0
  47. package/package.json +2 -1
  48. package/dist/Factory/PneumaticPanelFeatureFactory.d.ts +0 -26
  49. package/dist/Factory/PneumaticPanelFeatureFactory.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pneumaticPanelPMAdapter.d.ts","sourceRoot":"","sources":["../../../src/Domain/Adapters/pneumaticPanelPMAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,CAAC,gBAAgB,CAuC7D,CAAC"}
1
+ {"version":3,"file":"pneumaticPanelPMAdapter.d.ts","sourceRoot":"","sources":["../../../src/Domain/Adapters/pneumaticPanelPMAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,CAAC,gBAAgB,CAwC/D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Clears all active highlights on the Pneumatic Panel.
4
+ *
5
+ * @param id - The ID of the Pneumatic Panel instance.
6
+ * @param appObjects - The AppObject repository.
7
+ */
8
+ export declare function clearAllHighlights(id: string, appObjects: AppObjectRepo): void;
9
+ //# sourceMappingURL=clearAllHighlights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearAllHighlights.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/clearAllHighlights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,IAAI,CAYN"}
@@ -0,0 +1,11 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ import { type PneumaticPanelHighlightedObject } from "../Entities/PneumaticPanelEntity";
3
+ /**
4
+ * Sets which single object should be highlighted in the scene.
5
+ *
6
+ * @param id - The ID of the Pneumatic Panel instance.
7
+ * @param appObjects - The AppObject repository.
8
+ * @param highlightedObject - The object to highlight, or "none".
9
+ */
10
+ export declare function setHighlightedObject(id: string, appObjects: AppObjectRepo, highlightedObject: PneumaticPanelHighlightedObject): void;
11
+ //# sourceMappingURL=setHighlightedObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setHighlightedObject.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/setHighlightedObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,kCAAkC,CAAC;AAE1C;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,iBAAiB,EAAE,+BAA+B,GACjD,IAAI,CAYN"}
@@ -0,0 +1,10 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Enables or disables always-visible ghost lock hint mode.
4
+ *
5
+ * @param id - The ID of the Pneumatic Panel instance.
6
+ * @param appObjects - The AppObject repository.
7
+ * @param on - True to show ghost lock immediately, false for hover-only behavior.
8
+ */
9
+ export declare function setShowGhostLockHint(id: string, appObjects: AppObjectRepo, on: boolean): void;
10
+ //# 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;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,EAAE,EAAE,OAAO,GACV,IAAI,CAYN"}
@@ -1,4 +1,5 @@
1
1
  import { AppObject, AppObjectEntity, AppObjectRepo } from "@vived/core";
2
+ export type PneumaticPanelHighlightedObject = "none" | "ghostLock" | "lock" | "exhaustKnob" | "gauge";
2
3
  /**
3
4
  * Pneumatic Panel Entity
4
5
  *
@@ -16,6 +17,15 @@ export declare abstract class PneumaticPanelEntity extends AppObjectEntity {
16
17
  /** Current pressure reading */
17
18
  abstract get pressure(): number;
18
19
  abstract set pressure(val: number);
20
+ /**
21
+ * When true, the ghost lock is shown immediately (training mode).
22
+ * When false, the ghost lock is only revealed on hover (assessment mode).
23
+ */
24
+ abstract get showGhostLockHint(): boolean;
25
+ abstract set showGhostLockHint(val: boolean);
26
+ /** Which object should be highlighted in the scene. */
27
+ abstract get highlightedObject(): PneumaticPanelHighlightedObject;
28
+ abstract set highlightedObject(val: PneumaticPanelHighlightedObject);
19
29
  /**
20
30
  * Retrieves the entity from an AppObject
21
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PneumaticPanelEntity.d.ts","sourceRoot":"","sources":["../../../src/Domain/Entities/PneumaticPanelEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EAGd,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,8BAAsB,oBAAqB,SAAQ,eAAe;IAChE,MAAM,CAAC,QAAQ,CAAC,IAAI,0BAA0B;IAE9C,wCAAwC;IACxC,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IACpC,QAAQ,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;IAEvC,gEAAgE;IAChE,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC;IACjC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE;IAEpC,+BAA+B;IAC/B,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;IAChC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;IAEnC;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,GAAG,SAAS;IAI/D;;OAEG;IACH,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,oBAAoB,GAAG,SAAS;CAKpC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,GACnB,oBAAoB,CAEtB"}
1
+ {"version":3,"file":"PneumaticPanelEntity.d.ts","sourceRoot":"","sources":["../../../src/Domain/Entities/PneumaticPanelEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EAGd,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,+BAA+B,GACvC,MAAM,GACN,WAAW,GACX,MAAM,GACN,aAAa,GACb,OAAO,CAAC;AAEZ;;;;;GAKG;AACH,8BAAsB,oBAAqB,SAAQ,eAAe;IAChE,MAAM,CAAC,QAAQ,CAAC,IAAI,0BAA0B;IAE9C,wCAAwC;IACxC,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IACpC,QAAQ,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;IAEvC,gEAAgE;IAChE,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC;IACjC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE;IAEpC,+BAA+B;IAC/B,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;IAChC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;IAEnC;;;OAGG;IACH,QAAQ,KAAK,iBAAiB,IAAI,OAAO,CAAC;IAC1C,QAAQ,KAAK,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE;IAE7C,uDAAuD;IACvD,QAAQ,KAAK,iBAAiB,IAAI,+BAA+B,CAAC;IAClE,QAAQ,KAAK,iBAAiB,CAAC,GAAG,EAAE,+BAA+B,EAAE;IAErE;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,GAAG,SAAS;IAI/D;;OAEG;IACH,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"}
@@ -5,6 +5,7 @@ import { PneumaticPanelCheckPressureUC } from "../UCs/PneumaticPanelCheckPressur
5
5
  */
6
6
  export declare class MockPneumaticPanelCheckPressureUC extends PneumaticPanelCheckPressureUC {
7
7
  checkPressure: () => void;
8
+ subscribeOnCheckPressure: (_callback: () => void) => (() => void);
8
9
  constructor(appObject: AppObject);
9
10
  }
10
11
  //# sourceMappingURL=MockPneumaticPanelCheckPressureUC.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockPneumaticPanelCheckPressureUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockPneumaticPanelCheckPressureUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF;;GAEG;AACH,qBAAa,iCACX,SAAQ,6BAA6B;IAErC,aAAa,QAAO,IAAI,CAEtB;gBAEU,SAAS,EAAE,SAAS;CAGjC"}
1
+ {"version":3,"file":"MockPneumaticPanelCheckPressureUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockPneumaticPanelCheckPressureUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,6BAA6B;IAClF,aAAa,QAAO,IAAI,CAEtB;IACF,wBAAwB,GACrB,WAAW,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAC5B;gBAEC,SAAS,EAAE,SAAS;CAGjC"}
@@ -6,6 +6,9 @@ import { PneumaticPanelToggleExhaustUC } from "../UCs/PneumaticPanelToggleExhaus
6
6
  export declare class MockPneumaticPanelToggleExhaustUC extends PneumaticPanelToggleExhaustUC {
7
7
  maxPressure: number;
8
8
  toggleExhaust: () => boolean;
9
+ subscribeOnExhaustOpened: (_callback: () => void) => (() => void);
10
+ subscribeOnExhaustClosed: (_callback: () => void) => (() => void);
11
+ subscribeOnExhaustCloseBlockedByLock: (_callback: () => void) => (() => void);
9
12
  constructor(appObject: AppObject);
10
13
  }
11
14
  //# sourceMappingURL=MockPneumaticPanelToggleExhaustUC.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockPneumaticPanelToggleExhaustUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockPneumaticPanelToggleExhaustUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF;;GAEG;AACH,qBAAa,iCACX,SAAQ,6BAA6B;IAErC,WAAW,SAAM;IACjB,aAAa,QAAO,OAAO,CAAS;gBAExB,SAAS,EAAE,SAAS;CAGjC"}
1
+ {"version":3,"file":"MockPneumaticPanelToggleExhaustUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockPneumaticPanelToggleExhaustUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,6BAA6B;IAClF,WAAW,SAAM;IACjB,aAAa,QAAO,OAAO,CAAS;IACpC,wBAAwB,GACrB,WAAW,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAC5B;IACX,wBAAwB,GACrB,WAAW,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAC5B;IACX,oCAAoC,GACjC,WAAW,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAC5B;gBAEC,SAAS,EAAE,SAAS;CAGjC"}
@@ -5,6 +5,8 @@ import { PneumaticPanelToggleLockUC } from "../UCs/PneumaticPanelToggleLockUC";
5
5
  */
6
6
  export declare class MockPneumaticPanelToggleLockUC extends PneumaticPanelToggleLockUC {
7
7
  toggleLock: () => boolean;
8
+ subscribeOnPanelLocked: (_callback: () => void) => (() => void);
9
+ subscribeOnPanelUnlocked: (_callback: () => void) => (() => void);
8
10
  constructor(appObject: AppObject);
9
11
  }
10
12
  //# sourceMappingURL=MockPneumaticPanelToggleLockUC.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockPneumaticPanelToggleLockUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockPneumaticPanelToggleLockUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE/E;;GAEG;AACH,qBAAa,8BACX,SAAQ,0BAA0B;IAElC,UAAU,QAAO,OAAO,CAAS;gBAErB,SAAS,EAAE,SAAS;CAGjC"}
1
+ {"version":3,"file":"MockPneumaticPanelToggleLockUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/Mocks/MockPneumaticPanelToggleLockUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE/E;;GAEG;AACH,qBAAa,8BAA+B,SAAQ,0BAA0B;IAC5E,UAAU,QAAO,OAAO,CAAS;IACjC,sBAAsB,GACnB,WAAW,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAC5B;IACX,wBAAwB,GACrB,WAAW,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAC5B;gBAEC,SAAS,EAAE,SAAS;CAGjC"}
@@ -1,4 +1,5 @@
1
1
  import { AppObject, AppObjectPM, AppObjectRepo } from "@vived/core";
2
+ import { type PneumaticPanelHighlightedObject } from "../Entities/PneumaticPanelEntity";
2
3
  /**
3
4
  * View Model for Pneumatic Panel UI rendering.
4
5
  * Immutable snapshot of component state suitable for views.
@@ -10,6 +11,13 @@ export interface PneumaticPanelVM {
10
11
  isLocked: boolean;
11
12
  /** Current pressure reading */
12
13
  pressure: number;
14
+ /**
15
+ * When true, show the ghost lock immediately (training mode).
16
+ * When false, reveal it only on hover (assessment mode).
17
+ */
18
+ showGhostLockHint: boolean;
19
+ /** Which object should be highlighted in the scene. */
20
+ highlightedObject: PneumaticPanelHighlightedObject;
13
21
  }
14
22
  /**
15
23
  * PneumaticPanelPM
@@ -1 +1 @@
1
- {"version":3,"file":"PneumaticPanelPM.d.ts","sourceRoot":"","sources":["../../../src/Domain/PMs/PneumaticPanelPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGpE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,8BAAsB,gBAAiB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;IAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,sBAAsB;IAE1C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,GAAG,SAAS;IAI3D,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,gBAAgB,GAAG,SAAS;CAGhC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,GACnB,gBAAgB,CAElB"}
1
+ {"version":3,"file":"PneumaticPanelPM.d.ts","sourceRoot":"","sources":["../../../src/Domain/PMs/PneumaticPanelPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,kCAAkC,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B,uDAAuD;IACvD,iBAAiB,EAAE,+BAA+B,CAAC;CACpD;AAED;;;;;;GAMG;AACH,8BAAsB,gBAAiB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;IAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,sBAAsB;IAE1C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,GAAG,SAAS;IAI3D,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,gBAAgB,GAAG,SAAS;CAGhC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB,CAE3E"}
@@ -9,6 +9,8 @@ export declare abstract class PneumaticPanelCheckPressureUC extends AppObjectUC
9
9
  static readonly type = "PneumaticPanelCheckPressureUC";
10
10
  /** Display the current pressure */
11
11
  abstract checkPressure(): void;
12
+ /** Subscribe to check-pressure invocations. Returns an unsubscribe function. */
13
+ abstract subscribeOnCheckPressure(callback: () => void): () => void;
12
14
  static get(appObj: AppObject): PneumaticPanelCheckPressureUC | undefined;
13
15
  static getById(id: string, appObjects: AppObjectRepo): PneumaticPanelCheckPressureUC | undefined;
14
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PneumaticPanelCheckPressureUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/PneumaticPanelCheckPressureUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkBpE;;;;;GAKG;AACH,8BAAsB,6BAA8B,SAAQ,WAAW;IACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,mCAAmC;IAEvD,mCAAmC;IACnC,QAAQ,CAAC,aAAa,IAAI,IAAI;IAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,6BAA6B,GAAG,SAAS;IAIxE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,6BAA6B,GAAG,SAAS;CAK7C;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,SAAS,GACnB,6BAA6B,CAE/B"}
1
+ {"version":3,"file":"PneumaticPanelCheckPressureUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/PneumaticPanelCheckPressureUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkBpE;;;;;GAKG;AACH,8BAAsB,6BAA8B,SAAQ,WAAW;IACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,mCAAmC;IAEvD,mCAAmC;IACnC,QAAQ,CAAC,aAAa,IAAI,IAAI;IAE9B,gFAAgF;IAChF,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEnE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,6BAA6B,GAAG,SAAS;IAIxE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,6BAA6B,GAAG,SAAS;CAK7C;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,SAAS,GACnB,6BAA6B,CAE/B"}
@@ -15,6 +15,12 @@ export declare abstract class PneumaticPanelToggleExhaustUC extends AppObjectUC
15
15
  abstract set maxPressure(val: number);
16
16
  /** Toggle the exhaust valve. Returns true if successful, false if locked. */
17
17
  abstract toggleExhaust(): boolean;
18
+ /** Subscribe to exhaust-opened transitions. Returns an unsubscribe function. */
19
+ abstract subscribeOnExhaustOpened(callback: () => void): () => void;
20
+ /** Subscribe to exhaust-closed transitions. Returns an unsubscribe function. */
21
+ abstract subscribeOnExhaustClosed(callback: () => void): () => void;
22
+ /** Subscribe to blocked close attempts while locked. Returns an unsubscribe function. */
23
+ abstract subscribeOnExhaustCloseBlockedByLock(callback: () => void): () => void;
18
24
  static get(appObj: AppObject): PneumaticPanelToggleExhaustUC | undefined;
19
25
  static getById(id: string, appObjects: AppObjectRepo): PneumaticPanelToggleExhaustUC | undefined;
20
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PneumaticPanelToggleExhaustUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/PneumaticPanelToggleExhaustUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;;GAQG;AACH,8BAAsB,6BAA8B,SAAQ,WAAW;IACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,mCAAmC;IAEvD,0EAA0E;IAC1E,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC;IACnC,QAAQ,KAAK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE;IAEtC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,IAAI,OAAO;IAEjC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,6BAA6B,GAAG,SAAS;IAIxE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,6BAA6B,GAAG,SAAS;CAK7C;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,SAAS,GACnB,6BAA6B,CAE/B"}
1
+ {"version":3,"file":"PneumaticPanelToggleExhaustUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/PneumaticPanelToggleExhaustUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;;GAQG;AACH,8BAAsB,6BAA8B,SAAQ,WAAW;IACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,mCAAmC;IAEvD,0EAA0E;IAC1E,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC;IACnC,QAAQ,KAAK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE;IAEtC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,IAAI,OAAO;IAEjC,gFAAgF;IAChF,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEnE,gFAAgF;IAChF,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEnE,yFAAyF;IACzF,QAAQ,CAAC,oCAAoC,CAC3C,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI;IAEb,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,6BAA6B,GAAG,SAAS;IAIxE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,6BAA6B,GAAG,SAAS;CAK7C;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,SAAS,GACnB,6BAA6B,CAE/B"}
@@ -12,6 +12,10 @@ export declare abstract class PneumaticPanelToggleLockUC extends AppObjectUC {
12
12
  static readonly type = "PneumaticPanelToggleLockUC";
13
13
  /** Toggle the lock state. Returns true if successful, false if exhaust is open. */
14
14
  abstract toggleLock(): boolean;
15
+ /** Subscribe to lock-engaged transitions. Returns an unsubscribe function. */
16
+ abstract subscribeOnPanelLocked(callback: () => void): () => void;
17
+ /** Subscribe to lock-disengaged transitions. Returns an unsubscribe function. */
18
+ abstract subscribeOnPanelUnlocked(callback: () => void): () => void;
15
19
  static get(appObj: AppObject): PneumaticPanelToggleLockUC | undefined;
16
20
  static getById(id: string, appObjects: AppObjectRepo): PneumaticPanelToggleLockUC | undefined;
17
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PneumaticPanelToggleLockUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/PneumaticPanelToggleLockUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;;GAQG;AACH,8BAAsB,0BAA2B,SAAQ,WAAW;IAClE,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAgC;IAEpD,mFAAmF;IACnF,QAAQ,CAAC,UAAU,IAAI,OAAO;IAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,0BAA0B,GAAG,SAAS;IAIrE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,0BAA0B,GAAG,SAAS;CAK1C;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,GACnB,0BAA0B,CAE5B"}
1
+ {"version":3,"file":"PneumaticPanelToggleLockUC.d.ts","sourceRoot":"","sources":["../../../src/Domain/UCs/PneumaticPanelToggleLockUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE;;;;;;;;GAQG;AACH,8BAAsB,0BAA2B,SAAQ,WAAW;IAClE,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAgC;IAEpD,mFAAmF;IACnF,QAAQ,CAAC,UAAU,IAAI,OAAO;IAE9B,8EAA8E;IAC9E,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEjE,iFAAiF;IACjF,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAEnE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,0BAA0B,GAAG,SAAS;IAIrE,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,0BAA0B,GAAG,SAAS;CAK1C;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,GACnB,0BAA0B,CAE5B"}
@@ -0,0 +1,18 @@
1
+ import { AbstractMesh, Color3 } from "@babylonjs/core";
2
+ type OutlinePulseOptions = {
3
+ color?: Color3;
4
+ intervalMs?: number;
5
+ width?: number;
6
+ };
7
+ type OutlinePulseController = {
8
+ apply(on: boolean): void;
9
+ dispose(): void;
10
+ };
11
+ /**
12
+ * Creates a pulsing hard-edge outline controller for one or more meshes.
13
+ * It guarantees immediate cleanup when turned off or disposed.
14
+ * The outline pulses on/off at the specified interval, creating a strobe effect.
15
+ */
16
+ export declare function makeOutlinePulseController(getMeshes: () => AbstractMesh[], options?: OutlinePulseOptions): OutlinePulseController;
17
+ export {};
18
+ //# sourceMappingURL=OutlinePulseController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutlinePulseController.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/OutlinePulseController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEvD,KAAK,mBAAmB,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,YAAY,EAAE,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,sBAAsB,CAqExB"}
@@ -0,0 +1,17 @@
1
+ import { AbstractMesh, Color3 } from "@babylonjs/core";
2
+ type OverlayPulseOptions = {
3
+ alpha?: number;
4
+ color?: Color3;
5
+ intervalMs?: number;
6
+ };
7
+ type OverlayPulseController = {
8
+ apply(on: boolean): void;
9
+ dispose(): void;
10
+ };
11
+ /**
12
+ * Creates a small pulsing-overlay controller for one or more meshes.
13
+ * It guarantees immediate cleanup when turned off or disposed.
14
+ */
15
+ export declare function makeOverlayPulseController(getMeshes: () => AbstractMesh[], options?: OverlayPulseOptions): OverlayPulseController;
16
+ export {};
17
+ //# sourceMappingURL=OverlayPulseController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayPulseController.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/OverlayPulseController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEvD,KAAK,mBAAmB,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,YAAY,EAAE,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,sBAAsB,CAoExB"}
@@ -0,0 +1,6 @@
1
+ import type { AppObjectRepo } from "@vived/core";
2
+ import type { AssetContainer } from "@babylonjs/core";
3
+ import type { Scene } from "@babylonjs/core";
4
+ export declare function getPneumaticPanelAssetContainer(scene: Scene, appObjects: AppObjectRepo, assetId: string): Promise<AssetContainer>;
5
+ export declare function clearPneumaticPanelAssetCache(): void;
6
+ //# sourceMappingURL=PneumaticPanelAssetCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PneumaticPanelAssetCache.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/PneumaticPanelAssetCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAoBzB;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAKpD"}
@@ -1,23 +1,30 @@
1
- import { AbstractMesh } from "@babylonjs/core";
1
+ import type { AbstractMesh } from "@babylonjs/core";
2
+ import type { Node } from "@babylonjs/core";
3
+ import type { TransformNode } from "@babylonjs/core";
2
4
  import { AppObject, AppObjectView } from "@vived/core";
3
- /**
4
- * PneumaticPanelBabylonView
5
- *
6
- * Babylon.js view for the Pneumatic Panel. Subscribes to the PM
7
- * and updates the 3D representation when the view model changes.
8
- *
9
- * Replace the implementation with your actual Babylon.js rendering logic.
10
- */
5
+ export type PneumaticPanelGlowConfig = {
6
+ blurHorizontalSize: number;
7
+ blurVerticalSize: number;
8
+ innerGlow: boolean;
9
+ isEnabled: boolean;
10
+ neutralAlpha: number;
11
+ outerGlow: boolean;
12
+ };
11
13
  export declare abstract class PneumaticPanelBabylonView extends AppObjectView {
12
14
  static readonly type = "PneumaticPanelBabylonView";
13
- /** Set up the view by subscribing to the PM */
14
- abstract setupView(): Promise<void>;
15
- /** Bind loaded meshes to this view for rendering */
16
- abstract bindMeshes(meshes: AbstractMesh[]): void;
15
+ /** Resolves the Babylon scene, loads meshes, and subscribes to updates. */
16
+ abstract load(): Promise<void>;
17
+ /** Returns the root TransformNode of the imported GLB, or undefined before load() completes. */
18
+ abstract get rootTransformNode(): TransformNode | undefined;
19
+ /** Returns the meshes that should be registered as shadow casters. */
20
+ abstract get shadowCasters(): AbstractMesh[];
21
+ /** Lookup of every scene node keyed by its objectId metadata. Populated after load() completes. */
22
+ abstract get nodesByObjectId(): ReadonlyMap<string, Node>;
23
+ /** Current runtime glow/highlight layer config used by this view. */
24
+ abstract get glowConfig(): Readonly<PneumaticPanelGlowConfig>;
25
+ /** Merge-and-apply a partial glow config at runtime. */
26
+ abstract updateGlowConfig(patch: Partial<PneumaticPanelGlowConfig>): Readonly<PneumaticPanelGlowConfig>;
17
27
  static get(appObj: AppObject): PneumaticPanelBabylonView | undefined;
18
28
  }
19
- /**
20
- * Factory function to create a PneumaticPanelBabylonView
21
- */
22
29
  export declare function makePneumaticPanelBabylonView(appObject: AppObject): PneumaticPanelBabylonView;
23
30
  //# sourceMappingURL=PneumaticPanelBabylonView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PneumaticPanelBabylonView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/PneumaticPanelBabylonView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMvD;;;;;;;GAOG;AACH,8BAAsB,yBAA0B,SAAQ,aAAa;IACnE,MAAM,CAAC,QAAQ,CAAC,IAAI,+BAA+B;IAEnD,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAEnC,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAEjD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,yBAAyB,GAAG,SAAS;CAGrE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,GACnB,yBAAyB,CAE3B"}
1
+ {"version":3,"file":"PneumaticPanelBabylonView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/PneumaticPanelBabylonView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgBvD,MAAM,MAAM,wBAAwB,GAAG;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,8BAAsB,yBAA0B,SAAQ,aAAa;IACnE,MAAM,CAAC,QAAQ,CAAC,IAAI,+BAA+B;IAEnD,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,gGAAgG;IAChG,QAAQ,KAAK,iBAAiB,IAAI,aAAa,GAAG,SAAS,CAAC;IAE5D,sEAAsE;IACtE,QAAQ,KAAK,aAAa,IAAI,YAAY,EAAE,CAAC;IAE7C,mGAAmG;IACnG,QAAQ,KAAK,eAAe,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE1D,qEAAqE;IACrE,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAE9D,wDAAwD;IACxD,QAAQ,CAAC,gBAAgB,CACvB,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACvC,QAAQ,CAAC,wBAAwB,CAAC;IAErC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,yBAAyB,GAAG,SAAS;CAGrE;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,GACnB,yBAAyB,CAE3B"}
@@ -0,0 +1,17 @@
1
+ import { HighlightLayer, Node } from "@babylonjs/core";
2
+ import { AppObject, AppObjectView } from "@vived/core";
3
+ export declare const pneumaticPanelExhaustKnobMetadata = "exhaust_knob";
4
+ /**
5
+ * Babylon view that owns exhaust knob interaction and rotation.
6
+ *
7
+ * The exhaust knob is a mesh (objectId: "exhaust_knob").
8
+ * When exhaustOpen, the knob is rotated -90 degrees around its local Z axis.
9
+ * Otherwise the local Z rotation is 0.
10
+ */
11
+ export declare abstract class PneumaticPanelExhaustView extends AppObjectView {
12
+ static readonly type = "PneumaticPanelExhaustView";
13
+ abstract bindMeshes(nodesByObjectId: ReadonlyMap<string, Node>, highlightLayer: HighlightLayer): void;
14
+ static get(appObj: AppObject): PneumaticPanelExhaustView | undefined;
15
+ }
16
+ export declare function makePneumaticPanelExhaustView(appObject: AppObject): PneumaticPanelExhaustView;
17
+ //# sourceMappingURL=PneumaticPanelExhaustView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PneumaticPanelExhaustView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/PneumaticPanelExhaustView.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,EACd,IAAI,EACL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQvD,eAAO,MAAM,iCAAiC,iBAAiB,CAAC;AAEhE;;;;;;GAMG;AACH,8BAAsB,yBAA0B,SAAQ,aAAa;IACnE,MAAM,CAAC,QAAQ,CAAC,IAAI,+BAA+B;IAEnD,QAAQ,CAAC,UAAU,CACjB,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1C,cAAc,EAAE,cAAc,GAC7B,IAAI;IAEP,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,yBAAyB,GAAG,SAAS;CAGrE;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,GACnB,yBAAyB,CAE3B"}
@@ -0,0 +1,10 @@
1
+ import { HighlightLayer, Node } from "@babylonjs/core";
2
+ import { AppObject, AppObjectView } from "@vived/core";
3
+ export declare const pneumaticPanelGaugeMetadata = "gauge";
4
+ export declare abstract class PneumaticPanelGaugeView extends AppObjectView {
5
+ static readonly type = "PneumaticPanelGaugeView";
6
+ abstract bindMeshes(nodesByObjectId: ReadonlyMap<string, Node>, highlightLayer: HighlightLayer): void;
7
+ static get(appObj: AppObject): PneumaticPanelGaugeView | undefined;
8
+ }
9
+ export declare function makePneumaticPanelGaugeView(appObject: AppObject): PneumaticPanelGaugeView;
10
+ //# sourceMappingURL=PneumaticPanelGaugeView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PneumaticPanelGaugeView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/PneumaticPanelGaugeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EACd,IAAI,EACL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOvD,eAAO,MAAM,2BAA2B,UAAU,CAAC;AAEnD,8BAAsB,uBAAwB,SAAQ,aAAa;IACjE,MAAM,CAAC,QAAQ,CAAC,IAAI,6BAA6B;IAEjD,QAAQ,CAAC,UAAU,CACjB,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1C,cAAc,EAAE,cAAc,GAC7B,IAAI;IAEP,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,uBAAuB,GAAG,SAAS;CAGnE;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,GACnB,uBAAuB,CAEzB"}
@@ -0,0 +1,18 @@
1
+ import { HighlightLayer, Node } from "@babylonjs/core";
2
+ import { AppObject, AppObjectView } from "@vived/core";
3
+ export declare const pneumaticPanelLockMetadata = "lock";
4
+ export declare const pneumaticPanelGhostLockMetadata = "ghost_lock";
5
+ /**
6
+ * Babylon view that owns lock / ghost-lock visibility and interaction.
7
+ *
8
+ * The lock is a TransformNode (objectId: "lock") containing child meshes.
9
+ * The ghost lock is a single mesh (objectId: "ghost_lock").
10
+ */
11
+ export declare abstract class PneumaticPanelLockView extends AppObjectView {
12
+ static readonly type = "PneumaticPanelLockView";
13
+ abstract bindMeshes(nodesByObjectId: ReadonlyMap<string, Node>, highlightLayer: HighlightLayer): void;
14
+ abstract flash(): void;
15
+ static get(appObj: AppObject): PneumaticPanelLockView | undefined;
16
+ }
17
+ export declare function makePneumaticPanelLockView(appObject: AppObject): PneumaticPanelLockView;
18
+ //# sourceMappingURL=PneumaticPanelLockView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PneumaticPanelLockView.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/PneumaticPanelLockView.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EACd,IAAI,EAEL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOvD,eAAO,MAAM,0BAA0B,SAAS,CAAC;AACjD,eAAO,MAAM,+BAA+B,eAAe,CAAC;AAE5D;;;;;GAKG;AACH,8BAAsB,sBAAuB,SAAQ,aAAa;IAChE,MAAM,CAAC,QAAQ,CAAC,IAAI,4BAA4B;IAEhD,QAAQ,CAAC,UAAU,CACjB,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1C,cAAc,EAAE,cAAc,GAC7B,IAAI;IACP,QAAQ,CAAC,KAAK,IAAI,IAAI;IAEtB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,sBAAsB,GAAG,SAAS;CAGlE;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,GACnB,sBAAsB,CAExB"}
@@ -0,0 +1,17 @@
1
+ import { AbstractMesh, Color3, HighlightLayer } from "@babylonjs/core";
2
+ type ScreenSpaceOutlinePulseOptions = {
3
+ color?: Color3;
4
+ intervalMs?: number;
5
+ };
6
+ type ScreenSpaceOutlinePulseController = {
7
+ apply(on: boolean): void;
8
+ dispose(): void;
9
+ };
10
+ /**
11
+ * Creates a pulsing screen-space outline controller for one or more meshes.
12
+ * Uses Babylon's HighlightLayer for post-process rendering with consistent pixel width.
13
+ * The outline pulses on/off at the specified interval, creating a strobe effect.
14
+ */
15
+ export declare function makeScreenSpaceOutlinePulseController(getMeshes: () => AbstractMesh[], layer: HighlightLayer | undefined, options?: ScreenSpaceOutlinePulseOptions): ScreenSpaceOutlinePulseController;
16
+ export {};
17
+ //# sourceMappingURL=ScreenSpaceOutlinePulseController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenSpaceOutlinePulseController.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/ScreenSpaceOutlinePulseController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAQ,MAAM,iBAAiB,CAAC;AAE7E,KAAK,8BAA8B,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IACvC,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,MAAM,YAAY,EAAE,EAC/B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,8BAA8B,GACvC,iCAAiC,CA6EnC"}
@@ -1,13 +1,3 @@
1
- import { AppObjectRepo } from "@vived/core";
2
- import { PneumaticPanelBabylonView } from "./PneumaticPanelBabylonView";
3
- export interface CreateBabylonPneumaticPanelOptions {
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 createBabylonPneumaticPanel(options: CreateBabylonPneumaticPanelOptions): Promise<PneumaticPanelBabylonView | undefined>;
1
+ import { AppObject, AppObjectRepo } from "@vived/core";
2
+ export declare function createBabylonPneumaticPanel(id: string, appObjects: AppObjectRepo): Promise<AppObject | undefined>;
13
3
  //# sourceMappingURL=createBabylonPneumaticPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createBabylonPneumaticPanel.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/createBabylonPneumaticPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EACL,yBAAyB,EAE1B,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,kCAAkC;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAoChD"}
1
+ {"version":3,"file":"createBabylonPneumaticPanel.d.ts","sourceRoot":"","sources":["../../../src/Frameworks/Babylon/createBabylonPneumaticPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIvD,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAOhC"}
package/dist/index.d.ts CHANGED
@@ -11,11 +11,14 @@ export { PneumaticPanelCheckPressureUC, makePneumaticPanelCheckPressureUC, } fro
11
11
  export { tryToggleExhaust } from "./Domain/Controllers/tryToggleExhaust";
12
12
  export { tryToggleLock } from "./Domain/Controllers/tryToggleLock";
13
13
  export { checkPressure } from "./Domain/Controllers/checkPressure";
14
+ export { setShowGhostLockHint } from "./Domain/Controllers/setShowGhostLockHint";
15
+ export { setHighlightedObject } from "./Domain/Controllers/setHighlightedObject";
16
+ export { clearAllHighlights } from "./Domain/Controllers/clearAllHighlights";
14
17
  export { PneumaticPanelPM, makePneumaticPanelPM, type PneumaticPanelVM, } from "./Domain/PMs/PneumaticPanelPM";
15
18
  export { pneumaticPanelPMAdapter } from "./Domain/Adapters/pneumaticPanelPMAdapter";
16
- export { PneumaticPanelBabylonView, makePneumaticPanelBabylonView, } from "./Frameworks/Babylon/PneumaticPanelBabylonView";
19
+ export { PneumaticPanelBabylonView, makePneumaticPanelBabylonView, type PneumaticPanelGlowConfig, } from "./Frameworks/Babylon/PneumaticPanelBabylonView";
17
20
  export { PneumaticPanelFeatureFactory, makePneumaticPanelFeatureFactory, } from "./Domain/Factory/PneumaticPanelFeatureFactory";
18
- export { createBabylonPneumaticPanel, type CreateBabylonPneumaticPanelOptions, } from "./Frameworks/Babylon/createBabylonPneumaticPanel";
21
+ export { createBabylonPneumaticPanel } from "./Frameworks/Babylon/createBabylonPneumaticPanel";
19
22
  export { MockPneumaticPanelPM } from "./Domain/Mocks/MockPneumaticPanelPM";
20
23
  export { MockPneumaticPanelToggleExhaustUC } from "./Domain/Mocks/MockPneumaticPanelToggleExhaustUC";
21
24
  export { MockPneumaticPanelToggleLockUC } from "./Domain/Mocks/MockPneumaticPanelToggleLockUC";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,OAAO,EACL,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,gDAAgD,CAAC;AAGxD,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,kDAAkD,CAAC;AAG1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AAGrG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,gDAAgD,CAAC;AAGxD,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAG/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AACrG,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AAGrG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC"}