@vived/app 4.27.0 → 4.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Components/Callouts/UC/LookAtCameraUC.js +1 -1
- package/lib/Components/Camera/PM/CameraPM.d.ts +1 -0
- package/lib/Components/Camera/PM/CameraPM.js +8 -1
- package/lib/Components/Camera/index.d.ts +2 -0
- package/lib/Components/Camera/index.js +2 -0
- package/lib/Components/Challenge/Adapters/challengeAuthorHelpHookAdapter.d.ts +2 -2
- package/lib/Components/Challenge/Adapters/challengeConsumerHelpHookAdapter.d.ts +2 -2
- package/lib/Components/Challenge/Adapters/selectedChallengeHookAdapter.d.ts +2 -2
- package/lib/Components/Challenge/Adapters/selectedChallengeHookAdapter.js +20 -26
- package/lib/Components/Challenge/Controller/setChallenge.d.ts +1 -1
- package/lib/Components/Challenge/Entities/ChallengeEntity.d.ts +19 -26
- package/lib/Components/Challenge/Entities/ChallengeEntity.js +43 -53
- package/lib/Components/Challenge/Mocks/MockSelectedChallengePM.d.ts +2 -2
- package/lib/Components/Challenge/Mocks/MockSetChallengeUC.d.ts +2 -2
- package/lib/Components/Challenge/Mocks/index.d.ts +2 -0
- package/lib/Components/Challenge/Mocks/index.js +2 -0
- package/lib/Components/Challenge/PMs/ChallengeAuthorHelpPM.d.ts +1 -1
- package/lib/Components/Challenge/PMs/ChallengeAuthorHelpPM.js +6 -7
- package/lib/Components/Challenge/PMs/ChallengeConsumerHelpPM.d.ts +1 -1
- package/lib/Components/Challenge/PMs/ChallengeConsumerHelpPM.js +13 -16
- package/lib/Components/Challenge/PMs/SelectedChallengePM.d.ts +7 -6
- package/lib/Components/Challenge/PMs/SelectedChallengePM.js +14 -11
- package/lib/Components/Challenge/UCs/SerializeChallenge.d.ts +1 -1
- package/lib/Components/Challenge/UCs/SerializeChallenge.js +3 -7
- package/lib/Components/Challenge/UCs/SetChallengeUC.d.ts +4 -4
- package/lib/Components/Challenge/UCs/SetChallengeUC.js +23 -9
- package/lib/Components/Challenge/UCs/ShowChallengeHelpUC.d.ts +1 -1
- package/lib/Components/Challenge/UCs/ShowChallengeHelpUC.js +2 -2
- package/lib/Components/Challenge/UCs/TryChallengeAgainUC.d.ts +2 -1
- package/lib/Components/Challenge/UCs/TryChallengeAgainUC.js +25 -1
- package/lib/Components/Challenge/UCs/index.d.ts +0 -1
- package/lib/Components/Challenge/UCs/index.js +0 -1
- package/lib/Components/ChannelModel/Adapters/channelModelAdapter.js +2 -0
- package/lib/Components/ChannelModel/Adapters/index.d.ts +2 -0
- package/lib/Components/ChannelModel/Adapters/index.js +2 -0
- package/lib/Components/ChannelModel/Controllers/index.d.ts +1 -0
- package/lib/Components/ChannelModel/Controllers/index.js +1 -0
- package/lib/Components/ChannelModel/Mocks/ValidateChannelModelMock.d.ts +8 -0
- package/lib/Components/ChannelModel/Mocks/ValidateChannelModelMock.js +15 -0
- package/lib/Components/ChannelModel/Mocks/ValidateObjectPickUcMock.d.ts +8 -0
- package/lib/Components/ChannelModel/Mocks/ValidateObjectPickUcMock.js +15 -0
- package/lib/Components/ChannelModel/Mocks/index.d.ts +4 -0
- package/lib/Components/ChannelModel/Mocks/index.js +4 -0
- package/lib/Components/ChannelModel/PMs/index.d.ts +2 -0
- package/lib/Components/ChannelModel/PMs/index.js +2 -0
- package/lib/Components/ChannelModel/UC/ValidateChannelModel.d.ts +8 -0
- package/lib/Components/ChannelModel/UC/ValidateChannelModel.js +48 -0
- package/lib/Components/ChannelModel/UC/index.d.ts +3 -0
- package/lib/Components/ChannelModel/UC/index.js +3 -0
- package/lib/Components/Dispatcher/UC/DispatchStateChangeUC.js +1 -1
- package/lib/Components/Hideable/Adapters/isHiddenAdapter.js +2 -0
- package/lib/Components/Hideable/UCs/SerializeHideableObjects.d.ts +2 -2
- package/lib/Components/Hideable/UCs/SerializeHideableObjects.js +9 -9
- package/lib/Components/Hideable/UCs/index.d.ts +1 -0
- package/lib/Components/Hideable/UCs/index.js +1 -0
- package/lib/Components/Label/Adapters/labelAdapter.js +2 -0
- package/lib/Components/LabelDrop/Adapters/index.d.ts +6 -0
- package/lib/Components/LabelDrop/Adapters/index.js +18 -0
- package/lib/Components/LabelDrop/Adapters/labelDropDragItemAdapter.d.ts +3 -0
- package/lib/Components/LabelDrop/Adapters/labelDropDragItemAdapter.js +19 -0
- package/lib/Components/LabelDrop/Adapters/labelDropEditingIdAdapter.d.ts +3 -0
- package/lib/Components/LabelDrop/Adapters/labelDropEditingIdAdapter.js +19 -0
- package/lib/Components/LabelDrop/Adapters/labelDropListAdapter.d.ts +3 -0
- package/lib/Components/LabelDrop/Adapters/labelDropListAdapter.js +19 -0
- package/lib/Components/LabelDrop/Adapters/labelDropReviewAdapter.d.ts +3 -0
- package/lib/Components/LabelDrop/Adapters/labelDropReviewAdapter.js +19 -0
- package/lib/Components/LabelDrop/Adapters/labelDropTargetsAdapter.d.ts +3 -0
- package/lib/Components/LabelDrop/Adapters/labelDropTargetsAdapter.js +23 -0
- package/lib/Components/LabelDrop/Adapters/remainingLabelDropListAdapter.d.ts +3 -0
- package/lib/Components/LabelDrop/Adapters/remainingLabelDropListAdapter.js +19 -0
- package/lib/Components/LabelDrop/Controller/MouseLabelDropAuthor.d.ts +7 -0
- package/lib/Components/LabelDrop/Controller/MouseLabelDropAuthor.js +31 -0
- package/lib/Components/LabelDrop/Controller/StylusLabelDrop.d.ts +9 -0
- package/lib/Components/LabelDrop/Controller/StylusLabelDrop.js +61 -0
- package/lib/Components/LabelDrop/Controller/TouchLabelDropAuthor.d.ts +7 -0
- package/lib/Components/LabelDrop/Controller/TouchLabelDropAuthor.js +31 -0
- package/lib/Components/LabelDrop/Controller/addNewLabelDropAnswer.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/addNewLabelDropAnswer.js +13 -0
- package/lib/Components/LabelDrop/Controller/deleteAllLabelDropAnswers.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/deleteAllLabelDropAnswers.js +13 -0
- package/lib/Components/LabelDrop/Controller/deleteLabelDropAnswer.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/deleteLabelDropAnswer.js +13 -0
- package/lib/Components/LabelDrop/Controller/discardEditLabelDropAnswer.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/discardEditLabelDropAnswer.js +19 -0
- package/lib/Components/LabelDrop/Controller/dragLabelDropAnswerItemScreen.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/dragLabelDropAnswerItemScreen.js +14 -0
- package/lib/Components/LabelDrop/Controller/editLabelDropAnswerItem.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/editLabelDropAnswerItem.js +13 -0
- package/lib/Components/LabelDrop/Controller/index.d.ts +15 -0
- package/lib/Components/LabelDrop/Controller/index.js +27 -0
- package/lib/Components/LabelDrop/Controller/initializeDragLabelDropAnswerItem.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/initializeDragLabelDropAnswerItem.js +14 -0
- package/lib/Components/LabelDrop/Controller/initializeDragLabelDropAnswerItemWorld.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/initializeDragLabelDropAnswerItemWorld.js +19 -0
- package/lib/Components/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js +28 -0
- package/lib/Components/LabelDrop/Controller/releaseLabelDropAnswerItemWorld.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/releaseLabelDropAnswerItemWorld.js +19 -0
- package/lib/Components/LabelDrop/Controller/saveEditLabelDropAnswer.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/saveEditLabelDropAnswer.js +13 -0
- package/lib/Components/LabelDrop/Controller/toggleLabelDropItemTarget.d.ts +2 -0
- package/lib/Components/LabelDrop/Controller/toggleLabelDropItemTarget.js +13 -0
- package/lib/Components/LabelDrop/Entities/LabelDropItemEntity.d.ts +33 -0
- package/lib/Components/LabelDrop/Entities/LabelDropItemEntity.js +88 -0
- package/lib/Components/LabelDrop/Entities/LabelDropRepo.d.ts +51 -0
- package/lib/Components/LabelDrop/Entities/LabelDropRepo.js +193 -0
- package/lib/Components/LabelDrop/Entities/index.d.ts +2 -0
- package/lib/Components/LabelDrop/Entities/index.js +14 -0
- package/lib/Components/LabelDrop/Mocks/DeleteLabelDropUcMock.d.ts +8 -0
- package/lib/Components/LabelDrop/Mocks/DeleteLabelDropUcMock.js +15 -0
- package/lib/Components/LabelDrop/Mocks/EditLabelDropUcMock.d.ts +10 -0
- package/lib/Components/LabelDrop/Mocks/EditLabelDropUcMock.js +17 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropAnswerItemDetailsPmMock.d.ts +7 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropAnswerItemDetailsPmMock.js +11 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropDragItemPmMock.d.ts +8 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropDragItemPmMock.js +15 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropEditingIdPmMock.d.ts +8 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropEditingIdPmMock.js +15 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropListPmMock.d.ts +8 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropListPmMock.js +15 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropReviewPmMock.d.ts +8 -0
- package/lib/Components/LabelDrop/Mocks/LabelDropReviewPmMock.js +15 -0
- package/lib/Components/LabelDrop/Mocks/MockCorrectAnimation.d.ts +12 -0
- package/lib/Components/LabelDrop/Mocks/MockCorrectAnimation.js +19 -0
- package/lib/Components/LabelDrop/Mocks/MockDragLabelDropUC.d.ts +12 -0
- package/lib/Components/LabelDrop/Mocks/MockDragLabelDropUC.js +19 -0
- package/lib/Components/LabelDrop/Mocks/MockDragLabelDropWorldUC.d.ts +13 -0
- package/lib/Components/LabelDrop/Mocks/MockDragLabelDropWorldUC.js +20 -0
- package/lib/Components/LabelDrop/Mocks/MockDropAnimation.d.ts +15 -0
- package/lib/Components/LabelDrop/Mocks/MockDropAnimation.js +22 -0
- package/lib/Components/LabelDrop/Mocks/MockIncorrectAnimation.d.ts +14 -0
- package/lib/Components/LabelDrop/Mocks/MockIncorrectAnimation.js +21 -0
- package/lib/Components/LabelDrop/Mocks/RemainingLabelDropListPmMock.d.ts +8 -0
- package/lib/Components/LabelDrop/Mocks/RemainingLabelDropListPmMock.js +15 -0
- package/lib/Components/LabelDrop/Mocks/ToggleLabelDropTargetUcMock.d.ts +10 -0
- package/lib/Components/LabelDrop/Mocks/ToggleLabelDropTargetUcMock.js +17 -0
- package/lib/Components/LabelDrop/Mocks/ValidateLabelDropUc.d.ts +8 -0
- package/lib/Components/LabelDrop/Mocks/ValidateLabelDropUc.js +15 -0
- package/lib/Components/LabelDrop/Mocks/index.d.ts +15 -0
- package/lib/Components/LabelDrop/Mocks/index.js +27 -0
- package/lib/Components/LabelDrop/PM/LabelDropDragItemPM.d.ts +18 -0
- package/lib/Components/LabelDrop/PM/LabelDropDragItemPM.js +84 -0
- package/lib/Components/LabelDrop/PM/LabelDropEditingIDPM.d.ts +11 -0
- package/lib/Components/LabelDrop/PM/LabelDropEditingIDPM.js +46 -0
- package/lib/Components/LabelDrop/PM/LabelDropListPM.d.ts +11 -0
- package/lib/Components/LabelDrop/PM/LabelDropListPM.js +56 -0
- package/lib/Components/LabelDrop/PM/LabelDropReviewPM.d.ts +11 -0
- package/lib/Components/LabelDrop/PM/LabelDropReviewPM.js +57 -0
- package/lib/Components/LabelDrop/PM/LabelDropTargetsPM.d.ts +11 -0
- package/lib/Components/LabelDrop/PM/LabelDropTargetsPM.js +55 -0
- package/lib/Components/LabelDrop/PM/RemainingLabelDropListPM.d.ts +10 -0
- package/lib/Components/LabelDrop/PM/RemainingLabelDropListPM.js +56 -0
- package/lib/Components/LabelDrop/PM/index.d.ts +6 -0
- package/lib/Components/LabelDrop/PM/index.js +18 -0
- package/lib/Components/LabelDrop/UseCases/CorrectAnimationUC.d.ts +12 -0
- package/lib/Components/LabelDrop/UseCases/CorrectAnimationUC.js +72 -0
- package/lib/Components/LabelDrop/UseCases/DeleteAllLabelDropUC.d.ts +7 -0
- package/lib/Components/LabelDrop/UseCases/DeleteAllLabelDropUC.js +62 -0
- package/lib/Components/LabelDrop/UseCases/DeleteLabelDropUC.d.ts +7 -0
- package/lib/Components/LabelDrop/UseCases/DeleteLabelDropUC.js +61 -0
- package/lib/Components/LabelDrop/UseCases/DragLabelDropUC.d.ts +11 -0
- package/lib/Components/LabelDrop/UseCases/DragLabelDropUC.js +171 -0
- package/lib/Components/LabelDrop/UseCases/DragLabelDropWorldUC.d.ts +11 -0
- package/lib/Components/LabelDrop/UseCases/DragLabelDropWorldUC.js +181 -0
- package/lib/Components/LabelDrop/UseCases/DropOnNothingAnimationUC.d.ts +13 -0
- package/lib/Components/LabelDrop/UseCases/DropOnNothingAnimationUC.js +84 -0
- package/lib/Components/LabelDrop/UseCases/EditLabelDropUC.d.ts +9 -0
- package/lib/Components/LabelDrop/UseCases/EditLabelDropUC.js +149 -0
- package/lib/Components/LabelDrop/UseCases/IncorrectAnimationUC.d.ts +14 -0
- package/lib/Components/LabelDrop/UseCases/IncorrectAnimationUC.js +86 -0
- package/lib/Components/LabelDrop/UseCases/InitializeLabelDropLabelHook.d.ts +7 -0
- package/lib/Components/LabelDrop/UseCases/InitializeLabelDropLabelHook.js +36 -0
- package/lib/Components/LabelDrop/UseCases/LabelDropAnimation.d.ts +5 -0
- package/lib/Components/LabelDrop/UseCases/LabelDropAnimation.js +2 -0
- package/lib/Components/LabelDrop/UseCases/SerializeLabelDrop.d.ts +21 -0
- package/lib/Components/LabelDrop/UseCases/SerializeLabelDrop.js +69 -0
- package/lib/Components/LabelDrop/UseCases/ToggleLabelDropTargetUC.d.ts +10 -0
- package/lib/Components/LabelDrop/UseCases/ToggleLabelDropTargetUC.js +66 -0
- package/lib/Components/LabelDrop/UseCases/ValidateLabelDrop.d.ts +9 -0
- package/lib/Components/LabelDrop/UseCases/ValidateLabelDrop.js +59 -0
- package/lib/Components/LabelDrop/UseCases/index.d.ts +14 -0
- package/lib/Components/LabelDrop/UseCases/index.js +26 -0
- package/lib/Components/LabelDrop/UseCases/labelDropLabelValidator.d.ts +1 -0
- package/lib/Components/LabelDrop/UseCases/labelDropLabelValidator.js +16 -0
- package/lib/Components/LabelDrop/index.d.ts +6 -0
- package/lib/Components/LabelDrop/index.js +18 -0
- package/lib/Components/Question/Entities/QuestionEntity.d.ts +7 -1
- package/lib/Components/Question/Entities/QuestionEntity.js +8 -0
- package/lib/Components/Question/Mocks/MockValidateQuestion.d.ts +1 -1
- package/lib/Components/Question/Mocks/MockValidateQuestion.js +3 -3
- package/lib/Components/Question/Mocks/index.d.ts +2 -0
- package/lib/Components/Question/Mocks/index.js +14 -0
- package/lib/Components/Question/PM/QuestionChallengePM.js +2 -2
- package/lib/Components/Question/UC/SubmitQuestionAnswerUC.js +2 -2
- package/lib/Components/Question/UC/ValidateQuestionChallengeStateUC.js +2 -2
- package/lib/Components/Question/index.d.ts +1 -0
- package/lib/Components/Question/index.js +1 -0
- package/lib/Components/RequestHandler/UC/SetAppStateUC.js +1 -1
- package/lib/Components/RequestHandler/UC/SetIsAuthoringUC.js +2 -2
- package/lib/Components/RequestHandler/UC/StartAppUC.js +2 -2
- package/lib/Components/RequestHandler/UC/StopAppUC.js +2 -2
- package/lib/Components/Transform3D/Controllers/Mouse/index.d.ts +1 -0
- package/lib/Components/Transform3D/Controllers/Mouse/index.js +1 -0
- package/lib/Components/Transform3D/Controllers/Touch/index.d.ts +1 -0
- package/lib/Components/Transform3D/Controllers/Touch/index.js +1 -0
- package/lib/Components/Transform3D/Mocks/MockPanTransformUC.d.ts +1 -0
- package/lib/Components/Transform3D/Mocks/MockPanTransformUC.js +1 -0
- package/lib/Components/Transform3D/Mocks/index.d.ts +1 -0
- package/lib/Components/Transform3D/Mocks/index.js +1 -0
- package/lib/Components/Transform3D/UC/PanTransformUC.d.ts +3 -1
- package/lib/Components/Transform3D/UC/PanTransformUC.js +24 -6
- package/lib/Components/Transform3D/UC/StylusMoveTransformUC.js +10 -10
- package/lib/Components/Transform3D/UC/index.d.ts +1 -0
- package/lib/Components/Transform3D/UC/index.js +1 -0
- package/lib/Components/index.d.ts +4 -1
- package/lib/Components/index.js +4 -1
- package/lib/ValueObjects/Quaternion.d.ts +1 -0
- package/lib/ValueObjects/Quaternion.js +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeDeleteAllLabelDropUC = exports.DeleteAllLabelDropUC = void 0;
|
|
4
|
+
const AppObject_1 = require("../../../AppObject");
|
|
5
|
+
const DispatchStateChangeUC_1 = require("../../Dispatcher/UC/DispatchStateChangeUC");
|
|
6
|
+
const UndoRedoEntity_1 = require("../../UndoRedo/Entities/UndoRedoEntity");
|
|
7
|
+
const LabelDropRepo_1 = require("../Entities/LabelDropRepo");
|
|
8
|
+
class DeleteAllLabelDropUC extends AppObject_1.AppObjectUC {
|
|
9
|
+
static get(appObjects) {
|
|
10
|
+
return AppObject_1.getSingletonComponent(DeleteAllLabelDropUC.type, appObjects);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.DeleteAllLabelDropUC = DeleteAllLabelDropUC;
|
|
14
|
+
DeleteAllLabelDropUC.type = "DeleteAllLabelDropUC";
|
|
15
|
+
function makeDeleteAllLabelDropUC(appObject) {
|
|
16
|
+
return new DeleteAllLabelDropUCImp(appObject);
|
|
17
|
+
}
|
|
18
|
+
exports.makeDeleteAllLabelDropUC = makeDeleteAllLabelDropUC;
|
|
19
|
+
class DeleteAllLabelDropUCImp extends DeleteAllLabelDropUC {
|
|
20
|
+
get repo() {
|
|
21
|
+
return this.getCachedSingleton(LabelDropRepo_1.LabelDropRepo.type);
|
|
22
|
+
}
|
|
23
|
+
get undo() {
|
|
24
|
+
return this.getCachedSingleton(UndoRedoEntity_1.UndoRedoEntity.type);
|
|
25
|
+
}
|
|
26
|
+
get dispatchStateChange() {
|
|
27
|
+
var _a;
|
|
28
|
+
return (_a = this.getCachedSingleton(DispatchStateChangeUC_1.DispatchStateChangeUC.type)) === null || _a === void 0 ? void 0 : _a.doDispatch;
|
|
29
|
+
}
|
|
30
|
+
delete() {
|
|
31
|
+
var _a;
|
|
32
|
+
const repo = this.repo;
|
|
33
|
+
const dispatchStateChange = this.dispatchStateChange;
|
|
34
|
+
if (!repo || !dispatchStateChange) {
|
|
35
|
+
this.error("Missing Component");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const allData = repo.getAll().map((item) => item.data);
|
|
39
|
+
if (allData.length === 0)
|
|
40
|
+
return;
|
|
41
|
+
repo.deleteAllItems();
|
|
42
|
+
(_a = this.undo) === null || _a === void 0 ? void 0 : _a.submitAction({
|
|
43
|
+
undoAction: () => {
|
|
44
|
+
allData.forEach((data) => {
|
|
45
|
+
repo.makeLabelDropItem(data.id).data = data;
|
|
46
|
+
});
|
|
47
|
+
dispatchStateChange();
|
|
48
|
+
},
|
|
49
|
+
redoAction: () => {
|
|
50
|
+
allData.forEach((data) => {
|
|
51
|
+
repo.deleteItem(data.id);
|
|
52
|
+
});
|
|
53
|
+
dispatchStateChange();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
dispatchStateChange();
|
|
57
|
+
}
|
|
58
|
+
constructor(appObject) {
|
|
59
|
+
super(appObject, DeleteAllLabelDropUC.type);
|
|
60
|
+
this.appObjects.registerSingleton(this);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppObject, AppObjectRepo, AppObjectUC } from "../../../AppObject";
|
|
2
|
+
export declare abstract class DeleteLabelDropUC extends AppObjectUC {
|
|
3
|
+
static readonly type = "DeleteLabelDropUC";
|
|
4
|
+
abstract deleteLabelDrop(id: string): void;
|
|
5
|
+
static get(appObjects: AppObjectRepo): DeleteLabelDropUC | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare function makeDeleteLabelDropUC(appObject: AppObject): DeleteLabelDropUC;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeDeleteLabelDropUC = exports.DeleteLabelDropUC = void 0;
|
|
4
|
+
const AppObject_1 = require("../../../AppObject");
|
|
5
|
+
const LabelDropRepo_1 = require("../Entities/LabelDropRepo");
|
|
6
|
+
const DispatchStateChangeUC_1 = require("../../Dispatcher/UC/DispatchStateChangeUC");
|
|
7
|
+
const UndoRedoEntity_1 = require("../../UndoRedo/Entities/UndoRedoEntity");
|
|
8
|
+
class DeleteLabelDropUC extends AppObject_1.AppObjectUC {
|
|
9
|
+
static get(appObjects) {
|
|
10
|
+
return AppObject_1.getSingletonComponent(DeleteLabelDropUC.type, appObjects);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.DeleteLabelDropUC = DeleteLabelDropUC;
|
|
14
|
+
DeleteLabelDropUC.type = "DeleteLabelDropUC";
|
|
15
|
+
function makeDeleteLabelDropUC(appObject) {
|
|
16
|
+
return new DeleteLabelDropUCImp(appObject);
|
|
17
|
+
}
|
|
18
|
+
exports.makeDeleteLabelDropUC = makeDeleteLabelDropUC;
|
|
19
|
+
class DeleteLabelDropUCImp extends DeleteLabelDropUC {
|
|
20
|
+
get repo() {
|
|
21
|
+
return this.getCachedSingleton(LabelDropRepo_1.LabelDropRepo.type);
|
|
22
|
+
}
|
|
23
|
+
get undo() {
|
|
24
|
+
return this.getCachedSingleton(UndoRedoEntity_1.UndoRedoEntity.type);
|
|
25
|
+
}
|
|
26
|
+
get dispatchStateChange() {
|
|
27
|
+
var _a;
|
|
28
|
+
return (_a = this.getCachedSingleton(DispatchStateChangeUC_1.DispatchStateChangeUC.type)) === null || _a === void 0 ? void 0 : _a.doDispatch;
|
|
29
|
+
}
|
|
30
|
+
deleteLabelDrop(id) {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const repo = this.repo;
|
|
33
|
+
const dispatchStateChange = this.dispatchStateChange;
|
|
34
|
+
if (!repo || !dispatchStateChange) {
|
|
35
|
+
this.error("Missing Component");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const data = (_a = repo.getForAppObject(id)) === null || _a === void 0 ? void 0 : _a.data;
|
|
39
|
+
if (!data) {
|
|
40
|
+
this.appObjects.submitWarning("DeleteLabelDropUC", `Unable to find label drop for id: ${id}`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
repo.deleteItem(id);
|
|
44
|
+
(_b = this.undo) === null || _b === void 0 ? void 0 : _b.submitAction({
|
|
45
|
+
undoAction: () => {
|
|
46
|
+
repo.makeLabelDropItem(id).data = data;
|
|
47
|
+
dispatchStateChange();
|
|
48
|
+
},
|
|
49
|
+
redoAction: () => {
|
|
50
|
+
repo.deleteItem(id);
|
|
51
|
+
dispatchStateChange();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
repo.editingID = undefined;
|
|
55
|
+
dispatchStateChange();
|
|
56
|
+
}
|
|
57
|
+
constructor(appObject) {
|
|
58
|
+
super(appObject, DeleteLabelDropUC.type);
|
|
59
|
+
this.appObjects.registerSingleton(this);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObject, AppObjectRepo, AppObjectUC } from "../../../AppObject";
|
|
2
|
+
import { ParametricLine, Vector2 } from "../../../ValueObjects";
|
|
3
|
+
export declare abstract class DragLabelDropUC extends AppObjectUC {
|
|
4
|
+
static readonly type = "DragLabelDropUC";
|
|
5
|
+
abstract initialize(labelDropID: string, pos: Vector2): void;
|
|
6
|
+
abstract setPosition2D(pos: Vector2): void;
|
|
7
|
+
abstract release(ray: ParametricLine): void;
|
|
8
|
+
abstract onFinishRelease(): void;
|
|
9
|
+
static get(appObjects: AppObjectRepo): DragLabelDropUC | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare function makeDragLabelDropUC(appObject: AppObject): DragLabelDropUC;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.makeDragLabelDropUC = exports.DragLabelDropUC = void 0;
|
|
13
|
+
const AppObject_1 = require("../../../AppObject");
|
|
14
|
+
const Utilities_1 = require("../../../Utilities");
|
|
15
|
+
const lerpNumber_1 = require("../../../Utilities/lerpNumber");
|
|
16
|
+
const ValueObjects_1 = require("../../../ValueObjects");
|
|
17
|
+
const SceneRayPickUC_1 = require("../../Babylon/UC/SceneRayPickUC");
|
|
18
|
+
const BaseAppState_1 = require("../../BaseApp/Entity/BaseAppState");
|
|
19
|
+
const ChallengeEntity_1 = require("../../Challenge/Entities/ChallengeEntity");
|
|
20
|
+
const LabelDropRepo_1 = require("../Entities/LabelDropRepo");
|
|
21
|
+
class DragLabelDropUC extends AppObject_1.AppObjectUC {
|
|
22
|
+
static get(appObjects) {
|
|
23
|
+
return AppObject_1.getSingletonComponent(DragLabelDropUC.type, appObjects);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.DragLabelDropUC = DragLabelDropUC;
|
|
27
|
+
DragLabelDropUC.type = "DragLabelDropUC";
|
|
28
|
+
function makeDragLabelDropUC(appObject) {
|
|
29
|
+
return new DragLabelDropUCImp(appObject);
|
|
30
|
+
}
|
|
31
|
+
exports.makeDragLabelDropUC = makeDragLabelDropUC;
|
|
32
|
+
class DragLabelDropUCImp extends DragLabelDropUC {
|
|
33
|
+
constructor(appObject) {
|
|
34
|
+
super(appObject, DragLabelDropUC.type);
|
|
35
|
+
this.isDragging = false;
|
|
36
|
+
this.appObjectID = undefined;
|
|
37
|
+
this.hitObject = false;
|
|
38
|
+
this.initialPosition = ValueObjects_1.Vector2.Zero();
|
|
39
|
+
this.endPosition = ValueObjects_1.Vector2.Zero();
|
|
40
|
+
this.delta = 10;
|
|
41
|
+
this.currentPercent = 0;
|
|
42
|
+
this.correctFadeDurationMS = 200;
|
|
43
|
+
this.incorrectFadeDurationMS = 300;
|
|
44
|
+
this.doNothingFadeDurationMS = 500;
|
|
45
|
+
this.onFinishRelease = () => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
if (!this.repo)
|
|
47
|
+
return;
|
|
48
|
+
if (this.interval) {
|
|
49
|
+
clearInterval(this.interval);
|
|
50
|
+
}
|
|
51
|
+
this.currentPercent = 0;
|
|
52
|
+
this.endPosition = this.repo.screenPosition;
|
|
53
|
+
if (!this.hitObject) {
|
|
54
|
+
// no hit
|
|
55
|
+
this.interval = setInterval(() => {
|
|
56
|
+
this.animateLabelDrop(this.doNothingFadeDurationMS);
|
|
57
|
+
}, this.delta);
|
|
58
|
+
}
|
|
59
|
+
else if (this.repo.resultIsCorrect) {
|
|
60
|
+
// correct
|
|
61
|
+
yield new Promise((resolve) => setTimeout(resolve, 1000));
|
|
62
|
+
this.initialPosition = this.endPosition;
|
|
63
|
+
this.interval = setInterval(() => {
|
|
64
|
+
this.animateLabelDrop(this.correctFadeDurationMS);
|
|
65
|
+
}, this.delta);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// incorrect
|
|
69
|
+
yield new Promise((resolve) => setTimeout(resolve, 1000));
|
|
70
|
+
this.interval = setInterval(() => {
|
|
71
|
+
this.animateLabelDrop(this.incorrectFadeDurationMS);
|
|
72
|
+
}, this.delta);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
this.animateLabelDrop = (duration) => {
|
|
76
|
+
if (!this.baseApp)
|
|
77
|
+
return;
|
|
78
|
+
if (!this.repo)
|
|
79
|
+
return;
|
|
80
|
+
if (!this.interval)
|
|
81
|
+
return;
|
|
82
|
+
const difference = 1 / (duration / this.delta);
|
|
83
|
+
this.currentPercent = this.currentPercent + difference;
|
|
84
|
+
const newValue = Utilities_1.cubicOut(this.currentPercent);
|
|
85
|
+
if (newValue >= 1) {
|
|
86
|
+
this.repo.draggingID = undefined;
|
|
87
|
+
this.repo.dragAlpha = 0;
|
|
88
|
+
this.repo.resultIsCorrect = undefined;
|
|
89
|
+
clearInterval(this.interval);
|
|
90
|
+
if (this.repo.getRemainingLabelDrops().length === 0) {
|
|
91
|
+
this.baseApp.isReviewing = true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
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);
|
|
98
|
+
this.repo.screenPosition = new ValueObjects_1.Vector2(newX, newY);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
get repo() {
|
|
103
|
+
return this.getCachedSingleton(LabelDropRepo_1.LabelDropRepo.type);
|
|
104
|
+
}
|
|
105
|
+
get challenge() {
|
|
106
|
+
return this.getCachedSingleton(ChallengeEntity_1.ChallengeEntity.type);
|
|
107
|
+
}
|
|
108
|
+
get baseApp() {
|
|
109
|
+
return this.getCachedSingleton(BaseAppState_1.BaseAppState.type);
|
|
110
|
+
}
|
|
111
|
+
initialize(labelDropID, pos) {
|
|
112
|
+
var _a;
|
|
113
|
+
if (!this.repo || !this.challenge)
|
|
114
|
+
return;
|
|
115
|
+
if (this.challenge.selectedChallenge !== "LABEL_DROP")
|
|
116
|
+
return;
|
|
117
|
+
if (((_a = this.baseApp) === null || _a === void 0 ? void 0 : _a.isAuthoring) === true)
|
|
118
|
+
return;
|
|
119
|
+
this.repo.draggingID = labelDropID;
|
|
120
|
+
this.repo.dragMode = LabelDropRepo_1.LabelDropDragMode.SCREEN;
|
|
121
|
+
this.repo.dragAlpha = 1;
|
|
122
|
+
this.initialPosition = pos;
|
|
123
|
+
this.repo.screenPosition = new ValueObjects_1.Vector2(pos.x, pos.y);
|
|
124
|
+
this.isDragging = true;
|
|
125
|
+
}
|
|
126
|
+
setPosition2D(pos) {
|
|
127
|
+
var _a;
|
|
128
|
+
if (!this.isDragging)
|
|
129
|
+
return;
|
|
130
|
+
if (!this.repo || !this.challenge)
|
|
131
|
+
return;
|
|
132
|
+
if (this.challenge.selectedChallenge !== "LABEL_DROP")
|
|
133
|
+
return;
|
|
134
|
+
if (((_a = this.baseApp) === null || _a === void 0 ? void 0 : _a.isAuthoring) === true)
|
|
135
|
+
return;
|
|
136
|
+
this.repo.screenPosition = new ValueObjects_1.Vector2(pos.x, pos.y);
|
|
137
|
+
}
|
|
138
|
+
release(ray) {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
if (!this.isDragging)
|
|
141
|
+
return;
|
|
142
|
+
this.isDragging = false;
|
|
143
|
+
if (!this.repo || !this.challenge)
|
|
144
|
+
return;
|
|
145
|
+
if (this.challenge.selectedChallenge !== "LABEL_DROP")
|
|
146
|
+
return;
|
|
147
|
+
if (((_a = this.baseApp) === null || _a === void 0 ? void 0 : _a.isAuthoring) === true)
|
|
148
|
+
return;
|
|
149
|
+
if (!this.repo.draggingID) {
|
|
150
|
+
this.warn("Trying to release a label drop without an ID");
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const scenePick = (_b = SceneRayPickUC_1.SceneRayPickUC.get(this.appObjects)) === null || _b === void 0 ? void 0 : _b.sceneRayPick(ray);
|
|
154
|
+
this.appObjectID = undefined;
|
|
155
|
+
this.hitObject = true;
|
|
156
|
+
if (!scenePick ||
|
|
157
|
+
!scenePick.worldPickPoint ||
|
|
158
|
+
scenePick.hit === false ||
|
|
159
|
+
!scenePick.normal ||
|
|
160
|
+
!scenePick.objectPickMeta) {
|
|
161
|
+
this.hitObject = false;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.appObjectID = scenePick.objectPickMeta.appObjectID;
|
|
165
|
+
}
|
|
166
|
+
if (this.hitObject && this.appObjectID) {
|
|
167
|
+
this.repo.submitLabelDrop(this.repo.draggingID, this.appObjectID);
|
|
168
|
+
}
|
|
169
|
+
this.onFinishRelease();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppObject, AppObjectRepo, AppObjectUC } from "../../../AppObject";
|
|
2
|
+
import { ParametricLine } from "../../../ValueObjects";
|
|
3
|
+
export declare abstract class DragLabelDropWorldUC extends AppObjectUC {
|
|
4
|
+
static readonly type = "DragLabelDropWorldUC";
|
|
5
|
+
abstract percentOfPickDepth: number;
|
|
6
|
+
abstract initializeDrag(labelDropID: string, ray: ParametricLine): void;
|
|
7
|
+
abstract updateDrag(ray: ParametricLine): void;
|
|
8
|
+
abstract releaseDrag(ray: ParametricLine): void;
|
|
9
|
+
static get(appObjects: AppObjectRepo): DragLabelDropWorldUC | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare function makeDragLabelDropWorldUC(appObject: AppObject): DragLabelDropWorldUC;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.makeDragLabelDropWorldUC = exports.DragLabelDropWorldUC = void 0;
|
|
13
|
+
const AppObject_1 = require("../../../AppObject");
|
|
14
|
+
const ValueObjects_1 = require("../../../ValueObjects");
|
|
15
|
+
const SceneRayPickUC_1 = require("../../Babylon/UC/SceneRayPickUC");
|
|
16
|
+
const BaseAppState_1 = require("../../BaseApp/Entity/BaseAppState");
|
|
17
|
+
const ChallengeEntity_1 = require("../../Challenge/Entities/ChallengeEntity");
|
|
18
|
+
const LabelDropRepo_1 = require("../Entities/LabelDropRepo");
|
|
19
|
+
const CorrectAnimationUC_1 = require("./CorrectAnimationUC");
|
|
20
|
+
const DropOnNothingAnimationUC_1 = require("./DropOnNothingAnimationUC");
|
|
21
|
+
const IncorrectAnimationUC_1 = require("./IncorrectAnimationUC");
|
|
22
|
+
class DragLabelDropWorldUC extends AppObject_1.AppObjectUC {
|
|
23
|
+
static get(appObjects) {
|
|
24
|
+
return AppObject_1.getSingletonComponent(DragLabelDropWorldUC.type, appObjects);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.DragLabelDropWorldUC = DragLabelDropWorldUC;
|
|
28
|
+
DragLabelDropWorldUC.type = "DragLabelDropWorldUC";
|
|
29
|
+
function makeDragLabelDropWorldUC(appObject) {
|
|
30
|
+
return new DragLabelDropWorldUCImp(appObject);
|
|
31
|
+
}
|
|
32
|
+
exports.makeDragLabelDropWorldUC = makeDragLabelDropWorldUC;
|
|
33
|
+
class DragLabelDropWorldUCImp extends DragLabelDropWorldUC {
|
|
34
|
+
constructor(appObject) {
|
|
35
|
+
super(appObject, DragLabelDropWorldUC.type);
|
|
36
|
+
this.percentOfPickDepth = 0.95;
|
|
37
|
+
this.isDragging = false;
|
|
38
|
+
this.dragStartPosition = ValueObjects_1.Vector3.Zero();
|
|
39
|
+
}
|
|
40
|
+
get repo() {
|
|
41
|
+
return this.getCachedSingleton(LabelDropRepo_1.LabelDropRepo.type);
|
|
42
|
+
}
|
|
43
|
+
get challenge() {
|
|
44
|
+
return this.getCachedSingleton(ChallengeEntity_1.ChallengeEntity.type);
|
|
45
|
+
}
|
|
46
|
+
get baseApp() {
|
|
47
|
+
return this.getCachedSingleton(BaseAppState_1.BaseAppState.type);
|
|
48
|
+
}
|
|
49
|
+
initializeDrag(labelDropID, ray) {
|
|
50
|
+
var _a;
|
|
51
|
+
if (!this.repo || !this.challenge)
|
|
52
|
+
return;
|
|
53
|
+
if (this.challenge.selectedChallenge !== "LABEL_DROP")
|
|
54
|
+
return;
|
|
55
|
+
if (((_a = this.baseApp) === null || _a === void 0 ? void 0 : _a.isAuthoring) === true)
|
|
56
|
+
return;
|
|
57
|
+
if (this.currentAnimation) {
|
|
58
|
+
this.currentAnimation.cancel();
|
|
59
|
+
this.repo.resultIsCorrect = undefined;
|
|
60
|
+
this.repo.draggingID = undefined;
|
|
61
|
+
}
|
|
62
|
+
const pick = this.doPick(ray);
|
|
63
|
+
if (!pick)
|
|
64
|
+
return;
|
|
65
|
+
this.positionHelper(pick);
|
|
66
|
+
this.positionDragLabelFromHelper();
|
|
67
|
+
this.repo.draggingID = labelDropID;
|
|
68
|
+
this.repo.dragMode = LabelDropRepo_1.LabelDropDragMode.WORLD;
|
|
69
|
+
this.repo.dragAlpha = 1;
|
|
70
|
+
this.dragStartPosition = pick;
|
|
71
|
+
this.isDragging = true;
|
|
72
|
+
}
|
|
73
|
+
positionHelper(worldPosition) {
|
|
74
|
+
if (!this.repo)
|
|
75
|
+
return;
|
|
76
|
+
const helper = this.repo.dragHelperTransform;
|
|
77
|
+
helper.worldPosition = worldPosition;
|
|
78
|
+
const localZ = helper.localPosition.z * this.percentOfPickDepth;
|
|
79
|
+
helper.localPosition = new ValueObjects_1.Vector3(0, 0, localZ);
|
|
80
|
+
helper.localRotation = ValueObjects_1.Quaternion.Identity();
|
|
81
|
+
}
|
|
82
|
+
doPick(ray) {
|
|
83
|
+
const scenePick = SceneRayPickUC_1.sceneRayPick(ray, this.appObjects);
|
|
84
|
+
if (scenePick && scenePick.worldPickPoint) {
|
|
85
|
+
return scenePick.worldPickPoint;
|
|
86
|
+
}
|
|
87
|
+
const zeroParallaxPlane = ValueObjects_1.ParametricPlane.FromPointNormal(ValueObjects_1.Vector3.Zero(), ValueObjects_1.Vector3.Forward());
|
|
88
|
+
const zeroParallaxPick = zeroParallaxPlane.intersectLine(ray);
|
|
89
|
+
return zeroParallaxPick;
|
|
90
|
+
}
|
|
91
|
+
positionDragLabelFromHelper() {
|
|
92
|
+
if (!this.repo)
|
|
93
|
+
return;
|
|
94
|
+
this.repo.dragLabelTransform.worldPosition = this.repo.dragHelperTransform.worldPosition;
|
|
95
|
+
this.repo.dragLabelTransform.worldRotation = this.repo.dragHelperTransform.worldRotation;
|
|
96
|
+
}
|
|
97
|
+
updateDrag(ray) {
|
|
98
|
+
var _a;
|
|
99
|
+
if (!this.isDragging)
|
|
100
|
+
return;
|
|
101
|
+
if (!this.repo || !this.challenge)
|
|
102
|
+
return;
|
|
103
|
+
if (this.challenge.selectedChallenge !== "LABEL_DROP")
|
|
104
|
+
return;
|
|
105
|
+
if (((_a = this.baseApp) === null || _a === void 0 ? void 0 : _a.isAuthoring) === true)
|
|
106
|
+
return;
|
|
107
|
+
const pick = this.doPick(ray);
|
|
108
|
+
if (!pick)
|
|
109
|
+
return;
|
|
110
|
+
this.positionHelper(pick);
|
|
111
|
+
this.positionDragLabelFromHelper();
|
|
112
|
+
}
|
|
113
|
+
releaseDrag(ray) {
|
|
114
|
+
var _a, _b;
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
if (!this.baseApp)
|
|
117
|
+
return;
|
|
118
|
+
if (!this.isDragging)
|
|
119
|
+
return;
|
|
120
|
+
this.isDragging = false;
|
|
121
|
+
if (!this.repo || !this.challenge)
|
|
122
|
+
return;
|
|
123
|
+
if (this.challenge.selectedChallenge !== "LABEL_DROP")
|
|
124
|
+
return;
|
|
125
|
+
if (((_a = this.baseApp) === null || _a === void 0 ? void 0 : _a.isAuthoring) === true)
|
|
126
|
+
return;
|
|
127
|
+
if (!this.repo.draggingID) {
|
|
128
|
+
this.warn("Trying to release a label drop without an ID");
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const pickID = (_b = SceneRayPickUC_1.sceneRayPick(ray, this.appObjects)) === null || _b === void 0 ? void 0 : _b.appObjectID;
|
|
132
|
+
if (!pickID) {
|
|
133
|
+
const animationUC = DropOnNothingAnimationUC_1.LabelDropOnNothingAnimationUC.get(this.appObjects);
|
|
134
|
+
if (!animationUC) {
|
|
135
|
+
this.warn("Unable to find LabelDropOnNothingAnimationUC");
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.currentAnimation = animationUC;
|
|
139
|
+
animationUC.desiredFinalPosition = this.dragStartPosition;
|
|
140
|
+
const didComplete = yield animationUC.start();
|
|
141
|
+
if (didComplete)
|
|
142
|
+
this.onAnimationComplete();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const isCorrect = this.repo.submitLabelDrop(this.repo.draggingID, pickID);
|
|
146
|
+
if (isCorrect) {
|
|
147
|
+
const animationUC = CorrectAnimationUC_1.LabelDropCorrectAnimationUC.get(this.appObjects);
|
|
148
|
+
if (!animationUC) {
|
|
149
|
+
this.warn("Unable to find LabelDropCorrectAnimationUC");
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
this.currentAnimation = animationUC;
|
|
153
|
+
const didComplete = yield animationUC.start();
|
|
154
|
+
if (didComplete)
|
|
155
|
+
this.onAnimationComplete();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
const animationUC = IncorrectAnimationUC_1.LabelDropIncorrectAnimationUC.get(this.appObjects);
|
|
159
|
+
if (!animationUC) {
|
|
160
|
+
this.warn("Unable to find LabelDropIncorrectAnimationUC");
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.currentAnimation = animationUC;
|
|
164
|
+
animationUC.desiredFinalPosition = this.dragStartPosition;
|
|
165
|
+
const didComplete = yield animationUC.start();
|
|
166
|
+
if (didComplete)
|
|
167
|
+
this.onAnimationComplete();
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
onAnimationComplete() {
|
|
172
|
+
this.currentAnimation = undefined;
|
|
173
|
+
if (!this.repo || !this.baseApp)
|
|
174
|
+
return;
|
|
175
|
+
this.repo.draggingID = undefined;
|
|
176
|
+
this.repo.resultIsCorrect = undefined;
|
|
177
|
+
if (this.repo.getRemainingLabelDrops().length === 0) {
|
|
178
|
+
this.baseApp.isReviewing = true;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AppObject, AppObjectRepo, AppObjectUC } from "../../../AppObject";
|
|
2
|
+
import { Vector3 } from "../../../ValueObjects";
|
|
3
|
+
import { LabelDropAnimationI } from "./LabelDropAnimation";
|
|
4
|
+
export declare abstract class LabelDropOnNothingAnimationUC extends AppObjectUC implements LabelDropAnimationI {
|
|
5
|
+
static type: string;
|
|
6
|
+
abstract animationDurationMS: number;
|
|
7
|
+
abstract getIsAnimating(): boolean;
|
|
8
|
+
abstract desiredFinalPosition: Vector3;
|
|
9
|
+
abstract start: () => Promise<boolean>;
|
|
10
|
+
abstract cancel: () => void;
|
|
11
|
+
static get(appObject: AppObjectRepo): LabelDropOnNothingAnimationUC | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare function makeLabelDropOnNothingAnimationUC(appObject: AppObject): LabelDropOnNothingAnimationUC;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeLabelDropOnNothingAnimationUC = exports.LabelDropOnNothingAnimationUC = void 0;
|
|
4
|
+
const AppObject_1 = require("../../../AppObject");
|
|
5
|
+
const Utilities_1 = require("../../../Utilities");
|
|
6
|
+
const ValueObjects_1 = require("../../../ValueObjects");
|
|
7
|
+
const LabelDropRepo_1 = require("../Entities/LabelDropRepo");
|
|
8
|
+
class LabelDropOnNothingAnimationUC extends AppObject_1.AppObjectUC {
|
|
9
|
+
static get(appObject) {
|
|
10
|
+
return AppObject_1.getSingletonComponent(LabelDropOnNothingAnimationUC.type, appObject);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.LabelDropOnNothingAnimationUC = LabelDropOnNothingAnimationUC;
|
|
14
|
+
LabelDropOnNothingAnimationUC.type = "LabelDropOnNothingAnimationUC";
|
|
15
|
+
function makeLabelDropOnNothingAnimationUC(appObject) {
|
|
16
|
+
return new LabelDropOnNothingAnimationUCImp(appObject);
|
|
17
|
+
}
|
|
18
|
+
exports.makeLabelDropOnNothingAnimationUC = makeLabelDropOnNothingAnimationUC;
|
|
19
|
+
class LabelDropOnNothingAnimationUCImp extends LabelDropOnNothingAnimationUC {
|
|
20
|
+
constructor(appObject) {
|
|
21
|
+
super(appObject, LabelDropOnNothingAnimationUC.type);
|
|
22
|
+
this.animationDurationMS = 500;
|
|
23
|
+
this.desiredFinalPosition = ValueObjects_1.Vector3.Zero();
|
|
24
|
+
this._isAnimating = false;
|
|
25
|
+
this.intervalDeltaMS = 10;
|
|
26
|
+
this.cancelAnimation = false;
|
|
27
|
+
this.start = () => {
|
|
28
|
+
if (!this.labelDropEntity) {
|
|
29
|
+
return Promise.reject(new Error("No label drop entity"));
|
|
30
|
+
}
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
var _a, _b;
|
|
33
|
+
const startTime = Date.now();
|
|
34
|
+
const endTime = startTime + this.animationDurationMS;
|
|
35
|
+
this._isAnimating = true;
|
|
36
|
+
const startPosition = (_b = (_a = this.labelDropEntity) === null || _a === void 0 ? void 0 : _a.dragLabelTransform.worldPosition) !== null && _b !== void 0 ? _b : ValueObjects_1.Vector3.Zero();
|
|
37
|
+
const interval = setInterval(() => {
|
|
38
|
+
if (!this.labelDropEntity)
|
|
39
|
+
return;
|
|
40
|
+
if (this.cancelAnimation) {
|
|
41
|
+
clearInterval(interval);
|
|
42
|
+
this.cancelAnimation = false;
|
|
43
|
+
resolve(false);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const currentTime = Date.now();
|
|
47
|
+
if (currentTime >= endTime) {
|
|
48
|
+
this._isAnimating = false;
|
|
49
|
+
this.labelDropEntity.dragAlpha = 0;
|
|
50
|
+
this.labelDropEntity.dragLabelTransform.worldPosition =
|
|
51
|
+
this.desiredFinalPosition;
|
|
52
|
+
clearInterval(interval);
|
|
53
|
+
resolve(true);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const animationPercent = (currentTime - startTime) / this.animationDurationMS;
|
|
57
|
+
const acceleratorValue = 1.5;
|
|
58
|
+
let alpha = 1 - acceleratorValue * animationPercent;
|
|
59
|
+
if (alpha < 0)
|
|
60
|
+
alpha = 0;
|
|
61
|
+
this.labelDropEntity.dragAlpha = alpha;
|
|
62
|
+
const easedPercent = Utilities_1.cubicOut(animationPercent);
|
|
63
|
+
const lerpedPos = ValueObjects_1.Vector3.Lerp(startPosition, this.desiredFinalPosition, easedPercent);
|
|
64
|
+
this.labelDropEntity.dragLabelTransform.worldPosition = lerpedPos;
|
|
65
|
+
}
|
|
66
|
+
}, this.intervalDeltaMS);
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
this.cancel = () => {
|
|
70
|
+
if (!this.getIsAnimating) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.cancelAnimation = true;
|
|
74
|
+
};
|
|
75
|
+
this.labelDropEntity = appObject.getComponent(LabelDropRepo_1.LabelDropRepo.type);
|
|
76
|
+
if (!this.labelDropEntity) {
|
|
77
|
+
this.error("UC added to an app object that does not have a LabelDropEntity");
|
|
78
|
+
}
|
|
79
|
+
this.appObjects.registerSingleton(this);
|
|
80
|
+
}
|
|
81
|
+
getIsAnimating() {
|
|
82
|
+
return this._isAnimating;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AppObject, AppObjectRepo, AppObjectUC } from "../../../AppObject";
|
|
2
|
+
export declare abstract class EditLabelDropUC extends AppObjectUC {
|
|
3
|
+
static readonly type = "EditLabelDropUC";
|
|
4
|
+
abstract start(labelDropID?: string): void;
|
|
5
|
+
abstract discard(): void;
|
|
6
|
+
abstract finish(): void;
|
|
7
|
+
static get: (appObjects: AppObjectRepo) => EditLabelDropUC | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function makeEditLabelDropUC(appObject: AppObject): EditLabelDropUC;
|