@vived/app 4.34.11 → 4.35.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 (165) hide show
  1. package/lib/AppObject/AppObjectComponent.d.ts +9 -0
  2. package/lib/AppObject/AppObjectComponent.js +11 -1
  3. package/lib/AppObject/AppObjectController.d.ts +2 -1
  4. package/lib/AppObject/AppObjectController.js +4 -0
  5. package/lib/AppObject/AppObjectEntity.d.ts +2 -1
  6. package/lib/AppObject/AppObjectEntity.js +1 -0
  7. package/lib/AppObject/AppObjectPM.d.ts +2 -1
  8. package/lib/AppObject/AppObjectPM.js +1 -0
  9. package/lib/AppObject/AppObjectUC.d.ts +2 -1
  10. package/lib/AppObject/AppObjectUC.js +4 -0
  11. package/lib/AppObject/AppObjectView.d.ts +2 -1
  12. package/lib/AppObject/AppObjectView.js +4 -0
  13. package/lib/Components/ChannelModel/Entities/ChannelModel.js +1 -1
  14. package/lib/Components/FramedScreen/Factories/setupStandardFramedScreen.d.ts +4 -1
  15. package/lib/Components/FramedScreen/Factories/setupStandardFramedScreen.js +4 -2
  16. package/lib/Components/HoverLabel/Factories/setupHoverLabel.d.ts +16 -2
  17. package/lib/Components/HoverLabel/Factories/setupHoverLabel.js +8 -2
  18. package/lib/Components/LabelDrop/UseCases/DragLabelDropUC.js +3 -3
  19. package/lib/Utilities/LerpNumber.d.ts +56 -0
  20. package/lib/Utilities/LerpNumber.js +85 -0
  21. package/lib/Utilities/LerpNumberX.d.ts +56 -0
  22. package/lib/Utilities/LerpNumberX.js +85 -0
  23. package/lib/Utilities/index.d.ts +2 -0
  24. package/lib/Utilities/index.js +2 -0
  25. package/lib/Utilities/interpolateNumber.d.ts +1 -0
  26. package/lib/Utilities/{lerpNumber.js → interpolateNumber.js} +3 -3
  27. package/lib/ValueObjects/Vector3.js +4 -4
  28. package/package.json +1 -1
  29. package/lib/Components/App/Adapters/index.d.ts +0 -4
  30. package/lib/Components/App/Adapters/index.js +0 -16
  31. package/lib/Components/App/Adapters/isAuthoringAdapter.d.ts +0 -2
  32. package/lib/Components/App/Adapters/isAuthoringAdapter.js +0 -23
  33. package/lib/Components/App/Adapters/isReviewingAdapter.d.ts +0 -2
  34. package/lib/Components/App/Adapters/isReviewingAdapter.js +0 -23
  35. package/lib/Components/App/Adapters/slideNavigationAdapter.d.ts +0 -3
  36. package/lib/Components/App/Adapters/slideNavigationAdapter.js +0 -23
  37. package/lib/Components/App/Adapters/slideTextAdapter.d.ts +0 -2
  38. package/lib/Components/App/Adapters/slideTextAdapter.js +0 -23
  39. package/lib/Components/App/Controller/clickContinue.d.ts +0 -2
  40. package/lib/Components/App/Controller/clickContinue.js +0 -13
  41. package/lib/Components/App/Controller/clickEditSlideText.d.ts +0 -2
  42. package/lib/Components/App/Controller/clickEditSlideText.js +0 -13
  43. package/lib/Components/App/Controller/index.d.ts +0 -5
  44. package/lib/Components/App/Controller/index.js +0 -17
  45. package/lib/Components/App/Controller/removeRenderCanvas.d.ts +0 -2
  46. package/lib/Components/App/Controller/removeRenderCanvas.js +0 -13
  47. package/lib/Components/App/Controller/submitRenderCanvas.d.ts +0 -2
  48. package/lib/Components/App/Controller/submitRenderCanvas.js +0 -13
  49. package/lib/Components/App/Controller/updateContentSize.d.ts +0 -2
  50. package/lib/Components/App/Controller/updateContentSize.js +0 -13
  51. package/lib/Components/App/Entity/BaseAppState.d.ts +0 -20
  52. package/lib/Components/App/Entity/BaseAppState.js +0 -68
  53. package/lib/Components/App/Entity/index.d.ts +0 -1
  54. package/lib/Components/App/Entity/index.js +0 -13
  55. package/lib/Components/App/Mocks/IsAuthoringMock.d.ts +0 -8
  56. package/lib/Components/App/Mocks/IsAuthoringMock.js +0 -15
  57. package/lib/Components/App/Mocks/IsReviewingMock.d.ts +0 -8
  58. package/lib/Components/App/Mocks/IsReviewingMock.js +0 -15
  59. package/lib/Components/App/Mocks/MockAppRenderingUC.d.ts +0 -10
  60. package/lib/Components/App/Mocks/MockAppRenderingUC.js +0 -16
  61. package/lib/Components/App/Mocks/MockRenderCanvasUC.d.ts +0 -10
  62. package/lib/Components/App/Mocks/MockRenderCanvasUC.js +0 -16
  63. package/lib/Components/App/Mocks/MockUpdateContentSizeUC.d.ts +0 -9
  64. package/lib/Components/App/Mocks/MockUpdateContentSizeUC.js +0 -15
  65. package/lib/Components/App/Mocks/SlideNavigationMock.d.ts +0 -8
  66. package/lib/Components/App/Mocks/SlideNavigationMock.js +0 -15
  67. package/lib/Components/App/Mocks/SlideTextMock.d.ts +0 -8
  68. package/lib/Components/App/Mocks/SlideTextMock.js +0 -15
  69. package/lib/Components/App/Mocks/index.d.ts +0 -7
  70. package/lib/Components/App/Mocks/index.js +0 -19
  71. package/lib/Components/App/PM/IsAuthoringPM.d.ts +0 -6
  72. package/lib/Components/App/PM/IsAuthoringPM.js +0 -39
  73. package/lib/Components/App/PM/IsReviewingPM.d.ts +0 -6
  74. package/lib/Components/App/PM/IsReviewingPM.js +0 -39
  75. package/lib/Components/App/PM/SlideNavigationPM.d.ts +0 -12
  76. package/lib/Components/App/PM/SlideNavigationPM.js +0 -49
  77. package/lib/Components/App/PM/SlideTextPM.d.ts +0 -6
  78. package/lib/Components/App/PM/SlideTextPM.js +0 -34
  79. package/lib/Components/App/PM/index.d.ts +0 -4
  80. package/lib/Components/App/PM/index.js +0 -16
  81. package/lib/Components/App/UC/AppRenderingUC.d.ts +0 -7
  82. package/lib/Components/App/UC/AppRenderingUC.js +0 -9
  83. package/lib/Components/App/UC/EditSlideTextUC.d.ts +0 -10
  84. package/lib/Components/App/UC/EditSlideTextUC.js +0 -57
  85. package/lib/Components/App/UC/RenderCanvasUC.d.ts +0 -10
  86. package/lib/Components/App/UC/RenderCanvasUC.js +0 -88
  87. package/lib/Components/App/UC/SerializeBaseAppState.d.ts +0 -17
  88. package/lib/Components/App/UC/SerializeBaseAppState.js +0 -59
  89. package/lib/Components/App/UC/UndoRedoEditSlideText.d.ts +0 -11
  90. package/lib/Components/App/UC/UndoRedoEditSlideText.js +0 -43
  91. package/lib/Components/App/UC/UpdateContentSizeUC.d.ts +0 -7
  92. package/lib/Components/App/UC/UpdateContentSizeUC.js +0 -33
  93. package/lib/Components/App/UC/index.d.ts +0 -7
  94. package/lib/Components/App/UC/index.js +0 -19
  95. package/lib/Components/App/index.d.ts +0 -6
  96. package/lib/Components/App/index.js +0 -18
  97. package/lib/Components/Callouts/Controller/MouseCalloutRoll.d.ts +0 -9
  98. package/lib/Components/Callouts/Controller/MouseCalloutRoll.js +0 -27
  99. package/lib/Components/Callouts/Mocks/MoveCalloutToCamUcMock.d.ts +0 -7
  100. package/lib/Components/Callouts/Mocks/MoveCalloutToCamUcMock.js +0 -11
  101. package/lib/Components/Callouts/Mocks/TryBumpLabelUcMock.d.ts +0 -9
  102. package/lib/Components/Callouts/Mocks/TryBumpLabelUcMock.js +0 -13
  103. package/lib/Components/Callouts/UC/MoveCalloutToCamUC.d.ts +0 -14
  104. package/lib/Components/Callouts/UC/MoveCalloutToCamUC.js +0 -35
  105. package/lib/Components/Callouts/UC/TryBumpLabelUC.d.ts +0 -9
  106. package/lib/Components/Callouts/UC/TryBumpLabelUC.js +0 -61
  107. package/lib/Components/Challenge/React/challengeAuthorHelpHookAdapter.d.ts +0 -3
  108. package/lib/Components/Challenge/React/challengeAuthorHelpHookAdapter.js +0 -23
  109. package/lib/Components/Challenge/React/challengeConsumerHelpHookAdapter.d.ts +0 -3
  110. package/lib/Components/Challenge/React/challengeConsumerHelpHookAdapter.js +0 -23
  111. package/lib/Components/Challenge/React/index.d.ts +0 -3
  112. package/lib/Components/Challenge/React/index.js +0 -15
  113. package/lib/Components/Challenge/React/selectedChallengeHookAdapter.d.ts +0 -3
  114. package/lib/Components/Challenge/React/selectedChallengeHookAdapter.js +0 -29
  115. package/lib/Components/Challenge/UCs/SetChallengeUndo.d.ts +0 -11
  116. package/lib/Components/Challenge/UCs/SetChallengeUndo.js +0 -37
  117. package/lib/Components/ChannelModel/Controllers/setModelObjectLabel.d.ts +0 -2
  118. package/lib/Components/ChannelModel/Controllers/setModelObjectLabel.js +0 -14
  119. package/lib/Components/ChannelModel/Mocks/ValidateObjectPickUcMock.d.ts +0 -8
  120. package/lib/Components/ChannelModel/Mocks/ValidateObjectPickUcMock.js +0 -15
  121. package/lib/Components/Enablement/Entities/EnablablementEntity.d.ts +0 -16
  122. package/lib/Components/Enablement/Entities/EnablablementEntity.js +0 -28
  123. package/lib/Components/Enablement/PM/EnablableStatePM.d.ts +0 -14
  124. package/lib/Components/Enablement/PM/EnablableStatePM.js +0 -41
  125. package/lib/Components/FramedScreen/Factories/setupFramedScreen.d.ts +0 -2
  126. package/lib/Components/FramedScreen/Factories/setupFramedScreen.js +0 -35
  127. package/lib/Components/FramedScreen/PM/FramedScreenContainerPM.d.ts +0 -18
  128. package/lib/Components/FramedScreen/PM/FramedScreenContainerPM.js +0 -55
  129. package/lib/Components/HoverLabel/Controllers/ToggleAllowHoverLabelController.d.ts +0 -2
  130. package/lib/Components/HoverLabel/Controllers/ToggleAllowHoverLabelController.js +0 -13
  131. package/lib/Components/HoverLabel/Entities/HoverLabel.d.ts +0 -23
  132. package/lib/Components/HoverLabel/Entities/HoverLabel.js +0 -102
  133. package/lib/Components/Label/Entities/Label.d.ts +0 -18
  134. package/lib/Components/Label/Entities/Label.js +0 -64
  135. package/lib/Components/Landmarks/Controller/SetSelectedLandmarkColor.d.ts +0 -3
  136. package/lib/Components/Landmarks/Controller/SetSelectedLandmarkColor.js +0 -24
  137. package/lib/Components/Landmarks/Controller/submitLandmarkSizeX.d.ts +0 -2
  138. package/lib/Components/Landmarks/Controller/submitLandmarkSizeX.js +0 -19
  139. package/lib/Components/Landmarks/Controller/updateLandmarkSizeX.d.ts +0 -2
  140. package/lib/Components/Landmarks/Controller/updateLandmarkSizeX.js +0 -19
  141. package/lib/Components/Landmarks/UseCases/AddLandmarkUC.d.ts +0 -8
  142. package/lib/Components/Landmarks/UseCases/AddLandmarkUC.js +0 -67
  143. package/lib/Components/Question/UC/registerQuestionChallenge.d.ts +0 -2
  144. package/lib/Components/Question/UC/registerQuestionChallenge.js +0 -20
  145. package/lib/Components/SceneRoot/Mocks/DragScaleSceneRootUcMock.d.ts +0 -9
  146. package/lib/Components/SceneRoot/Mocks/DragScaleSceneRootUcMock.js +0 -13
  147. package/lib/Components/SceneRoot/Mocks/OrbitSceneRootUcMock.d.ts +0 -11
  148. package/lib/Components/SceneRoot/Mocks/OrbitSceneRootUcMock.js +0 -15
  149. package/lib/Components/SceneRoot/Mocks/PanSceneRootUcMock.d.ts +0 -10
  150. package/lib/Components/SceneRoot/Mocks/PanSceneRootUcMock.js +0 -14
  151. package/lib/Components/Selection/Controller/HoverOnAppObjectSC.d.ts +0 -11
  152. package/lib/Components/Selection/Controller/HoverOnAppObjectSC.js +0 -41
  153. package/lib/Components/Selection/Controller/PressOnAppObjectSC.d.ts +0 -18
  154. package/lib/Components/Selection/Controller/PressOnAppObjectSC.js +0 -70
  155. package/lib/Components/Selection/Controller/SelectAppObjectSC.d.ts +0 -11
  156. package/lib/Components/Selection/Controller/SelectAppObjectSC.js +0 -39
  157. package/lib/Components/Transform3D/Controllers/Mouse/TryMousePanTransformMC.d.ts +0 -13
  158. package/lib/Components/Transform3D/Controllers/Mouse/TryMousePanTransformMC.js +0 -51
  159. package/lib/Components/Transform3D/Controllers/Touch/TryTouchPanTransformTC.d.ts +0 -12
  160. package/lib/Components/Transform3D/Controllers/Touch/TryTouchPanTransformTC.js +0 -53
  161. package/lib/Components/Transform3D/UC/DragTransformUC.d.ts +0 -11
  162. package/lib/Components/Transform3D/UC/DragTransformUC.js +0 -108
  163. package/lib/Components/Transform3D/UC/StickTransformUC.d.ts +0 -12
  164. package/lib/Components/Transform3D/UC/StickTransformUC.js +0 -72
  165. package/lib/Utilities/lerpNumber.d.ts +0 -1
