@vived/app 3.9.0 → 3.9.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 (27) hide show
  1. package/lib/AppObjectComponents/App/Controller/clickEditSlideText.d.ts +2 -0
  2. package/lib/AppObjectComponents/App/Controller/clickEditSlideText.js +14 -0
  3. package/lib/AppObjectComponents/App/PM/IsReviewingPM.js +1 -1
  4. package/lib/AppObjectComponents/App/PM/SlideTextPM.d.ts +11 -0
  5. package/lib/AppObjectComponents/App/PM/SlideTextPM.js +37 -0
  6. package/lib/AppObjectComponents/App/UseCase/EditSlideTextUC.d.ts +17 -0
  7. package/lib/AppObjectComponents/App/UseCase/EditSlideTextUC.js +67 -0
  8. package/lib/AppObjectComponents/App/index.d.ts +3 -0
  9. package/lib/AppObjectComponents/App/index.js +3 -0
  10. package/lib/AppObjectComponents/UndoRedo/Controllers/clearUndoStack.d.ts +2 -0
  11. package/lib/AppObjectComponents/UndoRedo/Controllers/clearUndoStack.js +14 -0
  12. package/lib/AppObjectComponents/UndoRedo/Controllers/doRedo.d.ts +2 -0
  13. package/lib/AppObjectComponents/UndoRedo/Controllers/doRedo.js +14 -0
  14. package/lib/AppObjectComponents/UndoRedo/Controllers/doUndo.d.ts +2 -0
  15. package/lib/AppObjectComponents/UndoRedo/Controllers/doUndo.js +14 -0
  16. package/lib/AppObjectComponents/UndoRedo/Entities/UndoRedoEntity.d.ts +31 -0
  17. package/lib/AppObjectComponents/UndoRedo/Entities/UndoRedoEntity.js +76 -0
  18. package/lib/AppObjectComponents/UndoRedo/Factories/setupUndo.d.ts +3 -0
  19. package/lib/AppObjectComponents/UndoRedo/Factories/setupUndo.js +14 -0
  20. package/lib/AppObjectComponents/UndoRedo/PresentationManager/HasRedoPM.d.ts +12 -0
  21. package/lib/AppObjectComponents/UndoRedo/PresentationManager/HasRedoPM.js +45 -0
  22. package/lib/AppObjectComponents/UndoRedo/PresentationManager/HasUndoPM.d.ts +12 -0
  23. package/lib/AppObjectComponents/UndoRedo/PresentationManager/HasUndoPM.js +45 -0
  24. package/lib/AppObjectComponents/UndoRedo/index.d.ts +7 -0
  25. package/lib/AppObjectComponents/UndoRedo/index.js +19 -0
  26. package/lib/Entities/QuestionChallenge.js +2 -0
  27. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