@@ -1,6 +1,15 @@
1
1
  import { AppObject } from "./AppObject";
2
2
  import { AppObjectRepo } from "./AppObjectRepo";
3
+ export declare enum AppObjectComponentType {
4
+ ENTITY = "Entity",
5
+ PM = "Presentation Manager",
6
+ UC = "Use Case",
7
+ CONTROLLER = "Controller",
8
+ VIEW = "View",
9
+ UNKNOWN = "Unknown"
10
+ }
3
11
  export declare class AppObjectComponent {
12
+ readonly componentType: AppObjectComponentType;
4
13
  readonly type: string;
5
14
  readonly appObject: AppObject;
6
15
  get appObjects(): AppObjectRepo;
@@ -1,8 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppObjectComponent = void 0;
3
+ exports.AppObjectComponent = exports.AppObjectComponentType = void 0;
4
+ var AppObjectComponentType;
5
+ (function (AppObjectComponentType) {
6
+ AppObjectComponentType["ENTITY"] = "Entity";
7
+ AppObjectComponentType["PM"] = "Presentation Manager";
8
+ AppObjectComponentType["UC"] = "Use Case";
9
+ AppObjectComponentType["CONTROLLER"] = "Controller";
10
+ AppObjectComponentType["VIEW"] = "View";
11
+ AppObjectComponentType["UNKNOWN"] = "Unknown";
12
+ })(AppObjectComponentType = exports.AppObjectComponentType || (exports.AppObjectComponentType = {}));
4
13
  class AppObjectComponent {
5
14
  constructor(appObject, type) {
15
+ this.componentType = AppObjectComponentType.UNKNOWN;
6
16
  this.cachedComponents = new Map();
7
17
  this.appObject = appObject;
8
18
  this.type = type;
@@ -1,3 +1,4 @@
1
- import { AppObjectComponent } from "./AppObjectComponent";
1
+ import { AppObjectComponent, AppObjectComponentType } from "./AppObjectComponent";
2
2
  export declare class AppObjectController extends AppObjectComponent {
3
+ readonly componentType = AppObjectComponentType.CONTROLLER;
3
4
  }
@@ -3,5 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AppObjectController = void 0;
4
4
  const AppObjectComponent_1 = require("./AppObjectComponent");
5
5
  class AppObjectController extends AppObjectComponent_1.AppObjectComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.componentType = AppObjectComponent_1.AppObjectComponentType.CONTROLLER;
9
+ }
6
10
  }
7
11
  exports.AppObjectController = AppObjectController;
@@ -1,7 +1,8 @@
1
1
  import { AppObject } from "./AppObject";
2
- import { AppObjectComponent } from "./AppObjectComponent";
2
+ import { AppObjectComponent, AppObjectComponentType } from "./AppObjectComponent";
3
3
  export declare type AppObjectEntityObserver = () => void;
4
4
  export declare class AppObjectEntity extends AppObjectComponent {
5
+ readonly componentType = AppObjectComponentType.ENTITY;
5
6
  private onDisposeObserverList;
6
7
  addOnDisposeObserver: (observer: AppObjectEntityObserver) => void;
7
8
  removeOnDisposeObserver: (observer: AppObjectEntityObserver) => void;
@@ -6,6 +6,7 @@ const AppObjectComponent_1 = require("./AppObjectComponent");
6
6
  class AppObjectEntity extends AppObjectComponent_1.AppObjectComponent {
7
7
  constructor(appObject, type) {
8
8
  super(appObject, type);
9
+ this.componentType = AppObjectComponent_1.AppObjectComponentType.ENTITY;
9
10
  this.onDisposeObserverList = new Entities_1.ObserverList();
10
11
  this.addOnDisposeObserver = (observer) => {
11
12
  this.onDisposeObserverList.add(observer);
@@ -1,5 +1,6 @@
1
- import { AppObjectComponent } from "./AppObjectComponent";
1
+ import { AppObjectComponent, AppObjectComponentType } from "./AppObjectComponent";
2
2
  export declare abstract class AppObjectPM<T> extends AppObjectComponent {
3
+ readonly componentType = AppObjectComponentType.PM;
3
4
  abstract vmsAreEqual(a: T, b: T): boolean;
4
5
  private _lastVM?;
5
6
  get lastVM(): T | undefined;
@@ -6,6 +6,7 @@ const AppObjectComponent_1 = require("./AppObjectComponent");
6
6
  class AppObjectPM extends AppObjectComponent_1.AppObjectComponent {
7
7
  constructor() {
8
8
  super(...arguments);
9
+ this.componentType = AppObjectComponent_1.AppObjectComponentType.PM;
9
10
  this.observerList = new Entities_1.ObserverList();
10
11
  }
11
12
  get lastVM() {
@@ -1,3 +1,4 @@
1
- import { AppObjectComponent } from "./AppObjectComponent";
1
+ import { AppObjectComponent, AppObjectComponentType } from "./AppObjectComponent";
2
2
  export declare class AppObjectUC extends AppObjectComponent {
3
+ readonly componentType = AppObjectComponentType.UC;
3
4
  }
@@ -3,5 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AppObjectUC = void 0;
4
4
  const AppObjectComponent_1 = require("./AppObjectComponent");
5
5
  class AppObjectUC extends AppObjectComponent_1.AppObjectComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.componentType = AppObjectComponent_1.AppObjectComponentType.UC;
9
+ }
6
10
  }
7
11
  exports.AppObjectUC = AppObjectUC;
@@ -1,3 +1,4 @@
1
- import { AppObjectComponent } from "./AppObjectComponent";
1
+ import { AppObjectComponent, AppObjectComponentType } from "./AppObjectComponent";
2
2
  export declare class AppObjectView extends AppObjectComponent {
3
+ readonly componentType = AppObjectComponentType.VIEW;
3
4
  }
@@ -3,5 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AppObjectView = void 0;
4
4
  const AppObjectComponent_1 = require("./AppObjectComponent");
5
5
  class AppObjectView extends AppObjectComponent_1.AppObjectComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.componentType = AppObjectComponent_1.AppObjectComponentType.VIEW;
9
+ }
6
10
  }
7
11
  exports.AppObjectView = AppObjectView;
@@ -127,7 +127,7 @@ class ChannelModelEntityImp extends ChannelModelEntity {
127
127
  });
128
128
  }
129
129
  };
130
- this.enablement = Enablement_1.makeEnablementEntity(appObject);
130
+ this.enablement = Enablement_1.EnablementEntity.addIfMissing(appObject);
131
131
  this.enablement.addChangeObserver(this.notifyOnChange);
132
132
  }
133
133
  get id() {
@@ -7,4 +7,7 @@ export declare const LOWER_LETTERBOX_FRAMED_CONTAINER_ID = "lowerLetterBox";
7
7
  export declare const UPPER_LETTERBOX_FRAMED_CONTAINER_ID = "upperLetterBox";
8
8
  export declare const LEFT_LETTERBOX_FRAMED_CONTAINER_ID = "leftLetterBox";
9
9
  export declare const RIGHT_LETTERBOX_FRAMED_CONTAINER_ID = "rightLetterBox";
10
- export declare function setupStandardFramedScreen(appObjects: AppObjectRepo): AppObject;
10
+ export interface StandardFramedScreenOptions {
11
+ dontSetupLayoutHook?: boolean;
12
+ }
13
+ export declare function setupStandardFramedScreen(appObjects: AppObjectRepo, options?: StandardFramedScreenOptions): AppObject;
@@ -14,7 +14,7 @@ exports.LOWER_LETTERBOX_FRAMED_CONTAINER_ID = "lowerLetterBox";
14
14
  exports.UPPER_LETTERBOX_FRAMED_CONTAINER_ID = "upperLetterBox";
15
15
  exports.LEFT_LETTERBOX_FRAMED_CONTAINER_ID = "leftLetterBox";
16
16
  exports.RIGHT_LETTERBOX_FRAMED_CONTAINER_ID = "rightLetterBox";
17
- function setupStandardFramedScreen(appObjects) {
17
+ function setupStandardFramedScreen(appObjects, options) {
18
18
  const frameScreenAO = appObjects.getOrCreate("FramedScreen");
19
19
  const framedScreen = Entities_1.makeFramedScreen(frameScreenAO);
20
20
  PM_1.makeFramedScreenSizePM(frameScreenAO);
@@ -28,7 +28,9 @@ function setupStandardFramedScreen(appObjects) {
28
28
  makeContainer(exports.RIGHT_LETTERBOX_FRAMED_CONTAINER_ID, framedScreen, appObjects);
29
29
  new UpdateTouchInputBound_1.UpdateTouchInputBoundUC(canvas.appObject);
30
30
  EmulateDisplaySizeHook_1.makeEmulateDisplaySizeHook(canvas.appObject);
31
- new UCs_1.StandardLayoutUC(frameScreenAO);
31
+ if ((options === null || options === void 0 ? void 0 : options.dontSetupLayoutHook) !== true) {
32
+ new UCs_1.StandardLayoutUC(frameScreenAO);
33
+ }
32
34
  return frameScreenAO;
33
35
  }
34
36
  exports.setupStandardFramedScreen = setupStandardFramedScreen;
@@ -1,2 +1,16 @@
1
- import { AppObjectRepo } from "../../../AppObject";
2
- export declare function setupHoverLabel(appObjects: AppObjectRepo): void;
1
+ import { AppObject, AppObjectRepo } from "../../../AppObject";
2
+ import { HoverLabelEntity } from "../Entities";
3
+ import { TryShowHoverLabel } from "../UseCases";
4
+ /**
5
+ * Configuration options for setting up a hover label.
6
+ */
7
+ export interface HoverLabelOptions {
8
+ /**
9
+ * Factory function to create a custom TryShowHoverLabel use case.
10
+ * If not provided, the default TryShowHoverLabel will be created.
11
+ * @param appObject - The application object to associate with the hover label
12
+ * @returns A TryShowHoverLabel instance
13
+ */
14
+ tryShowFactory?: (appObject: AppObject) => TryShowHoverLabel;
15
+ }
16
+ export declare function setupHoverLabel(appObjects: AppObjectRepo, options?: HoverLabelOptions | undefined): HoverLabelEntity;
@@ -8,12 +8,17 @@ const Controllers_1 = require("../Controllers");
8
8
  const Entities_1 = require("../Entities");
9
9
  const PM_1 = require("../PM");
10
10
  const UseCases_1 = require("../UseCases");
11
- function setupHoverLabel(appObjects) {
11
+ function setupHoverLabel(appObjects, options) {
12
12
  const hoverLabelAO = appObjects.getOrCreate("HoverLabel");
13
13
  // Entity
14
14
  const hoverLabelEntity = Entities_1.makeHoverLabelEntity(hoverLabelAO);
15
15
  // UC
16
- UseCases_1.makeTryShowHoverLabel(hoverLabelAO);
16
+ if (options === null || options === void 0 ? void 0 : options.tryShowFactory) {
17
+ options.tryShowFactory(hoverLabelAO);
18
+ }
19
+ else {
20
+ UseCases_1.makeTryShowHoverLabel(hoverLabelAO);
21
+ }
17
22
  UseCases_1.makeToggleAllowHoverLabel(hoverLabelAO);
18
23
  new UseCases_1.SerializeAllowHoverLabel(hoverLabelAO);
19
24
  // PM
@@ -35,5 +40,6 @@ function setupHoverLabel(appObjects) {
35
40
  hoverLabelEntity.transform.localRotation = ValueObjects_1.Quaternion.Identity();
36
41
  hoverLabelEntity.transform.localScale = ValueObjects_1.Vector3.One();
37
42
  }
43
+ return hoverLabelEntity;
38
44
  }
39
45
  exports.setupHoverLabel = setupHoverLabel;
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.makeDragLabelDropUC = exports.DragLabelDropUC = void 0;
13
13
  const AppObject_1 = require("../../../AppObject");
14
14
  const Utilities_1 = require("../../../Utilities");
15
- const lerpNumber_1 = require("../../../Utilities/lerpNumber");
15
+ const interpolateNumber_1 = require("../../../Utilities/interpolateNumber");
16
16
  const ValueObjects_1 = require("../../../ValueObjects");
17
17
  const SceneRayPickUC_1 = require("../../Babylon/UC/SceneRayPickUC");
18
18
  const BaseAppState_1 = require("../../BaseApp/Entity/BaseAppState");
@@ -93,8 +93,8 @@ class DragLabelDropUCImp extends DragLabelDropUC {
93
93
  }
94
94
  else {
95
95
  this.repo.dragAlpha = 1 - newValue;
96
- const newX = lerpNumber_1.lerpNumber(this.endPosition.x, this.initialPosition.x, newValue);
97
- const newY = lerpNumber_1.lerpNumber(this.endPosition.y, this.initialPosition.y, newValue);
96
+ const newX = interpolateNumber_1.interpolateNumber(this.endPosition.x, this.initialPosition.x, newValue);
97
+ const newY = interpolateNumber_1.interpolateNumber(this.endPosition.y, this.initialPosition.y, newValue);
98
98
  this.repo.screenPosition = new ValueObjects_1.Vector2(newX, newY);
99
99
  }
100
100
  };
@@ -0,0 +1,56 @@
1
+ import { EaseFn } from "../Types";
2
+ /**
3
+ * Configuration object for performing a linear interpolation (lerp) operation.
4
+ * @interface LerpNumberDTO
5
+ */
6
+ export interface LerpNumberDTO {
7
+ /** Starting value of the lerp */
8
+ start: number;
9
+ /** Target/ending value of the lerp */
10
+ end: number;
11
+ /** Callback function that receives the interpolated value on each update */
12
+ update: (value: number) => void;
13
+ /** Duration of the lerp in milliseconds. Defaults to LerpNumber.defaultDurationMS */
14
+ durationMS?: number;
15
+ /** Easing function to modify the interpolation curve. Defaults to LerpNumber.defaultEase */
16
+ ease?: EaseFn;
17
+ /** Optional callback function called when lerp completes naturally */
18
+ onComplete?: () => void;
19
+ /** Optional callback function called when lerp is cancelled */
20
+ onCancel?: () => void;
21
+ }
22
+ /**
23
+ * Utility class for smoothly interpolating between two numbers over time.
24
+ * Uses requestAnimationFrame for smooth animation and supports custom easing functions.
25
+ *
26
+ * @example
27
+ * const lerper = new LerpNumber();
28
+ * // Animate from 0 to 100 over 2 seconds
29
+ * await lerper.lerp({
30
+ * start: 0,
31
+ * end: 100,
32
+ * durationMS: 2000,
33
+ * update: (value) => console.log(value)
34
+ * });
35
+ */
36
+ export declare class LerpNumber {
37
+ defaultDurationMS: number;
38
+ defaultEase: EaseFn;
39
+ get isLerping(): boolean;
40
+ private _isLerping;
41
+ /**
42
+ * Cancels the current lerp operation if one is in progress.
43
+ * Triggers the onCancel callback if provided in the original lerp configuration.
44
+ */
45
+ cancel(): void;
46
+ private _cancelLerp;
47
+ /**
48
+ * Initiates a lerp (linear interpolation) operation.
49
+ * If a lerp is already in progress, it will be cancelled before starting the new one.
50
+ *
51
+ * @param data - Configuration object for the lerp operation
52
+ * @returns Promise that resolves when the lerp completes or is cancelled
53
+ * @throws Never throws, but may reject if the update function throws
54
+ */
55
+ lerp: (data: LerpNumberDTO) => Promise<void>;
56
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LerpNumber = void 0;
4
+ const easeFunctions_1 = require("./easeFunctions");
5
+ /**
6
+ * Utility class for smoothly interpolating between two numbers over time.
7
+ * Uses requestAnimationFrame for smooth animation and supports custom easing functions.
8
+ *
9
+ * @example
10
+ * const lerper = new LerpNumber();
11
+ * // Animate from 0 to 100 over 2 seconds
12
+ * await lerper.lerp({
13
+ * start: 0,
14
+ * end: 100,
15
+ * durationMS: 2000,
16
+ * update: (value) => console.log(value)
17
+ * });
18
+ */
19
+ class LerpNumber {
20
+ constructor() {
21
+ this.defaultDurationMS = 1000;
22
+ this.defaultEase = easeFunctions_1.quintInOut;
23
+ this._isLerping = false;
24
+ this._cancelLerp = false;
25
+ /**
26
+ * Initiates a lerp (linear interpolation) operation.
27
+ * If a lerp is already in progress, it will be cancelled before starting the new one.
28
+ *
29
+ * @param data - Configuration object for the lerp operation
30
+ * @returns Promise that resolves when the lerp completes or is cancelled
31
+ * @throws Never throws, but may reject if the update function throws
32
+ */
33
+ this.lerp = (data) => {
34
+ if (this._isLerping) {
35
+ this.cancel();
36
+ }
37
+ const { start, end, durationMS, ease, onComplete, update, onCancel } = data;
38
+ const durationToUse = durationMS !== null && durationMS !== void 0 ? durationMS : this.defaultDurationMS;
39
+ const easeToUse = ease !== null && ease !== void 0 ? ease : this.defaultEase;
40
+ return new Promise((resolve) => {
41
+ const startTime = performance.now();
42
+ this._isLerping = true;
43
+ update(start);
44
+ const doLerp = (currentTime) => {
45
+ if (this._cancelLerp) {
46
+ this._isLerping = false;
47
+ this._cancelLerp = false;
48
+ if (onCancel)
49
+ onCancel();
50
+ return resolve();
51
+ }
52
+ const elapsedTime = currentTime - startTime;
53
+ const progress = Math.min(elapsedTime / durationToUse, 1);
54
+ const easedProgress = easeToUse(progress);
55
+ const value = start + (end - start) * easedProgress;
56
+ update(value);
57
+ if (progress < 1) {
58
+ requestAnimationFrame(doLerp);
59
+ }
60
+ else {
61
+ this._isLerping = false;
62
+ update(end);
63
+ if (onComplete)
64
+ onComplete();
65
+ resolve();
66
+ }
67
+ };
68
+ requestAnimationFrame(doLerp);
69
+ });
70
+ };
71
+ }
72
+ get isLerping() {
73
+ return this._isLerping;
74
+ }
75
+ /**
76
+ * Cancels the current lerp operation if one is in progress.
77
+ * Triggers the onCancel callback if provided in the original lerp configuration.
78
+ */
79
+ cancel() {
80
+ if (!this._isLerping)
81
+ return;
82
+ this._cancelLerp = true;
83
+ }
84
+ }
85
+ exports.LerpNumber = LerpNumber;
@@ -0,0 +1,56 @@
1
+ import { EaseFn } from "../Types";
2
+ /**
3
+ * Configuration object for performing a linear interpolation (lerp) operation.
4
+ * @interface LerpNumberDTO
5
+ */
6
+ export interface LerpNumberDTO {
7
+ /** Starting value of the lerp */
8
+ start: number;
9
+ /** Target/ending value of the lerp */
10
+ end: number;
11
+ /** Callback function that receives the interpolated value on each update */
12
+ update: (value: number) => void;
13
+ /** Duration of the lerp in milliseconds. Defaults to LerpNumber.defaultDurationMS */
14
+ durationMS?: number;
15
+ /** Easing function to modify the interpolation curve. Defaults to LerpNumber.defaultEase */
16
+ ease?: EaseFn;
17
+ /** Optional callback function called when lerp completes naturally */
18
+ onComplete?: () => void;
19
+ /** Optional callback function called when lerp is cancelled */
20
+ onCancel?: () => void;
21
+ }
22
+ /**
23
+ * Utility class for smoothly interpolating between two numbers over time.
24
+ * Uses requestAnimationFrame for smooth animation and supports custom easing functions.
25
+ *
26
+ * @example
27
+ * const lerper = new LerpNumber();
28
+ * // Animate from 0 to 100 over 2 seconds
29
+ * await lerper.lerp({
30
+ * start: 0,
31
+ * end: 100,
32
+ * durationMS: 2000,
33
+ * update: (value) => console.log(value)
34
+ * });
35
+ */
36
+ export declare class LerpNumber {
37
+ defaultDurationMS: number;
38
+ defaultEase: EaseFn;
39
+ get isLerping(): boolean;
40
+ private _isLerping;
41
+ /**
42
+ * Cancels the current lerp operation if one is in progress.
43
+ * Triggers the onCancel callback if provided in the original lerp configuration.
44
+ */
45
+ cancel(): void;
46
+ private _cancelLerp;
47
+ /**
48
+ * Initiates a lerp (linear interpolation) operation.
49
+ * If a lerp is already in progress, it will be cancelled before starting the new one.
50
+ *
51
+ * @param data - Configuration object for the lerp operation
52
+ * @returns Promise that resolves when the lerp completes or is cancelled
53
+ * @throws Never throws, but may reject if the update function throws
54
+ */
55
+ lerp: (data: LerpNumberDTO) => Promise<void>;
56
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LerpNumber = void 0;
4
+ const easeFunctions_1 = require("./easeFunctions");
5
+ /**
6
+ * Utility class for smoothly interpolating between two numbers over time.
7
+ * Uses requestAnimationFrame for smooth animation and supports custom easing functions.
8
+ *
9
+ * @example
10
+ * const lerper = new LerpNumber();
11
+ * // Animate from 0 to 100 over 2 seconds
12
+ * await lerper.lerp({
13
+ * start: 0,
14
+ * end: 100,
15
+ * durationMS: 2000,
16
+ * update: (value) => console.log(value)
17
+ * });
18
+ */
19
+ class LerpNumber {
20
+ constructor() {
21
+ this.defaultDurationMS = 1000;
22
+ this.defaultEase = easeFunctions_1.quintInOut;
23
+ this._isLerping = false;
24
+ this._cancelLerp = false;
25
+ /**
26
+ * Initiates a lerp (linear interpolation) operation.
27
+ * If a lerp is already in progress, it will be cancelled before starting the new one.
28
+ *
29
+ * @param data - Configuration object for the lerp operation
30
+ * @returns Promise that resolves when the lerp completes or is cancelled
31
+ * @throws Never throws, but may reject if the update function throws
32
+ */
33
+ this.lerp = (data) => {
34
+ if (this._isLerping) {
35
+ this.cancel();
36
+ }
37
+ const { start, end, durationMS, ease, onComplete, update, onCancel } = data;
38
+ const durationToUse = durationMS !== null && durationMS !== void 0 ? durationMS : this.defaultDurationMS;
39
+ const easeToUse = ease !== null && ease !== void 0 ? ease : this.defaultEase;
40
+ return new Promise((resolve) => {
41
+ const startTime = performance.now();
42
+ this._isLerping = true;
43
+ update(start);
44
+ const doLerp = (currentTime) => {
45
+ if (this._cancelLerp) {
46
+ this._isLerping = false;
47
+ this._cancelLerp = false;
48
+ if (onCancel)
49
+ onCancel();
50
+ return resolve();
51
+ }
52
+ const elapsedTime = currentTime - startTime;
53
+ const progress = Math.min(elapsedTime / durationToUse, 1);
54
+ const easedProgress = easeToUse(progress);
55
+ const value = start + (end - start) * easedProgress;
56
+ update(value);
57
+ if (progress < 1) {
58
+ requestAnimationFrame(doLerp);
59
+ }
60
+ else {
61
+ this._isLerping = false;
62
+ update(end);
63
+ if (onComplete)
64
+ onComplete();
65
+ resolve();
66
+ }
67
+ };
68
+ requestAnimationFrame(doLerp);
69
+ });
70
+ };
71
+ }
72
+ get isLerping() {
73
+ return this._isLerping;
74
+ }
75
+ /**
76
+ * Cancels the current lerp operation if one is in progress.
77
+ * Triggers the onCancel callback if provided in the original lerp configuration.
78
+ */
79
+ cancel() {
80
+ if (!this._isLerping)
81
+ return;
82
+ this._cancelLerp = true;
83
+ }
84
+ }
85
+ exports.LerpNumber = LerpNumber;
@@ -2,3 +2,5 @@ export * from "./degreesToRadians";
2
2
  export * from "./LengthConverters";
3
3
  export * from "./generateUniqueID";
4
4
  export * from "./easeFunctions";
5
+ export * from "./interpolateNumber";
6
+ export * from "./LerpNumber";
@@ -14,3 +14,5 @@ __exportStar(require("./degreesToRadians"), exports);
14
14
  __exportStar(require("./LengthConverters"), exports);
15
15
  __exportStar(require("./generateUniqueID"), exports);
16
16
  __exportStar(require("./easeFunctions"), exports);
17
+ __exportStar(require("./interpolateNumber"), exports);
18
+ __exportStar(require("./LerpNumber"), exports);
@@ -0,0 +1 @@
1
+ export declare function interpolateNumber(start: number, end: number, percent: number, clamp?: boolean): number;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.lerpNumber = void 0;
4
- function lerpNumber(start, end, percent, clamp = false) {
3
+ exports.interpolateNumber = void 0;
4
+ function interpolateNumber(start, end, percent, clamp = false) {
5
5
  const range = end - start;
6
6
  if (!clamp) {
7
7
  return percent * range + start;
@@ -15,4 +15,4 @@ function lerpNumber(start, end, percent, clamp = false) {
15
15
  }
16
16
  return clampedP * range + start;
17
17
  }
18
- exports.lerpNumber = lerpNumber;
18
+ exports.interpolateNumber = interpolateNumber;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Vector3 = void 0;
4
- const lerpNumber_1 = require("../Utilities/lerpNumber");
4
+ const interpolateNumber_1 = require("../Utilities/interpolateNumber");
5
5
  class Vector3 {
6
6
  constructor(x, y, z) {
7
7
  this.x = x;
@@ -221,8 +221,8 @@ Vector3.Transform = (vector, matrix) => {
221
221
  * @return the LERP result Vector3
222
222
  */
223
223
  Vector3.Lerp = (initial, final, percent) => {
224
- const x = lerpNumber_1.lerpNumber(initial.x, final.x, percent);
225
- const y = lerpNumber_1.lerpNumber(initial.y, final.y, percent);
226
- const z = lerpNumber_1.lerpNumber(initial.z, final.z, percent);
224
+ const x = interpolateNumber_1.interpolateNumber(initial.x, final.x, percent);
225
+ const y = interpolateNumber_1.interpolateNumber(initial.y, final.y, percent);
226
+ const z = interpolateNumber_1.interpolateNumber(initial.z, final.z, percent);
227
227
  return new Vector3(x, y, z);
228
228
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vived/app",
3
- "version": "4.34.11",
3
+ "version": "4.35.1",
4
4
  "description": "Public package for the VIVED Learning App system",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -1,4 +0,0 @@
1
- export * from "./isAuthoringAdapter";
2
- export * from "./isReviewingAdapter";
3
- export * from "./slideNavigationAdapter";
4
- export * from "./slideTextAdapter";
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./isAuthoringAdapter"), exports);
14
- __exportStar(require("./isReviewingAdapter"), exports);
15
- __exportStar(require("./slideNavigationAdapter"), exports);
16
- __exportStar(require("./slideTextAdapter"), exports);
@@ -1,2 +0,0 @@
1
- import { SingletonPmAdapter } from "../../../Types";
2
- export declare const isAuthoringAdapter: SingletonPmAdapter<boolean>;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAuthoringAdapter = void 0;
4
- const IsAuthoringPM_1 = require("../PM/IsAuthoringPM");
5
- exports.isAuthoringAdapter = {
6
- defaultVM: false,
7
- subscribe: (appObjects, setVM) => {
8
- const pm = IsAuthoringPM_1.IsAuthoringPM.get(appObjects);
9
- if (!pm) {
10
- appObjects.submitError("isAuthoringAdapter", "Unable to find IsAuthoringPM");
11
- return;
12
- }
13
- pm.addView(setVM);
14
- },
15
- unsubscribe: (appObjects, setVM) => {
16
- const pm = IsAuthoringPM_1.IsAuthoringPM.get(appObjects);
17
- if (!pm) {
18
- appObjects.submitError("isAuthoringAdapter", "Unable to find IsAuthoringPM");
19
- return;
20
- }
21
- pm.removeView(setVM);
22
- },
23
- };
@@ -1,2 +0,0 @@
1
- import { SingletonPmAdapter } from "../../../Types";
2
- export declare const isReviewingAdapter: SingletonPmAdapter<boolean>;