2
+ export declare function clickEditSlideText(appObjects: AppObjectRepo): void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clickEditSlideText = void 0;
4
+ const EditSlideTextUC_1 = require("../UseCase/EditSlideTextUC");
5
+ const submitWarning_1 = require("../UseCase/submitWarning");
6
+ function clickEditSlideText(appObjects) {
7
+ const uc = EditSlideTextUC_1.EditSlideTextUC.get(appObjects);
8
+ if (!uc) {
9
+ submitWarning_1.submitWarning("clickEditSlideText", "Unable to find EditSlideTextUC", appObjects);
10
+ return;
11
+ }
12
+ uc.editSlideText();
13
+ }
14
+ exports.clickEditSlideText = clickEditSlideText;
@@ -10,7 +10,7 @@ class IsReviewingPM extends AppObjectPM_1.AppObjectPM {
10
10
  this.onAppStateChange = () => {
11
11
  if (!this.baseAppState)
12
12
  return;
13
- this.doUpdateView(this.baseAppState.isAuthoring);
13
+ this.doUpdateView(this.baseAppState.isReviewing);
14
14
  };
15
15
  this.baseAppState = appObject.getComponent(BaseAppState_1.BaseAppState.type);
16
16
  if (!this.baseAppState) {
@@ -0,0 +1,11 @@
1
+ import { AppObject } from "../../../AppObject/AppObject";
2
+ import { AppObjectPM } from "../../../AppObject/AppObjectPM";
3
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
4
+ export declare class SlideTextPM extends AppObjectPM<string> {
5
+ static readonly type = "SlideTextPM";
6
+ static get(appObjects: AppObjectRepo): SlideTextPM | undefined;
7
+ private baseAppState?;
8
+ vmsAreEqual(a: string, b: string): boolean;
9
+ private onAppStateChange;
10
+ constructor(appObject: AppObject);
11
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SlideTextPM = void 0;
4
+ const AppObjectPM_1 = require("../../../AppObject/AppObjectPM");
5
+ const BaseAppState_1 = require("../Entity/BaseAppState");
6
+ class SlideTextPM extends AppObjectPM_1.AppObjectPM {
7
+ constructor(appObject) {
8
+ super(appObject, SlideTextPM.type);
9
+ this.onAppStateChange = () => {
10
+ if (!this.baseAppState)
11
+ return;
12
+ this.doUpdateView(this.baseAppState.slideText);
13
+ };
14
+ this.baseAppState = appObject.getComponent(BaseAppState_1.BaseAppState.type);
15
+ if (!this.baseAppState) {
16
+ console.warn("SlideTextPM added to an app object that does not have an BaseAppState Entity. Add one first");
17
+ return;
18
+ }
19
+ this.baseAppState.addChangeObserver(this.onAppStateChange);
20
+ }
21
+ static get(appObjects) {
22
+ const selectionEntities = appObjects.getAllComponents(SlideTextPM.type);
23
+ if (selectionEntities.length === 0) {
24
+ console.warn(`Unable to find component ${SlideTextPM.type}. Add one on Mount`);
25
+ return undefined;
26
+ }
27
+ else if (selectionEntities.length > 1) {
28
+ console.warn(`Multiple ${SlideTextPM.type} found. There should only be one. Using the first one`);
29
+ }
30
+ return selectionEntities[0];
31
+ }
32
+ vmsAreEqual(a, b) {
33
+ return a === b;
34
+ }
35
+ }
36
+ exports.SlideTextPM = SlideTextPM;
37
+ SlideTextPM.type = "SlideTextPM";
@@ -0,0 +1,17 @@
1
+ import { AppObject } from "../../../AppObject/AppObject";
2
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
3
+ import { AppObjectUC } from "../../../AppObject/AppObjectUC";
4
+ export declare abstract class EditSlideTextUC extends AppObjectUC {
5
+ static readonly type = "EditSlideTextUC";
6
+ abstract editSlideText(): void;
7
+ static get(appObjects: AppObjectRepo): EditSlideTextUC | undefined;
8
+ }
9
+ export declare function makeEditSlideTextUC(appObject: AppObject): EditSlideTextUCImp;
10
+ declare class EditSlideTextUCImp extends EditSlideTextUC {
11
+ private baseApp?;
12
+ private appObjects;
13
+ submitCallback: (text: string) => void;
14
+ editSlideText: () => void;
15
+ constructor(appObject: AppObject);
16
+ }
17
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeEditSlideTextUC = exports.EditSlideTextUC = void 0;
4
+ const AppObjectUC_1 = require("../../../AppObject/AppObjectUC");
5
+ const DispatchStateChangeUC_1 = require("../../Dispatcher/UC/DispatchStateChangeUC");
6
+ const ShowMarkdownEditorUC_1 = require("../../Dispatcher/UC/ShowMarkdownEditorUC");
7
+ const BaseAppState_1 = require("../Entity/BaseAppState");
8
+ const submitWarning_1 = require("./submitWarning");
9
+ class EditSlideTextUC extends AppObjectUC_1.AppObjectUC {
10
+ static get(appObjects) {
11
+ const selectionEntities = appObjects.getAllComponents(EditSlideTextUC.type);
12
+ if (selectionEntities.length === 0) {
13
+ console.warn(`Unable to find component ${EditSlideTextUC.type}. Add one on Mount`);
14
+ return undefined;
15
+ }
16
+ else if (selectionEntities.length > 1) {
17
+ console.warn(`Multiple ${EditSlideTextUC.type} found. There should only be one. Using the first one`);
18
+ }
19
+ return selectionEntities[0];
20
+ }
21
+ }
22
+ exports.EditSlideTextUC = EditSlideTextUC;
23
+ EditSlideTextUC.type = "EditSlideTextUC";
24
+ function makeEditSlideTextUC(appObject) {
25
+ return new EditSlideTextUCImp(appObject);
26
+ }
27
+ exports.makeEditSlideTextUC = makeEditSlideTextUC;
28
+ class EditSlideTextUCImp extends EditSlideTextUC {
29
+ constructor(appObject) {
30
+ super(appObject, EditSlideTextUC.type);
31
+ this.submitCallback = (text) => {
32
+ const appState = BaseAppState_1.BaseAppState.get(this.appObjects);
33
+ if (!appState) {
34
+ console.warn("Unable to find AppState");
35
+ return;
36
+ }
37
+ const prevText = appState.slideText;
38
+ if (prevText === text) {
39
+ return;
40
+ }
41
+ appState.slideText = text;
42
+ DispatchStateChangeUC_1.dispatchStateChange(this.appObjects);
43
+ };
44
+ this.editSlideText = () => {
45
+ if (!this.baseApp) {
46
+ submitWarning_1.submitWarning("EditSlideTextUC", "Unable to find AppState", this.appObjects);
47
+ return;
48
+ }
49
+ const showMDUC = ShowMarkdownEditorUC_1.ShowMarkdownEditorUC.get(this.appObjects);
50
+ if (!showMDUC) {
51
+ submitWarning_1.submitWarning("EditSlideTextUC", "Unable to find ShowMarkdownEditorUC", this.appObjects);
52
+ return;
53
+ }
54
+ const slideText = this.baseApp.slideText;
55
+ const dto = {
56
+ initialText: slideText,
57
+ submitCallback: this.submitCallback,
58
+ };
59
+ showMDUC.showMarkdownEditor(dto);
60
+ };
61
+ this.appObjects = appObject.appObjectRepo;
62
+ this.baseApp = appObject.getComponent(BaseAppState_1.BaseAppState.type);
63
+ if (!this.baseApp) {
64
+ submitWarning_1.submitWarning("EditSlideTextUCImp", "EditSlideTextUCImp UC has been added to an App Object that does not have a AppState Entity. Add one before adding the UC", this.appObjects);
65
+ }
66
+ }
67
+ }
@@ -1,5 +1,6 @@
1
1
  export * from "./Entity/BaseAppState";
2
2
  export * from "./UseCase/AppRenderingUC";
3
+ export * from "./UseCase/EditSlideTextUC";
3
4
  export * from "./UseCase/RenderCanvasUC";
4
5
  export * from "./UseCase/submitError";
5
6
  export * from "./UseCase/submitFatal";
@@ -7,5 +8,7 @@ export * from "./UseCase/submitLog";
7
8
  export * from "./UseCase/submitWarning";
8
9
  export * from "./PM/IsAuthoringPM";
9
10
  export * from "./PM/IsReviewingPM";
11
+ export * from "./PM/SlideTextPM";
12
+ export * from "./Controller/clickEditSlideText";
10
13
  export * from "./Controller/removeRenderCanvas";
11
14
  export * from "./Controller/submitRenderCanvas";
@@ -12,6 +12,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./Entity/BaseAppState"), exports);
14
14
  __exportStar(require("./UseCase/AppRenderingUC"), exports);
15
+ __exportStar(require("./UseCase/EditSlideTextUC"), exports);
15
16
  __exportStar(require("./UseCase/RenderCanvasUC"), exports);
16
17
  __exportStar(require("./UseCase/submitError"), exports);
17
18
  __exportStar(require("./UseCase/submitFatal"), exports);
@@ -19,5 +20,7 @@ __exportStar(require("./UseCase/submitLog"), exports);
19
20
  __exportStar(require("./UseCase/submitWarning"), exports);
20
21
  __exportStar(require("./PM/IsAuthoringPM"), exports);
21
22
  __exportStar(require("./PM/IsReviewingPM"), exports);
23
+ __exportStar(require("./PM/SlideTextPM"), exports);
24
+ __exportStar(require("./Controller/clickEditSlideText"), exports);
22
25
  __exportStar(require("./Controller/removeRenderCanvas"), exports);
23
26
  __exportStar(require("./Controller/submitRenderCanvas"), exports);
@@ -0,0 +1,2 @@
1
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
2
+ export declare function clearUndoStack(appObjects: AppObjectRepo): void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearUndoStack = void 0;
4
+ const App_1 = require("../../App");
5
+ const UndoRedoEntity_1 = require("../Entities/UndoRedoEntity");
6
+ function clearUndoStack(appObjects) {
7
+ const undoRedoEntity = UndoRedoEntity_1.UndoRedoEntity.get(appObjects);
8
+ if (!undoRedoEntity) {
9
+ App_1.submitWarning("clearUndoStack", "Unable to find UndoRedoEntity", appObjects);
10
+ return;
11
+ }
12
+ undoRedoEntity.clearStack();
13
+ }
14
+ exports.clearUndoStack = clearUndoStack;
@@ -0,0 +1,2 @@
1
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
2
+ export declare function doRedo(appObjects: AppObjectRepo): void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.doRedo = void 0;
4
+ const App_1 = require("../../App");
5
+ const UndoRedoEntity_1 = require("../Entities/UndoRedoEntity");
6
+ function doRedo(appObjects) {
7
+ const undoRedoEntity = UndoRedoEntity_1.UndoRedoEntity.get(appObjects);
8
+ if (!undoRedoEntity) {
9
+ App_1.submitWarning("doRedo", "Unable to find UndoRedoEntity", appObjects);
10
+ return;
11
+ }
12
+ undoRedoEntity.doRedo();
13
+ }
14
+ exports.doRedo = doRedo;
@@ -0,0 +1,2 @@
1
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
2
+ export declare function doUndo(appObjects: AppObjectRepo): void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.doUndo = void 0;
4
+ const App_1 = require("../../App");
5
+ const UndoRedoEntity_1 = require("../Entities/UndoRedoEntity");
6
+ function doUndo(appObjects) {
7
+ const undoRedoEntity = UndoRedoEntity_1.UndoRedoEntity.get(appObjects);
8
+ if (!undoRedoEntity) {
9
+ App_1.submitWarning("doUndo", "Unable to find UndoRedoEntity", appObjects);
10
+ return;
11
+ }
12
+ undoRedoEntity.doUndo();
13
+ }
14
+ exports.doUndo = doUndo;
@@ -0,0 +1,31 @@
1
+ import { AppObject } from "../../../AppObject/AppObject";
2
+ import { AppObjectEntity } from "../../../AppObject/AppObjectEntity";
3
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
4
+ export interface UndoRedoAction {
5
+ undoAction: () => void;
6
+ redoAction: () => void;
7
+ }
8
+ export declare abstract class UndoRedoEntity extends AppObjectEntity {
9
+ static readonly type = "UndoRedoEntity";
10
+ abstract get hasUndo(): boolean;
11
+ abstract get hasRedo(): boolean;
12
+ abstract submitAction: (action: UndoRedoAction) => void;
13
+ abstract doUndo: () => void;
14
+ abstract doRedo: () => void;
15
+ abstract clearStack: () => void;
16
+ static get(appObjects: AppObjectRepo): UndoRedoEntity | undefined;
17
+ }
18
+ export declare function makeUndoRedoEntity(appObject: AppObject): UndoRedoEntityImp;
19
+ export declare function submitUndoRedoAction(action: UndoRedoAction, appObjects: AppObjectRepo): void;
20
+ declare class UndoRedoEntityImp extends UndoRedoEntity {
21
+ private undoStack;
22
+ private redoStack;
23
+ get hasUndo(): boolean;
24
+ get hasRedo(): boolean;
25
+ doUndo: () => void;
26
+ doRedo: () => void;
27
+ submitAction: (action: UndoRedoAction) => void;
28
+ clearStack: () => void;
29
+ constructor(appObject: AppObject);
30
+ }
31
+ export {};
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.submitUndoRedoAction = exports.makeUndoRedoEntity = exports.UndoRedoEntity = void 0;
4
+ const AppObjectEntity_1 = require("../../../AppObject/AppObjectEntity");
5
+ const App_1 = require("../../App");
6
+ class UndoRedoEntity extends AppObjectEntity_1.AppObjectEntity {
7
+ static get(appObjects) {
8
+ const components = appObjects.getAllComponents(UndoRedoEntity.type);
9
+ if (components.length === 0) {
10
+ App_1.submitWarning("UndoRedoEntity", `Unable to find component ${UndoRedoEntity.type}. Add one on Mount`, appObjects);
11
+ return undefined;
12
+ }
13
+ else if (components.length > 1) {
14
+ App_1.submitWarning("UndoRedoEntity", `Multiple ${UndoRedoEntity.type} found. There should only be one. Using the first one`, appObjects);
15
+ }
16
+ return components[0];
17
+ }
18
+ }
19
+ exports.UndoRedoEntity = UndoRedoEntity;
20
+ UndoRedoEntity.type = "UndoRedoEntity";
21
+ function makeUndoRedoEntity(appObject) {
22
+ return new UndoRedoEntityImp(appObject);
23
+ }
24
+ exports.makeUndoRedoEntity = makeUndoRedoEntity;
25
+ function submitUndoRedoAction(action, appObjects) {
26
+ const undoRedoEntity = UndoRedoEntity.get(appObjects);
27
+ if (!undoRedoEntity) {
28
+ App_1.submitWarning("submitUndoRedoAction", "Unable to find UndoRedoEntity", appObjects);
29
+ return;
30
+ }
31
+ undoRedoEntity.submitAction(action);
32
+ }
33
+ exports.submitUndoRedoAction = submitUndoRedoAction;
34
+ class UndoRedoEntityImp extends UndoRedoEntity {
35
+ constructor(appObject) {
36
+ super(appObject, UndoRedoEntity.type);
37
+ this.undoStack = [];
38
+ this.redoStack = [];
39
+ this.doUndo = () => {
40
+ const action = this.undoStack.pop();
41
+ if (!action) {
42
+ App_1.submitWarning("UndoRedoEntityImp", "Nothing to undo", this.appObject.appObjectRepo);
43
+ return;
44
+ }
45
+ action.undoAction();
46
+ this.redoStack.push(action);
47
+ this.notifyOnChange();
48
+ };
49
+ this.doRedo = () => {
50
+ const action = this.redoStack.pop();
51
+ if (!action) {
52
+ App_1.submitWarning("UndoRedoEntityImp", "Nothing to redo", this.appObject.appObjectRepo);
53
+ return;
54
+ }
55
+ action.redoAction();
56
+ this.undoStack.push(action);
57
+ this.notifyOnChange();
58
+ };
59
+ this.submitAction = (action) => {
60
+ this.undoStack.push(action);
61
+ this.redoStack = [];
62
+ this.notifyOnChange();
63
+ };
64
+ this.clearStack = () => {
65
+ this.redoStack = [];
66
+ this.undoStack = [];
67
+ this.notifyOnChange();
68
+ };
69
+ }
70
+ get hasUndo() {
71
+ return this.undoStack.length > 0;
72
+ }
73
+ get hasRedo() {
74
+ return this.redoStack.length > 0;
75
+ }
76
+ }
@@ -0,0 +1,3 @@
1
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
2
+ import { UndoRedoEntity } from "../Entities/UndoRedoEntity";
3
+ export declare function setupUndo(appObjects: AppObjectRepo): UndoRedoEntity;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupUndo = void 0;
4
+ const UndoRedoEntity_1 = require("../Entities/UndoRedoEntity");
5
+ const HasRedoPM_1 = require("../PresentationManager/HasRedoPM");
6
+ const HasUndoPM_1 = require("../PresentationManager/HasUndoPM");
7
+ function setupUndo(appObjects) {
8
+ const ao = appObjects.getOrCreate("UndoRedo");
9
+ const undoRedo = UndoRedoEntity_1.makeUndoRedoEntity(ao);
10
+ new HasRedoPM_1.HasRedoPM(ao);
11
+ new HasUndoPM_1.HasUndoPM(ao);
12
+ return undoRedo;
13
+ }
14
+ exports.setupUndo = setupUndo;
@@ -0,0 +1,12 @@
1
+ import { AppObject } from "../../../AppObject/AppObject";
2
+ import { AppObjectPM } from "../../../AppObject/AppObjectPM";
3
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
4
+ export declare class HasRedoPM extends AppObjectPM<boolean> {
5
+ static readonly type = "HasRedoPM";
6
+ private undoRedoEntity?;
7
+ static get(appObjects: AppObjectRepo): HasRedoPM | undefined;
8
+ vmsAreEqual(a: boolean, b: boolean): boolean;
9
+ dispose: () => void;
10
+ private onEntityChange;
11
+ constructor(appObject: AppObject);
12
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HasRedoPM = void 0;
4
+ const AppObjectPM_1 = require("../../../AppObject/AppObjectPM");
5
+ const App_1 = require("../../App");
6
+ const UndoRedoEntity_1 = require("../Entities/UndoRedoEntity");
7
+ class HasRedoPM extends AppObjectPM_1.AppObjectPM {
8
+ constructor(appObject) {
9
+ super(appObject, HasRedoPM.type);
10
+ this.dispose = () => {
11
+ var _a;
12
+ super.dispose();
13
+ (_a = this.undoRedoEntity) === null || _a === void 0 ? void 0 : _a.removeChangeObserver(this.onEntityChange);
14
+ };
15
+ this.onEntityChange = () => {
16
+ if (!this.undoRedoEntity)
17
+ return;
18
+ this.doUpdateView(this.undoRedoEntity.hasRedo);
19
+ };
20
+ this.undoRedoEntity = appObject.getComponent(UndoRedoEntity_1.UndoRedoEntity.type);
21
+ if (this.undoRedoEntity) {
22
+ this.undoRedoEntity.addChangeObserver(this.onEntityChange);
23
+ this.onEntityChange();
24
+ }
25
+ else {
26
+ App_1.submitWarning("HasRedoPM", "HasRedoPM has been added to an app object that does not have UndoRedoEntity", appObject.appObjectRepo);
27
+ }
28
+ }
29
+ static get(appObjects) {
30
+ const components = appObjects.getAllComponents(HasRedoPM.type);
31
+ if (components.length === 0) {
32
+ App_1.submitWarning("HasRedoPM", `Unable to find component ${HasRedoPM.type}. Add one on Mount`, appObjects);
33
+ return undefined;
34
+ }
35
+ else if (components.length > 1) {
36
+ App_1.submitWarning("HasRedoPM", `Multiple ${HasRedoPM.type} found. There should only be one. Using the first one`, appObjects);
37
+ }
38
+ return components[0];
39
+ }
40
+ vmsAreEqual(a, b) {
41
+ return a === b;
42
+ }
43
+ }
44
+ exports.HasRedoPM = HasRedoPM;
45
+ HasRedoPM.type = "HasRedoPM";
@@ -0,0 +1,12 @@
1
+ import { AppObject } from "../../../AppObject/AppObject";
2
+ import { AppObjectPM } from "../../../AppObject/AppObjectPM";
3
+ import { AppObjectRepo } from "../../../AppObject/AppObjectRepo";
4
+ export declare class HasUndoPM extends AppObjectPM<boolean> {
5
+ static readonly type = "HasUndoPM";
6
+ private undoRedoEntity?;
7
+ static get(appObjects: AppObjectRepo): HasUndoPM | undefined;
8
+ vmsAreEqual(a: boolean, b: boolean): boolean;
9
+ dispose: () => void;
10
+ private onEntityChange;
11
+ constructor(appObject: AppObject);
12
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HasUndoPM = void 0;
4
+ const AppObjectPM_1 = require("../../../AppObject/AppObjectPM");
5
+ const App_1 = require("../../App");
6
+ const UndoRedoEntity_1 = require("../Entities/UndoRedoEntity");
7
+ class HasUndoPM extends AppObjectPM_1.AppObjectPM {
8
+ constructor(appObject) {
9
+ super(appObject, HasUndoPM.type);
10
+ this.dispose = () => {
11
+ var _a;
12
+ super.dispose();
13
+ (_a = this.undoRedoEntity) === null || _a === void 0 ? void 0 : _a.removeChangeObserver(this.onEntityChange);
14
+ };
15
+ this.onEntityChange = () => {
16
+ if (!this.undoRedoEntity)
17
+ return;
18
+ this.doUpdateView(this.undoRedoEntity.hasUndo);
19
+ };
20
+ this.undoRedoEntity = appObject.getComponent(UndoRedoEntity_1.UndoRedoEntity.type);
21
+ if (this.undoRedoEntity) {
22
+ this.undoRedoEntity.addChangeObserver(this.onEntityChange);
23
+ this.onEntityChange();
24
+ }
25
+ else {
26
+ App_1.submitWarning("HasUndoPM", "HasUndoPM has been added to an app object that does not have UndoRedoEntity", appObject.appObjectRepo);
27
+ }
28
+ }
29
+ static get(appObjects) {
30
+ const components = appObjects.getAllComponents(HasUndoPM.type);
31
+ if (components.length === 0) {
32
+ App_1.submitWarning("HasUndoPM", `Unable to find component ${HasUndoPM.type}. Add one on Mount`, appObjects);
33
+ return undefined;
34
+ }
35
+ else if (components.length > 1) {
36
+ App_1.submitWarning("HasUndoPM", `Multiple ${HasUndoPM.type} found. There should only be one. Using the first one`, appObjects);
37
+ }
38
+ return components[0];
39
+ }
40
+ vmsAreEqual(a, b) {
41
+ return a === b;
42
+ }
43
+ }
44
+ exports.HasUndoPM = HasUndoPM;
45
+ HasUndoPM.type = "HasUndoPM";
@@ -0,0 +1,7 @@
1
+ export * from "./Entities/UndoRedoEntity";
2
+ export * from "./PresentationManager/HasRedoPM";
3
+ export * from "./PresentationManager/HasUndoPM";
4
+ export * from "./Controllers/clearUndoStack";
5
+ export * from "./Controllers/doRedo";
6
+ export * from "./Controllers/doUndo";
7
+ export * from "./Factories/setupUndo";
@@ -0,0 +1,19 @@
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("./Entities/UndoRedoEntity"), exports);
14
+ __exportStar(require("./PresentationManager/HasRedoPM"), exports);
15
+ __exportStar(require("./PresentationManager/HasUndoPM"), exports);
16
+ __exportStar(require("./Controllers/clearUndoStack"), exports);
17
+ __exportStar(require("./Controllers/doRedo"), exports);
18
+ __exportStar(require("./Controllers/doUndo"), exports);
19
+ __exportStar(require("./Factories/setupUndo"), exports);
@@ -29,6 +29,7 @@ class QuestionChallengeImp {
29
29
  console.warn(`Answer with ID ${answer.id} already exists. Overwriting`);
30
30
  }
31
31
  this.answerLookup.set(answer.id, answer);
32
+ answer.addObserver(this.observers.notify);
32
33
  this.reset();
33
34
  };
34
35
  this.removeAnswer = (id) => {
@@ -36,6 +37,7 @@ class QuestionChallengeImp {
36
37
  if (!answer)
37
38
  return;
38
39
  this.answerLookup.delete(id);
40
+ answer.removeObserver(this.observers.notify);
39
41
  this.reset();
40
42
  };
41
43
  this.getAnswer = (id) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vived/app",
3
- "version": "3.9.0",
3
+ "version": "3.9.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",